3 YOLOv3
3.1 文章
3.1.1 YOLOv3 深入理解
链接:
https://www.jianshu.com/p/d13ae1055302
概述:
讲先验框尺寸和输出tensor组成
3.1.2 What’s new in YOLO v3?
链接:
https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b
概述:
介绍了YOLO3改进,不是很详细,但是可以锻炼英文阅读能力。
3.1.3 如何在PyTorch中从零开始实现YOLO
链接:
https://blog.paperspace.com/how-to-implement-a-yolo-object-detector-in-pytorch/
概述:
讲解YOLO实现,附代码
3.1.4 YOLO3学习总结
链接:
https://blog.csdn.net/gentelyang/article/details/80874039
概述:
详细介绍了YOLOv3框尺寸的改进情况,以及Dark Net网络改进策略。
3.2 原文解读
YOLO3改进的地方
3.3 代码解读
3.3.1 DarkNet53.py
图 Net
1.调用Dark Net53主函数API,括号里面的数字是ResdualBlock块堆叠的数量,和上图流程图对应。
2.第一次进入时,通道数设置的是32,并进行第一次卷积操作。
3._make_layer函数是用于堆叠不同层对应的不同数量的Block块。并输出最后三层。
4.ResdualBlock就是基本块,包括一个1*1卷积和一个3*3卷积。结果出用结果和残差边相加输出。
1*1卷积和3*3卷积效果:
可以达到减少参数量的效果。链接:
https://www.zhihu.com/question/384884504/answer/1129599207
https://www.zhihu.com/question/56024942
3.3.2 yolo3.py
1.自定义一个2D卷积。
2.make_last_layers函数对应最后红框中的内容,做输出的最后的计算。
3.YoloBody是算法的主题,调用Dark Net函数,返回最后三层的out123,对着三个层做相应的卷积和上采样处理。
3.3.3 yolo_training.py
IOU计算。
LOSS计算。
3.3.4 config.py
模型参数。
3.3.5 dataloader.py
制作数据集。
3.3.6 utils.py
YOLO解码操作。
3.3.7 train.py
训练数据集流程:
- 加载参数模型。
- 划分数据集。
- 动态学习率训练模型。
- 冻结训练和解冻训练。
3.3.8 test.py
?
3.3.9 voc_annotation.py
制作数据集列表文件。
3.3.10 vedio.py
检测视频。
3.3.11 predict.py
检测图片。
3.3.12 yolo.py
创建YOLO类,包含功能有:
1.参数设置。
2.加载模型。
3.YOLO解码操作。
4.检测图片。非极大值抑制。
5.画框。