python使用yolo训练模型
前提有已经标框好的数据集
from ultralytics import YOLO# # 加载预训练的 YOLO 模型
model = YOLO('yolo11n.pt')# 训练模型
results = model.train(data='data.yaml', # 数据集配置文件路径epochs=10, # 训练轮数imgsz=640, # 输入图像尺寸batch=16, # 批量大小optimizer='Adam', # 优化器 SGD 最终精度更高,但 Adam 训练速度更快lr0=0.001 # 初始学习率
)
利用xml转换为txt生成的data.yaml进行训练模型
模型训练好之后,验证模型性能
from ultralytics import YOLOmodel = YOLO('runs/detect/train/weights/best.pt') # 加载训练好的最佳模型
metrics = model.val() # 在验证集上评估
print(f"mAP50-95: {metrics.box.map}") # 正常值应 > 0.5
如果报错的话,可以用这个
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE' # 添加在导入其他库之前from ultralytics import YOLOmodel = YOLO('runs/detect/train/weights/best.pt')
metrics = model.val()
print(f"mAP50-95: {metrics.box.map}")
训练完成后,可以用训练集图片验证,如果模型在训练集图片上也检测不到目标,说明训练失败。
from ultralytics import YOLO
import cv2# 加载模型(确认路径正确)
model = YOLO('best.pt')# 调整阈值进行推理
results = model.predict('test.jpg', conf=0.3, imgsz=640)# 处理结果
for r in results:# 保存图像到文件检查标框im_array = r.plot(line_width=2, labels=True)cv2.imwrite('output.jpg', im_array)# 显示检测结果cv2.imshow('Detection', im_array)cv2.waitKey(0)cv2.destroyAllWindows()# 打印检测信息if len(r.boxes) == 0:print("未检测到目标!")else:print(f"检测到 {len(r.boxes)} 个目标!")