[干货分享] 目标检测经典之作——YOLOv4的前世今生(一)初识

1.概述


目标检测可以说是非常经典的任务了,也是众多实际项目中的第一步,为后续任务打下基础,比如人脸识别、多目标追踪、REID、客流统计等项目,一般是要先进行目标检测任务。因此目标检测是计算机视觉项目中非常重要的一部分。

从2018年YOLOv3年提出的两年后,在原作者声名放弃更新YOLO算法后,俄罗斯的Alexey大神扛起了YOLOv4的大旗。在此,结合网络资料,整理需要了解的YOLOv3、YOLOv4系列相关知识点以及相关代码进行完整的汇总,希望和大家共同学习探讨。


2.YoloV3核心基础内容

2.1 网络结构可视化

YOLOv3是目标检测YOLO系列非常非常经典的算法,不过很多同学拿到YOLOv3或者YOLOLv4cfg文件时,并不知道如何直观的可视化查看网络结构。如果纯粹看cfg里面的内容,肯定会一脸懵逼

其实可以很方便的用netron查看YOLOv3的网络结构图,一目了然,netron可是模型可视化神器了,强烈推荐。

这里不多说,如果需要安装,可以自行百度搜索,有很多教程的,基本上就是下载后双击安装就行了,非常简单

如果不想安装,也可以选择在线版本,查看YOLOv3可视化流程图,不过可能有点慢。

2.2 网络结构图

image.png

上述网络结构图来自网络,包括后面YOLOv4的结构图,确实,从总体框架上先了解了YOLOv3的流程,再针对去学习每一小块的知识点,会事半功倍。

上图三个蓝色方框内表示YOLOv3的三个基本组件

  1. CBL:Yolov3网络结构中的最小组件,由Conv+Bn+Leaky_relu激活函数三者组成。

  2. Res unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。

  3. ResX:由一个CBLX个残差组件构成,是YOLOv3中的大组件。每个Res模块前面的CBL都起到下采样的作用,因此经过5次Res模块后,得到的特征图是608->304->152->76->38->**小

其他基础操作:

  1. Concat:张量拼接,会扩充两个张量的维度,例如26*26*256和26*26*512两个张量拼接,结果是26*26*768。Concat和cfg文件中的route功能一样。

  2. add:张量相加,张量直接相加,不会扩充维度,例如104*104*128和104*104*128相加,结果还是104*104*128。add和cfg文件中的shortcut功能一样。

Backbone中卷积层的数量:

每个ResX中包含1+2*X个卷积层,因此整个主干网络Backbone中一共包含1+(1+2*1)+(1+2*2)+(1+2*8)+(1+2*8)+(1+2*4)=52,再加上一个FC全连接层,即可以组成一个Darknet53分类网络。不过在目标检测Yolov3中,去掉FC层,不过为了方便称呼,仍然把YOLOv3的主干网络叫做Darknet53结构

2.3 核心基础内容

YOLOv32018年发明提出的,这成为了目标检测one-stage中非常经典的算法,包含Darknet-53网络结构、anchor锚框、FPN等非常优秀的结构。

这里主要目的在于描述YOLOv4YOLOv3算法的不同及创新之处,对YOLOv3的基础不过多描述。

在这里搜集查看了网络上几乎所有的YOLOv3资料,在此整理几个非常不错的文章及视频,大家也可以点击查看,学习相关知识。

(1)视频:吴恩达目标检测Yolo入门讲解

https://www.bilibili.com/video/BV1N4411J7Y6?from=search&seid=18074481568368507115

(2)文章:Yolo系列之Yolov3【深度解析】

https://blog.csdn.net/leviopku/article/details/82660381

(3)文章:一文看懂Yolov3

https://blog.csdn.net/litt1e/article/details/88907542

相信大家看完,对于YOLOv3的基础知识点会有一定的了解。


论文来源

Yolov3论文名:《Yolov3: An Incremental Improvement》

Yolov3论文地址:arxiv.org/pdf/1804.0276

Yolov4论文名:《Yolov4: Optimal Speed and Accuracy of Object Detection》

Yolov4论文地址:arxiv.org/pdf/2004.1093

参考链接

https://mp.weixin.qq.com/s/KVz_fMQeo9cr2G_i7QpWqg