news 2026/4/15 13:16:04

用YOLO11做了个目标检测项目,附完整步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用YOLO11做了个目标检测项目,附完整步骤

用YOLO11做了个目标检测项目,附完整步骤

1. 这不是又一个“安装教程”,而是真正在跑通的实操记录

你可能已经看过不少YOLO系列的介绍文章——讲架构、列参数、贴性能对比图。但真正卡在“我的代码跑不起来”“训练没反应”“推理结果全是空框”的人,从来不在少数。

这篇文章不一样。它不讲YOLO11有多先进,也不堆砌mAP和GFLOPs数据。它只记录我在真实镜像环境里,从打开终端到看到第一个检测框的全过程:哪些命令必须敲、哪些路径不能错、哪些报错能忽略、哪些提示意味着成功。所有操作均基于你手头已有的YOLO11镜像(含完整可运行环境),无需额外配置CUDA或PyTorch,开箱即用。

如果你正对着黑乎乎的终端发愁,不知道下一步该cd进哪个文件夹,或者train.py运行后屏幕静默三分钟——请放心往下看。每一步,我都替你试过了。

2. 镜像启动后,第一件事不是写代码,是确认环境

别急着跑模型。先花30秒确认你真的站在了正确的起点上。

2.1 进入项目主目录

镜像文档明确写了这行命令:

cd ultralytics-8.3.9/

请务必执行。这不是可选项。YOLO11的训练脚本、配置文件、权重都在这个目录下。如果你跳过这步,在家目录或jupyter根目录直接运行python train.py,会得到清晰但冰冷的报错:

ModuleNotFoundError: No module named 'ultralytics'

或更隐蔽的:

FileNotFoundError: [Errno 2] No such file or directory: 'train.py'

执行后,用ls快速扫一眼关键文件是否存在:

ls -l

你应该看到类似这些内容(不必完全一致,但核心文件名要对得上):

drwxr-xr-x 4 root root 4096 Dec 15 10:22 ultralytics/ -rw-r--r-- 1 root root 123 Dec 15 10:22 train.py -rw-r--r-- 1 root root 456 Dec 15 10:22 detect.py -rw-r--r-- 1 root root 789 Dec 15 10:22 coco8.yaml

看到train.pydetect.pycoco8.yamlultralytics/文件夹,说明环境就绪。

2.2 检查Python与Ultralytics版本

虽然镜像是预装好的,但多一重验证更安心。运行:

python --version pip list | grep ultralytics

预期输出(版本号可能略有浮动,但ultralytics必须在列表中):

Python 3.10.12 ultralytics 8.3.9

如果ultralytics没出现,说明镜像环境异常,请重启实例并重试第一步。不要尝试手动pip install——镜像已固化依赖,强行安装可能破坏环境一致性。

3. 用最简方式,让YOLO11“动”起来

别一上来就训COCO。先让模型“说句话”,证明它听懂了你的指令。

3.1 一行命令,完成首次推理

ultralytics-8.3.9/目录下,执行:

python detect.py --source assets/bus.jpg --weights yolov11n.pt --conf 0.25 --imgsz 640

注意几个关键点:

  • --source assets/bus.jpg:镜像自带示例图,路径固定,别自己找图替换;
  • --weights yolov11n.pt:使用轻量级预训练权重,启动最快;
  • --conf 0.25:降低置信度阈值,避免因默认0.5太高而“看不见框”;
  • --imgsz 640:统一输入尺寸,兼容性最好。

运行后,你会看到类似这样的日志流:

Ultralytics YOLOv11 Python-3.10.12 torch-2.3.0+cu121 CUDA:0 (Tesla T4) ... Results saved to runs/detect/predict

成功标志:终端末尾出现Results saved to runs/detect/predict,且runs/detect/predict/目录下生成了bus.jpg(带红框的检测结果图)。

小技巧:如果想立刻查看效果,不用下载图片。在Jupyter中新建notebook,输入:

from IPython.display import Image, display display(Image('runs/detect/predict/bus.jpg'))

红框、标签、置信度分数一目了然。

3.2 如果卡住或报错?先看这三点

现象最可能原因解决动作
终端长时间无输出,光标闪烁GPU未被识别或显存不足执行nvidia-smi,确认有GPU进程;改用yolov11n.pt(最小模型)重试
报错No module named 'ultralytics'不在ultralytics-8.3.9/目录执行cd ultralytics-8.3.9/,再运行命令
报错File not found: yolov11n.pt权重文件名拼写错误镜像内实际文件名是yolo11n.pt(不是yolov11n.pt!),修正为--weights yolo11n.pt

记住:YOLO11的权重文件前缀是yolo11,不是yolov11。这是官方命名,也是新手最容易输错的地方。

4. 训练自己的数据:从准备到收敛,只改3个地方

很多教程把数据集准备说得云山雾罩。其实对于YOLO11,只要结构对,两分钟就能搭好。

4.1 数据集目录结构,严格按这个来

假设你要训一个“检测办公室椅子”的小项目,数据放在my_chair/目录下。它的结构必须是:

my_chair/ ├── images/ │ ├── train/ │ │ ├── img1.jpg │ │ └── img2.jpg │ └── val/ │ ├── img3.jpg │ └── img4.jpg ├── labels/ │ ├── train/ │ │ ├── img1.txt │ │ └── img2.txt │ └── val/ │ ├── img3.txt │ └── img4.txt └── my_chair.yaml

关键细节:

  • images/labels/必须同级;
  • train/val/子目录必须存在(哪怕val/里只有1张图);
  • .txt标签文件必须与同名.jpg在同一级目录(如img1.jpg对应img1.txt);
  • my_chair.yaml是你的数据集配置文件,内容极简:
train: ../my_chair/images/train val: ../my_chair/images/val nc: 1 names: ['chair']

nc: 1表示1个类别;names: ['chair']是类别名,必须是列表格式,单类别也加方括号。

4.2 修改训练脚本,只动3行

打开train.py,找到这几行(通常在文件末尾附近):

if __name__ == '__main__': model = YOLO('yolo11n.pt') results = model.train(data='coco8.yaml', epochs=100, imgsz=640)

改成:

if __name__ == '__main__': model = YOLO('yolo11n.pt') # 保持不变 results = model.train(data='../my_chair/my_chair.yaml', epochs=50, imgsz=640)

仅3处修改:

  • data=路径指向你的my_chair.yaml(注意..返回上一级);
  • epochs=50:小数据集50轮足够,避免过拟合;
  • 其他参数(imgsz,batch,device)全部保留默认,不碰。

保存文件,运行:

python train.py

你会看到实时训练日志,包括每轮的box_loss,cls_loss,mAP50-95等指标。训练完成后,模型自动保存在runs/train/exp/weights/best.pt

成功标志:runs/train/exp/weights/目录下出现best.ptlast.pt两个文件。

5. 验证效果:用自己训的模型,检测新图

训练完不验证,等于没训。用刚生成的best.pt跑一次检测:

python detect.py --source assets/zidane.jpg --weights runs/train/exp/weights/best.pt --conf 0.3
  • --source换成任意你想测的图(assets/下还有zidane.jpg,dog.jpg);
  • --weights指向你训出的best.pt
  • --conf 0.3略微调低阈值,让结果更丰富。

结果图同样保存在runs/detect/predict/下。打开它,看红框是否精准落在椅子上——这才是闭环的最后一环。

6. 常见问题直击:那些文档里没写的“坑”

6.1 Jupyter里跑不起来train.py?换种姿势

镜像支持Jupyter,但直接在notebook里!python train.py常因路径或环境变量失败。推荐做法:

  1. 在Jupyter左侧文件浏览器,进入ultralytics-8.3.9/目录;
  2. 新建一个.py文件(如my_train.py),把修改后的训练代码粘贴进去;
  3. 在终端(非notebook)中执行:cd ultralytics-8.3.9 && python my_train.py

这样既利用Jupyter编辑便利,又保证执行环境纯净。

6.2 训练中途断了,能续吗?

能。YOLO11原生支持断点续训。只需把train.py里的model.train(...)改成:

results = model.train( data='../my_chair/my_chair.yaml', epochs=100, imgsz=640, resume=True # 👈 加这一行 )

它会自动读取runs/train/exp/weights/last.pt继续训练。

6.3 想换GPU设备?不用改代码

镜像已预装CUDA驱动。若机器有多个GPU,只需在命令后加:

python train.py --device 1 # 使用第1号GPU(编号从0开始)

或指定多卡:

python train.py --device 0,1 # 同时用GPU 0和1

无需修改Python代码,命令行参数直接生效。

7. 总结:你刚刚完成的,是一套可复用的目标检测工作流

回顾一下,你亲手走通了:

  • 环境确认:cd进对目录、验证ultralytics可用;
  • 快速验证:一行命令跑通预训练模型推理;
  • 数据准备:建立标准YOLO格式数据集,写极简yaml;
  • 模型训练:修改3个参数,启动训练并获得best.pt;
  • 效果验证:用自训模型检测新图,闭环验证。

这五步,就是工业界落地YOLO项目的最小可行路径。它不追求SOTA精度,但保证100%可运行、可调试、可交付。后续你可以:

  • yolo11n.pt换成yolo11m.pt提升精度;
  • my_chair.yaml里增加test: ../my_chair/images/test做最终评估;
  • model.export(format='onnx')导出ONNX部署到边缘设备。

技术的价值,永远在于它能否解决眼前的问题。而你现在,已经拥有了那个“能解决问题”的能力。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 18:19:56

Qwen3-4B-Instruct多场景:支持技术写作、教育出题、产品策划三合一

Qwen3-4B-Instruct多场景:支持技术写作、教育出题、产品策划三合一 1. 为什么这款4B模型能真正“干活” 你有没有试过让AI写一段技术文档,结果通篇套话、逻辑断层、关键细节全错?或者让它出一套初中物理试卷,题目难度忽高忽低&a…

作者头像 李华
网站建设 2026/4/15 9:31:02

5分钟上手IndexTTS 2.0!零样本语音合成,小白也能做配音

5分钟上手IndexTTS 2.0!零样本语音合成,小白也能做配音 你是不是也遇到过这些情况: 剪完一段30秒的vlog,卡在配音环节——找外包太贵,自己念又没感情; 想给游戏角色配个专属声线,结果试了三款T…

作者头像 李华
网站建设 2026/4/12 0:56:23

一个小脚本,解决了大问题——开机自启实录

一个小脚本,解决了大问题——开机自启实录 你有没有遇到过这样的场景:服务器重启后,那个关键的服务没起来,业务直接中断;或者开发环境里,每次开机都要手动敲三四条命令才能让项目跑起来;又或者…

作者头像 李华
网站建设 2026/4/11 23:20:34

DASD-4B-Thinking实战落地:vLLM模型服务SLA保障+Chainlit用户体验监控

DASD-4B-Thinking实战落地:vLLM模型服务SLA保障Chainlit用户体验监控 1. 为什么需要一个“会思考”的4B小模型? 你有没有遇到过这样的情况:想让AI解决一道数学题,它直接给答案,但中间步骤全靠猜;写一段Py…

作者头像 李华
网站建设 2026/4/13 18:32:04

SenseVoice Small轻量模型实战:16GB显存GPU高效运行语音识别服务

SenseVoice Small轻量模型实战:16GB显存GPU高效运行语音识别服务 1. 为什么是SenseVoice Small?轻量不等于将就 很多人一听到“轻量模型”,第一反应是:精度打折、功能缩水、效果凑合。但SenseVoice Small完全打破了这个刻板印象…

作者头像 李华
网站建设 2026/4/13 13:21:30

opencode与Ollama集成:本地模型调用步骤详解

opencode与Ollama集成:本地模型调用步骤详解 1. OpenCode 是什么?终端里的编程搭档 你有没有试过在写代码时,突然卡在某个函数怎么写、某个报错怎么修、甚至整个模块该从哪下手?这时候要是有个懂你项目、不传代码、不联网、还能…

作者头像 李华