在Google Colab中通过循环执行Python文件实现YOLOv7多图目标检测
在Google Colab中用YOLOv7实现批量图片目标检测
优先推荐:利用YOLOv7原生批量处理能力
YOLOv7的detect.py本身支持直接批量处理整个文件夹的图片,无需手动写循环,效率更高:
- 将所有需要检测的图片放到同一个文件夹(比如
/content/images/) - 执行以下命令,将
--source参数指定为文件夹路径即可:
!python ../yolov7/detect.py --weights ../yolov7/yolov7.pt --conf 0.5 --img-size 640 --source /content/images/ --save-txt
- 默认会遍历文件夹下的所有子文件夹,若不需要处理子文件夹,添加
--nosubdirs参数 - 检测结果会自动保存到
../yolov7/runs/detect/exp*目录下,包含图片和对应的txt标注文件
自定义循环处理(需额外逻辑时用)
若你需要对单张图片做额外预处理/后处理,可通过Python循环实现,解决之前变量未识别的问题:
方法1:用subprocess模块执行命令(更稳定)
直接在Python中调用shell命令,避免Colab的!语法变量解析问题:
import subprocess import os # 替换为你的图片文件夹路径 img_folder = "/content/images/" for filename in os.listdir(img_folder): # 过滤仅处理图片格式文件 if filename.lower().endswith((".jpg", ".jpeg", ".png", ".bmp")): img_path = os.path.join(img_folder, filename) # 构造完整命令参数 cmd = [ "python", "../yolov7/detect.py", "--weights", "../yolov7/yolov7.pt", "--conf", "0.5", "--img-size", "640", "--source", img_path, "--save-txt" ] # 执行命令 subprocess.run(cmd, check=True)
方法2:Colab中直接用!语法结合Python变量
在!命令中通过{变量名}直接引用Python变量,注意给路径加引号避免空格问题:
import os img_folder = "/content/images/" for filename in os.listdir(img_folder): if filename.lower().endswith((".jpg", ".jpeg", ".png", ".bmp")): img_path = os.path.join(img_folder, filename) # 用{}引用Python变量,路径加引号处理空格 !python ../yolov7/detect.py --weights ../yolov7/yolov7.pt --conf 0.5 --img-size 640 --source "{img_path}" --save-txt
注意:循环方式会每次加载模型,效率远低于直接指定文件夹的方式,仅在必要时使用。
内容的提问来源于stack exchange,提问作者Chopper
相关产品推荐
相关产品推荐

