AI技术栈 —— LabelMe的使用与YOLOV11模型训练

一、如何安装?

Github官网可以直接下载LabelMe的exe可执行文件。

参考文章或视频链接
[1] Labelme官网
[2] Labelme Starter
[3] Labelme - Github

二、如何使用?

参考文章或视频链接
[1] 使用labelme打标签,详细教程 - 优快云
[2] Labeling with LabelMe: Step-by-step Guide [Alternatives + Datasets]
[3] 重点查看 Labelme Starter Guide
[4] [**YOLO中的数据增强

三、YOLOV11实战

3.1 数据预处理

下面,我们来用labelme做一个检测项目,这是cv的入门项目,也是必须掌握的。在这之前,还需要掌握一个工具,labelme2yolo,安装方式如下,使用方式见参考文章[1]。

pip install labelme2yolo

在使用下面这条命令处理好数据后,就可以开始yolo模型的训练了,这会生成一个YOLODataset文件夹,如果你要移动该文件夹,记得修改dataset.yaml文件中的内容。

labelme2yolo --json_dir /path/to/labelme_json_dir/ --val_size 0.15 --test_size 0.15

3.2 训练

from ultralytics import YOLO

# Load a model,要从github上下载pt权重,也可以手动下载到某个目录并指定path
model = YOLO("yolo11s.pt")  # load a pretrained model (recommended for training)

# Train the model
data_path = "/{your_path}/YOLODataset/dataset.yaml"
model.train(
    data=data_path,
    epochs=200,
    imgsz=640,
    project="{your_folder}",  # 自定义保存文件夹
    save=True,  # 开启保存
    save_period=5  # 控制保存的频率
)

训练好后会出现一个文件夹,里面有best.pt以及训练过程中的各种数据,下面我们来观察下训练过程中的一些输出

Epoch    GPU_mem   box_loss   cls_loss   dfl_loss  Instances       Size
    194/200      4.87G     0.8492      2.769      1.159          7        640: 100%|██████████| 2/2 [00:00<00:00, 10.08it/s]
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 1/1 [00:00<00:00, 34.02it/s]
                   all          2         50       0.22      0.511      0.402      0.353

# 训练参数
# 1.Epoch 当前的训练轮数(epoch)。
# 2.GPU_mem 当前 GPU 的显存使用情况。
# 3.box_loss 边界框损失(Box Loss),用于衡量模型预测的边界框与真实边界框之间的差异。
# 4.cls_loss 分类损失(Classification Loss),用于衡量模型预测的类别与真实类别之间的差异。
# 5.dfl_loss 分布式特征损失(Distribution Focal Loss),用于优化模型预测的边界框位置。
# 6.Instances 当前 batch 中包含的实例(目标)数量。
# 7.Size 输入图像的尺寸,表明是640*640。

# 验证日志参数解释
# 1. Class含义: 当前评估的类别。示例: all 表示所有类别的评估结果。
# 2. Images含义: 用于评估的图像数量。示例: 2 表示使用了 2 张图像进行评估。
# 3. Instances含义: 用于评估的实例(目标)数量。示例: 50 表示评估的图像中总共有 50 个实例。
# 4. Box(P)含义: 边界框的精确率(Precision),表示模型预测的边界框中正确预测的比例。示例: 0.22 表示边界框的精确率为 0.22。
# 5. R含义: 边界框的召回率(Recall),表示模型正确预测的边界框占所有真实边界框的比例。示例: 0.511 表示边界框的召回率为 0.511。
# 6. mAP50含义: 平均精度(Mean Average Precision),在 IoU(Intersection over Union)阈值为 0.5 时的值。示例: 0.402 表示 mAP50 为 0.402。
# 7. mAP50-95含义: 平均精度(Mean Average Precision),在 IoU 阈值从 0.5 到 0.95 时的平均值。示例: 0.353 表示 mAP50-95 为 0.353。
参考文章或视频链接
[1] labelme2yolo - PyPI
[2] YOLOv8: A Complete Guide [2025 Update]
[3] YOLOv8 权重文件下载:加速您的目标检测项目

3.3 预测

训练好后,会有一个best.pt模型,要测试该模型的一个输出效果,如何做?

import cv2
from ultralytics import YOLO

# Load the YOLO model
model = YOLO("/{Your Path}/best.pt")

# Load the image
img = cv2.imread("/{Your Path}/test.jpg")

# Perform the prediction
results = model(img)

# Extract the bounding boxes and labels
boxes = results[0].boxes.xyxy.cpu().numpy()  # xyxy format
confidences = results[0].boxes.conf.cpu().numpy()
classes = results[0].boxes.cls.cpu().numpy()
labels = model.names  # Access names from the model

# Draw rectangles on the detected objects
for box, conf, cls in zip(boxes, confidences, classes):
    x1, y1, x2, y2 = box
    label = labels[int(cls)]
    cv2.rectangle(img, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
    cv2.putText(
        img,
        f"{label} {conf:.2f}",
        (int(x1), int(y1) - 10),
        cv2.FONT_HERSHEY_SIMPLEX,
        0.9,
        (0, 255, 0),
        2,
    )

# Save or display the image
cv2.imwrite("./output.jpg", img)
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
### 使用自定义训练YOLOv11 模型进行推理或部署 #### 准备工作 为了能够顺利使用自定义训练YOLOv11模型进行推理或部署,首先要确保已经完成了模型训练过程并导出了适用于部署环境下的模型文件。这通常意味着要将PyTorch中的模型保存为TorchScript格式以便于后续操作[^1]。 ```python import torch.jit as jit model = ... # 加载已训练好的YOLOv11模型实例 example_input = torch.rand(1, 3, 224, 224) # 创建一个示例输入张量 traced_script_module = jit.trace(model, example_input) traced_script_module.save("yolov11_traced.pt") # 将追踪后的模块保存到磁盘 ``` #### 部署至生产环境 一旦拥有了经过优化处理过的TorchScript模型文件(``.pt``),就可以考虑将其集成到实际的应用场景当中去了。这里推荐采用[TorchServe](https://pytorch.org/serve/)作为服务框架来进行在线预测服务搭建。 - **启动TorchServe** 安装完成后可以通过命令行工具轻松地初始化服务器端程序: ```bash torch-model-archiver --model-name yolov11 --version 1.0 --serialized-file yolov11_traced.pt --handler image_classifier ``` 上述指令会打包好指定名称版本号以及处理器脚本在内的全部必要组件形成单个压缩包供下一步加载调用;其中`image_classifier`代表内置图像分类任务对应的默认业务逻辑实现方式,在此可根据需求替换为其他更贴合具体应用场景的任务类型。 - **配置HTTP接口** 启动之后便可通过RESTful API的形式对外提供访问入口,允许客户端发送POST请求携带待测图片资源获取返回的结果JSON对象内含识别出来的物体类别及其位置信息等细节描述字段。 ```json { "prediction": [ {"label": "dog", "probability": 0.9876}, ... ] } ``` #### 数据预处理后处理 值得注意的是,在正式投入使用前还需特别关注前后两端的数据准备工作。从前端采集来的原始图象往往需要经历一系列标准化变换才能适配算法预期接收的标准形式;而从后端计算得出的概率分布向量同样也要依据实际情况做适当调整最终呈现给人类可读解码过的信息表示方法[^3]。 例如,当利用LabelMe创建标注数据集时,可能涉及到不同坐标系之间的相互转换等问题,因此建议提前熟悉掌握相关知识点以应对可能出现的各种状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值