yolov3作为目前最为流行的one stage检测模型,从出现到现在衍生发展了太多版本,甚至到了去年性能更优的v4和v5都已经出来了,今天就此机会总结一下常见的v3变形算法。
- YOLOv3-tiny(YOLOv3的tiny版本)
- YOLOv3-SPP1(仅在第一个检测头前集成SPP模块)
- YOLOv3-SPP3(在三个检测头前都加入了SPP模块)
- SlimYOLOv3-SPP3-50(n=50, k=90, 迭代剪枝2次)
- SlimYOLOv3-SPP3-90(n=90, k=90)
- SlimYOLOv3-SPP3-95(n=95, k=90)
(1)yolov3网络结构图
backbone采用的是darknet53结构,用于提取输入目标特征。三个head部分输出分别为13*13*255,26*26*255,52*52*255,其间通过upsample进行链接以增加对小目标的检测能力。
(2)yolov3-tiny
YOLOv3-tiny 是YOLOv3的一种快速算法,但精度下降太多,初始多使用于移动端。
(3)yolov3-spp
YOLOv3-SPP1 是YOLOv3加上SPP模块的改进,其比原始YOLOv3精度要高,而YOLOv3-SPP3 是该文作者YOLOv3-SPP1的改进,其有3个SPP模块,比YOLOv3-SPP1精度更高。加入了空间金字塔池化,增加了模型提取的语义信息,通常加入的spp模块效果还是很不错的,Size设置接近feature map的时候效果更好
(4)slim-yolov3
YOLOv3经过稀疏训练,得到各通道的尺度因子,然后去除那些尺度因子小的通道,将剪枝得到的模型SlimYOLOv3在数据集上进一步微调,得到检测结果,然后进入下一轮的稀疏训练。以上剪枝过程是迭代重复的,直到满足一定的模型条件,比如模型剪枝率达到一定要求。
在VisDrone2018-Det上进行了实验,结果如下:
可见在精度稍有下降的情况下,推断时间(Inference time)、参数量(Parameters)、内存占用(Volume)大幅减少,更适合在无人机部署。
参考链接:
1、https://blog.csdn.net/dd_pp_jj/article/details/108507720
2、https://blog.csdn.net/rocking_struggling/article/details/108550637