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

如何获取生成增强数据标签并自定义增强图像命名

解决Keras ImageDataGenerator的两个问题:标签匹配与有序命名增强图像

针对你遇到的两个问题,这里给出具体的解决思路和修改后的代码:

一、生成增强图像对应的标签文件

每个string2列表中的数值f就是对应类别的标签,增强后的图像和原始图像属于同一类别。可以在生成增强图的同时,将文件名-标签的对应关系写入文本文件,方便后续训练时读取匹配。

二、自定义有序命名增强图像

ImageDataGenerator.flow()的save_prefix参数会自动追加随机后缀,无法直接关闭该行为。因此放弃使用它的save_to_dir参数,改用手动保存增强后的图像,这样就能完全控制文件名格式。

修改后的完整代码

import glob
import cv2 
import os
from keras.preprocessing.image import ImageDataGenerator
import numpy as np

string2 = [1000, 137, 166, 220, 226, 42, 49, 51, 55,
           66, 68, 750, 800, 850, 900, 950]
# 定义每张原始图要生成的增强图数量,可按需调整
AUGMENT_NUM_PER_IMG = 5  

# 创建标签文件,记录增强图文件名与对应标签
label_file = open('augmented_labels.txt', 'w', encoding='utf-8')
label_file.write('filename,label\n')

for f in string2:
    normal_dir = f'D:\\Images\\Metodologia\\SAUDAGoaVEIS\\{f}\\Segmentadas'
    dir1 = os.path.join(normal_dir, "*.png")
    datagen = ImageDataGenerator(rotation_range=30, zoom_range=0.02)
    
    # 遍历当前文件夹下所有原始图像(修正原代码仅处理第一张图的问题)
    for img_idx, img_path in enumerate(glob.glob(dir1)):
        cv_img = cv2.imread(img_path)
        cv_resize = cv2.resize(cv_img, (200, 200))
        cv_norm_img = cv_resize / 255.0
        input_batch = cv_norm_img.reshape((1, *cv_norm_img.shape))
        
        # 生成指定数量的增强图像
        for aug_idx in range(AUGMENT_NUM_PER_IMG):
            # 获取单张增强后的图像
            output_batch = datagen.flow(input_batch, batch_size=1).next()
            aug_img = output_batch[0]
            # 将归一化的图像转回0-255的uint8格式
            aug_img = (aug_img * 255).astype(np.uint8)
            
            # 自定义有序文件名:aug_原始图索引_增强序号.png
            aug_filename = f'aug_{img_idx}_{aug_idx}.png'
            aug_save_path = os.path.join(normal_dir, aug_filename)
            
            # 注意通道转换:ImageDataGenerator输出RGB,cv2保存需要BGR
            aug_img_bgr = cv2.cvtColor(aug_img, cv2.COLOR_RGB2BGR)
            cv2.imwrite(aug_save_path, aug_img_bgr)
            
            # 写入标签记录
            label_file.write(f'{aug_filename},{f}\n')

label_file.close()

关键修改说明

  1. 遍历所有原始图像:移除了原代码中遍历png文件时的break,确保每个文件夹下的所有图像都能被处理。
  2. 手动控制文件名:放弃flow()的自动保存逻辑,自定义aug_原始图索引_增强序号.png格式的文件名,彻底避免随机后缀。
  3. 同步生成标签文件:在保存增强图的同时,将文件名和对应标签写入augmented_labels.txt,后续训练时可直接读取该文件匹配数据与标签。
  4. 通道格式修正:处理ImageDataGenerator输出的RGB图像与cv2默认BGR格式的转换,保证保存的图像颜色正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:15:18