YOLOv3源码解析1-代码整体结构
YOLOv3源码解析2-数据预处理Dataset()
YOLOv3源码解析3-网络结构YOLOV3()
YOLOv3源码解析4-计算损失compute_loss()
YOLOv3源码解析5-损失函数
理论部分参照大神的文章学习:
解析的代码地址:
源码结构解析:
代码整体结构如下(原图大小20M太大上传不了,这是降低质量后的只有2M),说实话,按照代码解析,画完这个图,我暗暗感叹,YOLOV3的作者真是牛逼,这么复杂的框架都能想出来,不服不行啊:
整体结构图太过复杂,不太方便看,下面把各个结构分解出来。下面是代码主流程:
上图中标红的Dataset()、YOLOV3()、conpute_loss()分别是数据预处理、建立网络框架、计算损失函数,下面将按这3块进行代码解析。
一)Dataset()数据预处理部分:
二)YOLOV3()建立模型框架部分:
1)其中的build_network()函数,建立网络模型
A)其中的darknet53()函数,建立基本的卷积网络,获取大中小3个等级的特征图:
其中反复用到了两个基本单元common.convolutional()和common.residual_block()结构分别如下:
- common.convolutional()
- common.residual_block()
2)其中的decode()函数,解码,返回预测框的xywh,置信度,预测概率
三)compute_loss()计算各部分损失:
其中的loss_layer()(损失层):
Dataset()、YOLOV3()、conpute_loss()分别是数据预处理、建立网络框架、计算损失函数,下面将按这3块进行代码解析。