深度剖析目标检测算法YOLOV4

深度剖析目标检测算法YOLOV4 目录

简述 yolo 的发展历程

介绍 yolov3 算法原理

介绍 yolov4 算法原理(相比于 yolov3,有哪些改进点)

YOLOV4 源代码日志解读

yolo 发展历程

深度剖析目标检测算法YOLOV4

采用卷积神经的目标检测算法大致可以分为两个流派,一类是以 R-CNN 为代表的 two-stage,另一类是以 YOLO 为代表的 one-stage,

R-CNN 系列的原理:通过 ROI 提取出大约 2000 个候选框,然后每个候选框通过一个独立的 CNN 通道进行预测输出。

R-CNN 特点:准确度高,速度慢,所以速度成为它优化的主要方向。

YOLO 系列的原理:将输入图片作为一个整体,通过 CNN 通道进行预测输出。

YOLO 特点:速度快,准确度低,所以准确度成为它优化的主要方向。

经过一系列的优化与改进,特别是今年 4 月份推出的 YOLOV4,使得它在准确度方面得到了大幅度的提升,另外,它还能达到实时检测(在 GPU 加持的情况下)。

下图是 YOLOV4 源代码的页面,github:  https://github.com/AlexeyAB/darknet

深度剖析目标检测算法YOLOV4

它的 Star 达到 13400,可以说,知名度不是一般的高,在目标检测领域,好像只有 YOLOV3 超过它了,达到了 19000 ,是不是值得大家花点时间精力去探索一下呢 ?

这里需要说明一下的是 YOLOV3(美国大神),YOLOV4 (俄罗斯大神)作者不是同一个人,在 19 年的时候,YOLOV3 作者发表了一个声明:有些组织将他的算法用于

军事和窥探个人隐私方面,使得他在道德上很难接受,他将不再进行 CV 的研究与更新。当然,这是一个小插曲了,这里,我们看到,YOLOV4 作者更新是非常频繁的,

commits 达到了 2000 + 。下面我们看看官方给出的实验结果。

深度剖析目标检测算法YOLOV4

这里是以 COCO 作为测试数据集,相比于 YOLOV3,YOLOV4 在精度方面提升了 10%,FPS(frame per second) 提升了 12%。

顺便说一句,YOLOV3 的作者也是认可 YOLOV4 的改进的,在 YOLOV3 的官网 https://github.com/pjreddie/darknet 也是给出了

YOLOV4 的链接。

yolov3 算法原理

深度剖析目标检测算法YOLOV4

这里借用某位大神画的结构图,因为 YOLOV4 是在 YOLOV3 的基础上改进的,所以我们需要先介绍一下 YOLOV3,

这里可能需要一些神经网络的知识,比如卷积,池化,全连接,前向传播,反向传播,损失函数,梯度计算,权重参数更新,如果对

这些不是很清楚,可以看我之前的博客(卷积神经网络(CNN)详解与代码实现 https://www.cnblogs.com/further-further-further/p/10430073.html)。

YOLOV3 原理我在上上一篇博客(深度剖析YOLO系列的原理 https://www.cnblogs.com/further-further-further/p/12072225.html)有过介绍,

这里我就介绍一下大家容易忽略,或者是比较难理解的点:

输入图片尺寸可变

输入图片尺寸是 608 * 608,当然,这个尺寸是可以改变的,它只需要满足是 32 的倍数,因为在经过后面的网络结构的时候,图片尺寸缩小的最大倍数是 32 倍,

这可以从它的输出 19 * 19 看出来。

主干网络

采用的是 darknet 53 层网络结构,去掉了全连接层,53 - 1 = 52

52 = 1+(1+2*1)+(1+2*2)+(1+2*8)+(1+2*8)+(1+2*4)

为什么要去掉全连接层 ?

解答:全连接的本质是矩阵的乘法运算,会产生固定尺寸的输出,而 YOLOV3 是需要多尺寸的输出的,所以要去掉全连接层。

CBL :表示基础的卷积模块,是由一个 Conv 卷积层 + BN 批量归一化层 + relu 非线性激活函数层组成。

为什么在 CBL 里没有池化层 pooling ?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzxzff.html