小目标视频检测算法研究
2022-04-02赵旭章焦自程
赵旭章 焦自程
关键词 小目标 算法 传统算法
1引言
目前,计算机视觉领域不断发展壮大,使得越来越多的人开始关注目标检测的内容。目标检测作为图像理解中的重要步骤,主要任务是从图像中勾画所有感兴趣的区域,并确定它们的位置和大小,它是机器视觉领域的核心问题之一。目标检测与跟踪技术已在各领域获得广泛应用,在检测准确率和实时方面均取得了不错的效果。但在一些特殊领域内,由于目标距离摄像机距离较远以及所检测物体特别小,相关检测和跟踪仍然存在大量需解决的问题[1] 。
2基于传统算法的目标检测
在传统的目标检测算法中,多尺度形变部件模型DPM 表现比较优秀。DPM 把物体看成多个组成部件,采用各个部件之间的相互关系来对物体进行描述,其中的特性非常符合自然界很多物体的非刚性特征。该模型继承了HOG 和SVM 两种算法的优点,在进行行人检测以及人脸检测上都取得了比较好的效果。但是,DPM 相对比较复杂,检测速度也较慢,从而出现了很多改进的方法。传统目标检测主要存在三个问题:手工进行设计的特征对于多样性的变化没有特别强的鲁棒性;基于滑动窗口的区域选择策略没有针对性,复杂度高,窗口冗余较多;稳定性较差,不能适应大幅度的旋转。
3基于深度学习的目标检测
在目标检测领域,深度学习方法主要分为两类:以SSD 等一系列检测算法为基础代表的一阶段算法;以Faster R?CNN 等系列检测算法为基础的二阶段算法。
二阶段算法要经过两个阶段才能检测图像中的目标,由算法生成一系列样本作为候选框,再通过卷积神经网路进行样本分类。它的检测准确率和定位精度较高,但速度慢。而一阶段算法则摒弃了选择候选区域这一步骤,仅需对输入图像中的目标进行分类与位置回归,优点是算法运行速度快,缺点是精度略低。
小目标难以检测的原因是其分辨率低,图片模糊,携带的信息减少。特征表达能力弱是指在进行提取特征的过程中所提取的特征数量非常少,这非常不利于对小目标进行检测。就目前算法而言,对于小目标的相關检测并不是特别友好。主要体现在以下几点:第一,下采样过大导致特征图上的小物体所占据的点占不到一个点;第二,感受野过大。浅层的特征图感受野小,比较适合检测小目标,若要检测大目标,则其只有大目标的一部分,有效信息不够全面;而深层的特征图感受野大,适合检测大目标,若要检测小目标则有很多背景噪音,导致检测结果不准确。
目前,对于小目标的相关检测人们提出了不少优化方案,主要方法有:图像金字塔设计和多尺度滑动窗口检测,它们可以对图像中的目标进行检测;特征融合,将图片分成小块分别进行检测;通过多视图和多通道SSD 模型来改善SSD 模型,并性检测、利用卷积融合特征;将输入的图片进行处理,进行局部细节的数据增强;结合不同输出层的特征图,提出视觉推理策略。这些改进方法在很大程度上改善了相关网络对于小目标检测不敏感的问题[2] 。
由于SSD 算法对于小目标检测具有不敏感性,我们采用YOLO 系列算法进行了相关实验。本文着重介绍了YOLO 系列相关算法,该算法由Redmon 等人于2016 年提出,其可以一次性预测多个Box 位置和类别的卷积神经网络,真正意义上实现了端到端的目标检测,且发挥了速度快的优势,但是精度有所下降。
如图1 所示,其为YOLOv5 算法网络架构。对于一般的目标检测算法来说,我们通常可以将其分成通用的4 个模块,具体包括:输入端、基准网络、Neck 网络以及Head 输出端,分别对应于图1 中的4 个红色框。
输入端表示对输入图片进行基本处理,该网络输入图像为608?608,且该阶段通常包含图像预处理阶段。将输入图像进行缩放以达到网络输入的效果,并进行归一化等相关操作。YOLOv5 在网络训练阶段使用的是Mosaic 数据增强技术,是对图片按照随机缩放、随机排布、随机裁剪来进行拼接而形成的,这极大地丰富了数据集,使用该操作来对模型的训练速度和网络的精度进行提升。同时,它将计算初始锚点的相关算法集合到整个代码内,这和之前版本的算法有所区别。
基准网络即Backbone,其是一种性能较为优异的分类网络,该模块主要指用来提取一些通用的特征表示,在一些大型数据局上已完成预训练,拥有预训练参数的卷积神经网络。在YOLOv5 中,同时使用了CSPDarknet53 结构和Focus 结构来作为基准网络,加强了网络特征融合的能力。
Neck 网络通常位于基准网络和头网络中间,它可以进一步提升特征的多样性以及鲁棒性,更好的利用了基准网络对目标对象进行特征提取。同时,其还延续了前几个版本的FPN 和PAN 网络结构,自顶而下地将高层的特征信息通过上采样的方式进行传递融合,从而得到预测后的特征图。
Head 输出端可以用来完成对目标检测结果的输出。对于不同的目标检测算法而言,输出端的分支不相同,通常包含一个分类分支和一个回归分支。它利用之前提取的特征对图像做出预测,预测目标的种类和位置。对于预测好的目标框进行删选,需要进行nms 非极大抑制操作,即挑选出位置合适的目标框。
YOLOv5 提供了4 种网络结构,通过代码中的参数对网络的深度和宽度进行控制。其中, depth _multiple 控制网络的深度,而width_multiple 则控制着网络的宽度。图2 为Yolov5 作者对网络模型结构的算法性能测试图。横轴表示该算法在GPU 上推理所要消耗的时间,纵轴则是表示在coco 数据集中的AP值,是目标检测模型的评价指标。在图2 中,YOLOv5s所花费的时间要比其他算法更少,但是精度方面较为欠缺。而YOLOv5x 则是所有算法中精度最高的,但是耗费的时间也同样更长。我们可以根据现实中的场景选择合适的模型。在本次实验中,我们采用的是效率和准确率都较理想的YOLOv5l 模型[3] 。
我们同时使用了YOLOv5l 和YOLOv5x 进行检测,对比两个视频发现YOLOv5x 对远处的目标识别要略逊色于YULOv5l。出现该问题的原因可能是随着网络的深度的变化和感受野增大,小物体的特征会随着深度的增加而渐渐丢失,从而导致检测性能降低。所以,我们还是要根据自己的需求对相关网络进行配置和使用。
深浅层的特征各有优劣,因此将深层的语义信息添加到浅层的特征图中进行检测,可以做到优势互补,以此提高对小目标的检测准确率及定位精度。如果图像分辨率很大,但是又有很多小目标时,直接将图片输入到网络中的检测效果并不好。最主要的原因还是特征图感受野较大,对小目标的特征不能很好地检测。我们可对图像进行分割检测,即将图片分割成小图,然后放入网络中进行检测和识别。为防止分割的图片将其中的目标也分隔开,我们在分割图片时可以设定重叠区域,在分别检测完成后,将它们组合到一起,并对其中重复的目标进行删选,最终达到对超高分辨率的图像的目标检测。但是,采用这种方法可能会使计算量增加,从而耗费时间,最终不能满足实时性的需求。解决方法是尽量在可以检测出来的基础上采用更为轻量化的网络来实现相关功能。
4结论