我要提问
ARTICLE DETAIL

资讯详情

前沿编程新知与开发实战干货的深度解读。

TF Models backbone_reuse:用冻结的 ImageNet 预训练 Backbone 训练 Mask R-CNN 的完整实践

TF Models backbone_reuse:用冻结的 ImageNet 预训练 Backbone 训练 Mask R-CNN 的完整实践 TF Models backbone_reuse用冻结的 ImageNet 预训练 Backbone 训练 Mask R-CNN 的完整实践【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models本文基于 tensorflow/models 仓库中official/projects/backbone_reuse子项目的说明文档与配套配置文件讲解冻结图像分类 backbone 的特征复用backbone freezing方法在目标检测/实例分割模型上的落地方式如何选用 ResNet-RS-101 预训练权重、如何选择并修改 FPN / NASFPN / Cascade 系列实验配置、freeze_backbone与init_checkpoint_modules两个核心标志在源码中如何生效以及不同训练日程72 / 600 epochs下的学习率与步数设置帮助读者掌握以分类预训练特征提升下游检测任务效果的可复现实战流程。背景backbone 冻结训练方法backbone_reuse项目对应的工作是论文《Proper Reuse of Image Classification Features Improves Object Detection》CVPR 2022被选为 Oral 报告其核心思想是在把图像分类预训练的 backbone 迁移到 Mask R-CNN 等下游检测架构时在整个下游训练过程中保持 backbone 权重冻结只训练 decoder、检测头等其余部分反而能获得更好的检测效果。仓库中的项目入口文档为 README.md它给出了一套下载预训练 checkpoint → 选择实验配置 → 指向 checkpoint 文件 → 走标准 TFVision 训练管线的极简操作流程。训练 Mask R-CNN冻结 ResNet-RS-101ImageNet 预训练README 给出的完整训练步骤如下已结合仓库内配置补充细节下载 ResNet-RS-101 预训练 checkpoint。README 指出应使用 TF-Vision Model Garden 中以 ImageNet 预训练的 ResNet-RS-101 权重原始文档中提供了 Model Garden 与 checkpoint 的下载链接可按文档指引获取resnet-rs-101压缩包。选择实验配置文件。仓库内置了 ResNet-101 消融实验的全部 YAML 配置位于 configs/experiments/faster_rcnn。选择依据两个维度目标架构FPN、NASFPN、NASFPN Cascade训练日程偏好较短的 72 epochs 或较长的 600 epochs。修改配置中的init_checkpoint标志指向第 1 步下载的 checkpoint 文件。完成以上三步后按照官方 TFVision 的 Mask R-CNN 标准训练管线即official/vision/train.py入口即可开始训练。配置文件中预置的关键标志打开任意一份消融配置例如 fastrcnn_resnet101_fpn_72epochs.yaml可以看到所有配置都以相同的任务头开启冻结逻辑task: # init_checkpoint: a_pretrained_backbone_checkpoint init_checkpoint_modules: backbone freeze_backbone: true model: backbone: resnet: model_id: 101 replace_stem_max_pool: true resnetd_shortcut: true scale_stem: true se_ratio: 0.25 stem_type: v1 type: resnet decoder: type: fpn detection_head: num_fcs: 2 norm_activation: activation: swish其中三个与特征复用直接相关的字段字段取值作用init_checkpoint需自行填写被注释掉的占位行需要改为实际的 ResNet-RS-101 checkpoint 路径init_checkpoint_modulesbackbone只从预训练 checkpoint 恢复 backbone 模块的权重可选值还有all、decoder见下文源码说明freeze_backbonetrue训练全程冻结 backbone其参数不产生梯度更新backbone 子配置则精确刻画了ResNet-RS-101这一模型变体RS 系列改进点model_id: 101101 层 ResNetreplace_stem_max_pool: true用 stride-4 的卷积 stem 替换 stem 中的 max-pooling保留更高分辨率特征resnetd_shortcut: trueResNet-D 风格的 shortcut低分辨率处对 shortcut 下采样避免形状不匹配时的零填充scale_stem: true对 stem 卷积初始化进行缩放se_ratio: 0.25加入 SESqueeze-and-Excitation模块通道压缩比 0.25stem_type: v1使用 v1 stem。decoder.type决定特征金字塔类型FPN 配置直接写fpnNASFPN 配置写nasfpn并额外指定金字塔层级范围min_level: 3、max_level: 7且 FPN 的 NASFPN 消融还显式设置include_mask: false只评测框 APCascade 系列在detection_head中开启cascade_class_ensemble: true与class_agnostic_bbox_pred: true并将input_size提高到[1280, 1280, 3]同时在roi_sampler中给出级联 IoU 阈值cascade_iou_thresholds: [0.7, 0.8]。可用配置一览configs/experiments下共 12 份 YAML按检测架构与训练日程组织Faster R-CNNMask R-CNN 框检测位于 configs/experiments/faster_rcnnfastrcnn_resnet101_fpn_72epochs.yaml / 600epochsfastrcnn_resnet101_fpn_cascade_72epochs.yaml / 600epochsfastrcnn_resnet101_nasfpn_72epochs.yaml / 600epochsfastrcnn_resnet101_nasfpn_cascade_72epochs.yaml / 600epochsRetinaNet位于 configs/experiments/retinanetretinanet_resnet101_fpn_72epochs.yaml / 600epochsretinanet_resnet101_nasfpn_72epochs.yaml / 600epochsREADME 正文聚焦于 Mask R-CNN 的消融实验RetinaNet 配置属于仓库中额外提供的同方法延伸可按相同方式使用。训练日程学习率与步数的差异同一架构下 72 epochs 与 600 epochs 两份配置的主要差别在trainer段。以 FPN 为例fastrcnn_resnet101_fpn_72epochs.yaml 与 fastrcnn_resnet101_fpn_600epochs.yaml项72 epochs600 epochs学习率调度PiecewiseConstantDecayvalues: [0.16, 0.016, 0.0016]boundaries: [88704, 125664]同学习率序列boundaries: [1062734, 1090458]train_steps1330561108940steps_per_loop/summary_interval18481848即两种日程使用完全一致的阶梯学习率曲线0.16 → 0.016 → 0.0016各衰减 10 倍只是衰减边界按总步数等比后移。数据侧两份配置保持一致global_batch_size: 64、随机水平翻转aug_rand_hflip: true、缩放范围[0.1, 2.0]。RetinaNet 系列则使用更大 batchglobal_batch_size: 256和相应翻倍的学习率values: [0.32, 0.032, 0.0032]72 epochs 档train_steps: 33264。原理剖析freeze_backbone在源码中如何生效README 的 How does it work? 部分说明配置文件设置任务标志freeze_backbone: true该标志会阻止预训练 backbone 权重在下游模型训练中更新。这一行为在官方 TFVision 任务实现中可以找到直接证据配置定义在 official/vision/configs/maskrcnn.py 中任务配置包含init_checkpoint: Optional[str] None init_checkpoint_modules: Union[str, List[str]] all # all, backbone, and/or decoder ... # If set, freezes the backbone during training. freeze_backbone: bool False这解释了 YAML 中init_checkpoint_modules: backbone的合法取值all、backbone、decoder它决定恢复 checkpoint 时只加载哪些模块与恢复范围和可训练范围解耦。冻结逻辑在 official/vision/tasks/maskrcnn.py 的build_model()末尾if self.task_config.freeze_backbone: model.backbone.trainable False即在构建 Mask R-CNN 模型后直接将 Keras backbone 的trainable置为False——backbone 前向照常计算特征图但其参数不再参与反向传播与优化器更新。同项目也复用了init_checkpoint的加载逻辑initialize()中支持文件或目录形式的 checkpoint。同样的freeze_backbone开关在 retinanet.py、image_classification.py、video_classification.py 等任务中均以相同方式实现因此 backbone_reuse 的配置可无缝挂到既有 TFVision 训练管线上。需要说明的一点是README 的表述是backbone 权重在训练期间不更新从源码看实现方式即 Keras 层级的trainable False这意味着冻结作用于 backbone 子模块内部参数而 FPN/NASFPN decoder、RPN 与 RoI 检测头仍按常规训练其中 decoder 部分默认不从分类 checkpoint 恢复除非另行调整init_checkpoint_modules。使用方式与适用前提运行入口完成 checkpoint 路径修改后使用 TFVision 标准训练命令以本项目的 YAML 作为--config_file传入即可配置为纯 YAML由official/vision/train.py的实验配置体系加载。适用前提方法针对 ImageNet 预训练的 ResNet-RS-101 特征复用到 Mask R-CNNFPN / NASFPN / Cascade的检测场景设计训练数据与评估均沿用 TFVision 的 Mask R-CNN 数据管线RetinaNet 配置可视为同一思想的单阶段检测延伸。结果引用具体的精度与消融结论以原论文为准仓库 README 未内嵌数值表格。引用信息如需在论文或报告中引用该工作README 提供了如下 BibTeXinproceedings{vasconcelos2022backbonefreeze, title {Proper Reuse of Image Classification Features Improves Object Detection}, author {Cristina Vasconcelos and Vighnesh Birodkar and Vincent Dumoulin}, booktitle{CVPR} year{2022}, }小结backbone_reuse子项目用一个可复制的配置集合把 CVPR 2022 Oral 论文冻结分类 backbone 复用特征的方法落到 TFVision 的 Mask R-CNN 管线上三份 YAML 级选择架构 × 日程覆盖 FPN、NASFPN、Cascade 与 72/600 epochs 组合核心改动只是init_checkpoint_modules: backbonefreeze_backbone: true两个标志其底层实现是 maskrcnn.py 中一行model.backbone.trainable False。理解了配置与源码的对应关系后即可按下载 ResNet-RS-101 checkpoint → 修改init_checkpoint→ 标准管线训练三步完整复现该实验。【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表