Ultralytics YOLO V11 初体验—训练COCO数据集—全流程记录

Utralytics YOLO V11🚀

        之后做项目要用到YOLO,然后也是趁着这个机会捡一下YOLO的相关的知识,这篇博客记录一下,配置Utralytics建立一个训练YOLO的环境,然后使用官方提供的COCO.yaml文件进行自动下载和训练的完整过程,整个过程也是比较曲折,里面涉及到的细节有很多,最终是做出了一个可实现的版本。


Ultralytics是一家专注于开发先进计算机视觉模型的技术公司,特别是在目标检测和图像识别任务方面。它最为人知的是创建和维护了YOLO(You Only Look Once)系列模型,这些模型因其速度快、精度高而被广泛应用于实时目标检测。公司的模型,如YOLOv5和YOLOv8,旨在易于实现、高效并且在各种应用场景中具有很强的性能表现,包括安防系统和自动驾驶等领域。Ultralytics还提供工具、教程和开源代码,帮助工业和科研领域的用户更好地使用这些模型。
在这里插入图片描述

1.新建Conda 虚拟环境


首先是要新建一个虚拟环境,10月份了,我之前用的都是3.10,然后我觉得python官方的最新的稳定版本应该是更新了,通过查看官网我发现,现在的最新的稳定版本是3.11了,所以的话这次打算安装了一个最新的稳定版本。
https://www.python.org/downloads/
在这里插入图片描述

  • 在Anaconda 命令提示窗中输入如下新建环境命令(这里由于我之前安装过其他3.11版本,所以没出进度条直接用的本地缓存进度)
conda create --name ultralytics python=3.11

在这里插入图片描述

  • 在命令提示行内输入python,可以看到安装的python版本,我们的命令安装的python版本为3.11.7。
    在这里插入图片描述

2.安装GPU pytroch


首先需要进入我们上一步建立好的虚拟环境

conda activate ultralytics

在这里插入图片描述

  • 然后win+R 打开系统命令窗口输入cmd(这是另外一个命令窗口)
    在这里插入图片描述
    输入下面的命令查看cuda版本(前提已经安好了GPU的各项驱动)
nvidia-smi

在这里插入图片描述

  • 我自己的CUDA版本是12.6,然后进入pytroch官网,去找安装pytroch的下载命令。https://pytorch.org/,首先Package这一行我们选Conda,因为我们用的的是Anaconda建立的虚拟环境,用conda命令安装会舒服些。然后在ompute Platform一行选一个自己能安装的版本,例如我的CUDA版本是12.6,然后我就选了12.4。
    在这里插入图片描述

然后把下面的下载命令复制下来,复制到之前的Conda的命令提示框中。

在这里插入图片描述
输入命令之后,按回车,出现如下内容。
在这里插入图片描述
拉到下面,然后输入y然后回车。
在这里插入图片描述
然后由于之前我在其他虚拟环境中下载过对应版本的pytroch,所以没出进度条,直接出现了done,表示下载完成。
在这里插入图片描述
然后,输入pip list 看到pytorch已经下载成功了。
在这里插入图片描述

3.安装Utralytics


然后就是安装Utralytics,这个也是很简单粗暴,直接按照官方提示 pip install 安装就行了,我自己配置了清华园下载能稍微快点。

pip install ultralytics

在这里插入图片描述
在这里插入图片描述
然后再输入一下pip list 就可以看到 pytroch 和 ultralytics 都已经被正确安装了。
在这里插入图片描述

4.下载YOLO V11 模型


进入到Ultralytics 的YOLO V11 的下载界面,然后点进去之后稍微下滑一下就能看到Performance Metrics然后需要什么版本点蓝色的版本名称完就可以下了。然后左侧是其他版本的YOLO版本的模型文件下载地址。(如果要从官网主页面进的话,就是先点上方选项卡的Models选项卡,然后点左侧的YOLO 11)
https://docs.ultralytics.com/models/yolo11/#supported-tasks-and-modes
在这里插入图片描述

在这里插入图片描述

5.下载COCO数据集


在Kaggle里下载就行了,27个G大概解压之后。
https://www.kaggle.com/datasets/awsaf49/coco-2017-dataset?resource=download
在这里插入图片描述

6.下载 COCO.yaml


https://docs.ultralytics.com/datasets/detect/coco/#usage
然后就是下载COCO,数据集的yaml文件。

COCO(Common Objects in Context)数据集是一个广泛使用的计算机视觉数据集,旨在支持对象检测、分割和图像标注等任务。它包含了超过33万张复杂的日常生活场景图片,覆盖了80类常见物体,每张图片中物体被标注在不同的上下文环境中,具有丰富的多样性。COCO数据集以其精细的标注和多种任务的支持而闻名,广泛用于训练和评估深度学习模型,尤其是在目标检测和图像语义分割领域。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.搭建训练文件目录


  • 这块我折腾了一阵才整明白,首是新建一个项目,然后把coco2017数据集解压进来,然后把下载的coco.yaml也拖进去。
    然后在项目文件下下新建一个datasets文件下,然后datasets文件下下再建两个新的文件夹imageslabels
    在这里插入图片描述
    然后把coco2017中的 train2017和val2017粘到datasets/images里(这两个文件还挺大的,最好是在外部文件夹复制粘贴,不要在Pycharm内复制粘贴)
    在这里插入图片描述
    然后在labels下面也建两个空文件夹,一个是train2017,一个是val2017。

在这里插入图片描述

8.制作txt格式标签


在项目文件下下新建了一个make_label.py文件,然后需要用coco2017中annotation中的json文件解析成txt类型的标签。

在这里插入图片描述
把下面代码粘贴进去,然后训练集和验证集各运行一次,代码参考了一方热衷博主的博客,在此表示感谢。

import os
import json
from tqdm import tqdm
import argparse

# 生成训练集标签(换成自己的路径)
json_path = r'E:\YOLO_V11\coco2017\annotations\instances_train2017.json'
label_path = r'E:\YOLO_V11\datasets\labels\train2017'

# 生成验证集标签 (换成自己的路径)
# json_path = r'E:\YOLO_V11\coco2017\annotations\instances_val2017.json'
# label_path = r'E:\YOLO_V11\datasets\labels\val2017'


parser = argparse.ArgumentParser()
parser.add_argument('--json_path', default=json_path, type=str,
                    help="input: coco format(json)")
parser.add_argument('--save_path', default=label_path, type=str,
                    help="specify where to save the output dir of labels")
arg = parser.parse_args()


def convert(size, box):
    dw = 1. / (size[0])
    dh = 1. / (size[1])
    x = box[0] + box[2] / 2.0
    y = box[1] + box[3] / 2.0
    w = box[2]
    h = box[3]

    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    return (x, y, w, h)


if __name__ == '__main__':
    json_file = arg.json_path  # COCO Object Instance 类型的标注
    ana_txt_save_path = arg.save_path  # 保存的路径

    data = json.load(open(json_file, 'r'))
    if not os.path.exists(ana_txt_save_path):
        os.makedirs(ana_txt_save_path)

    id_map = {
   }
    for i, category in enumerate(data['categories']):
        id_map[category['id']] = i

    # 通过事先建表来降低时间复杂度
    max_id = 0
    for img in data['images']:
        max_id = max(max_id, img['id'])

    img_ann_dict = [[] for i in range(max_id + 1)]
    for i, ann in enumerate(data['annotations']):
        img_ann_dict[ann['image_id']].append(i)

    for img in tqdm(data['images']):
        filename = img["file_name"]
        img_width = img["width"]
        img_height = img["height"]
        img_id = img["id"]
        head, tail = os.path.splitext(filename)
        ana_txt_name = head + ".txt"
        f_txt = open(os.path.join(ana_txt_save_path, ana_txt_name), 'w')
        for ann_id in img_ann_dict[img_id]:
            ann = data['annotations'][ann_id]
            box = convert((img_width, img_height), ann["bbox"]</
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩浩的科研笔记

这我为您答疑发送资源的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值