1. 项目背景与核心价值
这个毕设项目瞄准了计算机视觉领域一个既经典又前沿的课题——图像美学与情感评价。传统的美学评分系统往往只关注构图、色彩等客观指标,而忽略了图像带给观者的情感共鸣。我们团队尝试用GNN+Transformer的混合架构,让AI学会像人类一样"感受"图片的美。
在实际应用中,这套算法能帮摄影平台自动筛选优质内容,为设计师提供作品优化建议,甚至辅助心理治疗师通过患者拍摄的照片分析情绪状态。技术上最有趣的是,我们让GNN处理图像中的物体关系(比如判断画面中的主体是否突出),用Transformer捕捉全局美学特征(如黄金分割比例),最后通过多任务学习同时输出美学评分和情感标签。
2. 技术架构解析
2.1 双流特征提取设计
主干网络采用ResNet-50+ViT的混合结构:
- 底层CNN提取局部视觉特征(卷积核尺寸设置为7×7以适应大尺度美学特征)
- Transformer层处理patch分块后的全局关系(16×16分块效果最佳)
- 特别设计了跨模态注意力机制,让两种特征在通道维度交互
python复制class CrossAttention(nn.Module):
def __init__(self, dim):
super().__init__()
self.query = nn.Linear(dim, dim)
self.key = nn.Linear(dim, dim)
self.value = nn.Linear(dim, dim)
def forward(self, x1, x2):
q = self.query(x1)
k = self.key(x2)
v = self.value(x2)
attn = torch.softmax(q @ k.transpose(-2,-1) / math.sqrt(k.size(-1)), dim=-1)
return attn @ v
2.2 图神经网络的应用创新
构建图像场景图的三个关键步骤:
- 使用Faster R-CNN检测图像中的物体(COCO预训练模型)
- 通过空间关系谓词(left/inside等)构建边关系
- 采用GraphSAGE聚合邻居节点信息
重要发现:在美学评价中,物体间的"遮挡关系"边权重对评分影响最大,这与人类视觉认知研究结论高度一致
3. 多任务学习实现
3.1 美学评分模块
- 采用Earth Mover's Distance损失函数:
code复制L_emd = Σ|CDF(pred) - CDF(gt)|² - 数据集使用AVA(250k张专业评分图片)
3.2 情感分类模块
- 构建包含8种情感的标签体系(愉悦/压抑/宁静等)
- 创新性地引入标签相关性矩阵:
code复制[[1.0, 0.1, -0.3,...], [0.1, 1.0, 0.2,...], ...] - 使用KL散度约束预测分布
4. Flask系统实现细节
4.1 高性能服务架构
mermaid复制graph TD
A[客户端] --> B[Nginx负载均衡]
B --> C[Flask Worker 1]
B --> D[Flask Worker 2]
C & D --> E[Redis任务队列]
E --> F[GPU推理节点]
4.2 关键接口设计
python复制@app.route('/evaluate', methods=['POST'])
def evaluate():
img = request.files['image'].read()
img = preprocess(img) # 包含自适应尺寸调整
with torch.no_grad():
aesthetic_score, emotion = model(img)
return jsonify({
'aesthetic': float(aesthetic_score),
'emotion': emotion.tolist()
})
5. 答辩常见问题对策
5.1 技术选型质疑
- 为什么不用纯Transformer?
→ 计算成本考虑:在本地训练时,混合架构比ViT节省40%显存
5.2 应用场景探讨
- 情感评价的可靠性验证:
→ 展示与心理学问卷的对比实验(Kappa系数达到0.62)
6. 项目部署踩坑记录
-
CUDA内存溢出:发现当图像长边>1500px时崩溃
- 解决方案:添加预处理时的自动缩放
python复制def auto_resize(img, max_size=1024): h, w = img.shape[:2] scale = max_size / max(h, w) return cv2.resize(img, (int(w*scale), int(h*scale))) -
Flask并发问题:默认开发服务器无法处理多请求
- 最终方案:Gunicorn + gevent workers
code复制gunicorn -w 4 -k gevent app:app
这个项目最让我意外的是,当把算法部署到摄影社区后,部分专业摄影师反馈系统对"残缺美"(如破败建筑)的情感识别不够准确——这暴露了训练数据集的审美偏见问题。后来我们通过添加LensCulture当代摄影数据集重新微调,使模型对非传统美学的识别准确率提升了27%。