SlimYOLOv3:更窄、更快、更好的无人机目标检测算法

无人机因为硬件计算能力较弱,要在其上实现实时的目标检测,需要算法参数量小、占用内存少、推断时间短。常见的算法往往难以直接应用。

一种比较直接的做法是对模型进行剪枝,尽量减少模型卷积层不必要的通道。

今天arXiv新上论文SlimYOLOv3: Narrower, Faster and Better for Real-Time

UAV Applications,作者对YOLOv3的改进版进行了剪枝,在参数量、占用内存、推断时间大幅减少的情况下,在无人机目标检测数据集上实现了与原算法可比较的检测精度。

作者已将代码开源,包含训练和测试部分,值得从事相关工程开发的朋友参考。

以下是作者信息:



作者全部来自北京理工大学。

下图为作者发明的三种设置下的SlimYOLOv3 相比较基线版本的YOLOv3的结果:

YOLOv3-tiny 是YOLOv3的一种快速算法,但精度下降太多。

YOLOv3-SPP1 是YOLOv3加上SPP模块的改进,其比原始YOLOv3精度要高。

YOLOv3模型中加入SPP模块的示意图,作者是在原第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在数据集上进一步微调,得到检测结果,然后进入下一轮的稀疏训练。以上剪枝过程是迭代重复的,直到满足一定的模型条件,比如模型剪枝率达到一定要求。

实验结果

作者通过上述方法,在配置为 Intel(R) Xeon(R) E5-2683 v3 CPU @ 2.00GHz (56 CPUs), 64GB RAM, 4 个 NVIDIA GTX1080ti GPU的 Linux 机器上训练,得到三个剪枝模型,并在无人机目标检测数据集 VisDrone2018-Det上进行了实验,结果如下:

可见在精度稍有下降的情况下,推断时间(Inference time)、参数量(Parameters)、内存占用(Volume)大幅减少,更适合在无人机部署。

下图为各算法结果比较的柱状图,更加直观。

检测结果示例:

作者已将代码开源,各位读者可以非常方便地进行训练和测试。

每个步骤仅需要一行命令!

原始模型训练:

./darknet/darknet detector train VisDrone2019/drone.data  cfg/yolov3-spp3.cfg darknet53.conv.74.weights

稀疏训练:

python yolov3/train_drone.py --cfg VisDrone2019/yolov3-spp3.cfg --data-cfg VisDrone2019/drone.data -sr --s 0.0001 --alpha 1.0

通道剪枝

python yolov3/prune.py --cfg VisDrone2019/yolov3-spp3.cfg --data-cfg VisDrone2019/drone.data --weights yolov3-spp3_sparsity.weights --overall_ratio 0.5 --perlayer_ratio 0.1

模型微调:

./darknet/darknet detector train VisDrone2019/drone.data  cfg/prune_0.5.cfg weights/prune_0.5/prune.weights

论文地址:

https://arxiv.org/pdf/1907.11093v1.pdf

代码地址:

https://github.com/PengyiZhang/SlimYOLOv3

感谢论文作者的分享!

我爱计算机视觉
我爱计算机视觉

关注计算机视觉与机器学习技术的最前沿,“有价值有深度”,分享开源技术与最新论文解读,传播计算机视觉与机器学习技术的业内最佳实践。

理论机器学习计算机视觉自动驾驶技术其他智能领域目标检测优化算法模型训练剪枝
3
相关数据
参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

YOLO技术

YOLO 模型最早是由 Joseph Redmon 等人在 2015 年发布的,并在随后的两篇论文中进行了修订。

无人机技术

无人机(Uncrewed vehicle、Unmanned vehicle、Drone)或称无人载具是一种无搭载人员的载具。通常使用遥控、导引或自动驾驶来控制。可在科学研究、军事、休闲娱乐用途上使用。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

推荐文章
暂无评论
暂无评论~