微信公众号不好链接微信以外的东西,所以要看下面链接的去我的博客看一下吧
https://blog.youkuaiyun.com/sxlsxl119
理论部分参照大神的文章学习:
简书:关于YOLOv3的一些细节
github:源代码作者YOLOV3
知乎:【YOLO】yolo v1到yolo v3
知乎:目标检测|YOLO原理与实现
知乎:YOLO v3深入理解
优快云:yolo系列之yolo v3【深度解析】
解析的代码地址:
github:tensorflow-yolov3
源码结构解析:
代码整体结构如下(原图大小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块进行代码解析。