YOLOv3源码解析1-代码整体结构

YOLOv3源码解析1-代码整体结构

YOLOv3源码解析2-数据预处理Dataset()

YOLOv3源码解析3-网络结构YOLOV3()

YOLOv3源码解析4-计算损失compute_loss()

YOLOv3源码解析5-损失函数

 

理论部分参照大神的文章学习:

简书:关于YOLOv3的一些细节

github:源代码作者YOLOV3

知乎:【YOLO】yolo v1到yolo v3

知乎:目标检测|YOLO原理与实现

知乎:YOLO v3深入理解

CSDN:yolo系列之yolo v3【深度解析】

解析的代码地址:

github:tensorflow-yolov3

源码结构解析:

代码整体结构如下(原图大小20M太大上传不了,这是降低质量后的只有2M),说实话,按照代码解析,画完这个图,我暗暗感叹,YOLOV3的作者真是牛逼,这么复杂的框架都能想出来,不服不行啊:

 

整体结构图太过复杂,不太方便看,下面把各个结构分解出来。下面是代码主流程:

上图中标红的Dataset()、YOLOV3()、conpute_loss()分别是数据预处理、建立网络框架、计算损失函数,下面将按这3块进行代码解析。

一)Dataset()数据预处理部分:

 

二)YOLOV3()建立模型框架部分:

YOLOv3源码解析1-代码整体结构_第1张图片

 

1)其中的build_network()函数,建立网络模型

 

A)其中的darknet53()函数,建立基本的卷积网络,获取大中小3个等级的特征图:

 

其中反复用到了两个基本单元common.convolutional()common.residual_block()结构分别如下:

  • common.convolutional()

YOLOv3源码解析1-代码整体结构_第2张图片

  • common.residual_block()

YOLOv3源码解析1-代码整体结构_第3张图片

 

2)其中的decode()函数,解码,返回预测框的xywh,置信度,预测概率

 

三)compute_loss()计算各部分损失: 

 

其中的loss_layer()(损失层):

 

Dataset()、YOLOV3()、conpute_loss()分别是数据预处理、建立网络框架、计算损失函数,下面将按这3块进行代码解析。

 

你可能感兴趣的:(#,目标检测算法)