头一次正式看目标检测方面的文章,有些功利,直接从YoloV4开始!
YOLOv4: Optimal Speed and Accuracy of Object Detection
文献简介
先放文献地址: https://arxiv.org/abs/2004.10934
YoloV4于2020/04挂在Arxiv上,作者之一是之前Yolo代码的维护者之一,Alexey Bochkovskiy,暂时没有找到他的更多资料,另外两个作者是台湾中央研究院的,不认识。
先修知识
直接上手这篇目标检测领域的文章稍有困难,因为以前没咋接触过目标检测,现在直接来一手业界极强的文章,很多名词概念都不清楚。
本来打算补一补,但是发现YoloV4用的模型方法实在是有(多)些(炸)多(了),所以其实只补了文章刚开始的一些概念,码在这里:
Pareto optimality curve,中文名帕累托最优曲线,以本文图 $(1,8)$ 为例,都是2维曲线,这是因为本文选取的评价指标(目标)有两个。我联想到了宏观经济学中的供求曲线、价格需求曲线,感觉道理有一点点像(瞎想的)。
具体可参考知乎用户木木松的专栏文章多目标优化之帕累托最优
Anchor-based和Anchor-free方法,都是目标检测中的方法。前者参考下面的链接,讲得很清楚了,依次设计锚点的位置、锚框的个数大小,我猜最后是根据ground truth去判断标记框的优劣;后者似乎是没有具体设置所谓的锚点,只是先识别目标的中心,然后根据中心进行回归得到标记框(未求证)
具体可参考知乎用户emiya的专栏文章Anchor-Based-01 目标检测算法设计思想一:anchor是什么
YoloV4
文献总结
其实刚开始看觉得很舒服,讲的东西都非常合理有道理(后面也是),但是后面讲的名词知识太多了,让我觉得这模型不会就是各种已有的优秀方法组合拼接出来的吧!不会吧不会吧,它还真的就是这样搞的!
经过多篇博客总结查证,我基本上确定这文章就是这样做的,不过人家做的确实猛,优点总结如下:
- 文章提出的YoloV4达到了文章目标(预期):保证准确率大前提下,设计出一个快速实时轻量准确的目标识别模型。确实,本文表示只需要1张优秀的显卡就可以完成快速训练(又向应用前进一步!),并且的确是轻量实时准确的
- 在contributions部分提出可以用YoloV4的想法修饰SOTA模型使之有效轻量,应该是这个意思
- 集成了大量已有tricks,据参考文献表示至少有20多种;这篇文章的工作量十分之大,值得肯定
- 文章开头提出了一个说法:CNN任务的一个完整框架需要理论保证+实验验证。本文的tricks可以说是验证了的东西,然后在多个数据集上也显示出帕累托最优的效果
主要tricks
说tricks之前忘了提一嘴YoloV4的整体网络框架了,和经典的目标识别检测框架一致,有一个
的整体框架,其中某些部分不知道有没有跨连接的操作。下面放一张原文的图 $(2)$ :
那么YoloV4其实就说各种tricks,或者说是各种模型插件套进这个框架。
这个我其实没有细看文章了,毕竟陌生名词太多,搞不清哪些是重点,这里根据他人博客自己总结其中有用的tricks:
首先有个idea起源于Yolo系列的任务是目标识别检测。目标检测方法往往是任务special的,特定任务要特定设计,在通用模型没有发展起来并大规模应用之前我是站这个东西的。本文希望能做到通用的general目标检测模型,那么一个idea就是special特征和general特征,YoloV4在网络模块的使用上主动选择了很多general特征(我认为是特征图)
为了轻量实时,选择Yolo系列的模型是当前合适的做法,本文在head区域使用了YoloV3
各种数据增强技术的使用
自对抗方法增强图像风格,我觉得可以算数据增强了
大佬们还总结了“跨最小批的归一化(Cross mini-batch Normal)、修改的SAM(逐点attention)、修改的PAN(通道合并方式改变)”,不过我现在不太懂,先码在这里。这里最后三条参考:
知乎用户william的专栏文章一文读懂YOLO V5 与 YOLO V4
知乎用户元峰的回答如何评价新出的YOLO v4 ?不错,从创新性的角度分析了YoloV4使用的主要tricks
个人感想(bb)
本来头一遍翻完这篇文章觉得还挺ysk(😁)的,但是抱着这个怀疑我去读了他人的总结,包括:
知乎用户Amusi的回答如何评价新出的YOLO v4 ?很好,我很赞同。人家工作量在这里,确实很良心
知乎用户David的专栏文章YOLO-V4解读:速度与精度的完美结合[已开源]是一篇简洁的翻译,可以速读参考
补充资料:知乎用户996黄金一代的回答如何评价YOLOv5?
我这才有些缓过来,人家毕竟是总结了大量方法,有充足的工作量,而且效果也上去了,那的确是不错的。大家反驳之的意见是似乎大家应用还是不用它,用YoloV3,大概是觉得它这样相当于调参?不过人家做了很多实验,在不少数据集上也足够优秀了,那我是没话说了。
这种套方法的方式,可取,但是得有充足的调研,充足的实验经验。加油吧骚年!
参考文献
[1] Alexey Bochkovskiy, Chien-Yao Wang, and Hong-Yuan Mark Liao. Yolov4: Optimal speed and accuracy of object detection, 2020.
[2] emiya. Anchor-Based-01 目标检测算法设计思想一:anchor是什么[EB/OL]. https://zhuanlan.zhihu.com/p/86741707, 2019-10-26.
[3] 木木松. 多目标优化之帕累托最优[EB/OL]. https://zhuanlan.zhihu.com/p/54691447, 2020-10-07.
[4] william. 一文读懂YOLO V5 与 YOLO V4[EB/OL]. https://zhuanlan.zhihu.com/p/161083602, 2020-07-28.
[5] 元峰. 如何评价新出的YOLO v4 ?[EB/OL]. https://www.zhihu.com/question/390191723/answer/1177584901, 2020-04-25.
[6] Amusi. 如何评价新出的YOLO v4 ?[EB/OL]. https://www.zhihu.com/question/390191723/answer/1176986665, 2020-04-24.
[7] David. YOLO-V4解读:速度与精度的完美结合[已开源][EB/OL]. https://zhuanlan.zhihu.com/p/136172670, 2020-05-20.
[8] 996黄金一代. 如何评价YOLOv5?[EB/OL]. https://www.zhihu.com/question/399884529/answer/1374024055, 2020-07-31.