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

如何将多文件夹图片随机拆分出16张至指定文件夹,剩余用于K折交叉验证?

解决方案

tf.keras.utils.image_dataset_from_directory是用来加载图片生成TensorFlow可直接使用的数据集对象的,没法帮你完成物理文件的拆分操作。你可以用Python的os、shutil和random库实现需求,具体代码如下:

import os
import shutil
import random

# 配置路径
source_dir = "你的原始图片文件夹路径"  # 替换成你的实际路径
val_dir = "备用验证文件夹路径"       # 存放16张备用图的文件夹
kfold_dir = "K折训练用文件夹路径"    # 存放剩余图片的文件夹

# 创建目标文件夹(不存在则自动创建)
os.makedirs(val_dir, exist_ok=True)
os.makedirs(kfold_dir, exist_ok=True)

# 筛选文件夹内所有.png格式图片
all_pngs = [f for f in os.listdir(source_dir) if f.lower().endswith(".png")]

# 随机打乱图片列表
random.shuffle(all_pngs)

# 拆分出16张备用图和剩余图片
val_imgs = all_pngs[:16]
kfold_imgs = all_pngs[16:]

# 复制备用图到目标文件夹
for img in val_imgs:
    src_path = os.path.join(source_dir, img)
    dst_path = os.path.join(val_dir, img)
    shutil.copy(src_path, dst_path)

# 复制剩余图片到K折训练文件夹
for img in kfold_imgs:
    src_path = os.path.join(source_dir, img)
    dst_path = os.path.join(kfold_dir, img)
    shutil.copy(src_path, dst_path)

额外说明:

  • 如果想移动文件而非复制,把shutil.copy替换成shutil.move即可
  • 确保原始文件夹内的png图片数量不少于16张,否则会报错
  • 若你的图片是按类别分文件夹存放的(比如分类任务的标准数据集结构),可以在外层加循环遍历每个类别文件夹,再执行上述拆分逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:00:57