yolov6训练自己的数据集(代码片段)

迪菲赫尔曼 迪菲赫尔曼     2023-03-28     145

关键词:

项目地址:https://github.com/meituan/YOLOv6
论文地址:https://arxiv.org/abs/2209.02976
论文解析:http://t.csdn.cn/0ZQbV


YOLOv6 是一种专为工业应用设计的单级对象检测框架,具有硬件友好的高效设计和高性能。YOLOv6-NNVIDIA Tesla T4 GPU 上以 1234 FPS 的吞吐量在 COCO 数据集上达到 35.9% 的 AP。 YOLOv6-S 以 495 FPS 的速度达到 43.5% 的 AP,优于同规模的其他主流检测器(YOLOv5-SYOLOX-SPPYOLOE-S)。
YOLOv6-S 量化版本甚至带来了 869 FPS 的最新 43.3% AP。此外,与具有相似推理速度的其他检测器相比,YOLOv6-M/L 还实现了更好的准确度性能(即 49.5%/52.3%)。

模型指标

模型输入尺寸mAPval
0.5:0.95
速度T4
trt fp16 b1
(fps)
速度T4
trt fp16 b32
(fps)
Params
(M)
FLOPs
(G)
YOLOv6-N64037.577911874.711.4
YOLOv6-S64045.033948418.545.3
YOLOv6-M64050.017522634.985.8
YOLOv6-L64052.89811659.6150.7
YOLOv6-N6128044.922828110.449.8
YOLOv6-S6128050.39810841.4198.0
YOLOv6-M6128055.2475579.6379.5
YOLOv6-L6128057.22629140.4673.4

文章目录


1. 获取代码

$ git clone https://github.com/meituan/YOLOv6.git

安装环境:

cd YOLOv6
pip install -r requirements.txt

2. 准备数据集

2.1 标注数据集

我们可以通过 Labelme 等标注软件进行标注,然后导出为 YOLO 的格式的标签,YOLOv6 所用数据集格式和 YOLOv5 相同

标签的 5 5 5 列数据分别是【类别】 【目标框中心点的x坐标】 【目标框中心点的y坐标】【目标框的宽】 【目标框的高


2.2 划分数据集

标注完成后我们要将数据集划分成以下的格式

own_dataset
├── images
│   ├── train
│   │   ├── train0.jpg
│   │   └── train1.jpg
│   ├── val
│   │   ├── val0.jpg
│   │   └── val1.jpg
│   └── test
│       ├── test0.jpg
│       └── test1.jpg
└── labels
    ├── train
    │   ├── train0.txt
    │   └── train1.txt
    ├── val
    │   ├── val0.txt
    │   └── val1.txt
    └── test
        ├── test0.txt
        └── test1.txt

2.3 创建数据集配置文件

YOLOv6/data/ 路径下创建一个 my_dataset.yaml , 里面要写上你数据集的路径数据集的类别test集是可选的 , 到这部分整个数据集的准备过程就结束了。

# Please insure that your custom_dataset are put in same parent dir with YOLOv6_DIR
train: ../datasets/images/train # train images
val: ../datasets/images/val # val images
test: ../datasets/images/test # test images (optional)

# whether it is coco dataset, only coco dataset should be set to True.
is_coco: False

# Classes
nc: 20  # number of classes
names: ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog',
        'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']  # class names

3. 创建模型配置文件

我们需要使用模型配置文件来指定网络结构和一些训练参数,比如优化器参数或者数据增强参数等,我们在 YOLOv6/configs/ 路径下创建一个 my_yolov6s_finetune.py ,需要包含以下信息,当然我们也可以使用默认的模型配置文件。

# YOLOv6s model
model = dict(
    type='YOLOv6s',
    pretrained='weights/yolov6s.pt',
    depth_multiple=0.33,
    width_multiple=0.50,
    backbone=dict(
        type='EfficientRep',
        num_repeats=[1, 6, 12, 18, 6],
        out_channels=[64, 128, 256, 512, 1024],
        fuse_P2=True,
        cspsppf=True,
        ),
    neck=dict(
        type='RepBiFPANNeck',
        num_repeats=[12, 12, 12, 12],
        out_channels=[256, 128, 128, 256, 256, 512],
        ),
    head=dict(
        type='EffiDeHead',
        in_channels=[128, 256, 512],
        num_layers=3,
        begin_indices=24,
        anchors=3,
        anchors_init=[[10,13, 19,19, 33,23], 
                      [30,61, 59,59, 59,119], 
                      [116,90, 185,185, 373,326]],
        out_indices=[17, 20, 23],
        strides=[8, 16, 32],
        atss_warmup_epoch=0,
        iou_type='giou',
        use_dfl=False, # set to True if you want to further train with distillation 
        reg_max=0, # set to 16 if you want to further train with distillation
        distill_weight=
            'class': 1.0,
            'dfl': 1.0,
        ,
    )
)

solver = dict(
    optim='SGD',
    lr_scheduler='Cosine',
    lr0=0.0032,
    lrf=0.12,
    momentum=0.843,
    weight_decay=0.00036,
    warmup_epochs=2.0,
    warmup_momentum=0.5,
    warmup_bias_lr=0.05
)

data_aug = dict(
    hsv_h=0.0138,
    hsv_s=0.664,
    hsv_v=0.464,
    degrees=0.373,
    translate=0.245,
    scale=0.898,
    shear=0.602,
    flipud=0.00856,
    fliplr=0.5,
    mosaic=1.0,
    mixup=0.243,
)

4. 训练

4.1 单个显卡训练

python tools/train.py --batch 16 --conf configs/my_yolov6s_finetune.py --data data/my_dataset.yaml --fuse_ab --device 0

4.2 多显卡训练

python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --batch 256 --conf configs/my_yolov6s_finetune.py --data data/my_dataset.yaml --fuse_ab --device 0,1,2,3,4,5,6,7

5. 验证

python tools/eval.py --data data/data.yaml  --weights output_dir/name/weights/best_ckpt.pt --task val --device 0

6. 推理

python tools/infer.py --weights output_dir/name/weights/best_ckpt.pt --source img.jpg --device 0

7. 像 YOLOv5 一样训练 YOLOv6 🍀

以上只是官方代码库的训练方式,如果你想像 YOLOv5 那样训练的你的数据集,可以使用以下的仓库:YOLOv6 pro

YOLOv6 pro 基于官方 YOLOv6 的整体架构,使用 YOLOv5 的网络构建方式构建一个 YOLOv6 网络,包括 backboneneckeffidehead 结构,可以在 yaml 文件中任意修改或添加模块,并且每个修改的文件都是独立可运行的, 并且该仓库作者在 I E E E U V 2022 V i s i o n M e e t s A l a g e IEEE UV 2022 Vision Meets Alage IEEEUV2022VisionMeetsAlage 目标检测竞赛中取得第一名!感兴趣的同学可以试试~


yolov6训练自己的数据集(代码片段)

项目地址:https://github.com/meituan/YOLOv6论文地址:https://arxiv.org/abs/2209.02976论文解析:http://t.csdn.cn/0ZQbVYOLOv6是一种专为工业应用设计的单级对象检测框架,具有硬件友好的高效设计和高性能。YOLOv6-N在NVIDIATeslaT4GPU上... 查看详情

目标检测yolov6理论解读+实践测试visdrone数据集(代码片段)

前言本篇博文将简单总结YOLOv6的原理,并使用YOLOv6对VisDrone数据集进行训练。背景YOLOv6是美团视觉智能部研发的一款目标检测框架,致力于工业应用。根据官方[1]提供的测试结果,YOLOv6的综合性能效果超越了YOLOv5和YOLO... 查看详情

[深度学习][原创]让yolov6-0.1.0支持yolov5的txt读取数据集模式(代码片段)

美团出了一个yolov6框架目前看来很不错,由于没出来多久,有很多没有完善。今天特意训练自己的数据集发现这个框架只能是按照这个模式摆放:custom_dataset├──images│  ├──train│  │  ├──train0.jpg│  │... 查看详情

yolov6实战:手把手教你使用yolov6进行物体检测(附数据集)(代码片段)

摘要YOLOv6主要在BackBone、Neck、Head以及训练策略等方面进行了诸多的改进:统一设计了更高效的Backbone和Neck:受到硬件感知神经网络设计思想的启发,基于RepVGGstyle[4]设计了可重参数化、更高效的骨干网络EfficientRepBackbo... 查看详情

yolov6实战:手把手教你使用yolov6进行物体检测(附数据集)(代码片段)

摘要YOLOv6主要在BackBone、Neck、Head以及训练策略等方面进行了诸多的改进:统一设计了更高效的Backbone和Neck:受到硬件感知神经网络设计思想的启发,基于RepVGGstyle[4]设计了可重参数化、更高效的骨干网络EfficientRepBackbo... 查看详情

yolov7训练自己的数据集(口罩检测)(代码片段)

YOLOv7训练自己的数据集(口罩检测)前言前提条件实验环境项目结构制作自己的数据集数据集目录结构训练自己的数据集VOC格式数据集转换成YOLO格式数据集修改cfg配置新建一个myyolov7.yaml配置文件myyolov7.yaml内容创建自己... 查看详情

yolov7训练自己的数据集(代码片段)

yolov7训练自己的数据集一.安装yolov7并配置1.安装Anaconda2.创建虚拟环境3.下载yolov7源码4.下载权重5.安装依赖二.运行目标检测三.训练自的数据集1.创建所需文件2.下载labelImg标注工具3.配置训练的相关文件四.正式训练五.使用自己的... 查看详情

mmdetection训练自己的coco数据集(代码片段)

训练前的准备训练数据的导入将自己的COCO数据集放入到下载的mmdetection的源码里,(如果没有data文件夹需要新建)data->COCO->你的COCO数据集文件格式如下:mmdetection├──mmdet├──tools├──configs├──data│... 查看详情

detr训练自己的数据集-实践笔记(代码片段)

DETR(DetectionwithTRansformers)训练自己的数据集-实践笔记&问题总结DETR(DetectionwithTRansformers)是基于transformer的端对端目标检测,无NMS后处理步骤,无anchor。实现使用NWPUVHR10数据集训练DETR.NWPU数据集总共包含十种类别目标,... 查看详情

paddledet训练旋转目标检测ppyoloe-r训练自己的数据集(代码片段)

1.数据转换labelme2coco,原来是labelme标注的points通过opencv转为4个坐标#encoding=utf-8importargparseimportcollectionsimportdatetimeimportglobimportjsonimportosimportos.pathasospimportsysimportuuidimportcv2imp 查看详情

笔记2:yolov5训练自己的目标检测模型_创建并划分数据集(代码片段)

 目标检测---数据集格式转化及训练集和验证集划分_didiaopao的博客-CSDN博客1、 我们经常从网上获取一些目标检测的数据集资源标签的格式都是VOC(xml格式)的,而yolov5训练所需要的文件格式是yolo(txt格式)的,这里就需要对x... 查看详情

paddleocr文字识别使用教程(训练自己的数据集)(代码片段)

目录项目目录结构数据集准备labelimg参数修改训练预测项目目录结构链接:https://pan.baidu.com/s/1wbZvvonRBL3xy7xO3w57eA提取码:8888开源项目链接:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.3/doc/doc_en/recogniti 查看详情

深度学习训练营之yolov5训练自己的数据集(代码片段)

深度学习训练营之训练自己的数据集原文链接环境介绍准备好数据集划分数据集运行voc_train.py遇到问题完整代码创建new_data.yaml文件模型训练时遇到的报错模型训练结果可视化参考链接原文链接🍨本文为🔗365天深度学习... 查看详情

跑通caffe-ssddemo代码(训练测试自己数据集)(代码片段)

跑通caffe-ssddemo代码(训练、测试自己数据集)ssd网络我就不多介绍了,CSDN上面一搜一大把。这篇主要讲讲如何跑通caffe代码~github:caffe-ssd一、代码结构在caffe-ssd中能用到的文件我全部在上述图片中标出来了,... 查看详情

mmsegmentation框架segformer训练自己的数据集(代码片段)

...家共勉!    我个人主要是想要使用mmsegmentation框架训练自己的数据集,一开始跟着网上的教程使用了PspNet网络,但是可能由于数据集过小最后达到的效果不尽人意,因此考虑使用更新的、性能更好的SegFormer进行... 查看详情

计算机视觉pytorch-数据处理(库数据和训练自己的数据)(代码片段)

...据处理1.pytorch库自带数据数据预处理数据生成数据加载2.训练自己的数据生成数据集数据预处理数据加载1.pytorch库自带数据为了更好的理解,这里以CIFAR10数据集作为训练和测试数据集。我们将使用CIFAR10数据集,它包含十... 查看详情

yolov3包括tiny-yolo训练自己的数据集(pytorch版本)以及模型评价指标的介绍(代码片段)

  最近一直在尝试用pytorch版本的Tinyyolov3,来训练自己的数据集。看了很多的博客,终于梳理出如何使用自己的数据集来进行训练。关于YOLOv3的原理这里就不过多介绍了。网上的教程很多,这里就直接开始介绍如何利用PyTorch对... 查看详情

自己训练卷积模型实现猫狗(代码片段)

...两个类别各有12500新数据集:猫、狗(照片大小不一样)训练集:各1000个样本验证集:各500个样本测试集:各500个样本#将图像复制到训练、验证和测试的目录importos,shutilorginal_dataset_dir=‘kaggle_original_data/train‘base_dir=‘cats_and_dogs... 查看详情