yolov6

论文:《A Single-Stage Object Detection Framework for Industrial Applications》

官方实现的各个配置

 

mmyolo实现的配置,精度比官方略低,但速度比官方更快,模型参数更少,计算量也较少

 整体框架

下图是mmyolo给出的yolov6-s配置图,在本文也主要复现这个配置

 yolov6主要的改进之处:

1.设计了更高效的backboneNeck:基于 RepVGG style 设计了可重参数化、更高效的骨干网络 EfficientRep Backbone 和 Rep-PAN Neck。在v7中只是在特定部分引入RepConv,不想v6结合到了backbone以及neck

2.相比于 YOLOX 的 Decoupled Head,进一步优化设计了简洁有效的 Efficient Decoupled Head,在维持精度的同时,降低了一般解耦头带来的额外延时开销,在v7中用的是耦合头

3.在训练策略上,采用 Anchor-free 的策略,同时辅以 SimOTA 标签分配策略以及 SIoU 边界框回归损失来进一步提高检测精度。

  • 标签匹配策略:0 <= epoch < 4,使用 BatchATSSAssigner,epoch >= 4,使用 BatchTaskAlignedAssigner
  • v7是anchor-base网络,且也采用SimOTA标签分配策略,不过v7用的是CIOU边界框回归损失

4.yolov6的loss设计不同以往,只有类别和回归损失,去掉了置信损失

复现结果和细节

 1  total param num 17.196M, 计算量:21.895 GFLOPS
 2  backbone: EfficientRep Backbone
 3  Neck: Rep-PAN Neck
 4  优化器:SGD,momentum=0.937,初始学习率:2.5e-3 
 5  损失函数=Lcls+Lreg,Lcls与Lobj(BCELoss),Lreg(GIoULoss)
 6  batch=8 
 7  加载官方完整预训练权重 yolov6_coco.pth
 8  epoch = 30 
 9  总训练时间: 1h 30m 45s
10  训练集:PASCALVOC-2012train+val(0.7)(8078) 
11  测试集:PASCALVOC-2012train+val(0.3)(3462) 
12  GPU: 1 x  RTX 3070ti
13  平均推理时间和FPS:26.3ms,38.1fps(RTX 3070ti)

 

模型的 Flops 和 Parameters

与最上面给的精度表对应,参数量:17.2M差不多,计算量:44.2G,不知道为什么自己打印出来的少很多

 

利用wandb记录训练过程

 平均精度以及mAP_50

总损失,回归损失,类别损失,学习率记录曲线

 

效果展示

船识别成了飞机,虽然很多小目标的人都检测出来了,应该是轮数太少的原因,如果用50轮的感觉会好很多

 

posted @ 2023-06-27 09:53  call-me-ZJ  阅读(144)  评论(0编辑  收藏  举报