- 网络结构:
- Backbone:CSPDarknet53
- Neck:SPP,PAN
- Head:YOLOv3
- 优化策略:
- Eliminate grid sensitivity——消除网格敏感度
- Mosaic data augmentation——马赛克数据增强
- IoU threshold(match positive samples)
- Optimizered Anchors
- CIoU
0x00 CSPDarknet53
- 优点:
- 增强CNN学习能力
- 移除计算瓶颈
- 降低显存使用
CSPNet中的CSP结构:
- 上面的图来自CSPNet论文
- 分为两部分Part1 和part2(按通道方向进行均分)
- 最后concat拼接
YOLOv4中的CSP结构:
- 上图是YOLOv4中的CSP结构
- 激活函数:Mish
- 一开始会使用步长为2的卷积做下采样,然后分为2路
- 经过这两路卷积层之后,通道数都会原来的一半。如原来是128,就变为64了
- 经过一系列的resblock,再经过1×1卷积层
- 拼接后的通道数和原来一样。这里都是128
1. CSPDarknet53网络结构
这里有点特殊,CSP结构最开始的1×1卷积没有通道数减半,两路都还是64通道
Down Sample2-5基本都一样,只是堆叠的ResBlock不一样多,还有输入CSP Block的feature map尺寸和通道数不一样
0x01 Mish函数
$$Mish(x) = x*tanh(ln(1+e^x))$$
0x02 SPP
其实在YOLO-SPP中就有了
0x03 PAN结构
Path Aggregation Network路径聚合网络
- FPN:高层语义向低层融合
- 在FPN之后加一个结构:低层语义信息向高层融合
- 这个结构和FPN一起构成PAN
原始PAN结构的融合是用相加的方式,YOLOv4中是concat
0x04 网络结构
PAN中的激活函数是Leaky ReLu
0x05 Eliminate grid sensitivity消除网格敏感度
在原先的YOLO中,预测框中心点被限制在grid cell中。假如gt box的中心点刚好落在grid box边缘,那么久需要sigmoid(x)的输出只为0,但是这样要求x为负无穷,网络很难学习到
为了解决这个问题, 引入了一个缩放因子scale,通常取2
0x06 Mosaic数据增强
将4张不同的图片拼接到一起得到一张图片,YOLO-SPP中的技术
0x07 IoU threshold(匹配正样本)
先看看YOLO v3中的:
再看YOLOv4的:
由于之前做了消除grid敏感度,把预测框的中心点由原来相对grid cell在[0, 1]扩大为[-0.5, 1.5],所以要看gt box的中心点落在哪个位置,相临的grid cell 的anchor也会作为正样本。这样也扩充了正样本
- 具体是哪个相邻的grid cell要看gt box 和它们的左上角点。特殊:如果刚刚好在正中心,只会使用当前那一个grid cell。
- 只会往上下左右grid cell扩展,不会往4个角落扩展
0x08 优化anchors
- 针对512*512重新优化了anchor
- PS:YOLOv5用的还是V3中的anchor尺寸
评论 (0)