2. 中石化江钻石油机械有限公司, 武汉 430080
2. Sinopec Jiang Diamond Oil Machinery Co. Ltd., Wuhan 430080, China
复合片是PDC钻头的核心切削单元. 钝钻头的修复很大程度上降低了生产成本, 并且修复后的PDC钻头仍然具有不低于出厂效果的良好应用性能[1]. 为了实现PDC钻头复合片的自动修复, 首先需要在刀翼中检测出单个的复合片, 而当前修复钻头依靠人工判断失效情况, 效率较低. 本文提出了一种基于改进YOLOv7的PDC钻头复合片检测方法, 为后续的自动修复提供了有效的技术手段.
基于深度学习的目标检测方法研究始于2014年, Girshick等[2]提出了第1个基于卷积神经网络(CNN)的目标检测方法R-CNN, 该方法先在图像中提取候选区域, 然后对每个候选区域进行CNN特征提取和分类, 最后进行边框回归得到检测框. 2015年在R-CNN的基础上, 相继诞生了Fast R-CNN[3]和Faster R-CNN[4], 使得检测速度进一步提升. 同年, YOLO的开篇之作YOLOv1[5]诞生, 它通过将图像分割成网格来检测图片, 每个网格输出多个边界框和类别概率, 然后通过非极大值抑制过滤检测框. 2018年的YOLOv3[6]是YOLO系列的里程碑之作, 它采用了更深的网络, 并使用了残差结构来提高检测性能, 此外, 特征金字塔和多尺度检测的加入则是让它有了更高的检测精度. 2020年的YOLOv4[7]采用了更快的网络结构和更多的技术来提高检测性能. 同年的YOLOv5[8]使用了更小、更快的网络结构, 并使用了自适应锚框来提高检测性能. YOLOv7[9]于2022年提出, 它通过增加训练成本来提升精度.
2020年, Ashok等[10]首次利用图像处理技术和深度学习对PDC钻头切削齿的损伤程度进行量化, 通过YOLOv3自动检测识别金刚石复合片; Ashok等[11]开发了一种软件算法, 使用YOLOv3自动检测在钻井现场拍摄到的钻头图像中的复合片, 提高了对于复合片小目标的检测精度; Lu等[12]建立了复合片的FasterR-CNN检测模型并进行训练, 提高了在复杂光环境下的检测性能.
目前, 在PDC钻头复合片检测中仍然存在如复合片缺损形态多变、刀齿背景对比度较低以及周边环境的干扰等问题, 这可能导致复合片定位失败, 从而影响正常的修复进程. 针对上述问题, 本文借助YOLOv7网络结构, 从提升网络的特征提取能力及速度, 解决背景杂乱、光照不均等问题对网络进行改进, 提高复合片检测的整体性能.
1 改进的YOLOv7检测算法在YOLOv7的基础上, 为解决复合片检测过程中存在的检测速度及模型大小问题, 加入了深度可分离卷积和SPPFCSPC, 减少了模型参数, 提高了检测速度. 针对复合片与刀齿背景颜色近似, 特征复杂等问题, 引入了SimAM注意力机制, 它可以重点关注复合片区域的信息, 提高模型对关键特征的识别能力. 而对于复合片目标框大小与传统目标框大小存在差异, 通过使用K-means++重新聚类目标框, 可以加速网络收敛, 提高检测精度. 启发式算法可以在复合片缺失的情况下定位出缺失位置, 降低漏检率.
网络使用固定大小的图片训练, 用深度可分离卷积替换了常规卷积, 用SPPFCSPC替换SPPCSPC, 加入了SimAM注意力模块, 具体的网络结构如图1所示.
1.1 深度可分离卷积在改进的复合片检测网络中, 构建了DSConv+BN层+SILU激活函数的DSBS模块, 其中的DSConv为深度可分离卷积[13], 深度可分离卷积的加入在保证精度的同时减少了参数量和运算成本. 深度可分离卷积与常规卷积的卷积效果是类似的, 但计算量却成倍减少.
深度可分离卷积主要分为两个过程: 逐通道卷积和逐点卷积. 在逐通道卷积中, 一个卷积核负责一个通道, 一个通道只被一个卷积核进行卷积, 经过逐通道卷积产生的特征图数量和输入图片的通道数保持一致. 逐点卷积与常规卷积基本类似, 它的卷积核大小为1×1×M (M为上一层的通道数), 相当于是将输入在深度方向进行加权相加, 生成新的特征图, 其中特征图的数量由卷积核的数量决定. 深度可分离卷积的示意图如图2所示.
1.2 SimAM注意力模块空间注意力的结构如图3所示, 这些注意力模块一般会被插入到网络块中, 对先前层的输出在通道或空间维度进行细化操作, 生成一维或二维权重, 并对不同的神经元区别对待, 以起到改进前面网络层输出的作用.
为了更好地实现注意力机制, 应该根据每个神经元的重要性单独分配权重, SimAM注意力[14]便可以很好地实现这些功能. 在神经科学中, 信息量不同的神经元与周围神经元的放电模式往往是不相同的, 而且在激活神经元的过程中周围的神经元也会受到不同程度的抑制, 所以便需要赋予这些神经元更大的权值以抵消抑制作用. 在SimAM注意力机制中, 为了找到这些重要的神经元, 通过度量它们之间的线性可分性定义了如下的能量函数:
$ {e}_{t}={\left({y}_{t}-\hat{t}\right)}^{2}+\frac{1}{M-1}{\displaystyle \sum }_{i=1}^{M-1}{\left({y}_{0}-{\hat{x}}_{i}\right)}^{2} $ | (1) |
对式(1)最小化, 训练同一通道内某神经元与其他神经元的线性可分性, 并采用二值化标签, 添加正则项, 新的能量函数如下:
$ {e_t} = \frac{1}{{M - 1}}\mathop \sum \limits_{i = 1}^{M - 1} {\left( { - 1 - \left( {{w_t}{x_i} + {b_t}} \right)} \right)^2} + {\left( {1 - \left( {{w_t}t + {b_t}} \right)} \right)^2} + \lambda {w_t}^2 $ | (2) |
$ {w}_{t}=-\frac{2\left(t-{\mu }_{t}\right)}{{\left(t-{\mu }_{t}\right)}^{2}+2{\sigma }_{t}^{2}+2\lambda } $ | (3) |
$ {b_t} = - \frac{1}{2}\left( {t + {\mu _t}} \right){w_t} $ | (4) |
其中,
$ {\mu _t} = \frac{1}{{M - 1}}\mathop \sum \nolimits_{i = 1}^{M - 1} {x_i} $ | (5) |
$ \sigma _t^2 = \frac{1}{{M - 1}}\mathop \sum \nolimits_{i = 1}^{M - 1} {({x_i} - {\mu _i})^2} $ | (6) |
因此, 最小能量公式可以简化为:
$ e_t^* = \frac{{4\left( {{{\hat \sigma }^2} + \lambda } \right)}}{{{{\left( {t - \hat \mu } \right)}^2} + 2{{\hat \sigma }^2} + 2\lambda }} $ | (7) |
通过能量函数可以看出, 神经元
$ \tilde X = {\textit{Sigmoid}}\left( {\frac{1}{E}} \right) \odot X $ | (8) |
相比SE, ECA等注意力机制, SimAM注意力机制不仅性能更好, 拥有更强的鲁棒性, 而且不引入额外的参数, 保证了网络的运行速度. 它可以忽略掉不重要的背景信息, 快速定位出复合片的位置, 同时还会不断地调整权重, 对于不同复合片或不同环境条件下的复合片, 都能够以高精度完成检测任务.
1.3 SPPFCSPC在网络结构中, SPP模块[15]的作用是通过最大池化增大感受野, 以适应不同分辨率的图像. 而CSP模块则是将特征分为两部分, 其中一部分进行常规处理, 另一部分进行SPP结构的处理, 最后把这两个部分合二为一, 这样能减少一半的计算量, 使得速度更快, 精度更高. YOLOv7中的SPPCSPC则是将SPP和CSP结构结合了起来. 本文在SPPCSPC的基础上, 借鉴SPPF的思想优化得到SPPFCSPC, 在保证感受野不变的同时获得了速度的提升. SPPFCSPC的结构如图4所示.
在SPPF结构中, 首先对输入的特征图进行不同大小的池化操作, 然后对池化结果通过卷积进行融合. SPPF结构可以自适应地融合不同尺度的特征信息, 以提高对不同形式缺损复合片的检测能力和检测速度.
1.4 K-means++在复合片的检测任务中, 因为复合片的大小始终在一个固定的维度之间, 而YOLO网络的预设锚框则是适用于COCO数据集, 对于本文所使用的钻头数据集存在较大偏差, 不利于网络收敛. 在YOLOv7网络中, 使用了K-means算法默认对原始锚框进行聚类, 并在训练过程中自行调整锚框, 但是在聚类的过程中, K-means在正式聚类之前首先要完成对9个簇中心的初始化, 这就使得网络的收敛情况严重依赖于簇中心的初始化状况, 如果初始化存在偏差将直接影响到网络收敛, 采用K-means++算法便可以有效缓解这一问题, 从而在一定程度上提高复合片的检测精度和效果. 原始锚框、K-means聚类锚框和K-means++聚类锚框的对比如表1所示. 相比K-means算法, K-means++算法优化了第1步选择9个簇中心的过程, 使得随机选取的中心点不再只是趋于局部最优解, 而是寻找全局最优解. 在随机初始化9个簇中心的时候, 通过让各个簇的中心点之间尽可能远来保证它们不会位于同一个簇内, 这会比K-means算法产生更好的结果. K-means++算法的具体步骤如下.
(1)从输入的点集中随机选取一个点作为聚类中心;
(2)对于点集中的每个点p, 计算它与最近的聚类中心之间的距离D(p);
(3)选择一个D(p)最大的点作为新的聚类中心;
(4)重复步骤(2)和步骤(3)直到9个聚类中心全部选出;
(5)用选出的9个聚类中心运行K-means算法, 选出最终的锚框.
最终的K-means++聚类结果如图5所示.
1.5 启发式算法为了解决缺失或者漏检复合片的问题, 本文提出一种启发式算法, 步骤如下.
(1)获取每一个检测框的中心点坐标, 计算公式为:
$ cente{r_x} = {\textit{top}} + \frac{{bottom - {\textit{top}}}}{2} $ | (9) |
$ cente{r_y} = {\textit{left}} + \frac{{right - {\textit{left}}}}{2} $ | (10) |
其中,
(2)确定一个初始点P1, 一般选取两端的点(根据x坐标或者y坐标最大值选取初始点);
(3)计算点P1与其他点的距离, 选出最短距离的点P2并连接;
(4)计算点P2与其他点(除了已经筛选过的点)的距离, 选出最短距离的点P3并连接;
(5)循环操作直到遍历完所有的点;
(6)计算每两个相邻点之间的距离, 剔除最大值后求取平均值;
(7)若某两个点之间的距离超过平均值一定范围(根据钻头类型选取范围区间), 则判断此处存在缺损情况, 用红色线段表示.
启发式算法结果如图6所示, 图6中的红色线段处即为检测出的缺损位置.
2 实验与分析本文的所有模型训练均是在PyTorch框架下完成的, 硬件环境为: CPU为AMD Ryzen 7 4800H, GPU为NVIDIA RTX 2060. 软件环境为Windows 10、Python 3.7、PyTorch 1.7.0、cuda 10.1、cudnn 7.6.5.
2.1 数据集实验的数据集来自生产现场的PDC钻头, 为了解决数据集过小的问题, 增强模型的泛化能力, 于是对数据集进行了扩充. 本文采用亮度增强, 对比度增强、水平翻转、随机旋转、随机裁剪、添加噪声、颜色空间变换、图像模糊8种扩充方式, 扩充后共计1800张图像, 部分PDC钻头数据集扩充结果如图7所示.
2.2 评价指标
为了验证模型的有效性, 选取了平均精度均值 (mAP), 召回率 (recall, R), 准确率 (precision, P), 参数量, 计算量和推理速度对网络的性能进行了测试.
在所有评价指标中, R是召回率, 其公式如下所示:
$ R = \frac{{TP}}{{TP + FN}} $ | (11) |
其中, TP是被正确划分为正样本, 在目标检测中指IoU>0.5的目标框数量, FN是被错误划分为负样本, 在目标检测中指没有被检测到的目标框数量. 所以R指在所有真实目标中, 模型检测正确的目标框的占比.
P是准确率, 公式如下:
$ P = \frac{{TP}}{{TP + FP}} $ | (12) |
其中, FP是被错误划分为正样本, 在目标检测中指
mAP是平均精度均值, 指所有种类的AP均值, 在本文背景下指复合片检测中P-R (precision-recall)曲线包围的面积. 此外, IoU是指所有检测出来的复合片中检测框与真实框的交并比, 公式为:
$ IoU=\frac{检测框\cap 真实框}{检测框\cup 真实框} $ | (13) |
检出率指检测出来的复合片占所有复合片的占比. 参数量指网络结构中所有参数的数量总和, 用来衡量模型的空间复杂度. 计算量指模型推断时需要的计算次数, 用来衡量模型的时间复杂度. 推理速度指1 s预测的图片数量, 是单张图片预测时间的倒数.
2.3 消融实验
为了更加全面综合地分析改进YOLOv7网络中各个模块对复合片检测的性能提升, 本文设计了消融实验. 首先, 将各个模块引入YOLOv5, 验证新加入模块在不同的网络模型中仍然具有良好的性能, 实验结果如表2所示. 其次, 将深度可分离卷积, SimAM注意力机制, SPPFCSPC, K-means++聚类分别加入到YOLOv7中, 与原网络作为对照, 具体的实验内容与结果如表3所示.
从表2可以看出, 新增模块在YOLOv5中也具有良好的性能表现, 因为SPPFCSPC在原YOLOv5网络中并不存在, 所以该模块的加入导致网络参数增加, 推理速度也降低了, 但是mAP却有3.66%的增长, 提升了网络的检测精度.
从表3可以看出, 各个新增模块对网络的性能都有不同程度的提升. 深度可分离卷积的加入虽然小幅降低了网络的mAP, 但却减少了80%的参数, 降低了模型的大小. SimAM注意力机制使得网络的mAP提高了1.96%. SPPFCSPC的引入使得网络的推理速度提高了6.3 f/s, 并且精度也有提升. K-means++聚类后的锚框因为更适合复合片大小, 所以对精度的提升有着积极的影响, 相比K-means聚类mAP提高了1.64%. 由此可见, 各个改进模块的加入均不同程度地提高了网络的性能, 取得了良好的检测效果.
为了验证启发式算法的有效性, 在相同环境下做了对比实验, 实验结果如表4所示.
通过实验可以看出, 启发式算法的加入可以提高检出率, 解决漏检或缺失的问题.
2.4 性能对比本文共进行了5组对比实验, 训练时的batch_size为8, 使用SGD优化器优化网络参数, 没有设置预训练权重, 从0开始训练. 各网络的检测结果如图8所示.
从图8可以看出, 本文方法较YOLOv7能够捕捉到更多的暗部细节, 可以检测出底部不明显的复合片, 同时目标框更接近复合片大小, 不存在过多冗余或者出界的情况, 且明显优于其他网络模型. 提取出的单个复合片如图9所示.
从图9可以看出, 提取出的单个复合片定位准确, 不明显的边缘区域也能准确识别出来, 方便后续的修复操作. 实验的各项性能指标对比如表5所示.
从表5可以看出, 本文方法的各项指标较YOLOv7均有提升, mAP和推理速度各提高2.75%和9.12 f/s, 同时参数量和计算量也分别降低了80%和90.26 GFLOPs, 参数量的降低可以简化模型, 使整个模型获得更好的可解释性, 更有利于模型的推广和使用.
3 总结
在复合片自动修复应用中, 对复合片检测的准确性和实时性都有较高的要求. 本文在传统YOLOv7网络的基础上, 加入了深度可分离卷积、SimAM注意力机制、SPPFCSPC, 并且使用K-means++对原始锚框进行了重新聚类, 通过启发式算法定位出漏检的复合片. 相较传统的YOLOv7网络, 改进后的网络在降低模型大小的同时, 提高了网络的准确率和特征提取能力, 提高了背景杂乱、光照不均等问题下的检测精度, 可满足复合片检测需求. 但该方法仍然存在不足, 例如准确性有待提高, 对缺损部分过多的复合片容易漏检等问题. 在后续工作中, 将研究如何汇总深度学习中更多的优秀算法和网络结构, 进一步提高网络的检测准确性和实时性, 以及针对漏检情况提出更加高效准确的解决方案.
[1] |
陈楠. 浅析钢体PDC钻头修复与应用. 西部探矿工程, 2022, 34(9): 112-114. DOI:10.3969/j.issn.1004-5716.2022.09.039 |
[2] |
Girshick R, Donahue J, Darrell T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation. Proceedings of the 2014 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Columbus: IEEE, 2014. 580–587.
|
[3] |
Girshick R. Fast R-CNN. Proceedings of the 2015 IEEE International Conference on Computer Vision (ICCV). Santiago: IEEE, 2015. 1440–1448.
|
[4] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/tpami.2016.2577031 |
[5] |
Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection. Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016. 779–788.
|
[6] |
Redmon J, Farhadi A. YOLOv3: An incremental improvement. arXiv:1804.02767, 2018.
|
[7] |
Bochkovskiy A, Wang CY, Liao HYM. YOLOv4: Optimal speed and accuracy of object detection. arXiv:2004.10934, 2020.
|
[8] |
Jocher G. YOLOv5. https://github.com/ultralytics/yolov5. (2020-08-09)[2022-03-23
|
[9] |
Wang CY, Bochkovskiy A, Liao HYM. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors. Proceedings of the 2023 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Vancouver: IEEE, 2023. 7464–7475.
|
[10] |
Ashok P, Vashisht P, Kong H, et al. Drill bit damage assessment using image analysis and deep learning as an alternative to traditional IADC dull grading. SPE Annual Technical Conference and Exhibition. Denver: OnePetro, 2020.
|
[11] |
Ashok P, Chu J, Witt-Doerring Y, et al. Drill bit failure forensics using 2D bit images captured at the rig site. Proceedings of the 2021 SPE/IADC International Drilling Conference and Exhibition. Stavanger: OnePetro, 2021.
|
[12] |
Lu BP, Xu T, Huang YB, et al. Applications of computer vision and deep learning in visual features extraction of drill bits. Proceedings of the 2022 International Petroleum Technology Conference. Riyadh: OnePetro, 2022.
|
[13] |
Chollet F. Xception: Deep learning with depthwise separable convolutions. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 1800–1807.
|
[14] |
Yang LX, Zhang RY, Li LD, et al. SimAM: A simple, parameter-free attention module for convolutional neural networks. Proceedings of the 38th International Conference on Machine Learning. Vienna: PMLR, 2021. 11863–11874.
|
[15] |
He KM, Zhang XY, Ren SQ, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(9): 1904-1916. DOI:10.1109/TPAMI.2015.2389824 |