You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tf.keras数据增强时,flow()循环报文件不存在错误求助

解决ImageDataGenerator flow方法的FileNotFoundError问题

问题核心原因

你遇到的FileNotFoundError是因为save_to_dir指定的目录不存在,flow方法不会自动创建目标目录。另外代码里的计数变量i作用域错误,会导致仅处理第一张图片就停止生成增强图。

修复步骤

1. 提前创建保存目录

在调用flow前,先检查并创建目标目录,避免找不到路径的错误:

import os

# 定义保存增强图的目录
save_dir = '/home/kai/SURF22/yolov5/data/sc_google_aug'
# 目录不存在则创建
if not os.path.exists(save_dir):
    os.makedirs(save_dir)

2. 修正计数变量的位置

将i的初始化放到遍历图片的循环内部,确保每张原图都能生成指定数量的增强图:

for image in os.listdir(folder_dir + "prelim_data/sc_google_trans"):
    # 每张图单独初始化计数
    i = 0
    # 后续加载图片、处理数组的代码不变

3. 优化代码(可选)

把ImageDataGenerator的定义提到循环外,无需每次处理图片都重复初始化:

# 提前定义数据增强器
idg = ImageDataGenerator(horizontal_flip=True, 
                         vertical_flip=True, 
                         rotation_range=360, 
                         brightness_range=[0.2, 1.0], 
                         shear_range=45)

save_dir = '/home/kai/SURF22/yolov5/data/sc_google_aug'
if not os.path.exists(save_dir):
    os.makedirs(save_dir)

folder_dir = "/home/kai/SURF22/yolov5/data/"

for image in os.listdir(folder_dir + "prelim_data/sc_google_trans"):
    i = 0
    img = Image.open(folder_dir + "prelim_data/sc_google_trans/" + image)
    aug_img = img.copy()
    
    aug_array = img_to_array(aug_img)
    aug_array = aug_array.reshape((1,) + aug_array.shape)
    
    for batch in idg.flow(aug_array, 
                          batch_size=1, 
                          save_to_dir=save_dir, 
                          save_prefix='aug', 
                          save_format='png'):
        i += 1
        if i > 3:
            break

额外说明

  • 你提到的“传入图像绝对路径出现字符串转浮点数错误”:flow方法仅接收图像数组,不能直接传路径字符串,你原本用数组的方式是正确的。
  • 确认folder_dir + "prelim_data/sc_google_trans"路径真实存在,且目录内有可正常读取的图片文件。

内容的提问来源于stack exchange,提问作者Marie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:42:19