1. 项目背景与核心价值
在建筑文化遗产保护领域,传统民居的数字化建档一直是个耗时费力的工作。过去需要专业人员实地勘测、手工绘制图纸,不仅效率低下,还容易因主观判断导致数据偏差。我们团队基于YOLOv5改进的RSCD模型,成功实现了传统民居建筑元素的自动化识别与标注,识别准确率较原版提升12.3%,特别在复杂背景下的榫卯结构检测中表现突出。
这个项目最实用的价值在于:当你在古镇考察时,用手机拍下老宅照片,系统就能自动标出屋脊形式、窗棂纹样等特征,并关联到建筑年代数据库。去年在江南水乡的实测中,我们仅用3天就完成了过去需要两周的民居普查工作。
2. 模型改进关键技术解析
2.1 RSCD模块设计原理
原版YOLOv5在检测细小建筑构件时,常出现漏检问题。我们在Backbone末端加入了Residual Spatial Context Detector(RSCD)模块,其核心创新点在于:
- 多尺度特征融合:通过3个并行的空洞卷积(dilation rate=3,5,7)捕获飞檐、斗拱等不同尺度的建筑元素
- 残差注意力机制:引入轻量化的ECA-Net模块,使模型更关注瓦当纹样、雕花细节等关键区域
- 上下文感知:新增的空间金字塔池化层(SPPF+)能识别构件之间的位置关系,比如门簪与门楣的配套特征
python复制class RSCD(nn.Module):
def __init__(self, c1, c2):
super().__init__()
self.cv1 = Conv(c1, c2, 1, 1)
self.dconv3 = Conv(c2, c2//3, 3, 1, dilation=3)
self.dconv5 = Conv(c2, c2//3, 3, 1, dilation=5)
self.dconv7 = Conv(c2, c2//3, 3, 1, dilation=7)
self.eca = ECAAttention(kernel_size=3)
def forward(self, x):
x = self.cv1(x)
x1 = self.dconv3(x)
x2 = self.dconv5(x)
x3 = self.dconv7(x)
x = torch.cat([x1,x2,x3], dim=1)
return self.eca(x)
2.2 传统民居数据集构建要点
我们收集了涵盖南北派系的2.7万张民居图像,标注时特别注意:
- 分类体系:按《中国传统建筑形制标准》划分5大类38小类
- 标注规范:斗拱等复杂构件需标出榫卯接点位置
- 数据增强:模拟不同时段的光影变化(晨光/正午/暮色)
重要提示:避免直接使用网络爬取的建筑图片,很多现代仿古建筑的细节不符合历史真实。我们通过与各地古建研究所合作,获取了第一手的测绘影像。
3. 模型训练与优化实战
3.1 关键训练参数配置
在RTX 3090上的训练配置示例:
yaml复制# hyperparameters.yaml
lr0: 0.01 # 初始学习率
lrf: 0.1 # 最终学习率系数
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 3.0
warmup_momentum: 0.8
box: 0.05 # 降低box loss权重
cls: 0.5 # 提高分类权重
obj: 1.0 # 保持obj检测权重
3.2 提升小目标检测的tricks
- 自适应锚框计算:针对雕花等小目标,使用k-means++重新聚类anchor
- 损失函数改进:将CIoU替换为SIoU,提升窗棂等细长构件的检测效果
- 测试时增强(TTA):采用多尺度翻转增强,对模糊的老照片特别有效
训练曲线显示,改进后的模型在验证集上的mAP@0.5达到89.2%,较基线模型提升明显:
| 模型版本 | mAP@0.5 | 参数量(M) | 推理速度(ms) |
|---|---|---|---|
| YOLOv5s | 76.9% | 7.2 | 12.3 |
| RSCD | 89.2% | 8.7 | 15.1 |
4. 典型应用场景与案例
4.1 古建筑修缮辅助系统
在山西某明代民居修缮项目中,通过我们的系统:
- 自动识别出破损的悬鱼构件(Recall 92%)
- 匹配数据库中的同年代相似案例
- 生成修复方案建议三维图
4.2 建筑风格演化研究
对徽派建筑马头墙的演变分析:
- 从不同年代照片中提取墙头形式
- 量化统计鸱尾角度、层数等参数
- 绘制出清代至民国的风格变迁曲线
5. 常见问题与解决方案
5.1 模糊图像处理方案
遇到老照片模糊的情况:
- 先用GFPGAN进行图像增强
- 调整检测阈值至0.35-0.4范围
- 对输出结果进行形态学后处理
5.2 类别混淆处理
针对垂花门与普通门框的误检:
- 在数据集中增加过渡样本
- 添加门簪位置的辅助判断分支
- 利用门扇比例特征进行后过滤
实际部署中发现,模型在北方四合院上的表现优于江南民居,这与训练数据分布有关。后续我们计划:
- 补充岭南镬耳屋等南方特色样本
- 增加建筑朝向等地理信息作为辅助特征
- 开发移动端轻量化版本供野外考察使用