由于无人机的硬件计算能力较弱,因此需要对其进行实时目标检测,这需要少量的算法参数,较少的内存和较短的推理时间。常用算法通常难以直接应用。
一种更直接的方法是修剪模型,以最小化模型卷积层中不必要的通道。
来自北京理工大学算法论文(SlimYOLOv3):实时更窄,更快,更好无人机应用,作者修剪了YOLOv3的改进版本,并在参数数量,内存使用和推理时间的情况下,实现了与原始算法相比无人机目标检测数据集的检测精度。
作者有开放源代码,包括培训和测试,值得参与相关工程开发的朋友参考。
通过车载摄像头和嵌入式系统赋予计算机视觉功能的无人驾驶飞机或无人驾驶飞行器(UAV)已经在各种应用中变得流行。
然而,由于嵌入式设备的有限存储器和计算能力,通过在UAV平台上运行的对象检测的实时场景解析是非常具有挑战性的。为了应对这些挑战,在本文中,我们建议通过在卷积层上执行通道修剪来学习有效的深度目标检测器。
为此,我们通过对信道缩放因子强加L1正则化并修剪信息量较少的特征信道来实现卷积层的信道级稀疏度,以获得“苗条”对象检测器。基于这种方法,我们提出SlimYOLOv3与原始YOLOv3(Joseph Redmon等,2018)相比,具有更少的可训练参数和浮点运算(FLOP),作为无人机上实时物体检测的有希望的解决方案。
我们在VisDrone2018-Det基准数据集上评估SlimYOLOv3; SlimYOLOv3-SPP3与未修复的对应物相比,实现了令人信服的结果,包括FLOP减少约90.8%,参数尺寸下降约92.0%,运行速度快〜2倍,检测精度与YOLOv3相当。不同修剪比例的实验结果一致地验证了所提出的结构较窄的SlimYOLOv3比YOLOv3更有效,更快速和更好,因此更适合无人机的实时物体检测。
下图为作者发明的三种设置下的SlimYOLOv3 相比较基线版本的YOLOv3的结果:
YOLOv3-tiny 是YOLOv3的一种快速算法,但精度下降太多。
YOLOv3-SPP1 是YOLOv3加上SPP模块的改进,其比原始YOLOv3精度要高。
将SPP模块添加到YOLOv3模型的示意图,作者在原来的第5层和第6层之间添加了SPP模块。
YOLOv3-SPP3是作者YOLOv3-SPP1的改进。它有3个SPP模块,比YOLOv3-SPP1更精确,是模型修剪的基本模型。
SlimYOLOv3-SPP3-50 / 90/95是YOLOv3-SPP3型号的三种型号,修剪率分别为50%,90%和95%。
可见模型修剪可以极大地改善模型在无人机上的部署,具有一定的精度损失,但远远优于YOLOV3-tiny。
修剪过程
修剪深度模型的是什么?就像纸张名称中较窄的Narrower一样,它是减少模型通道的数量。
删除每个卷积层中不重要的要素通道。因此,有必要合理地评估特征信道的重要性。
下图更详细地说明了该过程。
在稀疏训练之后,YOLOv3获得每个信道的比例因子,然后去除那些具有小比例因子的信道。通过修剪获得的模型SlimYOLOv3在数据集上进一步微调以获得检测结果,然后进入下一轮稀疏训练。迭代地重复上述修剪过程,直到满足某些模型条件,例如模型修剪速率满足某些要求。
实验结果
使用上述方法,作者在配置为英特尔(R)Ee-26(R)E5-2683 v3 CPU @ 2.00GHz(56个CPU),64GB RAM,4个NVIDIA GTX1080ti GPU的Linux机器上进行了培训,并获得了三种修剪模型。该实验在无人机目标检测数据集VisDrone2018-Det上进行。结果如下:
可以看出,在精度略有下降的情况下,推理时间,参数和存储器大大减少,这更适合于在无人机中部署。
下图显示了每种算法结果的比较直方图,更直观。
检测结果示例:
作者已将代码开源,各位读者可以非常方便地进行训练和测试。
论文和源码地址:关注微信公众号:“图像算法”或者微信搜索imalg_cn 可获取