YOLOV4模型搭建

文章目录

        • 2-1图像卷积
        • 2-2卷积核和步长
        • 2-2Yolov4的卷积例子
        • 2-6 全连接层讲解
        • 2-8VGG做图像检测、预测、训练的整个流程介绍
        • 3-1YOLOV3网络结构回顾1
        • 3-5 YOLOV4网络结构backbone
        • 3-7 YOLOv4网格思想
        • 3-8 先验框anchors原理
        • 3-9 头部DECODE
        • 3-10 YOLO头部总结
        • 3-11 backbone构建01(CSPDarknet)
          • CSPX的实现
        • 3-15 从零写代码头部Decode01(三个灰色盒子)
        • 3-17代码解读,模型推断部分
        • 3-18 代码解读使用yolo.cfg方式构造网络
        • 4-1 Yolov4模型训练和代码实现
        • 4-2 整体的训练流程
        • 4-3 模型训练build_target原理解析
        • 4-4 模型训练build_target原理解析02
        • 4-4 模型训练build_target原理解析03
        • 4-6 4-7 损失函数理论讲解
        • 4-8 从零写代码build_target训练核心函数01
        • 4-11~4-13 从零写训练部分基础函数
        • 4-14~4-16 代码解读基于Pytorch的模型训练

YOLOv3中anchor的定义以及proposal的定义

2-1图像卷积

YOLOV4模型搭建_第1张图片
卷积的过程:
YOLOV4模型搭建_第2张图片
如果卷积核是(3,3,3,256):
YOLOV4模型搭建_第3张图片

2-2卷积核和步长

用卷积代替maxpool下采样,因为maxpool会丢失很多信息
YOLOV4模型搭建_第4张图片

2-2Yolov4的卷积例子

2-6 全连接层讲解

YOLOV4模型搭建_第5张图片
w[4095,0:45]*X[0:45]=y0, 类似于卷积的点乘操作,实际y0拥有了原始特征图所有的信息(因为是X[0:45]),卷积是对应位置的局部特征点乘,而全连接层是全局特征信息点乘

2-8VGG做图像检测、预测、训练的整个流程介绍

YOLOV4模型搭建_第6张图片
讲的很好,对于整个训练的过程,以及反向传播算法的流程

3-1YOLOV3网络结构回顾1

整个网络的构成
YOLOV4模型搭建_第7张图片

3-5 YOLOV4网络结构backbone

主要比较V4与v3之间的区别:
YOLOV4模型搭建_第8张图片

3-7 YOLOv4网格思想

三个head的输出,如何定位为障碍物,把18通道拆分成3(3个anchor)*6
然后与真值去对比,然后定义Loss,然后进行反向传播
YOLOV4模型搭建_第9张图片

3-8 先验框anchors原理

主要介绍了3-7同样的内容,就是anchors如何定位到真值的obj,然后联系到真值进行Loss的计算,然后反向传播

3-9 头部DECODE

YOLOV4模型搭建_第10张图片
Decode部分如何得到物体的
b x , b y , b w , b h , o b j , c l s b_x,b_y,b_w,b_h,obj,cls bx,by,bw,bh,obj,cls
YOLOV4模型搭建_第11张图片

3-10 YOLO头部总结

YOLOV4模型搭建_第12张图片

3-11 backbone构建01(CSPDarknet)

YOLOV4模型搭建_第13张图片

CSPX的实现

在CSPDarknet.py里面
YOLOV4模型搭建_第14张图片YOLOV4模型搭建_第15张图片
backbone_neck的构造(3-11~3-14:P3 P4 P5)在yolo4.py里面
YOLOV4模型搭建_第16张图片

3-15 从零写代码头部Decode01(三个灰色盒子)

在文件yolo_layer.py
YOLOV4模型搭建_第17张图片
2021-03-02理解decoder部分
又多了一些见解,发现这部分讲的真好,明天继续看
YOLOV4模型搭建_第18张图片

3-17代码解读,模型推断部分

backbone与neck与灰色盒子,整体整合(见inference.py)
包括加载预训练权重、有目标的anchor、非极大值抑制、然后可视化

3-18 代码解读使用yolo.cfg方式构造网络

通过解析yolo4_car_det_1cls.cfg配置文件,把里面每一层都解析出来,构建网络(面向过程的方式)
weights文件夹里面多了一个权重文件:哟lov_citycar_6000_2cls.weights,是在darkNet框架下训练好的一个模型(一个在中国的道路车辆检测的模型:一个是车辆一个是车的logo)
基于darknet前向推理的方式的讲解,使得可以利用已经训练好的权重直接加载:

基于darkNet导入它的权值,解析它的config去构造它的网络来做一个前向推理的一部分,为什么基于darkNet方式去构造模型:这样会有一个很好的通用性,可以直接把darkNet的权重拷贝过来去做推断或者直接在这个权重上面去做预训练比在COCO上做预训练要好很多,我们自己训练好的权重也可以导入到darknet里面去做推断,这样就实现了darknet和我们的一个互通,这样就使我们最终的代码变得灵活

4-1 Yolov4模型训练和代码实现

完整的训练代码工程在work_dir文件夹里面

4-2 整体的训练流程

YOLOV4模型搭建_第19张图片

4-3 模型训练build_target原理解析

YOLOV4模型搭建_第20张图片

4-4 模型训练build_target原理解析02

YOLOV4模型搭建_第21张图片

4-4 模型训练build_target原理解析03

4-6 4-7 损失函数理论讲解

4-8 从零写代码build_target训练核心函数01

在文件yolo_loss.py里面

4-11~4-13 从零写训练部分基础函数

4-14~4-16 代码解读基于Pytorch的模型训练

train.py是基于yolo_body构建的训练代码
train_dark.py是基于darknet构建的训练代码

你可能感兴趣的:(YOLOV4模型搭建)