它其实是在 YOLOV3 的基础上增加了一个自底向上的 PANet 结构,特征图的尺寸是通过下采样得到的,而下采样是通过卷积的方式实现的(改变滑动窗口的步长)。
Head 改进点
用 CIoU Loss 取代 Iou Loss
IoU loss 中 IoU 交并比,两个框的交集/并集,有两个缺点:
> 无法反应两个的距离
例如 状态 1,两个框不相交,无论怎样移动两个框,IoU = 0。
> 无法区分两者相交的情况
例如 状态 2 和 3,两个框相交的情况完全不一样,但是 IoU 相同。
CIoU Loss 的思想:第一步,在两个框最外层再画一个最小的矩形框,求出这个框的对角线的距离,这个距离就能衡量两个框的距离;
第二步,求出两个框中心点的欧式距离,这欧式距离就能衡量两者的相交情况。
CIoU Loss 数学表达式如上,它能有效的解决 IoU Loss 存在的问题。
YOLOV4 源代码日志解读网络层数:
YOLOV4 总共层数有 161 层,YOLOV3 是 106 层,网络层数增加是非常明显的。
从这个图可以看出,YOLOV4 采用了大量的 1 * 1 卷积,之前介绍过,采用 1 * 1 卷积,是能降低计算量,提升速度的。
每列含义
layer : 每层操作名称
filters :卷积核的深度
size/strd(dil):卷积核的尺寸/滑动窗口的步长
input:输入图片的大小
output:输出图片的大小
代表性层的含义(需要注意的是,这里隐藏了一个前提条件 padding = 1)
> 第 0 层 conv 卷积操作,表示 608 * 608 * 3 & 3 * 3 * 32 => 608 * 608 * 32,这里 32(输出特征图尺寸深度)
是由卷积核的深度决定的。
> 第 1 层 conv 还是卷积操作,表示 608 * 608 * 32 & 3 * 3 * 64 => 304 * 304 * 64,大家发现没有,输出特征图的尺寸
相比于输入特征图的尺寸,降低了一倍,这是因为滑动窗口的步长变成了 2 。
> 第 7 层 Shortcut,它其实等价于 Add 操作,也就是第 6 层的输出与第 4 层的输出进行卷积,
304 * 304 * 64 & 304 * 304 * 64 => 304 * 304 * 64,输出特征图的尺寸和深度都没有改变。
> 第 9 层 route 操作,它其实等价于 Concat 操作,也就是第 8 层的输出与第 2 层的输出进行卷积,
304 * 304 * 64 & 304 * 304 * 64 => 304 * 304 * 128,输出特征图尺寸不变,深度增加,为两个输入特征图深度之和。
相信大家理解了这些层的含义之后,对于后面的其他层的理解,就比较容易了,下面看看它最后的输出:
76 * 76 * 255, 38 * 38 * 255,19 * 19 * 255,这跟之前介绍 YOLOV4 结构图的输出是相一致的。
引用https://bbs.cvmart.net/topics/2365
https://pjreddie.com/media/files/papers/YOLOv3.pdf
https://arxiv.org/pdf/2004.10934.pdf
https://arxiv.org/pdf/1911.11929v1.pdf
https://arxiv.org/pdf/1803.01534.pdf
不要让懒惰占据你的大脑,不要让妥协拖垮了你的人生。青春就是一张票,能不能赶上时代的快车,你的步伐就掌握在你的脚下。