运行时依赖
安装命令
点击复制技能文档
YOLO Expert Skill 触发条件:使用者询问 YOLO / Ultralytics 相关问题时激活。 行为:从 ultralytics 官方 API 和源码出发回答,不自创代码,所有示例均来自官方内置函数。 重要:如果 ultralytics 未安装,先执行 pip install ultralytics --break-system-packages 安装后再继续。
框架架构 核心模块 ultralytics/ ├── models/ # YOLO/YOLOWorld/YOLOE 等模型封装类 ├── nn/tasks.py # DetectionModel/SegmentationModel 等 PyTorch 模型 ├── nn/modules/ # Conv/C3/SPPF 等神经网络层 ├── engine/ │ ├── model.py # Model 基类(统一 API) │ ├── trainer.py # BaseTrainer(训练器) │ ├── predictor.py # BasePredictor(推理器) │ ├── validator.py # BaseValidator(验证器) │ └── exporter.py # 模型导出 ├── utils/ │ ├── metrics.py # DetMetrics(指标) │ ├── plotting.py # plot_results()(绘图) │ ├── loss.py # 各种 Loss │ └── nms.py # NMS └── solutions/ # 即用型方案(Heatmap/ObjectCounter 等)
模型继承 Model (engine/model.py) — 统一 API └── YOLO ├── YOLOWorld └── YOLOE BaseModel (nn/tasks.py) ├── DetectionModel ├── OBBModel ├── SegmentationModel ├── PoseModel ├── ClassificationModel └── ...
核心 API 一览 功能 调用方式 推理 model.predict(source, stream=False, kwargs) 训练 model.train(data=..., epochs=..., kwargs) 验证 model.val(data=..., kwargs) 导出 model.export(format="onnx", kwargs) 调参 model.tune(use_ray=False, iterations=..., kwargs) 跟踪 model.track(source, persist=False, kwargs) benchmark model.benchmark(format="onnx", kwargs) 绘制训练曲线 plot_results(file="results.csv") 绘制推理结果 results[0].plot()
推理(predict) 官方签名:model.predict(source=None, stream=False, predictor=None, kwargs) from ultralytics import YOLO model = YOLO("yolo26n.pt") # 基本推理 results = model.predict("bus.jpg") # 批量图片 results = model.predict(["img1.jpg", "img2.jpg"]) # 视频推理(流式,生成器模式) for r in model.predict("video.mp4", stream=True): print(r.boxes) # 每帧检测结果 print(r.boxes.xyxy) # 框坐标 (N,4) print(r.boxes.conf) # 置信度 (N,) print(r.boxes.cls) # 类别ID (N,) # 结果保存/显示 results[0].save() # 保存 result.jpg results[0].show() # 显示图片 results[0].plot() # 返回带标注的 np.ndarray 图片 results[0].save_txt("labels/") # 保存 YOLO 格式标签 results[0].save_crop("crops/") # 保存裁剪图 # 常用参数 results = model.predict( source="bus.jpg", conf=0.25, # 置信度阈值 iou=0.45, # NMS IOU 阈值 imgsz=640, # 输入分辨率 device="0", # GPU 编号 half=True, # FP16 推理 augment=True, # TTA 测试增强 visualize=False, # 可视化特征图 classes=[0, 1], # 只检测指定类别 )
训练(train) 官方签名:model.train(data=..., epochs=..., *kwargs) from ultralytics import YOLO model = YOLO("yolo26n.pt") # 或 "yolo26n.yaml" 从零训练 results = model.train( data="coco8.yaml", # 数据集配置文件 epochs=100, # 训练轮数 imgsz=640, # 输入分辨率 device="0", # GPU 编号,或 "cpu" batch=16, # 批量大小 project="runs/detect", # 保存路径 name="train", exist_ok=True, # 覆盖已有实验 pretrained=True, # 使用预训练权重 optimizer="SGD", # 优化器:SGD/Adam/AdamW/RMSprop lr0=0.01, # 初始学习率 lrf=0.01, # 最终学习率 (lr0 lrf) momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, # 热身轮数 warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, # Box loss 权重 cls=0.5, # Cls loss 权重 dfl=1.5, # DFL loss 权重 mosaic=1.0, # 马赛克增强 mixup=0.0, # MixUp 增强 copy_paste=0.0, # Copy-paste 增强 close_mosaic=10, # 最后 N 轮关闭 mosaic amp=True, # 自动混合精度 cache=False, # 缓存图片到内存 workers=8, # 数据加载线程数 verbose=True, # 显示详细日志 )
验证(val) 官方签名:model.val(data=..., kwargs) from ultralytics import YOLO model = YOLO("yolo26n.pt") metrics = model.val(data="coco8.yaml") # 常用指标属性 print(metrics.box.map) # mAP50-95(COCO 指标) print(metrics.box.map50) # mAP50 print(metrics.box.map75) # mAP75 print(metrics.box.metric_precision) # Precision print(metrics.box.metric_recall) # Recall # 如果是分割任务 print(metrics.mask.map) # mask mAP # 如果是姿态任务 print(metrics.kpt.map) # keypoint mAP
导出(export) 官方签名:model.export(format="", kwargs) from ultralytics import YOLO model = YOLO("yolo26n.pt") # 导出格式:onnx/tensorrt/coreml/paddle/tflite/... model.export(format="onnx", imgsz=640, half=True, opset=12) model.export(format="tensorrt", imgsz=640, batch=1, half=True) model.export(format="coreml", imgsz=640) model.export(format="paddle", imgsz=640) model.export(format="tflite", imgsz=640, int8=True, keras=True)
调参(tune) 官方签名:model.tune(use_ray=False, iterations=10, **kwargs) from ultralytics import YOLO model = YOLO("yolo26n.pt") # 内置调参(默认) results = model.tune( data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", lr0=0.001, weight_decay=0.0005, batch=16, ) # 使用