AI技术栈 —— 如何使用LabelMe?
- 一、如何安装?
- 二、如何使用?
- 三、YOLOV11实战
- 3.1 数据预处理
- 3.2 训练
- 3.3 预测
一、如何安装?
Github官网可以直接下载LabelMe的exe可执行文件。
参考文章或视频链接 |
---|
[1] Labelme官网 |
[2] Labelme Starter |
[3] Labelme - Github |
二、如何使用?
参考文章或视频链接 |
---|
[1] 使用labelme打标签,详细教程 - CSDN |
[2] Labeling with LabelMe: Step-by-step Guide [Alternatives + Datasets] |
[3] 重点查看 Labelme Starter Guide |
三、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()