Yolov5-v6.1-s

yolov5作者没有出论文,只放了代码,就根据代码简单看下。

yolov5整体框架图

 yolov5总共有很多版本,看Pytorch官方给的不同类型模型的测试结果

 

在本文使用yolov5的v6.1版本,640分辨率,s模型,也就是上图正序的第二个

YOLOv5针对不同大小(nsmlx)的网络整体架构都是一样的,只不过会在每个子模块中采用不同的深度和宽度,下面借鉴一位b站up的画的图(对应L的模型)

 

相比于yolov4改进之处

Backbone:New CSP-Darknet53

 yolov5将v4上面的卷积块移除了,同时将MIsh激活函数换成SILU激活函数

 Neck:SPPF,New CSP-PAN(将CSP结构融入PAN结构中)

Head:用的还是YOLOv3的

数据增强:Mosaic、Copy paste、Random affine、MixUp、Augment HSV、Random horizontal flip

训练策略:

  • Multi-scale training(0.5~1.5x),多尺度训练,假设设置输入图片的大小为640 × 640,训练时采用尺寸是在0.5 × 640 ∼ 1.5 × 640 之间随机取值,注意取值时取得都是32的整数倍(因为网络会最大下采样32倍)。
  • AutoAnchor(For training custom data),训练自己数据集时可以根据自己数据集里的目标进行重新聚类生成Anchors模板。
  • Warmup and Cosine LR scheduler,训练前先进行Warmup热身,然后在采用Cosine学习率下降策略。
  • EMA(Exponential Moving Average),可以理解为给训练的参数加了一个动量,让它更新过程更加平滑。
  • Mixed precision,混合精度训练,能够减少显存的占用并且加快训练速度,前提是GPU硬件支持。
  • Evolve hyper-parameters,超参数优化,没有炼丹经验的人勿碰,保持默认就好。

复现结果和细节

 1 total param num 7,073,569,计算量:12.1 GFLOPS
 2 backbone: CSPDarknet-53
3 优化器:adam,momentum=0.937,初始学习率:1e-34 学习率更新:呈cos函数形式 5 损失函数=置信损失(CIOU)+分类损失+定位损失(CIOU Loss),其中置信和分类损失用的都是BCE Loss 6 batch=8 7 加载官方完整预训练权重 yolov5_s_v6.1.pth 8 epoch = 30 9 总训练时间: 2h31m9s 10 训练集:PASCALVOC-2012train(5717) 11 测试集:PASCALVOC-2012val(5823) 12 GPU: 1 x  Tesla V100 13 平均推理时间和FPS:0.00994s,100fps(RTX 3070ti)

 

利用tensorboard记录

在当前环境终端输入

tensorboard --logdir=存放文件夹路径

训练loss,map0.5,map_0.5:0.95记录

 从训练的图来看模型在22轮左右对训练集过拟合了,导致精度变低

利用wandb记录

 

 

 

 

本地画图记录

最高接近75%的map0.5

 获取验证结果以及coco指标

加载训练完的权重,在测试集上对模型进行验证,这里测试集=训练中的验证集

平均精度以及各类别精度

 

 

 

 

检测结果

  看来用S模型的效果还是不太好,如果用大一点的模型应该效果会好很多,船没检测出来,把置信值调低后才能检测出

 confidence=0.5和0.3

 

 

 

 

 

 

 

 

 

 

热力图

 通过热力图使我们能够直观地理解哪些区域对于目标检测最为敏感,重要

 

posted @ 2023-05-26 20:39  call-me-ZJ  阅读(177)  评论(0编辑  收藏  举报