从零部署YOLOv11:一站式环境配置与自定义数据集训练实战
1. 环境准备从零搭建YOLOv11开发环境第一次接触YOLOv11时我也被复杂的依赖关系搞得头大。后来发现只要按步骤操作半小时就能搞定环境。这里分享我的保姆级安装清单帮你避开所有坑点。1.1 安装Miniconda与配置虚拟环境Miniconda是Python环境管理的瑞士军刀。我习惯用清华镜像站下载速度能提升5倍以上。具体操作访问清华镜像站下载Python3.8版本安装时务必勾选Add to PATH选项否则要手动配置环境变量安装完成后用管理员权限打开CMD执行conda create -n yolov11 python3.8 conda activate yolov11最近有个学员反馈环境激活失败90%的情况是因为没以管理员身份运行终端。这个小细节能省去很多莫名其妙的报错。1.2 配置国内镜像加速国外源下载慢得像蜗牛我实测用默认源安装PyTorch要3小时换国内源只要8分钟。执行这两个命令pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/有个常见误区有人同时配置了conda和pip的镜像源结果反而导致依赖冲突。我的建议是只用pip安装conda仅做环境管理。1.3 PyTorch的GPU/CPU安装策略判断是否能用GPU有个冷知识不是所有NVIDIA显卡都支持CUDA我遇到过GTX1650能跑但MX450不行的情况。先用这个命令检测nvidia-smi如果显示CUDA版本比如11.7就去PyTorch官网找对应命令。以CUDA11.7为例pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117AMD显卡用户别灰心用这个CPU版本也能跑pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu2. 部署YOLOv11代码库2.1 克隆与安装Ultralytics库官方库现在更新很频繁建议用这个稳定分支git clone -b v11.0 https://github.com/ultralytics/ultralytics cd ultralytics pip install -e .上周有用户反馈安装卡在60%其实是网络波动导致。可以尝试pip install --retries 10 --timeout 1000 -e .2.2 验证安装成功跑个demo测试最靠谱yolo detect predict modelyolov11n.pt sourceultralytics/assets/bus.jpg如果卡在模型下载教你个秘笈把控制台里的下载链接复制到迅雷速度能翻10倍。下载完的.pt文件放到项目根目录就行。3. 准备自定义数据集3.1 数据集目录结构规范YOLOv11对数据集路径有严格要求我整理的这个结构适配99%的场景datasets/ └── safehat/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/最近帮客户调试时发现图片和标签文件名必须严格对应如001.jpg对应001.txt差个空格都会报错。3.2 标注文件格式转换如果你用LabelImg标注的生成了XML文件用这个Python脚本转YOLO格式from xml.etree import ElementTree as ET import os def convert(size, box): dw 1./size[0] dh 1./size[1] x (box[0] box[1])/2.0 y (box[2] box[3])/2.0 w box[1] - box[0] h box[3] - box[2] x x*dw w w*dw y y*dh h h*dh return (x,y,w,h) for xml_file in os.listdir(annotations): tree ET.parse(fannotations/{xml_file}) root tree.getroot() with open(flabels/{xml_file[:-4]}.txt, w) as f: for obj in root.iter(object): cls obj.find(name).text box obj.find(bndbox) b (float(box.find(xmin).text), float(box.find(xmax).text), float(box.find(ymin).text), float(box.find(ymax).text)) bb convert((640,640), b) f.write(f{cls_id} { .join([str(a) for a in bb])}\n)3.3 创建数据集配置文件在datasets目录下新建safehat.yaml模板如下path: ../datasets/safehat train: images/train val: images/val names: 0: helmet 1: person注意路径要用相对路径绝对路径在跨设备时会报错。类别ID必须从0开始连续编号。4. 训练配置与启动4.1 修改训练参数复制ultralytics/models/v11/yolov11n.yaml到项目根目录主要改这几个参数nc: 2 # 类别数 depth_multiple: 0.33 # 模型深度系数 width_multiple: 0.25 # 层宽度系数想训练更快把batch_size调到GPU显存的80%比如8G显存设16。学习率lr0建议先设0.01再慢慢调。4.2 启动训练命令用这个命令可以实时显示训练曲线yolo detect train datasafehat.yaml modelyolov11n.yaml epochs100 batch16 device0如果报CUDA内存不足试试在命令后加ampTrue启用混合精度训练能省30%显存。5. 模型验证与部署5.1 测试模型性能训练完的best.pt在runs/detect/train/weights里用这个命令测试yolo detect val modelruns/detect/train/weights/best.pt datasafehat.yaml重点关注mAP50-95这个指标安全帽检测能达到0.85就算工业级可用。5.2 批量预测技巧要检测整个文件夹的图片用这个命令yolo detect predict modelbest.pt sourcedatasets/safehat/test/images saveTrue有个实用技巧加save_txtTrue参数可以把检测结果保存为YOLO格式标签方便二次训练。训练过程中如果中断了加resumeTrue参数可以继续训练不用从头开始。我上次训练200epoch的模型在170epoch时停电就这样救了回来。