绝了,超越YOLOv7、v8,YOLOv6 v3.0正式发布!

简介: ​YOLOv6 全新版本v3.0正式发布!引入新的网络架构和训练方案,其中YOLOv6-S以484 FPS的速度达到45.0% AP,超过YOLOv5-S、YOLOv8-S,其代码刚刚开源。由于前段时间Ultralytics公司透露出V8的发布消息,美团也坐不住了,YOLO社区一直情绪高涨!随着中国农历新年2023(兔年)的到来,美团技术团队对YOLOv6进行了许多新的网络架构和训练方案的改进。此版本标识为YOLOv6 v3.0。​​

 超越YOLOv7、v8! YOLOv6 v3.0正式发布!!!

YOLOv6 全新版本v3.0正式发布!
引入新的网络架构和训练方案,其中YOLOv6-S以484 FPS的速度达到45.0% AP,超过YOLOv5-S、YOLOv8-S,其代码刚刚开源
image.gif编辑

由于前段时间Ultralytics公司透露出V8的发布消息,美团也坐不住了,YOLO社区一直情绪高涨!

随着中国农历新年2023(兔年)的到来,美团技术团队对YOLOv6进行了许多新的网络架构和训练方案的改进。此版本标识为YOLOv6 v3.0。

论文代码都已经开源!!!

GitHub地址:https://github.com/meituan/YOLOv6

论文地址:https://arxiv.org/abs/2301.05586

image.gif编辑

论文

image.gif编辑

摘要:

       自我们的前两个版本以来,YOLO社区一直处于高涨的情绪中 在2023年兔年到来之际,我们对YOLOv6的网络架构和训练方案进行了许多新的改进。这个版本被确定为YOLOv6 v3.0。对于性能的一瞥,我们的YOLOv6N在COCO数据集上达到了37.5%的AP,用NVIDIA Tesla T4 GPU测试的吞吐量为1187 FPS。YOLOv6S在484 FPS的情况下达到了45.0%的AP,超过了其他相同规模的主流检测器(YOLOv5-S、YOLOv8S、YOLOX-S和PPYOLOE-S)。而YOLOv6-M/L在相似的推理速度下,也比其他检测器取得了更好的准确性表现(分别为50.0%/52.8%)。此外,通过扩展骨干和颈部设计,我们的YOLOv6-L6实现了最先进的实时准确性。我们仔细进行了广泛的实验,以验证每个改进组件的有效性。我们的代码可在https://github.com/meituan/YOLOv6提供。

网络结构改进

image.gif编辑

YOLOv6的颈部(图中是N和S)。注意M/L,RepBlocks被替换为CSPStackRep。 (b) 一个BiC模块的结构。(c) 一个SimCSPSPPF块。

具体更新如下:

    • 检测器的颈部更新了一个双向的串联(BiC)模块,以提供更准确的定位信号。SPPF[5]被简化成SimCSPSPPF块,它带来了性能上的提升,而速度上的下降可以忽略不计。
    • 提出了一种锚辅助训练(AA T)策略,在不触及推理效率的前提下,享受基于锚和无锚范式的优势。
    • 深化了YOLOv6,使其在骨干和颈部有了另一个阶段,这加强了它在高分辨率输入的COCO数据集上达到了新的最先进的性能。
    • 涉及到一种新的自我蒸馏策略,以提高YOLOv6小模型的性能,其中DFL[8]的较重分支在训练期间被作为增强的辅助回归分支,并在推理时被移除,以避免速度明显下降。

    具体的更新思路可以查看论文。

    新旧模型对比

    v3.0版本

    模型 输入尺寸 mAPval
    0.5:0.95
    速度T4
    trt fp16 b1
    (fps)
    速度T4
    trt fp16 b32
    (fps)
    Params
    (M)
    FLOPs
    (G)
    YOLOv6-N 640 37.5 779 1187 4.7 11.4
    YOLOv6-S 640 45.0 339 484 18.5 45.3
    YOLOv6-M 640 50.0 175 226 34.9 85.8
    YOLOv6-L 640 52.8 98 116 59.6 150.7
    YOLOv6-N6 1280 44.9 228 281 10.4 49.8
    YOLOv6-S6 1280 50.3 98 108 41.4 198.0
    YOLOv6-M6 1280 55.2 47 55 79.6 379.5
    YOLOv6-L6 1280 57.2 26 29 140.4 673.4
      • 除了 YOLOv6-N6/S6 模型是训练了300轮的结果,其余模型均为自蒸馏训练之后的结果;
      • mAP 和速度指标是在 COCO val2017 数据集上评估的,P5模型输入分辨率为 640×640,P6模型输入分辨率为 1280×1280;
      • 速度是在 T4 上测试的,TensorRT 版本为 7.2;
      • 复现 YOLOv6 的速度指标,请查看 速度测试 教程;
      • YOLOv6 的参数和计算量是在推理模式下计算的;

      旧版模型

      模型 输入尺寸 mAPval
      0.5:0.95
      速度T4
      trt fp16 b1
      (fps)
      速度T4
      trt fp16 b32
      (fps)
      Params
      (M)
      FLOPs
      (G)
      YOLOv6-N 640 35.9300e
      36.3400e
      802 1234 4.3 11.1
      YOLOv6-T 640 40.3300e
      41.1400e
      449 659 15.0 36.7
      YOLOv6-S 640 43.5300e
      43.8400e
      358 495 17.2 44.2
      YOLOv6-M 640 49.5 179 233 34.3 82.2
      YOLOv6-L-ReLU 640 51.7 113 149 58.5 144.0
      YOLOv6-L 640 52.5 98 121 58.5 144.0
        • 速度是在 T4 上测试的,TensorRT 版本为 7.2;

        量化模型

        模型 输入尺寸 精度 mAPval
        0.5:0.95
        速度T4
        trt b1
        (fps)
        速度T4
        trt b32
        (fps)
        YOLOv6-N RepOpt 640 INT8 34.8 1114 1828
        YOLOv6-N 640 FP16 35.9 802 1234
        YOLOv6-T RepOpt 640 INT8 39.8 741 1167
        YOLOv6-T 640 FP16 40.3 449 659
        YOLOv6-S RepOpt 640 INT8 43.3 619 924
        YOLOv6-S 640 FP16 43.5 377 541
          • 速度是在 T4 上测试的,TensorRT 版本为 8.4;
          • 精度是在训练 300 epoch 的模型上测试的;

          快速开始

          安装

          git clone https://github.com/meituan/YOLOv6
          cd YOLOv6
          pip install -r requirements.txt

          image.gif

          在coco数据集上复现请参考教程 训练 COCO 数据集.

          在自定义数据集上微调模型

          单卡

          # P5 models
          python tools/train.py --batch 32 --conf configs/yolov6s_finetune.py --data data/dataset.yaml --fuse_ab --device 0
          # P6 models
          python tools/train.py --batch 32 --conf configs/yolov6s6_finetune.py --data data/dataset.yaml --img 1280 --device 0

          image.gif

          多卡(推荐使用DDP模式)

          # P5 models
          python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --batch 256 --conf configs/yolov6s_finetune.py --data data/dataset.yaml --fuse_ab --device 0,1,2,3,4,5,6,7
          # P6 models
          python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --batch 128 --conf configs/yolov6s6_finetune.py --data data/dataset.yaml --img 1280 --device 0,1,2,3,4,5,6,7

          image.gif

            • fuse_ab: 增加anchor-based预测分支并使用联合锚点训练模式 (P6模型暂不支持此功能)
            • conf: 配置文件路径,里面包含网络结构、优化器配置、超参数信息。如果您是在自己的数据集训练,我们推荐您使用yolov6n/s/m/l_finetune.py配置文件;
            • data: 数据集配置文件,以 COCO 数据集为例,您可以在 COCO 下载数据, 在这里下载 YOLO 格式标签
            • 确保您的数据集按照下面这种格式来组织;
            ├── coco
            │   ├── annotations
            │   │   ├── instances_train2017.json
            │   │   └── instances_val2017.json
            │   ├── images
            │   │   ├── train2017
            │   │   └── val2017
            │   ├── labels
            │   │   ├── train2017
            │   │   ├── val2017

            image.gif

            其它详情请看: GitHub地址:https://github.com/meituan/YOLOv6

            相关文章
            |
            监控 PyTorch 数据处理
            通过pin_memory 优化 PyTorch 数据加载和传输:工作原理、使用场景与性能分析
            在 PyTorch 中,`pin_memory` 是一个重要的设置,可以显著提高 CPU 与 GPU 之间的数据传输速度。当 `pin_memory=True` 时,数据会被固定在 CPU 的 RAM 中,从而加快传输到 GPU 的速度。这对于处理大规模数据集、实时推理和多 GPU 训练等任务尤为重要。本文详细探讨了 `pin_memory` 的作用、工作原理及最佳实践,帮助你优化数据加载和传输,提升模型性能。
            1525 4
            通过pin_memory 优化 PyTorch 数据加载和传输:工作原理、使用场景与性能分析
            |
            机器学习/深度学习 存储 TensorFlow
            YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
            YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
            3137 11
            YOLOv11改进策略【Head】| (独家改进)轻量化检测头:利用 EfficientNet 中的移动倒置瓶颈模块 MBConv 改进检测头
            |
            机器学习/深度学习 数据可视化 算法
            PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
            神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
            693 77
            PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
            |
            编解码 算法 计算机视觉
            YOLOv11改进策略【Head】| 增加针对 大目标 的检测层 (四个检测头)
            YOLOv11改进策略【Head】| 增加针对 大目标 的检测层 (四个检测头)
            2420 7
            |
            编解码 异构计算
            YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
            YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
            4070 7
            YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
            |
            计算机视觉
            RT-DETR改进策略【Neck】| TPAMI 2024 FreqFusion 频域感知特征融合模块 解决密集图像预测问题
            RT-DETR改进策略【Neck】| TPAMI 2024 FreqFusion 频域感知特征融合模块 解决密集图像预测问题
            527 17
            RT-DETR改进策略【Neck】| TPAMI 2024 FreqFusion 频域感知特征融合模块 解决密集图像预测问题
            |
            机器学习/深度学习 PyTorch 算法框架/工具
            【YOLOv8改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
            YOLO目标检测专栏介绍了SimAM,一种无参数的CNN注意力模块,基于神经科学理论优化能量函数,提升模型表现。SimAM通过计算3D注意力权重增强特征表示,无需额外参数。文章提供论文链接、Pytorch实现代码及详细配置,展示了如何在目标检测任务中应用该模块。
            |
            机器学习/深度学习 PyTorch 算法框架/工具
            深入 YOLOv8:探索 block.py 中的模块,逐行代码分析(三)
            深入 YOLOv8:探索 block.py 中的模块,逐行代码分析(三)
            |
            数据可视化 算法 Python
            【数字通信革命】深入剖析Python实现BPSK、QPSK到QAM信号调制的奥秘,解锁高速数据传输的密钥!
            【8月更文挑战第2天】在通信系统中,信号调制至关重要,它将信息嵌入载波信号中以便传输。本文通过Python实现三种基本调制技术:BPSK、QPSK和16-QAM,并提供示例代码。首先需安装NumPy、SciPy和Matplotlib库。BPSK是最简单的相位调制,每个符号携带一位信息;QPSK则每个符号携带两位信息,通过四种相位表示;16-QAM结合幅度和相位调制,每个符号携带更多比特信息。本文提供的代码演示了这些调制方式的实现过程,并利用Matplotlib可视化结果。了解这些调制技术有助于深入探索信号处理领域。
            971 18
            |
            机器学习/深度学习 并行计算 PyTorch
            【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous
            【已解决】RuntimeError: CUDA error: device-side assert triggeredCUDA kernel errors might be asynchronous
            11543 2