批量图片推理流程

588 字
3 分钟
批量图片推理流程

批量图片推理流程#

单张图片预测成功,只能说明模型接口能跑。真正使用时往往需要批量推理,这时路径、异常处理、输出命名和结果统计更重要。

批量流程要做到一张图失败不影响全部任务,同时能回头找到失败原因。

遍历输入#

from pathlib import Path
image_dir = Path("images")
images = sorted(image_dir.glob("*.jpg"))
print("total", len(images))

先打印数量,确认实际读取的图片和预期一致。扩展名大小写也要考虑。

记录失败#

bad = []
for p in images:
img = cv2.imread(str(p))
if img is None:
bad.append((str(p), "read_failed"))
continue
# result = model(img)
print("failed", len(bad))
print(bad[:10])

输出结构#

我习惯把可视化图片、预测 txt、统计 csv 分开放,避免结果目录混乱。

outputs/
vis/
labels/
summary.csv
failed.txt

批量后统计#

  • 成功处理多少张。

  • 失败多少张,失败原因是什么。

  • 每类预测数量。

  • 平均耗时和最慢样本。

实战复盘#

复用《批量图片推理流程》时,我会先用三到五张图片跑通流程,再扩大到完整数据集。小样本阶段要故意覆盖正常图、边界图和可能失败的图,而不是只选最干净的样本。

OpenCV 和 YOLO 相关步骤都要特别关注坐标和尺寸。图片数组常用高宽顺序,检测框常用 x/y 顺序,YOLO 又使用归一化中心点坐标,混用后不会总是报错,但结果一定会偏。

后续如果要写成更完整教程,可以补充输入目录结构、输出目录结构和一张可视化样例,让读者能直接对照自己的项目。

最小验收样例#

验收《批量图片推理流程》时,我会固定三张图片:一张正常样例、一张边界样例、一张容易失败的样例。每次改代码都用这三张图跑一遍,并保存输出结果。

视觉流程的验收必须能用眼睛确认。只打印数组 shape 或命令成功不够,至少要保存一张中间结果图或最终可视化图,确认处理效果和预期一致。

小结#

批量推理不是把单张预测套循环。稳定的输入遍历、失败记录和结果目录,决定了后续能不能复查。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

批量图片推理流程
https://blog.tjcheng.cn/posts/backfill/2026-06-11/cv-batch-inference-note/
作者
TengJinCheng
发布于
2026-06-11
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录