ACASB-JavaSpringBoot+Python异构双引擎项目实战 - 1 - 架构构思
为了参加26年的计算机设计大赛,我和团队选择了AI+数据可视化赛道,我负责后端开发
算法设计
这个项目旨在通过明清时期建筑色彩分析社会权力关系,展示当时社会的“色彩权力”,将当时民居的复杂的色彩法律量化为可视化的数据,为了首先量化数据,需要先把图像从RGB空间映射到HSV空间中去,然后再进行量化,项目使用的公式或许会包含:
色彩熵
色彩熵基于香农熵的定义,主要展示出颜色的混乱程度,我们采用的公式如下$$H = -\sum_{i=1}^{n} P_i \log_2(P_i)$$
$P_{i}$指某个颜色出现的频率占比
n 表示颜色聚类后的总颜色数目
H越大代表色彩越混乱多样,H越小代表色彩越单一
颜色聚集度
上面的色彩熵只能定义颜色的混乱程度,但颜色聚集度可以显示颜色是如何分布的,而颜色分布又是社会权利的重要象征
为了简化计算,我们使用连通域分析量化聚集度,公式如下$$Agg = \frac{\sum (\text{Area}_k)^2}{(\sum \text{Area}_k)^2}$$
$text{Area}_{k}$ 表示图像第K个同色连通区域的面积
当颜色呈现出巨大的整块分布,比如朱红宫墙时,$Agg$的值会趋向1,表示某个颜色占比巨大,若各种颜色分布凌乱细小,则会区域0
为什么我没有选择直接从HSV通过全连接层获取最终的预测信息,是因为直接输入像素点会导致机器无法学习到建筑的色彩特征和其他物理属性,我们不仅需要知道有什么颜色,还要知道颜色如何分布
后端架构
基于AI+的需求,仅仅一个SpringBoot是完全不能满足需要的,所以我考虑使用Java+Python双语言的混合架构,其中Java作为调度中枢,从前端获得数据,再将复杂计算任务交给Python进行处理(比如图像的蓝天背景剔除、建筑主体提取、HSV聚类等等操作),以及我们选择不使用传统的Mysql,而是基于对数据的复杂、关系的考虑,可能会使用Ocean Base或者PostgreSQL这样的数据库
AI推理
考虑到古建筑影像资料质量参差不齐、黑白照居多,我们考虑采用知识引导的机器学习,先把史料中定性的规则转化为定量特征,然后交给全连接层进行处理,这样可以减少AI训练时对数据集的较高的需求
评论 暂无