技术领域
本发明涉及移动端类矩形物体边缘检测方法。
背景技术
矩形或者类矩形物体的检测,在工业界需求广泛。随着深度学习技术的发展,其影响领域涉及到各行各业。深度学习技术对于检测领域鲁棒性较强,检测精度高,但是缺点也较为明显,专业性较强,训练复杂,难以在移动端部署等等。传统上,普遍使用的方法是调用OpenCV里面的函数,但是真实的场景图片会比这个复杂的多,会有各种干扰因素。OpenCV函数依赖很多阀值参数,往往这些阀值参数的选择依赖于专业人士的经验和调试方法,较为复杂。但是传统OpenCV算法有着其天然的优势,那就是足够轻量化,可以很容易在移动端部署。
发明内容
本发明的目的是为了解决现有移动端类矩形物体边缘检测方法检测效率低、准确性差的问题,而提出基于深度学习的移动端类矩形物体边缘检测方法。
基于深度学习的移动端类矩形物体边缘检测方法具体过程为:
步骤一、对待测物体边缘图像进行粗提取;
步骤二、对步骤一中粗提取后的图像使用OpenCV的HoughLinesP函数检测线段;
步骤三、将检测到的线段延长成直线,利用直线间的角度、距离约束条件,对相等、相似的直线利用求均值方法合成一条直线;
所述相似为角度相差小于等于5度,距离小于3个像素;
步骤四、计算直线或直线延长线之间的交叉点的距离,将距离小于20像素距离的交叉点合并;计算不能合并直线之间的交叉点个数;
步骤五、利用矩形或类矩形的角度条件,对不能合并直线之间的所有交叉点,每次取出其中的4个,判断这4个点组成的四边形是否是一个矩形或类矩形;若不是矩形或类矩形则删除;若是矩形或类矩形则保留;判断保留的矩形或类矩形的个数;若为1,得到矩形或类矩形的边缘;若大于等于2,执行步骤六;
所述类矩形为平行四边形或内角和为360度的四边形;
步骤六、找出周长或面积最大的矩形或类矩形,得到矩形或类矩形的边缘。
本发明的有益效果为:
结合两种技术路线,本发明进行了大量的改进和调优,结合两种方法的优势,摒弃劣势,实现了一种基于深度学习与传统视觉算法融合的移动端类矩形物体边缘检测方法。
本发明通过融合传统算法与深度学习技术,实现对矩形或类矩形物体边缘检测,是对传统边缘检测技术的一种改进方案。通过对传统边缘检测技术的改进,提高了检测效率与准确性,并且可以在移动端部署,做到全平台通用。
新的技术改进方案,不仅提升了传统方案的检测精度,而且可以跨平台部署,工程移植上较为简单,模型训练简单,提高了移动端类矩形物体边缘检测效率和准确性。同时,本发明采用对神经网络训练方法、框架裁剪、量化等技术,为其他工程带来参考。
附图说明
图1为本发明流程图;
图2为特征融合图;
图3为框架NCNN与Pytorch在移动端部署图;
图4为INT8量化原理简图;
图5为边缘提取图。
具体实施方式
具体实施方式一:结合图1说明本实施方式,本实施方式基于深度学习的移动端类矩形物体边缘检测方法具体过程为:
步骤一、对待测物体边缘图像进行粗提取;
步骤二、对步骤一中粗提取后的图像使用OpenCV的HoughLinesP函数检测线段;
步骤三、将检测到的线段延长成直线,利用直线间的角度、距离约束条件,对相等(完全重合的)、相似的直线利用求均值方法合成一条直线(像素坐标相加,再除以2);
所述相似为角度相差小于等于5度,距离小于3个像素;
步骤四、计算直线或直线延长线之间的交叉点的距离,将距离小于20像素距离的交叉点合并;计算不能合并直线之间的交叉点个数;
步骤五、利用矩形或类矩形的角度条件,对不能合并直线之间的所有交叉点,每次取出其中的4个,判断这4个点组成的四边形是否是一个矩形或类矩形;若不是矩形或类矩形则删除;若是矩形或类矩形则保留;判断保留的矩形或类矩形的个数;若为1,得到矩形或类矩形的边缘;若为大于等于2,执行步骤六;
所述类矩形为平行四边形或内角和为360度的四边形;
步骤六、找出周长或面积最大的矩形或类矩形,得到矩形或类矩形的边缘。如图5。
具体实施方式二:本实施方式与具体实施方式一不同的是,所述步骤一中对待测物体边缘图像进行粗提取;具体过程为:
步骤一一、建立训练集;
步骤一二、建立HED网络模型;
步骤一三、将训练集输入HED网络模型进行训练,得到训练好的HED网络模型;
步骤一四、将待测物体边缘图像输入训练好的HED网络模型,对待测物体边缘图像进行粗提取。
其它步骤及参数与具体实施方式一相同。
具体实施方式三:本实施方式与具体实施方式一或二不同的是,所述步骤一一中建立训练集;具体过程为:
训练集包含合成图像与真实图像。
所述真实图像为:需要检测的含有矩形或类矩形的图像;
所述合成图像为:在前景图上添加旋转、平移、透视变换,对背景图进行随机裁剪,利用OpenCV中的addWeighted()函数生成合成图像。
所述前景图指的是真实图像,背景图根据实际情况随机选取。
其它步骤及参数与具体实施方式一或二相同。
具体实施方式四:本实施方式与具体实施方式一至三之一不同的是,所述步骤一二中建立HED网络模型;具体过程为:
HED网络模型包括五个卷积块;
第一卷积块包括卷积层1、卷积层2、池化层1;卷积层1连接卷积层2,卷积层2连接池化层1,池化层1连接第二卷积块;
第二卷积块包括卷积层3、卷积层4、池化层2;卷积层3连接卷积层4,卷积层4连接池化层2,池化层2连接第三卷积块;
第三卷积块包括卷积层5、卷积层6、池化层3;卷积层5连接卷积层6,卷积层6连接池化层3,池化层3连接第四卷积块;
第四卷积块包括卷积层7、卷积层8、池化层4;卷积层7连接卷积层8,卷积层8连接池化层4,池化层4连接第五卷积块;
第五卷积块包括卷积层9、卷积层10、卷积层11;卷积层9连接卷积层10,卷积层10连接卷积层11;
对每个卷积块得到的特征图进行反卷积,使得各个尺度得到的特征图尺度相同,得到每个卷积块对应的反卷积后的特征图,将每个卷积块对应的反卷积后的特征图与对应通道的对应像素加权,将五个卷积块对应的加权值相加,得到融合后的特征图;如图2;
裁剪HED网络,缩小通道数量:
第一卷积块由64通道裁剪为16通道,第二卷积块由128通道裁剪为32通道,第三卷积块由256通道裁剪为32通道,第四卷积块由512通道裁剪为64通道,第五卷积块由512通道裁剪为128通道。
其它步骤及参数与具体实施方式一至三之一相同。
具体实施方式五:本实施方式与具体实施方式一至四之一不同的是,所述步骤一三中将训练集输入HED网络模型进行训练,得到训练好的HED网络模型;具体过程为:
融合过程使用转置卷积(transposed convolution)/反卷积(deconv)时,将卷积核的值初始化成双线性放大矩阵,双线性放大矩阵指的是一种卷积核初始化方法;
设置学习率;使用很小的学习率,这样才更容易让模型收敛;
对融合后得到的特征图进行损失计算,损失最小为最优结果,得到训练好的HED网络模型。
PC端训练模型使用Python语言编写,移动端上使用NCNN提供的C++接口,在PC上训练完网络后,借助NCNN把模型文件格式的模型文件转换成.bin和param格式的模型文件,最终使用C++API编写的代码部署;如图3;
根据移动端部署情况,本发明需要裁剪NCNN框架、优化网络结构以及进行量化操作。对于移动端来说,NCNN是一个很庞大的框架,它占用的体积是比较大的,所以需要尽量的缩减NCNN库占用的体积。由于我们的网络模型比较简单,许多操作是多余的,比如各种附加工具、无关网络卷积操作例如空洞卷积等等,裁剪掉这些无关框架源码,大大降低NCNN框架体积。需要强调的一点是,这种操作思路,是针对HED神经网络结构的裁剪方式。
裁剪HED网络,考虑到现在的实际需求,只是检测矩形区域的边缘,而并不是检测通用场景下的广义的边缘,就是保留HED的整体结构,修改VGG每一组卷积层里面的卷积核的数量,也就是缩小通道数量,让HED网络变的更简洁。按照这种思路,经过多次调整和尝试,最终得到了一组合适的卷积核的数量参数,对应的模型文件有3M。如图4。
本发明裁剪NCNN框架以及进行量化操作。裁剪无关框架源码,降低NCNN框架体积。
本发明借助NCNN框架INT8工具量化最终模型,使得最终模型文件只有1.8M。我们的目的是把原来的float 32bit的卷积操作(乘加指令)转换为int8的卷积操作,这样计算就变为原来的1/4,但是访存并没有变少,因为我们是在卷积核里面才把float32变为int8进行计算的。就是把一个网络层的激活值范围的给圈出来,然后按照绝对值最大值作为阀值,然后把这个范围直接按比例给映射到正负128的范围内来。在HUAWEI Mate10 Pro上,处理每帧图片的时间消耗是0.06秒左右,满足实时性的要求。
其它步骤及参数与具体实施方式一至四之一相同。
本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
机译: 基于深度学习的类别敏感边缘检测方法
机译: 物体,即内窥镜运输袋,具有矩形的可充气壁,其在壁之间限定了用于容纳物体的壳体,并且在壁的自由边缘之间形成有用于将物体引入壳体的开口。
机译: 用于覆盖物体的单元采取矩形罩的形式,该矩形罩具有被构造成能够容纳可锁定的紧固元件的隧道的边缘部分。