CircularNET 模型重训练实战:从 COCO 标注到 TFRecords 数据准备与 Vertex AI 训练配置 CircularNET 模型重训练实战从 COCO 标注到 TFRecords 数据准备与 Vertex AI 训练配置【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models在 TensorFlow Models 仓库的 waste_identification_mlCircularNET项目中若要将预训练的可回收物识别模型迁移到你自己的传送带相机数据上必须完成两个前置环节一是把拍摄、标注好的图像加工成模型可消费的训练数据集二是把数据集路径与超参数写进训练作业配置。本篇以官方文档 prepare-data.md 为主线完整讲解数据集准备的标注格式要求、预处理脚本能力边界、COCO JSON 到 TFRecords 的转换流程以及 CircularNET_Vertex_AI_ReTraining_v1.ipynb 训练脚本中的关键变量与 config_v1.yaml 配置文件的实际含义帮助你在本地或云端走通完整的数据准备与训练配置链路。重训练前置流程总览CircularNET 是基于实例分割instance segmentation构建的可回收物识别模型用于识别传送带上物体的材质类型metal、paper、塑料的 HDPE/PET/LDPE 等与形态cup、bottle、bag 等典型推理标签形如Plastics-PET_Bottle见 README.md。重训练的本质是用你自己的标注数据微调该模型因此文档给出的流程分为三步采集与标注用相机拍摄图像并完成必要的预处理然后逐张标注图像中出现的材质类别。标注的作用是让模型在训练时知道自己要认什么材质。格式统一所有标注必须保存为COCO JSON 格式这是后续一切脚本的输入基础。转换与上传用仓库提供的预处理脚本将标注图像转换为TFRecordsTensorFlow 模型要求的输入格式再把训练集与验证集分别上传到 Cloud Storage bucket 后再启动训练。文档同时给出了重训练的前置条件清单见 before-you-begin.md开通 Google Cloud 并创建项目启用 Vertex AI 与 Cloud Storage API创建用于存放文件的 Cloud Storage bucket为训练作业分配至少 4 块 GPU并配置一个具有训练作业执行权限的 Vertex AI 服务账号。预处理脚本的六大能力仓库在 pre_processing 目录下提供了完整的 Notebook 工具链。文档明确列出了这套脚本能完成的六类操作能力对应仓库脚本说明将图像标注转换为带标签和元数据的 COCO 标注 JSON 文件labelme_to_coco.ipynb从 labelMe 等标注工具产物生成 COCO 格式清洗与整理 COCO 标注 JSON使数据集干净、一致、可用于训练JSON_Generation_for_Training.ipynb依赖 config/ 下的标签映射文件做类别归一过滤无关或噪声标注避免其负面影响训练过程同上 Notebook 流程通过标签映射剔除不在目标类别体系内的标注调整标注格式使其达到模型训练的最优形态JSON_Generation_for_Training.ipynb统一 bbox/mask 结构与字段校验所有标注图像均存在且未损坏同上 Notebook 流程图像-标注一致性检查合并多个 COCO JSON 文件为单一文件并转换为 Mask R-CNN 训练所需的 TFRecordsmerge_coco_files.ipynb、merge_coco_files_faster.ipynb、split_coco_files.ipynb、coco_to_tfrecord.ipynb合并 → 划分 train/val → 转 TFRecords除训练向脚本外目录里还有 visualize_instance_segmentation_annotations.ipynb 用于把实例分割标注绘制回图像做人工核验——文档第 5 项校验标注图像的能力在实操中通常配合它来人工抽查。此外deprecated_JSON_Generation_for_Training.ipynb 是旧版脚本新流程应使用不带 deprecated 前缀的版本。从源码结构看预处理流程由 config.ini 驱动查看 pre_processing/config/config.ini 可以推断出整套脚本的参数组织方式全部输入输出路径集中在四个配置段中——[config]config_folder_path标签配置目录[paths]单文件清洗的三个关键路径——原始annotation_pathCOCO 标注 JSON、images_folder_path图像目录、new_annotation_path清洗后的输出 JSON[merge]逗号分隔的多个input_files与合并输出output_file[split]合并产物input_file与划分输出的output_folder[tfrecord]训练/验证各自的图像文件夹、标注文件_train.json/_val.json以及 TFRecords 输出目录training_data_folder、validation_data_folder。这个配置印证了文档描述的四阶段流水清洗单个 COCO 文件 → 合并多批次文件 → 拆分为 train/val → 各自转 TFRecords。配置段中的示例路径是项目内部工作目录实际使用时需替换为自己的数据路径。标签映射决定了 num_classespre_processing/config/ 目录提供了一组标签映射文件它们是类别体系的落盘形式data/45_labels.csv45 类完整标签、data/material_labels.csv 与 data/material_form_labels.csv材质/形态双模型策略、data/one_model_labels.csv单统一模型标签等同时提供.pbtxt版本供推理侧使用。标签数量直接对应训练配置中的num_classes官方配置为 19见下文因此标注时使用的类别体系必须与训练/推理标签文件保持一致否则类别对齐会出错。目录下还包含 sample_images/ 与 sample_json/ 示例数据以及 categories_list_of_dictionaries.py 这类辅助脚本可用于理解 COCO JSON 中 categories 字段的组织方式。上传 TFRecords 到 Cloud Storage文档要求在进入重训练流水线之前先在本地工作站、远程服务器或数据库上用自己的数据跑完预处理脚本TFRecords 就绪后上传到 Cloud Storage bucket。Bucket 中可放置两个位置一个存训练数据集、另一个存验证数据集分别对应训练配置里的train_data与validation_data输入。上传动作在 Google Cloud 控制台的 Cloud Storage 界面完成bucket 命名与区域region需要与训练脚本中的占位符对应。配置训练作业脚本变量逐一解析数据集就绪后训练作业通过 CircularNET_Vertex_AI_ReTraining_v1.ipynb 配置并启动。文档指定了五个必须提供的脚本变量变量含义取值建议input_train_data_pathCloud Storage bucket 中训练集 TFRecords 的路径指向gs://bucket/train/等input_validation_data_pathCloud Storage bucket 中验证集 TFRecords 的路径指向gs://bucket/val/等init_checkpoint_path初始 checkpoint模型权重的路径使用开源初始 checkpoint可从 config_v1.yaml 的task.model等配置配套获取config_file_path包含微调训练参数的配置文件路径直接使用仓库内的 config/config_v1.yamlservice_account有训练作业执行权限的 Vertex AI 服务账号名按 before-you-begin.md 中创建脚本中的占位符PROJECT_ID、REGION、STAGING_BUCKET必须分别替换为你的 Google Cloud 项目 ID、区域和 Cloud Storage bucket。文档另提示num_classes等其余脚本变量也可以按需自定义它表示标注图像中材质或其他类别的数量——这一点与前述标签映射文件、以及配置文件中的task.model.num_classes三处必须保持一致。config_v1.yaml 深度解读微调参数的实际含义config_v1.yaml 是文档指定的默认配置文件采用 TensorFlow Models 通用的 runtime/task/trainer 三段结构关键取值如下runtime分布式运行num_gpus: 4、num_cores_per_replica: 1、distribution_strategy: multi_worker_mirrored即 before-you-begin 中至少 4 块 GPU要求的落盘形式enable_xla: true、run_eagerly: false开启 XLA 图编译加速。task.model模型结构骨干网络为resnetmodel_id: 50即 ResNet-50FPN 解码器num_filters: 256、fusion_type: suminclude_mask: true启用 mask 分支这就是实例分割能力的来源检测头 mask 头 RPN 头三段配置齐全num_classes: 19当前官方统一模型的类别数自定义数据时需与JSON_Generation阶段的标签体系、以及训练脚本变量num_classes同步修改input_size: [512, 1024, 3]输入尺寸 512×1024采样/NMS 等超参roi_sampler的num_sampled_rois: 512、前景 IoU 阈值 0.5detection_generator的max_num_detections: 100、nms_iou_threshold: 0.5沿用检测模型通用默认一般无需改动。微调相关的关键开关freeze_backbone: true冻结 ResNet 骨干只训练上层检测/分割相关层——这是在预训练权重上微调的核心保险丝小数据集场景下尤其重要init_checkpoint_modules: all加载初始 checkpoint 的全部模块权重与脚本变量init_checkpoint_path配合使用。task.train_data / validation_data数据输入file_type: tfrecord从源码配置层面印证了文档TFRecords 是必须输入格式的说法数据管线通过simple_decoder解码global_batch_size: 16训练侧drop_remainder: true、验证侧为false数据增强仅开启aug_rand_hflip: true随机水平翻转缩放范围aug_scale_min: 0.8到aug_scale_max: 1.25验证侧全部关闭增强aug_scale_min/max: 1.0保证评估口径干净max_num_instances: 100单图最多 100 个实例标注中超过该值的实例会被丢弃标注与划分数据时可参考此上限。trainer训练策略优化器SGDmomentum: 0.9 线性 warmupwarmup_steps: 500warmup_learning_rate: 0.0067学习率PiecewiseConstantDecay分段常数衰减boundaries: [15000, 20000]处从0.2 → 0.02 → 0.002总步数train_steps: 160000每 512 步验证validation_interval: 512、每 500 步保存 checkpointmax_to_keep: 5preemption_on_demand_checkpoint: true应对 Vertex AI 训练可能被抢占的场景需要即时保存 checkpoint。这些步数级超参意味着一次完整重训练是长时作业与后续 launch-job 文档训练可能需要数天的提示一致如果你的数据集规模明显小于官方数据可以酌情下调train_steps与boundaries但应保留 warmup 与分段衰减的结构。启动训练与验证配置完成后按 launch-job.md 运行CircularNET_Vertex_AI_ReTraining_v1.ipynb提交作业。两点实操要点值得强调训练运行期间不要提前导出 checkpoint 为 TF SavedModel且无需保持本地机器开机Vertex AI 会在后台管理作业监控进度时进入 Vertex AI → Training →Hyperparameter tuning jobs标签页选中你的作业通过Open TensorBoard查看训练指标或View Logs查看日志。训练完成后同一 Notebook 也引导你将模型导出为 TensorFlow 等格式用于部署并可对本地图像跑推理验证性能。小结重训练的数据准备链条可以概括为相机拍摄 → 材质标注COCO JSON→ 脚本清洗/过滤/合并/校验 → 拆 train/val → 转 TFRecords → 上传双 bucket 路径训练配置链条则是替换PROJECT_ID/REGION/STAGING_BUCKET占位符 → 填写 5 个脚本变量 → 按需修改num_classes与 config_v1.yaml 中的freeze_backbone、学习率与步数。只要类别体系在标签映射文件、num_classes变量与配置三处保持对齐TFRecords 与 checkpoint 路径指向正确即可在 Vertex AI 上稳定跑通 CircularNET 的定制化重训练。【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

数字逻辑与部件设计初赛复盘:从组合逻辑到状态机的实战指南

数字逻辑与部件设计初赛复盘:从组合逻辑到状态机的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 16:13:46
长辈多义语气词消歧 Prompt:区分“好呀“背后的应付与真正开心

长辈多义语气词消歧 Prompt:区分“好呀“背后的应付与真正开心

长辈多义语气词消歧 Prompt:区分"好呀"背后的应付与真正开心在陪伴型对话系统中,最容易被算法误判的一个词,就是中国长辈常挂在嘴边的"好"、"行"、"好呀"。 很多时候,当子女或智能助理向…

2026/9/7 16:13:46
OpenCV与PIL图像矩阵转换实战:Base64、通道顺序与编码避坑指南

OpenCV与PIL图像矩阵转换实战:Base64、通道顺序与编码避坑指南

很多图片接口项目跑起来,最考验人的永远不是某个算法有多复杂,而是 OpenCV、PIL、Base64 这三样东西在中途怎么“握手”。前端传来一段 data:image/...;base64,... ,Python 后端要把字符串还原成像素矩阵,OpenCV 负责做分析和处…

2026/9/7 16:13:46
蓝牙芯片选型核心:射频、SDK与BOM成本决定退货率

蓝牙芯片选型核心:射频、SDK与BOM成本决定退货率

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 16:13:46
大模型超时的优雅降级:拒绝刺眼的 504 报错

大模型超时的优雅降级:拒绝刺眼的 504 报错

大模型超时的优雅降级:拒绝刺眼的 504 报错在家庭 AI 助理的真实使用中,最让非技术长辈感到惶恐和不知所措的交互,莫过于屏幕突然弹出一个包含红色英文字样的报错框:504 Gateway Timeout: The upstream server failed to respond …

2026/9/7 16:13:46
MySQL Latch争用与CSSOM阻塞:前后端性能优化实战指南

MySQL Latch争用与CSSOM阻塞:前后端性能优化实战指南

Edufu 是我在负责的一个在线教育项目,今年用户量上来之后,出现了两个特别“分裂”的性能问题:后端 MySQL 经常毫无征兆地 CPU 飙高、慢查询堆积,前端客服那边又收到一堆用户反馈说页面白屏、表单加载不出来,还弹出“yo…

2026/9/7 16:08:45