关于《基于深度学习的桥梁裂缝检测算法研究》一文阅读小结
《基于深度学习的桥梁裂缝检测算法研究》小结
作者:李良福、马卫飞、李 丽、陆 铖
报刊:自动化学报
时间:2019/9
论文目的:
传统的图像处理算法不能很好地对桥梁裂缝进行检测 ,
而经典的深度学习模型直接用于桥梁裂缝的检测 , 效果并不理想,针对这些问题 ,
文章提出了一种基于深度学习的桥梁裂缝检测算法
创新点,QA(1-4):
Q1:使用深度学习中的卷积神经网络 (CNN) 进行桥梁裂缝检测 ,
需要大量的、带类别标签的桥梁裂缝图像作为训练集、验证集和测试集 . 但是 ,
到目前为止 ,
全球还没有公开的、带类别标签的、用于深度学习的桥梁裂缝图像数据集。人工采集大量的图像将是个非常严峻的问题。
**A1:**文章中对采集来的 2000 张桥梁裂缝图像研究的基础之上 ,
提出一种基于滑动窗口算法 , 专门用于桥梁裂缝图像数据集的人工扩增方法。
Q2:
桥梁裂缝图像具有背景纹理复杂多样、噪声种类繁多、分布无规律的特点,因此主流的裂缝检测方法效果不够理想。
A2:文章提出了一种基于 CNN 深度学习的 DBCC (Deep bridge ***** classify)
分类模型 ,用于识别桥梁裂缝面元和桥梁背景面元。
Q3:如果直接使用传统的窗口滑动算法和 DBCC模型结合检测桥梁裂缝 ,
则有可能检测出过多的桥梁噪声面元
A3:文章提出了改进的滑动窗口算法。
Q4:为了降低算法的时间复杂度 , 加速算法的处理速度 ,
满足桥梁裂缝检测实时处理的要求 , 必须采用多种措施来提高算法的执行效率 .
A4:文章主要采用图像金字塔和 ROI 区域相结合的策略
原理:
人工扩增方法
-
将采集来的桥梁裂缝图像归一化为 1024×1024 分辨率的桥梁裂缝图像;
-
使用 W × H
固定大小的窗口在桥梁裂缝图像上不重叠地进行滑动,每滑动一次产生一个小切片作为ROI; -
把不包含桥梁裂缝小切片的图像称为桥梁背景面元
,把包含桥梁裂缝的小切片称为桥梁裂缝面元;
DBCC模型
-
IN:16*16*3
-
偏置项值初始化为 0.1;
-
4 层卷积层 (C1∼C4);3264128256
-
3层池化层 (P1∼P3);Max-PoolingAve-PoolingAve-Pooling
-
2 层全连接层 (FC1∼FC2);
-
SoftMax 函数 (S) 作为损失函数
-
C1、C4 、P2 、P3 、FC1 后面各加一个**函数(RELU);
-
第一卷积层后面添加 LRN 层;
-
FC1 后面添加 Dropout 层(D)。
-
OUT: P b (x)、P c (x);
改进过程:
改进的窗口滑动算法:
改进之前:
- 只根据 P b (x)) ≤ P c (x), 就认为当前的桥梁面元图像为桥梁裂缝面元图像 ,
- 那么在整幅桥梁裂缝图片识别的时候 ,
- 有可能将某些桥梁噪音面元误识别为桥梁裂缝面元。
改进之后:
算法的加速策略
- 首先针对要识别的桥梁裂缝图像构建图像金字塔 , 然后 ,
- 在低分辨率的图像上使用检测算法对桥梁裂缝进行检测 ,
- 同时对识别出来的桥梁裂缝面元的横纵坐标进行排序
- 求出包含裂缝的矩形区域的左上角坐标和右下角坐标 ,
- 确定在高分辨率图像上包含裂缝的矩形区域 , 并且将这一矩形区域设为 ROI 区域 .
- 最后 , 使用检测算法对 ROI 区域的桥梁裂缝图像进行检测 .
实验:
图像采集设备:大疆无人机 Phantom 4 pro 自带的 CMOS 面阵相机
程序:基于主流的深度学习开源框架 Caffe 和计算机视觉开源库 OpenCV,使用 C/C++
、 python 语言开发 ; 程序的运行环境为 Ubuntu14.04, CPU3.3GHz, RAM 8GB
实验结果:
总结
对于目前的裂缝检测无公开数据集的问题,文章中的人工扩增方法是个很好的解决方法;
其中的图像金字塔+ROI策略对算法的执行进行了加速,此处应还有更好的优化策略待挖掘。