十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何高效构建大规模图像数据集:practical-ml-vision-book TFRecords+Dataflow流水线完整教程

如何高效构建大规模图像数据集:practical-ml-vision-book TFRecords+Dataflow流水线完整教程 如何高效构建大规模图像数据集practical-ml-vision-book TFRecordsDataflow流水线完整教程【免费下载链接】practical-ml-vision-book项目地址: https://gitcode.com/gh_mirrors/pr/practical-ml-vision-book本教程基于开源项目 practical-ml-vision-book《Practical Machine Learning for Computer Vision》配套代码库手把手教你使用TFRecords Apache Beam Dataflow 流水线高效构建大规模图像数据集。只需一份 CSV 清单和一个标签文件即可在云端无服务器环境下并行完成「读取图像 → 编解码 → 数据划分 → 分片写出」全流程几分钟内把几十 GB 的 JPEG 图片转化为训练就绪的 TensorFlow Records告别慢吞吞的单机脚本。为什么大规模图像数据集要用 TFRecords当你的数据集超过上万张图片时直接用散落的 JPEG 文件训练会遇到三个痛点问题散落图片TFRecords 格式读取速度每帧读一个小文件I/O 碎片化严重顺序读取大分片吞吐高数据划分需手动复制文件夹易出错流水线内自动 80:10:10 划分并行处理难以分布式扩展天然可分片shardDataflow 自动并行TFRecord 把每张图像的像素、尺寸和标签序列化成一个Example并打包成分片文件如0000-of-0016.gz是深度学习训练中公认的高效数据格式。流水线全景5 步完成数据集构建项目的核心脚本 jpeg_to_tfrecord.py 用 Apache Beam 定义了整条流水线每个算子transform在 Dataflow 控制台中都清晰可见read_csv → parse_csv → create_tfr → assign_ds ├→ only_train → write_train ├→ only_valid → write_valid └→ only_test → write_test整个流程只需 5 步准备输入清单一个 CSV 文件每行图片URL,标签准备标签字典每行一个标签字符串本地试跑用 DirectRunner 小样本验证云端运行切换为 DataflowRunner 提交无服务器作业检查产物确认 train / valid / test 三个目录的分片文件第一步准备 CSV 清单与标签文件输入文件采用极简的两列格式参考脚本文件头注释URL-of-image,label标签文件则是一行一个类别名。脚本会自动读取标签列表并校验至少 2 个类别并把每个标签映射为整数值label_int一起写入 TFRecord方便训练时直接用作类别索引。第二步理解 Beam 流水线核心算子流水线定义在 jpeg_to_tfrecord.py 中4 个核心算子各司其职read_csv/parse_csv逐行读取清单并按逗号拆分create_tfr读取 JPEG、解码为 3 通道图像、归一化到[-1, 1]的 float32连同shape、label、label_int一起序列化为 TFRecordassign_ds按随机数把每条记录打上train / valid / test标记比例 80:10:10write_*每个 split 独立写出分片文件——训练集写 16 个分片验证/测试集各写 2 个其中数据划分逻辑assign_record_to_split设置了随机种子保证可复现属于工业级细节。第三步一键提交 Dataflow 无服务器作业脚本内置了一个聪明的规则输出目录以gs://开头就自动用 DataflowRunner否则用 DirectRunner。也就是说同一个脚本既能本地跑也能云端跑零改动。一键运行脚本 run_dataflow.sh 已帮你拼好了命令python3 -m jpeg_to_tfrecord \ --all_data gs://your-bucket/img/all_data.csv \ --labels_file gs://your-bucket/img/dict.txt \ --project_id $PROJECT \ --output_dir gs://your-bucket/data/flower_tfrecordsDataflow 侧的关键配置包括max_num_workers: 20自动扩缩容到 20 个 worker和teardown_policy: TEARDOWN_ALWAYS作业结束自动销毁资源不产生闲置费用。提交后约 20 分钟即可完成花卉数据集约 1GB的全量转换。本地快速验证DirectRunner 模式上云之前建议先用 DirectRunner 在笔记本上试跑几十条数据确认清单格式和标签无误。参考 05_split_tfrecord.ipynb 中的数据划分与 TFRecord 写入演示 notebook把OUTPUT_DIR改为本地路径即可立即执行。第四步监控作业与检查产物提交后在控制台 Dataflow → Jobs 页面即可实时查看每个算子的吞吐量、元素数量与耗时作业完成后桶中会生成三个目录flower_tfrecords/ ├── train/ 00000-of-00016.gz ... 00015-of-00016.gz ├── valid/ 00000-of-00002.gz ... └── test/ 00000-of-00002.gz ...分片命名带有of-00016这样的总数后缀避免多次运行产生混淆——脚本在运行前还会自动清理旧输出目录。进阶数据标注与预处理扩展构建大规模数据集前你可能还需要先完成图像标注。项目提供了交互式标注示例05_label_images.ipynb 演示了多图 多标签的标注交互界面如果你希望在写入 TFRecord 时就完成固定尺寸的 resize 等预处理可以参考第 6 章的 TF Transform 流水线 jpeg_to_tfrecord_tft.py 及 run_dataflow.sh通过--resize 448,448参数把图像统一缩放后再落盘。关键文件速查文件作用jpeg_to_tfrecord.pyBeam 流水线核心JPEG → TFRecordsrun_dataflow.sh一键提交 Dataflow 作业05_split_tfrecord.ipynb数据划分与 TFRecord 写入 notebookjpeg_to_tfrecord_tft.py结合 TF Transform 的预处理流水线05_label_images.ipynb交互式图像标注总结4 条加速经验清单驱动用 CSV 管理「图片 标签」比目录结构更易扩展同一脚本双模式gs://输出自动切 Dataflow本地路径自动切 DirectRunner分片策略训练集多分片16提升并行读取小数据集少分片自动扩缩 自动拆除max_num_workersTEARDOWN_ALWAYS兼顾速度与成本按照这套 TFRecords Dataflow 流水线你可以把构建大规模图像数据集的时间从数小时压缩到几十分钟且全程无服务器、按量付费、可复现——这正是 practical-ml-vision-book 项目在生产环境中的标准做法。【免费下载链接】practical-ml-vision-book项目地址: https://gitcode.com/gh_mirrors/pr/practical-ml-vision-book创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表