yolo11官方链接: link
功能:实现目标检测和跟踪、实例分割、图像分类和姿态估计,定向边框目标检测任务。
本文章是以labelimg标注好的voc数据集为基础,通过转换格式训练模型,以目标检测为例:

一,安装

pip install ultralytics

or

pip install git+https://github.com/ultralytics/ultralytics.git@main

link

安装torch
进入pytorch官网,选择和自己cuda版本一致的安装命令
torch官网
例如

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision torchaudio ultralytics
# 或者
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

二,数据集准备

重要更新

目前我将整个流程代码放到github仓库,支持一键训练,不需要了解其中处理的步骤,

https://github.com/meng8407/yolo_train_process/blob/main/README.md
在这里插入图片描述

还包括其中一部分的数据增强,
主文件是train.py文件,
1.替换input_dir地址为一个包含xml文件和图片地址的文件路径, 2.output_dir为生成yolo训练集的路径, 3.替换class_name为自己的标签名称,可以是多标签, 4.fs_trans,split_five_equal 参数是选择是否使用放射变换或者五等份切分对训练数据集进行增强 5.指定训练中的batch_size ,imgsz,和要训练的yolo模型。

python count_classes.py 查看文件夹中类别标签,获取class_name

更换路径后直接执行,python train.py

注意以步骤二执行后,可跳过下面的步骤三

三,修改配置文件,开始训练模型

link

vi  ultralytics/ultralytics/cfg/datasets/coco8.yaml

3.1修改数据路径

在这里插入图片描述

3.2训练模型

选择模型
在这里插入图片描述


from ultralytics import YOLO

# Load a model
model = YOLO("yolov8l.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="/home/ai-developer/ultralytics/my_coco8.yaml", epochs=50, imgsz=640, batch=32,device=[0, 1],lr0=0.0001)

cli

# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=0,1 batch=0.8

或者后端启动命令

nohup python  train.py > 训练日志文件地址/日志名称.log 2>&1 & 

train参数命令详解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
增强设置和超参数
在这里插入图片描述
在这里插入图片描述

记录
在训练YOLO11 模型的过程中,您可能会发现跟踪模型在一段时间内的表现很有价值。这就是日志发挥作用的地方。Ultralytics’YOLO 支持三种类型的日志记录器:Comet 、ClearML 和 TensorBoard。

要使用记录仪,请从上面代码片段的下拉菜单中选择并运行。所选记录仪将被安装和初始化。

Comet
Comet是一个允许数据科学家和开发人员跟踪、比较、解释和优化实验与模型的平台。它提供实时指标、代码差异和超参数跟踪等功能。

要使用Comet :

# pip install comet_ml
import comet_ml

comet_ml.init()

请记住在Comet 网站上登录您的账户并获取 API 密钥。您需要将此添加到环境变量或脚本中,以便记录实验日志。

ClearML
ClearML是一个开源平台,可自动跟踪实验并帮助高效共享资源。它旨在帮助团队更高效地管理、执行和复制他们的 ML 工作。

要使用ClearML :

# pip install clearml
import clearml

clearml.browser_login()

运行该脚本后,您需要在浏览器上登录ClearML 账户并验证您的会话。

张量板
TensorBoard是一款可视化工具包,适用于 TensorFlow.通过它,您可以将TensorFlow 图形可视化,绘制有关图形执行情况的量化指标,并显示通过图形的图像等附加数据。

在Google Colab 中使用 TensorBoard:

load_ext tensorboard
tensorboard --logdir ultralytics/runs  # replace with 'runs' directory

要在本地使用 TensorBoard,请运行以下命令并在http://localhost:6006/ 上查看结果。

tensorboard --logdir ultralytics/runs  # replace with 'runs' directory

这将加载 TensorBoard 并将其导向保存训练日志的目录。

设置好记录仪后,您就可以开始模型训练了。所有训练指标都将自动记录在您选择的平台上,您可以访问这些日志来监控模型在一段时间内的表现,比较不同的模型,并找出需要改进的地方。

3.推理


from ultralytics import YOLO
import os
# 加载模型
model = YOLO("yolov8m.yaml")  # 从头开始构建新模型
model = YOLO("/ultralytics/runs/detect/train18/weights/best.pt")  # 加载预训练模型(建议用于训练)

imgfile=./test_images'
save_path='./results'

# 使用模型
for air,file,filelist in os.walk(imgfile):
    for filename in filelist:
        imgname=os.path.join(air,filename)
        results = model(imgname)  # 对图像进行预测
        for result in results:
            boxes = result.boxes  # Boxes object for bounding box outputs
            result.show()  # display to screen
            savename=os.path.join(save_path,filename)
            result.save(savename)  # save to disk

可供调用的api

from ultralytics import YOLO

# 更换模型地址
model = YOLO("/home/ai-developer/ultralytics/runs/detect/train/weights/epoch90.pt")

def get_inspect_general(imgpath):
    """
    imgpath 单张图片的地址
    """
    ret = []
    results = model(imgpath)
    print(results)
    for result in results:
        boxes = result.boxes
        names = result.names
        scores = boxes.conf.tolist()
        boxs = boxes.xyxy.tolist()
        label_id = boxes.cls.tolist()
        for i in range(len(boxes.cls)):
            if float(scores[i]) > 0.8:
                v = {}
                v['classname'] = names[label_id[i]]
                v['scores'] = float(scores[i])
                new_bboxes = [x for x in boxs[i]]
                xmin = new_bboxes[0]
                ymin = new_bboxes[1]
                xmax = new_bboxes[2]
                ymax = new_bboxes[3]
                v['xmin'], v['ymin'] = int(xmin), int(ymin)
                v['xmax'], v['ymax'] = int(xmax), int(ymax)
                ret.append(v)
    return ret
    # ret  [{'classname': 'fall_down_negative_sit', 'scores': 0.9751856923103333, 'xmin': 479, 'ymin': 462, 'xmax': 761, 'ymax': 946}, {'classname': 'fall_down_negative_sit', 'scores': 0.968105137348175, 'xmin': 4, 'ymin': 689, 'xmax': 375, 'ymax': 966}]

# if __name__ == '__main__':
#     # 图片地址
#     imgfile = '/home/ai-developer/mmdetection-master/tests/tangyun'
#     for air, file, filelist in os.walk(imgfile):
#         for filename in filelist:
#             imgname = os.path.join(air, filename)
#             get_inspect_general(imgname)

4.评估

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95
yolo detect val model=path/to/best.pt   # val custom model
yolo detect predict \
  model=yolov8n.pt \          # 模型权重
  source=data/images/ \       # 输入源
  imgsz=640 \                # 图像尺寸
  conf=0.25 \               # 置信度阈值
  iou=0.45 \               # IOU阈值
  device=0 \               # 设备
  save_txt=True \         # 保存TXT结果
  save_conf=True \       # 保存置信度
  classes=0,2,5 \       # 过滤类别
  name=exp_name \      # 结果目录名
  exist_ok=True       # 覆盖已有目录

将 YOLO11n 模型导出为不同格式,如ONNX,CoreML 等。

yolo export model=path/to/best.pt format=onnx  # export custom trained model
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐