目标检测——YOLO系列算法(YOLOv4、YOLOv5)的学习笔记

目录

  • 1 前言
  • 2 致谢
  • 3 YOLO模型列表
  • 4 模型结构
    • 2.1 Backbone
      • Focus——网格下采样
      • CSPDarknet53
    • 2.3 Neck —— SPP & PAN
      • SPP:特征融合
      • PAN:自顶向下的特征融合
  • 5 后处理算法
    • 2.1 NMS Screening——DIoU-NMS
  • 6 YOLOV3学习笔记
  • 6.1 熊猫群主的聚类脚本
    • 6.1 损失函数
  • 6 调试笔记
    • 3.1 测试ScaledYOLOv4是否配置成功
      • 3.1.1 PyCharm连接Docker出现“cannot connect to the docker daemon at Unix…”
    • 3.2 YOLOv5的调试笔记

1 前言

现在最强的YOLO系列算法是YOLOv5x6-TTA, boxAP: 55.0;

2 致谢

感谢DarrenZhang的分享——《Yolov4/v5的创新点汇总!》

3 YOLO模型列表

yolov5x – yolov5x.yaml
YOLOv5中参数量最多的模型,在图像张量输入主干网络之前使用了Focus模块;

4 模型结构

2.1 Backbone

Focus——网格下采样

关于Focus模块的解析请参考《yolov5中的Focus模块的理解》
备注:

  • 在实际使用中发现会增大显存消耗,根据作者说明“Focus() module is designed for FLOPS reduction and speed increase, not mAP increase.”,对最终结果似乎没有提升,所以暂时没有使用;
  • 之前是想用来增大batch-size,发现会增大显存消耗,然后就暂时停用了;

CSPDarknet53

首先,我们来看看CSPDarknet53网络的整体结构图,
目标检测——YOLO系列算法(YOLOv4、YOLOv5)的学习笔记_第1张图片

2.3 Neck —— SPP & PAN

SPP:特征融合

我们先来看看Scaled-YOLOv4对SPP的结构设置:
目标检测——YOLO系列算法(YOLOv4、YOLOv5)的学习笔记_第2张图片
其中,pool_rates=[5, 9, 13];
这里我们可以看看感受野的比例,已知 p o o l _ r a t e = 5 : 9 : 13 pool\_rate = 5:9:13 pool_rate=5:9:13,则 p o o l _ a r e a = 25 : 81 : 169 pool\_area = 25:81:169 pool_area=25:81:169
则有
p o o l _ a r e a [ 1 : 2 ] = 25 : 81 = 1 : 3.24 pool\_area[1:2] = 25:81=1:3.24 pool_area[1:2]=25:81=1:3.24
p o o l _ a r e a [ 2 : 3 ] = 81 : 169 ≈ 1 : 2.09 pool\_area[2:3] = 81:169\approx1:2.09 pool_area[2:3]=81:1691:2.09
基本上扩大的比例都在2以上;

PAN:自顶向下的特征融合

PAN在YOLOv4的论文中首次提出,也被用于YOLOv5中(YOLOv5x6-TTA, boxAP: 55.0);
首先,我们来直观的感受以下PAN的结构如图所示
目标检测——YOLO系列算法(YOLOv4、YOLOv5)的学习笔记_第3张图片
可以看到是在使用了FPN之后的一种上采样操作;

5 后处理算法

  • Scaled-YOLOv4论文中没有具体给出NMS设置的描述,于是我们参考了YOLOv4中的设置,使用了DIoU-NMS
  • 还可以看看Scaled-YOLOv4的代码来确认一下

2.1 NMS Screening——DIoU-NMS

YOLOv4使用了DIoU-NMS作为后处理的方法;

6 YOLOV3学习笔记

可以参考的资料:

GiantPandaCV:在GiantPandaCV公众号的后台回复“yolov3”获取相关的资料。

6.1 熊猫群主的聚类脚本

熊猫群主的聚类脚本:
https://github.com/BBuf/cv_tools/blob/master/yolo-cluster-anchors.py
聚类教程:
目标检测算法之YOLO系列算法的Anchor聚类代码实战
U版的数据集制作:
GitHub - pprp/voc2007_for_yolo_torch: Prepare VOC format datasets for ultralytics/yolov3 & yolov5​

6.1 损失函数

这里我们参考CSDN博文《YOLO系列详解:YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5 by AI小白一枚》中的图文描述:
目标检测——YOLO系列算法(YOLOv4、YOLOv5)的学习笔记_第4张图片

6 调试笔记

Scaled-YOLOv4的repo代码实际上是基于U版YOLO的框架来实现的,也是基于PyTorch函数库;

3.1 测试ScaledYOLOv4是否配置成功

这里我们可以一个我们依据U版YOLO生成的测试数据集coco128
百度网盘链接:https://pan.baidu.com/s/1tHFUASikGDLQnzhLEFAKxA
提取码:sbal

# download yolov4-csp.weights and put it in /yolo/weights/ folder.
python test.py --img 640 --conf 0.001 --batch 8 --device 0 --data coco.yaml --cfg models/yolov4-csp.cfg --weights weights/yolov4-csp.weights

3.1.1 PyCharm连接Docker出现“cannot connect to the docker daemon at Unix…”

这里在使用PyCharm连接Docker时出现错误“cannot connect to the docker daemon at Unix…”,其主要原因是在运行docker 命令时需要root权限,所以这里我们还需要根据Docker官方文档进行“Post-installation steps for Linux”的操作,其
主要目的就是:当前登录Ubuntu用户在使用docker命令是前面不需要加上sudo命令
具体的设置方式请参考Docker官方文档《Manage Docker as a non-root user》;

3.2 YOLOv5的调试笔记

请参考博文《目标检测——YOLOv5的学习笔记》;

你可能感兴趣的:(《南溪的目标检测学习笔记》,YOLO)