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

如何为Google Cloud Vertex AI创建单标签图像数据集导入文件

生成Vertex AI图像分类导入文件的正确脚本

问题背景

你在Google Cloud Storage(GCS)中有如下层级结构的存储桶:

dataset/class1/image1.png 
               image2.png 
 ..
dataset/class2/image1.png 
               image2.png 
  ..
dataset/class3/image1.png 
               image2.png 
  ..

需要生成每行格式为gs://dataset/classX/imageY.png, classX的导入文件,用于Vertex AI模型训练。

原脚本问题分析

你提供的脚本存在以下问题:

  1. 未过滤目录:gsutil ls -r会同时列出文件和目录,导致导入文件中混入无效的目录路径
  2. sed无法执行shell命令:sed -e 's/$/$(basename $)/'只是将字符串$(basename $)追加到行尾,不会实际执行basename命令
  3. 变量未定义:脚本中使用了未赋值的filename变量,导致sed命令报错
  4. 类别提取错误:basename会提取文件名,而非所需的类别目录名

修正后的脚本

方法一:循环处理(可读性强)

export BUCKET="你的存储桶名称"
export IMPORT_DATA="导入文件路径(如import.csv)"

# 清空目标文件,避免重复追加内容
> "$IMPORT_DATA"

# 递归列出所有PNG文件,过滤目录后逐行生成格式内容
gsutil ls -r gs://$BUCKET/**/*.png | grep -v "/$" | while read -r uri; do
  # 从URI中提取类别目录名(倒数第二个路径段)
  class=$(echo "$uri" | awk -F '/' '{print $(NF-1)}')
  echo "$uri, $class" >> "$IMPORT_DATA"
done

方法二:awk一键处理(执行效率高)

export BUCKET="你的存储桶名称"
export IMPORT_DATA="导入文件路径(如import.csv)"

# 直接通过awk完成过滤和格式转换
gsutil ls -r gs://$BUCKET/**/*.png | grep -v "/$" | awk -F '/' '{print $0", "$(NF-1)}' > "$IMPORT_DATA"

脚本说明

  • gsutil ls -r gs://$BUCKET/**/*.png:递归列出存储桶中所有PNG格式的图片文件
  • grep -v "/$":排除末尾带有/的目录行,只保留有效文件路径
  • awk -F '/' '{print $0", "$(NF-1)}':以/为分隔符,输出原URI加上逗号和倒数第二个路径段(即类别目录名)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:45:32