文章目录

  • 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图像卷积

yolo android 部署_yolo android 部署


卷积的过程:

yolo android 部署_卷积核_02


如果卷积核是(3,3,3,256):

yolo android 部署_权重_03

2-2卷积核和步长

用卷积代替maxpool下采样,因为maxpool会丢失很多信息

yolo android 部署_yolo android 部署_04

2-2Yolov4的卷积例子
2-6 全连接层讲解

yolo android 部署_卷积核_05


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

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

yolo android 部署_卷积核_06


讲的很好,对于整个训练的过程,以及反向传播算法的流程

3-1YOLOV3网络结构回顾1

整个网络的构成

yolo android 部署_卷积核_07

3-5 YOLOV4网络结构backbone

主要比较V4与v3之间的区别:

yolo android 部署_卷积核_08

3-7 YOLOv4网格思想

三个head的输出,如何定位为障碍物,把18通道拆分成3(3个anchor)*6

然后与真值去对比,然后定义Loss,然后进行反向传播

yolo android 部署_卷积核_09

3-8 先验框anchors原理

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

3-9 头部DECODE

yolo android 部署_卷积_10


Decode部分如何得到物体的

yolo android 部署_卷积核_11

yolo android 部署_yolo android 部署_12

3-10 YOLO头部总结

yolo android 部署_yolo android 部署_13

3-11 backbone构建01(CSPDarknet)

yolo android 部署_卷积_14

CSPX的实现

在CSPDarknet.py里面

yolo android 部署_卷积核_15

yolo android 部署_卷积_16


backbone_neck的构造(3-11~3-14:P3 P4 P5)在yolo4.py里面

yolo android 部署_权重_17

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

在文件yolo_layer.py

yolo android 部署_卷积核_18


2021-03-02理解decoder部分

又多了一些见解,发现这部分讲的真好,明天继续看

yolo android 部署_卷积_19

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 整体的训练流程

yolo android 部署_卷积核_20

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

yolo android 部署_卷积核_21

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

yolo android 部署_yolo android 部署_22

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构建的训练代码