大模型训练测试
YOLO本地部署
# 安装 yolov8 pip install ultralytics 运行推理: # 检测图片 yolo predict model=yolov8s.pt source=image.jpg # 检测视频 yolo predict model=yolov8s.pt source=video.mp4 # 检测摄像头(ID=0) yolo predict model=yolov8s.pt source=0 # 保存结果 yolo predict model=yolov8s.pt source=image.jpg save=True
输入一个图片,输出的标注如下所示(可以识别人、足球):

模型标注与训练
标注cvat
(Computer Vision Annotation Tool)
做车道线的标注

标注输出:

输出文件如下:
images目录下默认只生成训练集,不生成验证集,所以需要手工生成验证集合。训练集和验证集是模型训练过程中用途完全不同的两类数据,核心作用是分别负责 “教模型学习” 和 “监控模型效果”,避免模型出现 “过拟合”,

data.yaml重新编写如下:
train: ./images/train val: ./images/val nc: 2 names: ['car', 'lane']
训练(20251129)
yolo工具:
上面操作做完之后,开始训练:
yolo detect train \ data=data.yaml \ model=yolov8s.pt \ epochs=100 \ imgsz=640
输出结果:

/Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:832: RuntimeWarning: Mean of empty slice. i = smooth(f1_curve.mean(0), 0.1).argmax() # max F1 index /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:137: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( all 610 0 0 0 0 0 WARNING ⚠️ no labels found in detect set, can not compute metrics without labels 100 epochs completed in 29.153 hours. Optimizer stripped from /Users/wangfeng/Downloads/yolotest7/runs/detect/train5/weights/last.pt, 22.5MB Optimizer stripped from /Users/wangfeng/Downloads/yolotest7/runs/detect/train5/weights/best.pt, 22.5MB Validating /Users/wangfeng/Downloads/yolotest7/runs/detect/train5/weights/best.pt... Ultralytics 8.3.233 🚀 Python-3.13.9 torch-2.9.0 CPU (Apple M4) Model summary (fused): 72 layers, 11,126,358 parameters, 0 gradients, 28.4 GFLOPs Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 20/20 9.8s/it 3:15 /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:653: RuntimeWarning: Mean of empty slice. ax.plot(px, py.mean(1), linewidth=3, color="blue", label=f"all classes {ap[:, 0].mean():.3f} mAP@0.5") /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:145: RuntimeWarning: invalid value encountered in scalar divide ret = ret.dtype.type(ret / rcount) /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:697: RuntimeWarning: Mean of empty slice. y = smooth(py.mean(0), 0.1) /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:137: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:697: RuntimeWarning: Mean of empty slice. y = smooth(py.mean(0), 0.1) /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:137: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:697: RuntimeWarning: Mean of empty slice. y = smooth(py.mean(0), 0.1) /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:137: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:832: RuntimeWarning: Mean of empty slice. i = smooth(f1_curve.mean(0), 0.1).argmax() # max F1 index all 610 0 0 0 0 0 WARNING ⚠️ no labels found in detect set, can not compute metrics without labels Speed: 1.1ms preprocess, 298.4ms inference, 0.0ms loss, 0.1ms postprocess per image Results saved to /Users/wangfeng/Downloads/yolotest7/runs/detect/train5 💡 Learn more at https://docs.ultralytics.com/modes/train
yolo detect train \ data=data.yaml \ model=yolov8s.pt \ epochs=100 \ imgsz=640 yolo predict model=/Users/wangfeng/Downloads/yolotest7/runs/detect/train5/weights/best.pt source=/Users/wangfeng/Downloads/yolotest7/images/train/frame_000261.png
结果:
训练失败。对于以前标记的帧都没有标记出车道线。。 why? 如果在 CVAT 中只标注部分实体(比如图片里有 5 辆车,但只标了 2 辆),训练出的模型预测准确性会明显下降,甚至出现 “漏检”“误检” 的问题,具体影响和优化方向如下: 1. 模型学习不充分,漏检率高模型会认为 “没标注的实体不属于目标类别”(CVAT 中未标注的区域默认是 “背景”),训练后遇到同类实体时,会大概率漏检(比如只标了 2 辆车,模型可能只认这 2 辆的特征,对其他车 “视而不见”)。 2. 标注数据分布偏差,泛化能力差部分标注会导致训练集的 “目标分布” 不完整(比如只标了大卡车,没标小轿车),模型学到的特征单一,遇到不同形态的目标时预测错误率高。 3. 损失函数计算失真,训练效果差YOLO 等模型的损失函数依赖 “标注框与预测框的匹配”,部分标注会让模型误判 “预测对未标注实体是错误的”,导致参数更新方向错误,最终模型收敛效果差。
第二次训练:
训练输出:
WARNING ⚠️ no labels found in detect set, can not compute metrics without labels Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 100/100 0G 1.368 0.7352 1.37 8 640: 59% ━━━━━━━───── 23/39 9.1s/it 3:38<2:25 100/100 0G 1.363 0.727 1.367 8 640: 62% ━━━━━━━───── 24/39 9.0s/it 3:47<2:16 100/100 0G 1.368 0.7225 1.386 4 640: 100% ━━━━━━━━━━━━ 39/39 9.1s/it 5:54 Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 1/1 4.5it/s 0.2s /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:832: RuntimeWarning: Mean of empty slice. i = smooth(f1_curve.mean(0), 0.1).argmax() # max F1 index /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:137: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( all 2 0 0 0 0 0 WARNING ⚠️ no labels found in detect set, can not compute metrics without labels 100 epochs completed in 21.055 hours. Optimizer stripped from /Users/wangfeng/Downloads/test7yolo/runs/detect/train4/weights/last.pt, 22.5MB Optimizer stripped from /Users/wangfeng/Downloads/test7yolo/runs/detect/train4/weights/best.pt, 22.5MB Validating /Users/wangfeng/Downloads/test7yolo/runs/detect/train4/weights/best.pt... Ultralytics 8.3.233 🚀 Python-3.13.9 torch-2.9.0 CPU (Apple M4) Model summary (fused): 72 layers, 11,126,358 parameters, 0 gradients, 28.4 GFLOPs Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 1/1 5.2it/s 0.2s /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:653: RuntimeWarning: Mean of empty slice. ax.plot(px, py.mean(1), linewidth=3, color="blue", label=f"all classes {ap[:, 0].mean():.3f} mAP@0.5") /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:145: RuntimeWarning: invalid value encountered in scalar divide ret = ret.dtype.type(ret / rcount) /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:697: RuntimeWarning: Mean of empty slice. y = smooth(py.mean(0), 0.1) /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:137: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:697: RuntimeWarning: Mean of empty slice. y = smooth(py.mean(0), 0.1) /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:137: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:697: RuntimeWarning: Mean of empty slice. y = smooth(py.mean(0), 0.1) /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/numpy/_core/_methods.py:137: RuntimeWarning: invalid value encountered in divide ret = um.true_divide( /Users/wangfeng/Desktop/software/miniconda3/lib/python3.13/site-packages/ultralytics/utils/metrics.py:832: RuntimeWarning: Mean of empty slice. i = smooth(f1_curve.mean(0), 0.1).argmax() # max F1 index all 2 0 0 0 0 0 WARNING ⚠️ no labels found in detect set, can not compute metrics without labels Speed: 0.4ms preprocess, 84.9ms inference, 0.0ms loss, 0.2ms postprocess per image Results saved to /Users/wangfeng/Downloads/test7yolo/runs/detect/train4 💡 Learn more at https://docs.ultralytics.com/modes/train
预测:
yolo detect train \ data=data.yaml \ model=yolov8s.pt \ epochs=100 \ imgsz=640 yolo predict model=/Users/wangfeng/Downloads/test7yolo/runs/detect/train4/weights/best.pt source=/Users/wangfeng/Downloads/yolotest7/images/train/frame_000261.png

更多推荐

所有评论(0)