目标检测算法:YOLOv2-v4简单解读
说明
YOLO系列算法是目标检测领域比较突出的算法之一,网上关于每个版本都有非常多的解读,这里我只是简单梳理一下我自己的观点,主要目的是帮助自己复习和梳理知识。
本博客属于论文解读系列,但是注重点还是我个人认为比较重要的地方,因此对于论文并没有非常详细的解读。
免责申明
有误写/错写/错误观点/错误解读,或者大家有其它见解,都可以在评论区指出,博主会认真学习的。
原始论文下载链接
YOLOv2、YOLOv3、YOLOv4。
目录结构
文章目录
- 目标检测算法:YOLOv2-v4简单解读
- 1. 前言
- 2. YOLOv2
- 2.1 创新点
- 2.2 整体架构
- 2.3 YOLOv2中的anchor机制
- 2.4 YOLOv2中的回归机制
- 3. YOLOv3
- 3.1 创新点
- 3.2 整体架构
- 4. YOLOv4
- 4.1 创新点
- 4.2 模型范式
- 4.3 YOLOv4架构
- 4.4 作者尝试过的tricks
- 5. 总结
1. 前言
之前,对YOLOv1论文进行解读了,本篇文章将YOLOv2-v4结合在一起进行解读,主要是单篇解读感觉内容有点少。
2. YOLOv2
2.1 创新点
相较于YOLOv1,YOLOv2主要的创新点在于:
- 引入了BN层
- 引入Anchor机制
- 引入了残差链接
2.2 整体架构
YOLOv2整体架构如下图:
- 上图中的骨干网络其实是作者自己设计的,其命名为Darknet-19。
- YOLO v1 作者采用先在ImageNet(227*227)上预训练,再去检测数据集(448*448)上微调,但是后来发现效果不佳。因此在YOLO v2中作者预训练完毕后,先在ImageNet上用448*448的图像微调,再用于检测数据集上。
2.3 YOLOv2中的anchor机制
为什么引入anchor机制?
由于在YOLOv1中预定的框太少了,只有7*7*2=98个,因此作者引入了anchor机制来增加预定框的数量。
如何实现的
Faster-RCNN中的anchor机制有一个缺点,就是尺寸和比例是人为设定的,最终结果受此影响较大。因此,在YOLOv2中,作者采用k-means算法进行聚类,通过判断(1-IOU)的值来进行聚类操作,生成k个(人为设定个数)anchor框。
2.4 YOLOv2中的回归机制
由于YOLOv2中引入了anchor机制,因此回归机制相对于YOLOv1有所变化。
在原始RPN网络中,是这么定义回归的:(其中,dx与dy是偏移值。)
但是,上式存在一个缺点,就是x、y的值没有限制,因此可能落在图像中任意位置,导致模型不稳定。故需要对它加以限制,同时也采用YOLOv1的思想,预测相对于左上角的偏移量:
其中,sigmoid函数限制值在(0,1)之间,而Cx、Cy为左上角点坐标。
3. YOLOv3
YOLOv3主要的创新点就在于引入了多尺度交叉融合的思想,但是由于论文写的比较随意,因此很多细节多在代码中体现,因此读懂网络架构是最重要的一环。
3.1 创新点
FPN思想的引入(多尺度交叉融合预测)
3.2 整体架构
整体架构如图所示:
其中输出有三个通道,最终输出的尺寸大小不同,也是针对的检测对象大小不同。
另外,采用了FPN的思想(深层特征图向上传递给浅层特征图进行融合)。
4. YOLOv4
YOLOv4更偏向于应用,理论上的创新不多
4.1 创新点
- 给出了目标检测的一种“范式”,将检测模型划分为不同的部位,以后构建新模型有点类似乐高的拼接不同模块。
- 另外,YOLOv4还对各种tricks进行了应用
4.2 模型范式
YOLOv4将目标模型分为以下四个部位:
- 输入
- 比如普通的图像输入、图像补丁(将图像切分为小块)、图像金字塔(比如将一张图像进行多尺度缩放构成金字塔)
- 骨干(backbone)
- 常见的比如VGG、ResNet、DarkNet等
- 颈部(neck)
- 常见的就是FPN、PAN等
- 头部(head)
- 分为两类,一类是单阶段的检测头,另外一类是多阶段的检测头。除此之外,还可以从是否解耦进行分类,解耦的一类就像多阶段检测头一样,最终的结果就是框坐标+类别;没有解耦的一类就像YOLO,最终输出是一个特征向量,想要转为框,还需要后处理。
这一范式很重要,在后面的YOLO系列中,大都是根据这个范式进行不同部位的修改和优化。
4.3 YOLOv4架构
在YOLOv4中,作者采用的架构为:
- 骨干:CSPDarkNet-53
- 颈部:SPP、PAN
- 头部:YOLOv3
4.4 作者尝试过的tricks
具体的tricks需要看论文
BOF,bag of free,即不增加推理成本且有效的方法。比如数据增强、难负样本挖掘等等。
BOS,bag of special,即增加推理成本但是利大于弊的方法,比如后处理方法、注意力机制等。
5. 总结
YOLOv1奠定了YOLO系列的根本思想,后面的YOLO系列都是在此基础上进行改编和优化。个人人为各种各样的tricks很重要,因为当前人将很多地方都优化到一定程度,后人想要在此基础上继续优化有点难度,不如引入有效的trick,还有可能进一步提升模型。