冯灵清,杜凯杰,刘宇晶
(山西农业大学 信息科学与工程学院,山西 晋中 030800)
随着目标检测技术的趋于成熟,大、中型目标检测已经不能满足实际需求,对小目标的检测能力研究已成为目标检测领域一个重要的应用方向。如果能对船体这种典型的小目标进行精确的检测,有助于海域活动船体的检测和海洋作业效率的提高,对船只管理、海运交通监视、海上救援、军事应用、维护国家海洋权益和海洋安全等具有重要的现实意义和战略意义[1]。小目标检测一直是目标检测研究的难点,因为小目标对象不但分辨率较低、分布比较密集,另外还存在尺度不均衡、检测过程易受背景干扰等问题,这些原因造成小目标检测难度偏大,因此小目标检测能力的提高成为一个亟待解决的问题,李成[2]提出小目标检测能力的提高重点在提升算法。本文提出基于NAM-YOLOv7的目标检测方法来进行航拍船体检测的研究,具有现实可行性及重要的研究意义。
本文试验采用公开数据集AI-TOD的部分数据。AI-TOD中包含8类不同的检测目标,有ship,airplane,bridge,person,storage-tank,swimming-pool,vehicle,wind-mill 8种标签类别,包含11 214个样本数据图,实验使用数据集从原始数据集中单独分离出了仅包含ship标签的数据作为样本数据图,并在样本数据图中划分80%作为训练数据集,剩余20%作为验证数据集,包含4 792个训练样本数据图,1 174个测试样本数据图。部分样本数据如图1所示。实验数据图尺寸为640×640(像素)大小,为了适应各种不同网络对数据图的输入要求,首先需要对不同尺寸的遥感飞机图像数据进行归一化处理,使其具有很好的适用性和实用性。
图1 部分样本数据
通过Labelme软件将数据集中目标的类别和位置信息进行标注,格式为(class_name,x,y,w,h),参数class_name表示目标类别的标签名称,(x,y)表示归一化后目标的中心点坐标,w和h分别表示归一化后目标框的宽度和高度。同时,对较清晰的目标标注时,使矩形框尽量包含整个目标,对于通过轨迹预示船只位置的数据图仅使矩形框包含轨迹终点的目标部分。
1.2.1 YOLOv7算法
YOLOv7网络[3]由3个部分组成:input、backbone和head。input用于输入,backbone层用于提取特征,head层用于预测,该算法模型结构如图2所示。
图2 YOLOv7整体框架
1.2.2 NAM模块
NAMAttention[4]是一种基于归一化的轻量级的高效的注意力计算方式,NAM模块重新设计了通道注意力和空间注意力子模块,通道注意力子模块使用了Batch Normalization中的缩放因子,如公式(1)所示,通道注意力子模块如图3所示,空间注意力子模块如图4所示。
图3 通道注意力模块
图4 空间注意力模块
(1)
本文所做实验的硬件环境为:图像处理设备GPU型号为NVIDIA GeForce RTX3090 GPU,中央处理器大小为11th Gen Intel(R) Core(TM) i7-11700K @3.60GHz CPU,内存为64 GB。改进YOLOv7模型是基于PyTorch的深度学习框架,采用Annaconda3(64-bit)+Python3.8+CUDA11.1+cuDNN8.1+PyTorch1.8.1的深度学习环境[5]。
实验参数设置如表1所示。
表1 参数设置
YOLOv7和NAM-YOLOv7检测结果通过以下几种情况介绍。
2.1.1 有效检测结果对比
从YOLOv7和NAM-YOLOv7有效检测结果对比可以看出,在船体图像边缘模糊、轮廓不清晰的情况下,检测结果如图5(a)所示,YOLOv7算法容易出现漏检情况,对目标的特征提取能力偏低,且船体检测精度很低;在强背景干扰和边缘检测干扰的情况下,检测结果如图5(b)所示,YOLOv7算法存在明显的漏检情况,对边缘小目标的特征提取能力一般;在通过船体轨迹预示目标位置与小目标密集双重干扰情况下,检测结果如图5(c)所示;在近岸复杂背景干扰的情况下,检测结果如图5(d)所示;YOLOv7算法也都存在明显的漏检和误检情况。而从上述几种情况的检测结果可以看出,本文改进算法通过构建NAMAttention模块,融入全局注意力机制,加强主干网的空间特征提取能力,抑制不太显著的特征来提高检测效率,这种轻量级的高效的注意力机制,显著降低了船体目标的漏检概率,增强了算法模型对密集小目标的检测能力,使模型对小目标船体的位置判断更加准确。
注:A图表示原标注图,B图表示YOLOv7检测结果,C图表示NAM-YOLOv7检测结果
2.1.2 无效检测结果对比
从YOLOv7和NAM-YOLOv7无效检测结果对比可以看出,在背景图的高度密集阴影与小船体目标高度相似干扰的情况下,检测结果如图6(a)所示,模型对小目标船体的位置判断准确性降低,对目标样本和干扰样本的辨识度不够,对提取的两种特征的比对不够细致,注意力机制对高强度阴影的干扰问题作用依旧不明显,YOLOv7和NAM-YOLOv7的误检情况和对真实目标的漏检情况均比较严重,其最主要的原因是目标边缘模糊、轮廓不清晰、目标过小而且样本数据的背景干扰过于严重;在目标近岸且目标船体颜色与岸上复杂背景下的多种物体颜色高度相似干扰情况下,检测结果如图6(b)所示,改进算法模型对数据样本不太显著特征抑制率明显降低,对近岸密集小目标船体的检测能力降低,YOLOv7和NAM-YOLOv7的漏检情况均比较严重,其最主要的原因是目标船体的颜色与岸上的建筑物颜色过于相似,而且目标船体临近岸边几乎与海岸融为一体,由此造成的干扰过于严重[5]。
注:A图表示原标注图,B图表示YOLOv7检测结果,C图表示NAM-YOLOv7检测结果
2.1.3 小目标检测精确度对比
研究通过对比分析YOLOv7算法模型和改进后的NAM-YOLOv7算法模型在小目标检测精确度方面的变化,验证NAM-YOLOv7算法模型的性能,在相同的环境配置下,保持训练集和测试集的数据比例不变,对两个检测实验进行对比分析,如表2所示。
表2 YOLOv7和NAM-YOLOv7对比结果
从表2中YOLOv7和NAM-YOLOv7的对比结果中可以看出,YOLOv7的测试精确率为79.8%,而NAM-YOLOv7的测试精确率达到了84.9%,相比之下NAM-YOLOv7的测试精确率提升了5.1%,因此,对原算法模型YOLOv7的改进有效提高了小目标检测的准确率,注意力机制NAM模块的添加对原算法模型YOLOv7起到了很好的优化作用。
本研究采用YOLOv7算法和NAM-YOLOv7算法对测试集中的1174幅作物图像进行了测试。检测精确率变化如图7所示,可以看出YOLOv7算法模型的检测精确率随迭代次数的变化情况以及NAM-YOLOv7算法模型的检测精确率随迭代次数的变化情况,平均精度均值变化如图8所示,可以看出YOLOv7算法模型检测的平均精度均值随迭代次数的变化情况以及NAM-YOLOv7算法模型检测的平均精度均值随迭代次数的变化情况。
图7 YOLOv7和NAM-YOLOv7检测精确率对比
图8 YOLOv7和NAM-YOLOv7平均精度均值对比
综上实验过程的比对分析表明,改进后的算法模型NAM-YOLOv7对小目标检测的误检率和漏检率均有一定的降低,精确率有所提高,在多种场景下均有良好的适用性。实验数据证实了本文所改进算法的有效性。
针对原算法模型在进行小目标检测时出现漏检和误检比较严重的情况下,本文提出一种基于YOLOv7改进的算法模型,该模型通过在原模型的backbone层构建注意力机制NAM模块得到改进的算法模型NAM-YOLOv7,改进后的算法在精度和速度上取得了更佳的平衡,在强复杂背景和近岸复杂背景等干扰情况对边缘模糊、轮廓不清晰小目标和密集小目标等船体检测中显著改善了漏检和误检的问题,能够满足对航拍船体数据集小型目标的检测,并且有良好的泛化能力[6]。但是实验过程中,由于数据集目标太小以及存在多种干扰情况,训练耗费的迭代次数较多,同时改进的算法模型也还存在比较严重的误检和漏检情况,针对这些问题仍需要进一步深入研究。