江磊 崔艳荣
摘要:在进行目标检测时,小目标会出现漏检或检测效果不佳等问题。本文将YOLOv5算法用于小目标检测,YOLOv5有3个检测头,能够多尺度对目标进行检测,并对数据做了Mosaic数据增强、自适应锚框计算、统一图片尺寸等数据预处理,对小目标有很好的检测效果。基于YOLOv5的基础上进行改进,把CIOU_Loss、DIOU_nms运用于YOLOv5算法中。实验结果表明,基于YOLOv5的小目标检测,准确率高,速度快,具有很好的性能。
关键词:小目标检测;YOLOv5
中图分类号:TP18 文献标识码:A
文章编号:1009-3044(2021)26-0131-03
开放科学(资源服务)标识码(OSID):
Small Target Detection Based on YOLOv5
JIANG Lei, CUI Yan-rong
(Yangtze University,Jingzhou434023,China)
Abstract: in the process of target detection, small targets may miss detection or have poor detection effect. In this paper,YOLOv5 algorithm is used for small target detection. YOLOv5 has three detection heads, which can detect the target in multi-scale. The data are preprocessed by mosaic data enhancement, adaptive anchor frame calculation, unified image size and so on. It has a good detection effect for small targets. Based on the improvement of YOLOv5, the CIOU_Loss、DIOU_NMS is used in YOLOv5 algorithm. The experimental results show that the small target detection based on YOLOv5 has high accuracy, fast speed and good performance.
Key words:small target detection;YOLOv5
目標检测是计算机视觉领域比较热门的研究方向,已广泛运用到国防、医疗、工业等领域。由于小目标的尺寸小、分辨率低,常用的目标检测算法在检测小目标时会出现漏检或特征不明等问题。
近年来,随着深度学习的不断发展,许多基于卷积神经网络的目标检测算法被提出,卷积神经网络可以对数据自主训练学习,更新参数,得到一个比较准确的模型。基于卷积神经网络的目标检测算法可以分为两大类。一类是双步目标检测算法,如R-CNN,SPP-net,Fast R-CNN,Faster R-CNN,Mask R-CNN等,这些算法把目标检测分为两步进行,先生成Region Proposal(候选区),在把Region Proposal(候选区)送入网络结构中提取特征,并预测检测目标的位置、识别检测目标的类别。另一类是单步目标检测算法,如YOLOv1,YOLOv2,YOLOv3,YOLOv4,YOLOv5等,此类算法不需要生成Region Proposal(候选区),而是直接把图片分成S×S个网格,在网格的基础上提取特征,并由算法得到目标的位置和类别。
双步目标检测算法要生成大约2000个Region Proposal(候选区),花费了大量的时间,它的检测速度比较慢,但准确率相对较高。由于单目标检测算法是在图片划分网格的基础上提取特征,所以它的检测速度很快,但是早期的YOLO算法会有一定的误差,随着技术的发展,YOLO中提出了anchor box(先验框)机制,如YOLOv5中就有9个大小不同的anchor box(先验框),能够精准地检测到不同尺度的目标,提高了检测精度。
1 YOLO的发展
传统目标检测算法,主要分为三步:选择区域框、提取特征、归分类别,这就存在有两个问题;一是区域选择的方法效果不佳、且时间成本很高;二是提取的区域框鲁棒性很差。随后出现的R-CNN系列算法,需要提前生成大量的Region Proposal(候选区),在候选区的基础上提取特征,花费很多时间。YOLOv1把生成Region Proposal(候选区)和提取特征归为一步,图片被划分为S×S个grid(网格),在grid(网格)上提取特征,每个grid(网格)对应两个Bounding box(边界框),缺陷是:速度上提高了,准确率却没有那么高,很容易漏检。YOLOv2的Backbone使用了Darknet-19,去掉了FC(全连接层),每个grid(网格)上使用5个anchor box(先验框),YOLOv2使用ImageNet大量的分类样本,联合COCO的对象检测数据集一起训练,可以检测出一些没有学习过的对象,识别的对象更多。YOLOv2在YOLOv1的基础上做了一些改进,如批量归一化,多尺度图像训练,passthrough层检测细粒度特征等,速度和准确率得到了提升,但是YOLOv2在小目标检测方面还是不够精准。YOLOv3采用了新的Backbone(主干网络) Darknet-53,它含有53个卷积层,为避免梯度消失,使用了残差网络,Head部分利用多尺度特征检测对象,在网络中分别使用32倍下采样,16倍下采样,和8倍下采样,每个下采样尺度下设定3种anchor box(先验框),可以检测不同尺寸的对象。YOLOv4在YOLOv3的基础上,把很多优良的方法结合在一起,结构得到优化、性能更加强大。YOLOv4的Input使用了Mosaic数据增强、cmBN(交叉小批量归一化)、SAT自对抗训练。Backbone使用CSPDarknet53,使用遗传算法选择超参数,用Dropblock防止过拟合,使用Mish和Leaky Relu激活函数。增添了Neck,Neck由SPP模块和FPN+PAN结构组成。Head部分仍然采用YOLOv3的多尺度特征检测[2-4]。