system: [SYSTEM]

user: 2. 识别方法 2.1. 图像预处理 2.1.1. 倾斜矫正 从工业相机获取的钢材压印字符原始图像如图1(a)所示。由于在压制压印字符过程中会出现偏差，或者在摄取压印字符图像过程中没有完全对准，难免会出现字符倾斜的问题，这就需要对字符进行倾斜校正。霍夫变换(Hough Transform)是图像处理中的一种检测特定形状的技术。它实质上是一种线-点变换，把图像空间转换到一个参数空间中，通过统计寻找累加的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换常用来检测图像中的直线，此外霍夫变换也可用于对曲线的识别，例如检测圆和椭圆。霍夫变换检测直线具有受直线中的间隙影响小和抗干扰性强的优点。其原理是：将图像中直线上的点(x， y)进行变换，利用过该点的直线在直角坐标中的表达式y = kx + b (其中k为斜率，b为截距)可变换成b = −kb + y，即把点(x， y)转换到k-b参数空间的一条直线，图像空间的直线上多个点的累加变为在参数空间上的多条直线相交于一点，在参数空间寻找这个最大点从而可以返回找到原始图像上的直线。根据钢材部件的矩形条状结构特点，可利用霍夫变换检测直线的算法获取图像中最长的线，然后计算该长线的倾斜角度 ，最后将图像旋转 − γ 即可。结果如图1(b)所示。 另外，图像在实际成像、获取的过程中会出现字符倒置的情况，如图1(c)所示。为了统一数据集样本的基本形式，就需要对这些倒置的图像进行180˚的旋转处理，结果如图1(d)所示。 图1. 倾斜矫正图片 2.1.2. 图像增强 为了加强和突出钢材部件图像中压印字符特征，减少字符图像的噪声干扰，本研究首先对图像进行灰度化处理，然后利用中值滤波抑制噪声，同时字符的边缘细节还能保留下来。中值滤波 [ 15 ] 是一种非线性图像平滑方法，其输出像素由邻域像素的中间值决定。首先要选定一个奇数像素的窗口W，将窗口内各像素灰度值按从小到大进行排列 ( x 1 ， x 2 ， ⋯ ， x n ) ，选取排在灰度序列中间的灰度值y作为对应窗口中心位置的像素灰度值。具体的计算方式为 y = m e d ( x 1 ， x 2 ， ⋯ ， x n ) = { x n + 1 2 ，     n 为 奇 数 1 2 ( x n 2 + x n 2 + 1 ) ，     n 为 偶 数 (1) 其中，n为像素值的数量，通常是奇数。但当n为偶数时，计算中间两个像素的平均值即为窗口中心位置的灰度值。通过中值滤波后图像的背景更加平滑，字符更突出，有助于在字符识别的过程中更好地提取出字符特征，从而达到较好的识别效果。图像增强的效果如图2所示。 图2. 图像增强效果图 2.1.3. 数据集扩充 由于没有公开的钢材压印字符数据集，本研究从实际的工厂生产线上通过工业相机获取了1500幅钢材压印字符原始图像作为数据集样本。每幅钢材生产标号图像均包含了10个字符，由数字和大写字母组成，但经过统计发现字母的数量远远少于数字字符的数量。为了平衡网络训练的各类样本数量，对现有样本进行扩充，本研究采用泊松融合的方法对部分字母样本进行重新自由组合，产生新的样本。 泊松融合是由Perez等 [ 16 ] 提出的基于泊松方程的图像编辑算法，通过求解公式(2)极值问题，构造泊松方程从而求解像素最优值。 min f ∬ Ω | ∇ f − V | 2 ， f | ∂ Ω = f * | ∂ Ω (2) 式中， Ω 代表前景图像中需要融合的字符区域， ∂ Ω 则为该区域的边界，V是在 Ω 上的梯度向量场。f代表字符融合后的图像，其梯度为 ∇ f ，而f * 代表融合的字符区域以外的背景图像。在满足融合图像和背景图像的边界值相等的同时，求解融合图像的梯度与V引导下的梯度最小差值，从而达到比较自然的无缝融合效果。该问题可以转化成利用狄利克雷边界条件求解泊松方程，如式(3)所示。 Δ f = d i v V ， f | ∂ Ω = f * | ∂ Ω (3) 式中， Δ 为拉普拉斯算子，div为散度算子。本研究利用泊松融合方法最终得到2000幅字符图像，其中1600幅作为训练集，400幅作为测试集。 2.2. YOLOv2原理 2.2.1. YOLOv2网络结构 大部分目标检测框架常用准确率高的VGG-16 [ 17 ] 作为特征提取网络，但VGG-16网络结构复杂且计算量庞大。而YOLO采用类似GoogleNet [ 18 ] 的网络结构，相较于VGG-16而言，计算量减小，但准确率略低于VGG-16。为了兼顾复杂度与准确率以提升网络的检测性能，YOLOv2对YOLOv1进行了改进，采用了新的分类网络Darknet-19作为网络骨架来进行特征提取。Darknet-19网络包含了19个卷积层和5个最大值池化层，去除了YOLOv1中的全连接层，得到了更多的空间信息。网络在所有的卷积层后增加Batch Normalization (批量归一化)并移除网络的dropout，这可以显著改善网络的收敛性，并且有利于正则化模型，防止过拟合。 基于YOLOv2的钢材压印字符识别网络结构如图3所示。将归一化为 608 × 608 大小、通道数为3的图像作为输入，采用多个 3 × 3 卷积核，每经过一次池化操作都会将通道数翻倍。借鉴了network in network [ 19 ] 的思想，使用全局平均池化进行预测，将 1 × 1 卷积核置于 3 × 3 卷积核之间进行交替操作以压缩卷积间的特征表示。经过19个卷积层和5次池化后，图像转化为 19 × 19 × 1024 的特征图，其中第13个卷积层输出的 38 × 38 × 512 特征图经过一层卷积和重组之后得到 19 × 19 × 256 的特征图，将其与 19 × 19 × 1024 的特征图进行融合，最后再经过两层卷积得到最终的特征图。通过添加这样一个转移层(passthrough layer)把浅层特征图和深层特征图相连接，使得最终获得的特征图可以拥有更好的细粒度特征。 图3. YOLOv2的网络结构 2.2.2. 检测过程 YOLOv2在对钢材压印字符检测识别的过程中，会将整个输入图像划分成 S × S 的网格，每个网格负责检测中心点落在网格中的对象。同时，YOLOv2网络借鉴Faster R-CNN的思想，引入Anchor Boxes先验框，不同于Fast R-CNN需要人工定义Anchor Boxes，YOLOv2采用K-means聚类方法对数据集中的人工标记框进行聚类分析，确定Anchor boxes的数量和大小，最后在网格的周围生成几个一定比例的边框。那么，每个网格单元预测B个边界框和这些框的置信度分数，每个边界框包含了该区域中心点的位置(x， y)，高度h，宽度w和置信度confidence这5个信息。 置信度表征边界框中是否含有检测对象以及边框预测的准确程度，其计算公式为 c o n f i d e n c e = P ( o b j e c t ) × I O U p r e d t r u t h (4) 式中，P(object)表示边界框中有无包含检测对象，若有取值为1，则置信度confidence等于 I O U p r e d t r u t h 的值，若边界框中没有包含检测对象，P(object)取值为0，则置信度confidence的值也为0。而 I O U p r e d t r u t h 表示预测边界框与标记的真实边界框的重合程度，其计算方式为 I O U p r e d t r u t h = A r e a ( p r e d ) ∩ A r e a ( t r u t h ) A r e a ( p r e d ) ∪ A r e a ( t r u t h ) (5) 即预测边界框与真实边界框所占面积的交集比上两者的并集(Intersection over Union)，该值越接近于1，表明两者的重合度越高。那么，预测边框某一类别的置信分数Conf i 就可以通过式(6)进行计算。 C o n f i = P ( c l a s s i | o b j e c t ) × P ( o b j e c t ) × I O U p r e d t r u t h = P ( c l a s s i ) × I O U p r e d t r u t h (6) 置信分数表征预测边界框中含有某一类别的概率及边框坐标的准确度。综上，当存在C类别时，网络的输出尺寸为 S × S × B × ( 5 + C ) 的张量。根据置信分数的大小，采用非极大值抑制(NMS)筛选获得最终的检测结果。 2.2.3. 输出改进 在检测结果输出时，为了能使检测到的字符按生产标号顺序输出，本研究利用检测到的字符位置信息通过冒泡排序按从小到大进行排序，相应的字符从左到右排列，从而得到准确的生产标号。利用字符位置信息进行冒泡排序的方式比较简单，依次比较存放字符位置信息的数组中相邻两个数的大小，若排在第i位的数比排在第i + 1位的数要大，则两者进行交换，否则不需要交换。同时位置信息对应的字符数组也进行相同的操作，最终得到位置信息从小到大的序列和按生产标号从左到右的字符序列。