• YOLOv6: A Single-Stage Object Detection Framework for IndustrialApplications


    paper地址:https://arxiv.org/abs/2209.02976

    源码github地址:GitHub - meituan/YOLOv6: YOLOv6: a single-stage object detection framework dedicated to industrial applications.


    6月底发布的源码,9月初终于发布了技术报告。细节部分欢迎去原文中扣,这里只做各部分的一些讲解和个人理解。


    目录

    摘要

    一、介绍

    二、方法介绍

    2.1 网络设计

    2.2 标签分配

    2.3 损失函数

    2.4 为了工业部署便利的相关tricks

    2.5 量化和部署


    摘要

            上来先说,yolov6大量地吸收了最近的网络设计、训练策略、测试技术、量化和优化方法的想法,就是说没有什么很吸睛的创新,就是一堆缝合。然后说明,yolo作者已经慷慨许可了他们把这个算法命名为yolov6(因此不要说他们蹭热度了)。

             关于精度和性能对比,看下面这张图就差不多明白了。

    一、介绍

            介绍了yolov6出来的动机和背景:

            (1)来自RepVGG的重参数化是一种优越的技术,在检测(已有的yolo版本)中尚未得到很好的利用(实际上同时期的yolov7里也用到了)。同时,作者认为小型网络和大型网络不一样,对大型网络来说,对RepVGG块进行简单地模型缩放不切实际。

            (2)基于重参数化的检测器的量化也要调整

            (3)考虑真正的服务环境中的部署(以前的算法往往在高功耗的v100上比),我要换个平台赛道比比

            (4)新的标签分配和损失函数出来啦,得试试

            (5)加点新的策略tricks,不增加推理时间就行

            总结yolov6的贡献:

    •         同时在分类和回归中加入了自蒸馏策略
    •         做了很多实验验证不同的标签分配策略、损失函数、数据增强技术,找到了最好的组合

    二、方法介绍

            YOLOv6的新设计包括以下组件:网络设计、标签分配、损失函数、数据增强、为了工业方便的改进、量化和部署:

    2.1 网络设计

    •         Backbone:yolov6的小型网络(跟v5和其他的版本一样,yolov6提供yolov6-n、yolov6-s等好几个规模的网络)中,使用RepBlock为基本模块;yolov6的大型网络,用了他们自己修改的一个高效CSP块,取名叫CSPStackRep块。

            

    (a)和(b)表示了RepBlock,(a)表示训练的时候,RepVGG block接一个ReLU,(b)表示推理的时候,RepVGG块被替换成了RepConv

    (c)CSPStackRep块的结构 

    •         Neck:参考YOLOv4和v5用的PAN,结合backbone里的RepBlock或者CSPStackRep,提出了一个Rep-PAN
    •         Head:类似YOLOX的解耦头,更高效化了(微调)。YOLOv6里采用的是anchor-free的检测头(YOLOX、FCOS),是anchor point-based,而不是keypoint-based

    2.2 标签分配

           SimOTA的训练太慢,而且容易陷入不稳定的训练。 实验发现TAL(Task alignment learning)更好。

    2.3 损失函数

            分类损失用的是VFL(VariFocal Loss),回归损失用的是SIoU/GIoU

    2.4 为了工业部署便利的相关tricks

            更多的epoch、自蒸馏、图片边缘放置灰色边界(有助于检测边界的object)

    2.5 量化和部署

            用了 训练后量化(PTQ)量化感知训练(QAT)

  • 相关阅读:
    2.17 haas506 2.0开发教程-system(仅支持2.2以上版本)
    Spring注解开发(十)
    优秀的 OKR 案例参考
    使用skvideo.io.vread读取avi视频,报错“No way to determine width or height from video...”
    Towhee 每周模型
    英语不好怎么学python?这份python英语常用单词给我收好
    Pyside6 QPushButton
    Kubernetes(K8S第三部分之资源控制器)
    Linux之自动化运维工具ansible详解
    SCRUM敏捷产品负责人(CSPO)认证培训课程
  • 原文地址:https://blog.csdn.net/jiangqixing0728/article/details/126760731