YOLO11批量预测图片,save=True自动保存
前言
在计算机视觉任务中,YOLO11作为Ultralytics最新推出的高效目标检测与实例分割模型,凭借其高精度、轻量化和多任务支持能力,正在被广泛应用于工业检测、自动驾驶、智能安防等领域。本文聚焦于YOLO11的批量图像预测功能,重点讲解如何通过设置save=True实现推理结果的自动保存,并结合实际代码演示完整流程。
我们将基于已训练好的YOLO11模型,对一个包含多张图像的文件夹进行批量推理,输出带标注框、分割掩膜和标签信息的结果图,并将这些可视化结果及文本格式的检测数据自动保存到指定目录。整个过程无需手动干预,适合部署在自动化流水线或边缘设备中。
1. 环境准备与项目结构
1.1 使用YOLO11镜像环境
本文所使用的深度学习环境基于YOLO11完整可运行镜像构建,集成了以下核心组件:
- Python 3.9
- PyTorch 1.13.1 + CUDA 支持(NVIDIA A30 GPU)
- Ultralytics 8.3.7 框架
- Jupyter Notebook / SSH 远程访问支持
该镜像提供了开箱即用的YOLO11开发环境,用户可通过Jupyter或SSH方式连接并执行训练与推理任务。
1.2 项目目录结构
进入容器后,首先进入YOLO11项目主目录:
cd ultralytics-8.3.9/标准项目结构如下:
ultralytics-8.3.9/ ├── datasets/ # 存放测试图像数据 │ └── test_images/ ├── runs/ │ └── segment/ │ └── train2/ # 训练输出路径,含best.pt权重 ├── weights/ # 预训练权重存放目录 ├── train.py # 自定义训练脚本 └── infer.py # 推理脚本(本文重点)确保你的测试图像已放入datasets/test_images/目录下,且模型权重(如best.pt)位于训练输出路径中。
2. 批量预测原理与参数解析
2.1 YOLO11批量推理机制
YOLO11的model.predict()方法支持多种输入源,包括:
- 单张图像路径(字符串)
- 图像文件夹路径
- 视频文件
- 摄像头设备ID(如
0表示默认摄像头) - 网络流URL
当输入为文件夹路径时,系统会自动遍历其中所有支持的图像格式(.jpg,.png,.bmp等),逐帧进行推理,实现“批量预测”。
关键优势:
- 无需循环调用:内部自动处理批处理逻辑
- GPU加速:利用CUDA并行计算提升吞吐量
- 结果统一管理:所有输出集中保存至指定目录
2.2 核心参数详解:save=True 的作用
save=True是控制是否将推理结果保存为图像文件的关键参数。启用后,YOLO11会在运行时自动生成带有边界框、分割掩膜、类别标签和置信度的可视化图像,并保存到默认或指定路径。
以下是predict()中与保存相关的参数说明:
| 参数 | 类型 | 默认值 | 功能 |
|---|---|---|---|
save | bool | False | 是否保存可视化图像 |
save_txt | bool | False | 是否将检测结果保存为.txt文件 |
save_conf | bool | False | 在save_txt基础上是否保存置信度 |
save_crop | bool | False | 是否保存裁剪出的目标区域图像 |
project | str | runs/detect | 保存项目的根目录 |
name | str | exp | 子目录名称,用于区分不同实验 |
提示:若未指定
project和name,结果将默认保存在runs/detect/exp/下,每次运行自动递增编号(如 exp2, exp3)。
3. 完整代码实现:批量预测并自动保存
3.1 编写推理脚本 infer.py
创建infer.py脚本,内容如下:
from ultralytics import YOLO # 加载训练好的最佳权重 model = YOLO("runs/segment/train2/weights/best.pt") # 执行批量预测 results = model.predict( source="datasets/test_images/", # 输入图像文件夹路径 conf=0.45, # 置信度阈值 iou=0.6, # NMS IoU 阈值 imgsz=640, # 输入图像尺寸 device=None, # 自动选择设备(CPU/GPU) max_det=300, # 每张图像最多检测目标数 show=False, # 不显示实时画面(适用于非GUI环境) save=True, # ✅ 启用结果图像保存 save_txt=True, # 保存检测结果为txt文件 save_conf=False, # 不单独保存置信度(可选) save_crop=False, # 不保存裁剪图像 show_labels=True, # 显示类别标签 show_conf=True, # 显示置信度 show_boxes=True, # 显示边界框 line_width=2, # 边框线宽 project="runs/predict", # 自定义保存路径 name="test_batch" # 实验名称 )3.2 参数配置说明
source="datasets/test_images/":指定待预测图像所在的文件夹。conf=0.45:过滤低置信度预测,避免误检。save=True:开启后,每张推理图像都会生成一张带标注的.jpg或.png文件。save_txt=True:生成对应.txt文件,格式为 YOLO 标签格式(class_id x_center y_center width height),可用于后续分析或评估。project和name组合决定最终保存路径:runs/predict/test_batch/
4. 运行推理并查看结果
4.1 执行脚本
在终端运行:
python infer.py输出日志示例:
Loading model... Predicting images from 'datasets/test_images/'... image 1/5: 640x640 tensor([[[...]]]) Results saved to runs/predict/test_batch Speed: 12.3ms preprocess, 45.6ms inference, 8.7ms postprocess per image4.2 查看保存结果
推理完成后,进入输出目录查看结果:
ls runs/predict/test_batch/你会看到:
image_001.jpg→ 带有检测框和分割掩膜的可视化图像image_001.txt→ 对应的检测结果文本文件(如果启用了save_txt)
可视化图像中包含:
- 彩色分割掩膜(instance segmentation)
- 边界框(bounding box)
- 类别标签(如 "person", "car")
- 置信度分数(如 0.95)
5. 结果分析与常见问题解决
5.1 输出文件结构解析
以一张图像test_img.jpg为例:
| 文件 | 内容 |
|---|---|
test_img.jpg | 原图叠加检测结果的可视化图像 |
test_img.txt | 检测结果,每行代表一个目标:<class_id> <x_center> <y_center> <width> <height> [confidence] |
注意:
save_txt仅保存归一化后的边界框坐标,不包含分割掩膜坐标。若需保存掩膜,需自行从results对象提取。
5.2 常见问题与解决方案
❌ 问题1:保存路径被覆盖?
原因:重复使用相同project/name导致目录冲突。
解决方案:
- 设置
exist_ok=True允许覆盖 - 或动态生成时间戳命名:
import time timestamp = time.strftime("%Y%m%d_%H%M%S") name = f"batch_predict_{timestamp}"❌ 问题2:GPU显存不足?
现象:报错CUDA out of memory
解决方案:
- 降低
imgsz(如改为 320 或 480) - 减小批量大小(YOLO11默认单张推理,影响较小)
- 使用半精度
half=True提升效率
results = model.predict(..., half=True)❌ 问题3:中文标签乱码?
现象:图像上中文标签显示为方框或问号
解决方案: 目前 Ultralytics 默认字体不支持中文。建议后期用 OpenCV 手动绘制中文标签,或改用英文类别名。
6. 总结
6. 总结
本文详细介绍了如何使用 YOLO11 实现批量图像预测并自动保存结果的核心流程。我们从环境搭建、参数配置、代码实现到结果验证进行了全流程演示,重点强调了save=True在自动化推理中的关键作用。
主要收获包括:
- 批量预测无需循环:只需将
source设为图像文件夹路径,YOLO11 自动完成遍历与推理。 - 结果自动保存:通过
save=True和save_txt=True,可同时获得可视化图像和结构化文本结果,便于后续分析。 - 灵活的输出控制:支持自定义保存路径、文件命名、是否保留置信度等细节。
- 工程实用性强:适用于质检、监控、遥感等需要离线批量处理图像的场景。
此外,结合 CSDN 提供的 YOLO11 镜像环境,开发者可以快速部署并运行模型,无需繁琐的依赖安装过程,极大提升了开发效率。
未来可进一步扩展方向:
- 将推理结果上传至数据库或云存储
- 集成 Flask/Django 构建 Web API 接口
- 结合 ONNX 导出实现跨平台部署
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。