YOLOV6训练自己的数据集

开局一座山,算法数据全靠搬,开整默认你已经准备好数据data(图像)与data_labels(不知道怎么生成的可以看我之前的博客训练yolov5的txt)

开源地址:https://github.com/meituan/YOLOv6​​​​​​​

第一步:把冰箱门打开

准备数据根据下面的示例组织您的 train 和 val 图像和标签文件。

path/to/data/images/train/im0.jpg
path/to/data/images/val/im1.jpg
path/to/data/images/test/im2.jpg

# label directory
path/to/data/labels/train/im0.txt
path/to/data/labels/val/im1.txt
path/to/data/labels/test/im2.txt

这里我们采用脚本生成如下:

# conding:utf-8
import sys,os
import math
import random
import shutil
root_path = sys.path[0]
values_path = root_path+"/data"
values_list = os.listdir(values_path)

# 生成训练集、测试集、验证集,放文件的位置
target_path = '/home/project/data/images'
target_label_path = '/home/project/data/labels'
target_path_list = [target_path,target_label_path]
train_and_val = random.sample(values_list,int(math.floor(len(values_list)*0.9)))
train_list = random.sample(train_and_val,int(math.floor(len(train_and_val)*8/9)))
val_list = list(set(train_and_val).difference(set(train_list)))
test_list = list(set(values_list).difference(set(train_and_val)))
def create_set(input_list_name, folder_name):
    # 创建相应的文件夹
    for target_g_path in target_path_list:
        folder_name_path = target_g_path + "/" + folder_name
        if not os.path.exists(folder_name_path):
            os.mkdir(folder_name_path)
    # 将数据和标签数复制到指定的位置
    for file in eval(input_list_name):
        # 1.数据写入
        # 数据源所在文件夹
        source_path = root_path + "/data"
        full_target_file_name = os.path.join(source_path, file)  # 把文件的完整路径得到
        # 写入到指定的文件
        target_folder_path = os.path.join(target_path,folder_name)
        shutil.copy(full_target_file_name, target_folder_path)

        # 数据标签写入
        source_path = root_path + "/data_label"
        file = file.strip().split('.')[0] + '.txt'
        full_target_file_name = os.path.join(source_path, file)  # 把文件的完整路径得到
        target_folder_path = os.path.join(target_label_path, folder_name)
        shutil.copy(full_target_file_name, target_folder_path)



key_name = ['train', 'val', 'test']
for folder_name in key_name:
    list_name = folder_name + "_list"
    ##txt_name = folder_name + ".txt"
    create_set(list_name, folder_name)

第二步把东西塞进去:修改参数

 

dataset.yaml$YOLOv6_DIR/data

train: path/to/data/images/train # train images
val: path/to/data/images/val # val images
test: path/to/data/images/test # test images (optional)

# Classes
nc: 1  # number of classes
names: ['apple']  # class names

创建配置文件

我们使用配置文件来指定网络结构和训练设置,包括优化器和数据增强超参数。

如果你创建一个新的配置文件,请将它放在 configs 目录下。或者只是使用提供的配置文件在$YOLOV6_HOME/configs/*_finetune.py
## YOLOv6s Model config file
model = dict(
    type='YOLOv6s',
    pretrained='./weights/yolov6s.pt', # download pretrain model from YOLOv6 github if use pretrained model
    depth_multiple = 0.33,
    width_multiple = 0.50,
    ...
)
solver=dict(
    optim='SGD',
    lr_scheduler='Cosine',
    ...
)

data_aug = dict(
    hsv_h=0.015,
    hsv_s=0.7,
    hsv_v=0.4,
    ...
)

第三步:关门

训练

单 GPU:默认的是400个周期

python tools/train.py --batch 32 --conf configs/yolov6s_finetune.py --data data/data.yaml --device 0

多 GPU(推荐 DDP 模式)

python -m torch.distributed.launch --nproc_per_node 4 tools/train.py --batch 256 --conf configs/yolov6s_finetune.py --data data/data.yaml --device 0,1,2,3

 评价

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

推理

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

部署

导出为 ONNX 格式

python deploy/ONNX/export_onnx.py --weights output_dir/name/weights/best_ckpt.pt --device 0

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要使用YOLOv6训练自己的数据集并结合DeepSORT实现视频中的目标计数,需要按照以下步骤进行操作: 1. 收集和标注数据集:收集包含您感兴趣目标的视频,并使用标注工具(如LabelImg)对每个目标进行标注。确保标注包括目标的边界框和类别。 2. 准备数据集:将标注的数据集划分为训练集和验证集,并将其转换为YOLOv6支持的数据格式。YOLOv6使用的数据格式是以txt文件为扩展名的文件,每个文件对应一张图片,其中包含了该图片中每个目标的边界框和类别。 3. 配置YOLOv6:下载YOLOv6的代码库,并根据自己的需求进行配置。您可以选择使用预训练模型或从头开始训练。确保将数据集路径、类别数量等相关信息正确配置。 4. 训练YOLOv6模型:使用配置好的YOLOv6代码库进行模型训练训练过程需要指定训练集、验证集、批次大小、学习率等参数,并设置适当的训练轮数。 5. 结合DeepSORT:在YOLOv6模型训练完成后,将其与DeepSORT算法结合起来实现目标计数与跟踪。DeepSORT是一种目标跟踪算法,可以将YOLOv6检测到的目标进行跟踪并计数。 6. 实施目标计数:使用DeepSORT算法对视频进行目标跟踪,并根据跟踪结果进行目标计数。您可以在每个跟踪器的生命周期中跟踪目标,并根据需要进行计数和记录。 请注意,上述步骤涉及到一些复杂的深度学习和计算机视觉概念,需要具备相关知识和经验。如果您不熟悉这些概念,建议先学习相关的深度学习和计算机视觉基础知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值