YOLO系列-V4
整体介绍(Optimal Speed and Accuracy of Object Detection)
V4贡献:
- 亲民政策 , 单GPU就能训练的非常好 , 接下来很多小模块都是这个出发点
- 两大核心方法 ,从数据层面和网络设计层面来进行改善
- 消融实验 , 感觉能做的都让他给做了 ,这工作量不轻
- 全部实验都是单GPU完成 ,不用太担心设备了
Bag of freebies(BOF)
- 只增加训练成本 , 但是能显著提高精度 , 并不影响推理速度
- 数据增强: 调整亮度、 对比度、 色调、 随机缩放、 剪切、 翻转、 旋转
- 网络正则化的方法: Dropout、 Dropblock等
- 类别不平衡 , 损失函数设计
Mosaic data augmentation方法很简单 ,参考CutMix然后四张图像拼接成一张进行训练。
数据增强
Random Erase: 用随机值或训练集的平均像素值替换图像的区域
Hide and Seek: 根据概率设置随机隐藏一些补丁
Self-adversarial-training(SAT)通过引入噪音点来增加游戏难度。
DropBlock
之前的dropout是随机选择点(b) , 现在吃掉一个区域。
Label Smoothing
神经网络最大的缺点: 自觉不错(过拟合) , 让它别太自信。
例如原来标签为(0,1):
Label Smoothing
使用之后效果分析(下图) :簇内更紧密 , 簇间更分离。
GIOU损失
公式:
- 引入了最小封闭形状C( C可以把A , B包含在内)
- 在不重叠情况下能让预测框尽可能朝着真实框前进。
公式:
- 其中分子计算预测框与真实框的中心点欧式距离d。
- 分母是能覆盖预测框与真实框的最小BOX的对角线长度c
- 直接优化距离 ,速度更快 , 并解决GIOU问题
公式:
- 损失函数必须考虑三个几何因素: 重叠面积 , 中心点距离 , 长宽比
- 其中α可以当做权重参数
DIOU-NMS
- 之前使用NMS来决定是否删除一个框 , 现在改用DIOU-NMS
公式:
- 不仅考虑了IoU的值,还考虑了两个Box中心点之间的距离
- 其中M表示高置信度候选框 , Bi就是遍历各个框跟置信度高的重合情况
SOFT-NMS
做人留一面日好相见 ,柔和一点的NMS , 更改分数而且直接剔除。
Bag of specials(BOS)
- 增加稍许推断代价 , 但可以提高模型精度的方法
- 网络细节部分加入了很多改进 , 引入了各种能让特征提取更好的方法
- 注意力机制 , 网络细节设计 ,特征金字塔等 , 你能想到的全有
- 读折一篇相当于把今年来部分优秀的论文又过了一遍
SPPNet(Spatial Pyramid Pooling)
V3中为了更好满足不同输入大小 , 训练的时候要改变输入数据的大小。
SPP其实就是用最大池化来满足最终输入特征一致即可。
CSPNet( Cross Stage Partial Network)
- 每一个block按照特征图的channel维度拆分成两部分
- 一份正常走网络 , 另一份直接concat到这个block的输出
CBAM
- 其实就是加入了注意力机制 , 已经很常见了在各种论文中
- V4中用的是SAM , 也就是空间的注意力机制
- 不光NLP,语音识别领域在搞attention , CV中也一样
YOLOV4中的Spatial attention module一句话概述就是更简单了 ,速度相对能更快一点
PAN(Path Aggregation Network)
- 自顶向下的模式 ,将高层特征传下来
- 好像只有一条路子 , 能不能来个双向的呢?
- 这就得轮到PAN登场了 , 思想也很简单
- 引入了自底向上的路径 , 使得底层信息更容易传到顶部
- 并且还是一个捷径 , 红色的没准走个100层(Resnet) , 绿色的几层就到了
- YOLOV4中并不是加法 , 而是拼接
M ish
- 别一棒子全给打死 , 给个改过自新的机会
- Relu有点太绝对了 , M ish更符合实际
- 公式:f(α)=·tanh(ln(1+ew))
- 但是计算量确实增加了 ,效果会提升一点。
eliminate grid sensitivity
比较好理解 , 坐标回归预测值都在0-1之间 , 如果在grid边界怎么表示?M 此时就需要非常大的数值才可以达到边界
为了缓解这种情况可以在激活函数前加上一个系数(大于1的) :
整体网络架构