YOLOv11目标检测实战:从环境配置到模型部署(ultralytics)
1. 环境配置从零搭建YOLOv11开发环境第一次接触YOLOv11时我花了两天时间才把环境配好。现在回想起来其实只要掌握几个关键点就能避开那些坑。首先需要明确的是YOLOv11作为Ultralytics公司的最新力作对硬件和软件环境都有特定要求。我的工作机是一台RTX 3060显卡的Ubuntu 20.04系统实测这个配置跑训练完全够用。Windows系统也可以但建议用WSL2来避免各种奇怪的环境问题。Python版本要特别注意——必须使用3.8-3.10之间的版本3.11及以上会有依赖冲突。安装过程其实很简单git clone https://github.com/ultralytics/ultralytics.git cd ultralytics pip install -e .这里有个小技巧安装时加上-i https://pypi.tuna.tsinghua.edu.cn/simple参数可以大幅加速下载。我遇到过CUDA版本不匹配的问题后来发现是PyTorch版本自动安装了CPU版本。正确的做法是先手动安装对应CUDA版本的PyTorchpip install torch2.0.1cu118 torchvision0.15.2cu118 --index-url https://download.pytorch.org/whl/cu118环境验证也很重要。我习惯用这个脚本来检查import torch print(torch.__version__) print(torch.cuda.is_available())2. 数据准备构建高质量训练数据集去年做安防项目时我深刻体会到数据质量决定模型上限。YOLOv11支持多种标注格式但最常用的还是YOLO格式。每个图像对应一个.txt文件内容格式为class_id x_center y_center width height我推荐使用Roboflow这样的在线工具来管理数据集。它不仅能自动划分训练集/验证集还能一键完成数据增强。对于本地处理这个Python脚本很实用from ultralytics.yolo.data.utils import autosplit autosplit(pathyour_dataset, weights(0.7, 0.2, 0.1))数据增强是提升模型泛化能力的关键。YOLOv11内置的增强策略包括Mosaic增强4图拼接随机旋转-10°到10°色彩空间变换随机裁剪在coco128.yaml配置文件中可以这样调整train: ../coco128/images/train2017 val: ../coco128/images/val2017 augment: True # 开启增强 mosaic: 0.5 # 马赛克概率3. 模型训练调参技巧与性能优化第一次训练YOLOv11时我的GPU显存直接爆了。后来发现batch_size设置太大是主因。对于8G显存的显卡建议这样配置model.train( datacoco128.yaml, epochs100, batch16, # 根据显存调整 imgsz640, patience10, # 早停机制 device0 # 指定GPU )学习率设置很有讲究。我的经验公式是初始学习率 0.01 * batch_size / 64训练过程监控可以用TensorBoardtensorboard --logdir runs/detect几个关键指标要看懂mAP0.5IoU阈值为0.5时的平均精度mAP0.5:0.95不同IoU阈值下的平均精度precision/recall曲线当发现过拟合时验证集指标下降可以尝试增加数据增强强度添加Dropout层减小模型深度4. 模型部署从ONNX导出到生产环境模型导出是部署前的最后一步。YOLOv11支持多种格式model.export(formatonnx) # 最常用 model.export(formatengine) # TensorRTONNX导出有个常见错误是动态维度问题。解决方法是指定输入尺寸model.export(formatonnx, dynamicFalse, imgsz(640,640))在OpenVINO上部署时我用这个转换命令mo --input_model yolov11.onnx --output_dir output实际推理时这个Python脚本很实用from ultralytics import YOLO model YOLO(yolov11.pt) results model.predict(sourcebus.jpg, conf0.5) results[0].show()对于嵌入式设备我推荐使用TensorRT加速。转换命令如下trtexec --onnxyolov11.onnx --saveEngineyolov11.engine部署到Jetson系列设备时记得开启FP16模式能提升3倍性能model.export(formatengine, halfTrue)