
TensorFlow Object Detection API 的 TF2 Classification Model Zoo 指南ImageNet 预训练权重清单与检测模型初始化实战【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models本文面向使用 TensorFlow 2 版 Object Detection API 训练目标检测模型的开发者系统讲解仓库中 tf2_classification_zoo.md 所维护的分类预训练权重库它提供哪些在 ImageNet 上预训练过的骨干网络 checkpoint、如何下载使用、以及如何通过在 pipeline 配置中设置fine_tune_checkpoint_type: classification把这类权重迁移到检测模型训练中。读完你将能看懂分类 Zoo与检测 Zoo的区别并独立完成从下载权重到配置微调全流程。一、这份文档讲什么分类预训练权重池Classification Model Zoo在 TensorFlow 2 工作流中Object Detection API 官方提供了两类模型库Model ZooDetection Model Zoo在 COCO 2017 上训练好的完整检测模型可直接用于开箱推理清单见 tf2_detection_zoo.mdClassification Model Zoo即本文主题在 ImageNet 上预训练得到的分类骨干网络权重其定位非常明确——用于初始化initialize检测模型的参数而不是直接做检测推理。配套的 TF2 训练与评估指南 在第 38 行起明确给出建议从头训练一个检测器通常需要数天时间为加速训练应优先复用已有图像分类或检测 checkpoint 中的特征提取器参数并链接到本分类 Zoo 页面。该文档对应的运行环境为 TensorFlow 2.2 与 Python 3.6页面徽章标注。二、完整的预训练分类权重清单仓库文档以表格形式收录了截至其维护时间点下载链接统一位于classification/tf2/20200710目录的 14 个 TF2 格式分类 checkpoint覆盖四代主流骨干网络架构。下表为官方模型清单各模型对应的tar.gz下载链接均维护在源文档 tf2_classification_zoo.md 中模型名称归档文件名见源文档下载链接架构家族EfficientNet B0efficientnet_b0.tar.gzEfficientNetEfficientNet B1efficientnet_b1.tar.gzEfficientNetEfficientNet B2efficientnet_b2.tar.gzEfficientNetEfficientNet B3efficientnet_b3.tar.gzEfficientNetEfficientNet B4efficientnet_b4.tar.gzEfficientNetEfficientNet B5efficientnet_b5.tar.gzEfficientNetEfficientNet B6efficientnet_b6.tar.gzEfficientNetEfficientNet B7efficientnet_b7.tar.gzEfficientNetResnet V1 50resnet50_v1.tar.gzResNet V1Resnet V1 101resnet101_v1.tar.gzResNet V1Resnet V1 152resnet152_v1.tar.gzResNet V1Inception Resnet V2inception_resnet_v2.tar.gzInception-ResNetMobileNet V1mobilnet_v1.tar.gzMobileNetMobileNet V2mobilnet_v2.tar.gzMobileNet四个家族恰好对应了检测模型中最常复用的特征提取器主干且都能在仓库的 models 目录下找到对应实现例如EfficientNet B0–B7仓库中 ssd_efficientnet_bifpn_feature_extractor.py 即是以 EfficientNet 为骨干搭建 BiFPN 的 SSD 变体EfficientDet 系列所用实现ResNet V1 50/101/152Faster R-CNN、SSD FPN、CenterNet 等大量检测头的标准骨干见 faster_rcnn_resnet_v1_fpn_keras_feature_extractor.pyInception ResNet V2高精度双阶段检测器的经典主干见 faster_rcnn_inception_resnet_v2_keras_feature_extractor.pyMobileNet V1/V2面向移动端/边缘场景的轻量骨干见 ssd_mobilenet_v1_fpn_keras_feature_extractor.py 与 ssd_mobilenet_v2_keras_feature_extractor.py。从源码结构看这份分类 Zoo → 检测骨架的对应关系正是其存在价值同一骨干网络在分类任务上得到的通用视觉特征可以低成本地迁移到检测任务上避免检测器从头训练的漫长收敛。三、与 Detection Zoo 的分工何时使用分类 checkpoint在 tf2_training_and_evaluation.md 的Model Parameter Initialization小节中官方明确区分了两种预训练来源对应 pipeline 配置中train_config的两个字段fine_tune_checkpoint预训练 checkpoint 的路径前缀例如/usr/home/username/checkpoint/model.ckpt-#####fine_tune_checkpoint_type取值为classification或detection取决于你加载的是哪种 checkpoint。典型用法当你要在自己的新数据集如 Oxford-IIIT Pets、自建 VOC 数据上训练检测器时若目标检测模型在 Detection Zoo 中不存在现成的对应检查点就可以选择特征提取器架构匹配的分类 checkpoint作为初始化来源此时把fine_tune_checkpoint_type设为classification。而如果你要沿用 COCO 上已经调好的完整检测权重做进一步微调则应选择detection类型并加载对应检测 checkpoint。需要特别强调的是本清单中的权重不是拿来直接跑检测推理的——检测推理应使用 Detection Zoo 或自行导出的 SavedModel分类权重只承担迁移初始化的职责。四、在 TF2 pipeline 配置中接入分类 checkpoint含真实配置解析仓库 configs/tf2 目录下存放了 Zoo 中所有检测模型的训练配置其中 Faster R-CNN / SSD ResNet 等使用分类初始化的配置给出了最直观的接线示例。以 faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.config 为例train_config { ... fine_tune_checkpoint_version: V2 fine_tune_checkpoint: PATH_TO_BE_CONFIGURED/resnet50.ckpt-1 fine_tune_checkpoint_type: classification data_augmentation_options { random_horizontal_flip { } } ... }实际使用时需要替换的三处要点下载并解压从源文档 tf2_classification_zoo.md 中对应模型行的链接下载tar.gz解压后得到 checkpoint 文件填写fine_tune_checkpoint上例中的PATH_TO_BE_CONFIGURED/resnet50.ckpt-1表明官方期望填入的是解压后 checkpoint 的路径前缀形如.../resnet50.ckpt-1。注意这里fine_tune_checkpoint_version: V2与resnet50_v1.tar.gz对应清单中 Resnet V1 50 行的搭配可以相互印证Classification Zoo 提供的是 TensorFlow 2 风格的 object-based checkpoint类型声明fine_tune_checkpoint_type: classification告诉训练器我加载的是一份分类权重从而只恢复特征提取器作用域内的变量检测头box predictor、分类层不匹配的权重会被跳过。同样的模式也出现在 faster_rcnn_resnet101_v1_800x1333_coco17_gpu-8.config、centernet_resnet50_v1_fpn_512x512_kpts_coco17_tpu-8.config、mask_rcnn_inception_resnet_v2_1024x1024_coco17_gpu-8.config 等一批 TF2 配置中覆盖了 ResNet 系列的 Faster R-CNN / SSD FPN / CenterNet / Mask R-CNN也包含以 Inception ResNet V2 为骨干的 Mask R-CNN。这说明分类 Zoo 中每个家族都能在官方 TF2 检测配置中找到直接的消费方。兼容旧配置from_detection_checkpoint的自动换算如果你看过更早的 TF1 风格配置例如 ssd_mobilenet_v1_pets.config 中的from_detection_checkpoint: true会疑惑两者关系。仓库在 config_util.py 中的update_fine_tune_checkpoint_type()函数给出了答案from_detection_checkpoint字段已废弃为向后兼容训练入口会在解析阶段据此自动换算——if not train_config.fine_tune_checkpoint_type: if train_config.from_detection_checkpoint: train_config.fine_tune_checkpoint_type detection else: train_config.fine_tune_checkpoint_type classification也就是说如果不显式填写fine_tune_checkpoint_type且没有开启from_detection_checkpoint则默认按classification加载分类权重处理正好与本节 Zoo 的典型用法一致。五、底层原理TF2 训练器如何加载一份分类 checkpoint在 TensorFlow 2 中分类权重的加载由训练主入口 model_lib_v2.py 中的load_fine_tune_checkpoint()第 359–408 行完成其关键流程可以归纳为四步校验为 object-based checkpoint通过tf.train.list_variables检查 checkpoint 中是否包含_CHECKPOINTABLE_OBJECT_GRAPH变量不存在则抛出IOError以此强制要求 TF2 风格的 object-based 权重Classification Zoo 的V2版本满足此要求拒绝 V1 格式若配置中fine_tune_checkpoint_version为 V1直接抛ValueError——本二进制仅支持 V2预构建模型若run_model_on_dummy_input开启先在假输入上执行一次前向以完成所有变量的创建确保随后能够按名字恢复权重构造恢复映射并恢复调用model.restore_from_objects(fine_tune_checkpoint_typecheckpoint_type)把恢复映射定义为一份 TF2Trackabletf.Module/Checkpoint字典再用tf.train.Checkpoint(**restore_from_objects_dict).restore(checkpoint_path)完成加载并以expect_partial()容忍部分不匹配。restore_from_objects是定义在检测模型基类 core/model.py 上的抽象接口TF1 时代对应restore_map。其 docstring 点明了设计意图the feature extractor variables from a classification model can be used to bootstrap training of an object detector——分类模型中的特征提取器变量被用来引导检测器的训练当以classification类型恢复时仅初始化骨干网络部分检测头从头开始学习这正是 Classification Zoo 存在的意义。基类与各特征提取器的实现通过变量命名作用域feature extractor scope划分哪些权重该从分类 checkpoint 拿来。六、端到端使用流程从下载权重到启动训练将 Classification Zoo 的权重接入一次 TF2 检测训练完整的操作链条如下更详细的训练/评估命令参见 tf2_training_and_evaluation.md环境安装参见 tf2.md准备数据按 preparing_inputs.md 生成 TFRecord 格式数据集与label_mapPASCAL VOC 或 Oxford-IIIT Pet 均有现成指引下载权重在源文档 tf2_classification_zoo.md 中按目标检测骨架的架构匹配下载对应tar.gz如用 ResNet-50 作骨干则下载resnet50_v1.tar.gz解压得到.../resnet50.ckpt-*系列文件改配置参考 configs/tf2 下的样例把fine_tune_checkpoint指向上一步的 checkpoint 前缀fine_tune_checkpoint_version保持V2fine_tune_checkpoint_type设为classification同时把train_input_reader/eval_input_reader中的PATH_TO_BE_CONFIGURED替换成真实数据路径启动训练在仓库research/目录执行PIPELINE_CONFIG_PATH{path to pipeline config file} MODEL_DIR{path to model directory} python object_detection/model_main_tf2.py \ --pipeline_config_path${PIPELINE_CONFIG_PATH} \ --model_dir${MODEL_DIR} \ --alsologtostderr启动评估追加--checkpoint_dir指向训练产出的 checkpoint 目录即可评估事件写入${MODEL_DIR}/eval。七、注意事项与边界该清单只面向模型初始化不提供推理推理请参考 Detection ZooCOCO 预训练、可直接出框或使用其配套 推理 Colab版本约束Classification Zoo 与 TF2 工作流以 TensorFlow 2.2、Python 3.6 为基线checkpoint 为 V2 object-based 格式不能被 V1 风格的加载逻辑使用见上文load_fine_tune_checkpoint的校验分类 checkpoint 只包含特征提取器参数用它初始化后检测专属的 box predictor、分类头会随机初始化并从零学习因此仍需要配置合理的训练步数与学习率调度何时改选检测 checkpoint如果你的检测架构恰好有对应的 COCO 检测权重加载detection类型的完整检测 checkpoint含检测头通常能获得比分类权重更好的起点两者加载范围差异由restore_from_objects的fine_tune_checkpoint_type分支控制链接以仓库为准官方下载链接与逐条模型对应关系均以源文档 tf2_classification_zoo.md 为唯一事实来源本文不做二次转载。总体而言TF2 Classification Model Zoo 是 TF2 Object Detection API 迁移学习链路中通用视觉特征 → 检测骨干初始化的关键一环一张表格、四代骨干EfficientNet / ResNet V1 / Inception-ResNet / MobileNet、一个配置字段fine_tune_checkpoint_type: classification即可让任何自建检测任务站在 ImageNet 预训练的肩膀上起步。【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考