ARTICLE DETAIL

资讯详情

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

TensorFlow 2 版 Object Detection API 快速上手指南:安装、微调训练、模型库与官方资源全梳理

TensorFlow 2 版 Object Detection API 快速上手指南:安装、微调训练、模型库与官方资源全梳理 TensorFlow 2 版 Object Detection API 快速上手指南安装、微调训练、模型库与官方资源全梳理【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models本篇指南面向希望在本仓库中直接使用 TensorFlow 2 版 Object Detection API 的开发者核心覆盖从环境安装、功能自检、Colab 快速体验到本地/云端训练评估、预训练检测模型库Model Zoo与官方子指南检索的完整链路。读完后你将能够独立完成 TF2 目标检测环境搭建并据此开启自定义数据集上的训练与评估流程。本仓库整体为基于 TensorFlow 构建的模型与示例集合Models and examples built with TensorFlow其中research/object_detection即著名的 TensorFlow Object Detection API 代码库。本文对应的基础文档为 research/object_detection/g3doc/tf2.md下面以其为核心骨架展开并结合仓库内源码与配套文档给出更具操作性的细节。环境要求使用 TF2 版 Object Detection API 前请先核对如下基础环境依赖版本要求Python3.6 及以上TensorFlow2.2 及以上Protobuf Compilerprotoc3.0 及以上其中 Python 与 TensorFlow 的版本要求与本仓库 TF2 Dockerfile 中的基准镜像tensorflow/tensorflow:2.2.0-gpu保持一致而protoc用于把research/object_detection/protos/下的.proto描述文件编译为可被 Python 导入的模块这是安装阶段的关键步骤。获取仓库并选择安装方式Object Detection API 的代码全部位于本仓库的research/object_detection/目录。安装方式有两种本地/自建服务器运行推荐使用 Docker 安装Google Cloud 云上运行推荐使用 Python 包安装pip。首先获取仓库源码若需在本地准备一份完整副本可通过 git clone 拉取git clone https://gitcode.com/GitHub_Trending/mode/models两种安装方式会在仓库根目录下分别执行具体差异如下。方式一Docker 安装仓库已经为 TF2 环境预制了 Dockerfile位于 research/object_detection/dockerfiles/tf2/Dockerfile。在仓库根目录执行# 在 git 仓库根目录执行 docker build -f research/object_detection/dockerfiles/tf2/Dockerfile -t od . docker run -it od从 Dockerfile 源码可以看出该镜像构建过程实际替你完成了全部环境准备工作以tensorflow/tensorflow:2.2.0-gpu为基础镜像并安装git、protobuf-compiler、python3-lxml、python3-tk、wget等系统依赖安装gcloud与gsutil方便后续对接 Google Cloud Storage 数据将本仓库代码复制进镜像并预编译全部 protos执行protoc object_detection/protos/*.proto --python_out.复制research/object_detection/packages/tf2/setup.py到research/根目录并执行pip install .。也就是说走 Docker 路线时无需手动安装 protobuf-compiler镜像构建阶段已经处理完毕进入容器后即可直接进入「验证安装」环节。方式二Python 包安装pip在research目录下手动执行三条命令cd research # 1. 编译 protos生成对应的 *_pb2.py 模块 protoc object_detection/protos/*.proto --python_out. # 2. 将 TF2 专用的 setup.py 复制到 research/ 根目录 cp object_detection/packages/tf2/setup.py . # 3. 安装 Object Detection API python -m pip install --use-feature2020-resolver .几点实操说明步骤 1 的编译产物*_pb2.py是后续所有 builder、config_definitions正常导入的前置条件不可省略步骤 2 之所以用cp复制setup.py是为了让 setuptools 能以research/作为包搜索根目录同时兼容仓库内slim/子目录的datasets、nets、preprocessing等子包参见 packages/tf2/setup.py 中的packages与package_dir配置步骤 3 中--use-feature2020-resolver用于指示 pip 使用新的依赖解析器如果你的 pip 版本较新该参数可省略packages/tf2/setup.py 声明了一组重要运行依赖包括apache-beam、tf-slim、pycocotools、lvis、tf-models-official2.5.1、tensorflow_io、keras等其中pyparsing2.4.7与sacrebleu2.2.0是特意锁定的版本源码中带有 issue 注释遇到依赖冲突时请优先核对这两项。注意pip 安装路线要求你的机器上已存在可用的protoc 3.0。如果本机没有 protoc请优先考虑 Docker 安装或在系统中另行安装 protobuf 编译器后再继续。验证安装是否成功无论采用哪种安装方式完成安装后都建议先跑一遍官方自检用例python object_detection/builders/model_builder_tf2_test.py该测试对应仓库中的 research/object_detection/builders/model_builder_tf2_test.py它通过 TF2 模型构建器model builder加载并实例化各类检测模型配置。测试全部通过即说明以下链路已经打通protos 已正确编译为 Python 模块model_builder需要导入各配置 messageTF2 相关 builder 模块含 Keras 版 feature extractor 等可以正常 import本机 TensorFlow 2.2 与 Object Detection API 代码版本匹配。如果此步报出 ImportError 或 protobuf 相关错误请回头检查编译 protos 与 pip 安装两步是否在正确的目录research/下执行。快速开始三份官方 Colab仓库的 colab_tutorials 目录 提供了三份与 TF2 直接相关的官方 notebook覆盖训练、推理与移动端三个典型场景场景Colab Notebook说明训练eager_few_shot_od_training_tf2_colab.ipynb在 eager mode 下用自定义数据对预训练检测器做 few-shot 微调是理解 TF2 训练入口model_main_tf2.py pipeline config的起点推理inference_tf2_colab.ipynb直接加载 Model Zoo 中的预训练模型运行推理适合先跑通效果再做定制移动端 Few-Shot 学习eager_few_shot_od_training_tflite.ipynb微调一个面向 TensorFlow Lite 的预训练检测器目标产物可直接部署到移动端三份 notebook 均位于仓库内可直接在 Colab 中打开或本地用 Jupyter 执行。其中训练类 notebook 演示的正是「复用预训练 checkpoint 少量自定义数据」这一 Object Detection API 最主流的用法有关移动端推理的更多说明还可参考 running_on_mobile_tf2.md。训练与评估从配置到命令完整的分步训练/评估指引本地 CPU/GPU 以及 Google Cloud GPU/TPU VM、AI Platform 场景记录在 tf2_training_and_evaluation.md 中。这里先提炼其中最关键的实战要素便于你按图索骥推荐的目录结构原文档推荐的工程目录如下训练与评估产物严格分目录存放便于 TensorBoard 汇总. ├── data/ │ ├── eval-00000-of-00001.tfrecord │ ├── label_map.txt │ ├── train-00000-of-00002.tfrecord │ └── train-00001-of-00002.tfrecord └── models/ └── my_model_dir/ ├── eval/ # 由评估任务生成 ├── my_model.config ├── model_ckpt-100-data1 # 由训练任务生成 ├── model_ckpt-100-index └── checkpoint编写模型配置训练前需要一份 pipeline 配置文件。仓库在 research/object_detection/configs/tf2 下提供了 39 份可直接套用的官方 TF2 示例配置覆盖 CenterNetHourGlass104/ResNet/MobileNetV2 等、EfficientDet D0-D7、SSD MobileNet/ResNet 系列、Faster R-CNN ResNet 系列与 Mask R-CNN 等。以 ssd_mobilenet_v2_fpnlite_320x320_coco17_tpu-8.config 为例可看到一份标准 pipeline config 的骨架model { ssd { ... } }定义骨干网络feature extractor、anchor 生成器、box predictor、loss 与 NMS 后处理等结构train_config { ... }指定 batch size、优化器与学习率如 cosine decay warmup、数据增强与总步数train_input_reader { ... }/eval_input_reader { ... }分别指定训练/评估 TFRecord 输入路径与 label map 路径。其中label_map_path、input_path等字段通常以PATH_TO_BE_CONFIGURED占位复制到自己项目时需要替换为真实路径。借助预训练 checkpoint 初始化模型参数目标检测从零训练往往需要数天因此强烈建议复用既有图像分类或目标检测 checkpoint 来初始化骨干网络。在train_config中通过两个字段控制详见 tf2_training_and_evaluation.mdfine_tune_checkpoint预训练 checkpoint 的路径前缀例如.../model.ckpt-#####fine_tune_checkpoint_type取值classification或detection取决于 checkpoint 是分类还是检测模型。对应的可下载资源分别整理在两份列表中分类模型tf2_classification_zoo.md 与 检测模型tf2_detection_zoo.md。本地训练与评估在research/目录下使用统一的入口脚本 research/object_detection/model_main_tf2.py# —— 本地训练 —— 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 与 events 写入${MODEL_DIR}。评估任务则在训练进程外另起一个进程额外传入--checkpoint_dir# —— 本地评估 —— PIPELINE_CONFIG_PATH{path to pipeline config file} MODEL_DIR{path to model directory} CHECKPOINT_DIR${MODEL_DIR} python object_detection/model_main_tf2.py \ --pipeline_config_path${PIPELINE_CONFIG_PATH} \ --model_dir${MODEL_DIR} \ --checkpoint_dir${CHECKPOINT_DIR} \ --alsologtostderr评估事件写入${MODEL_DIR}/eval。实践中通常让训练与评估任务并发运行训练产出 checkpoint 后评估器会持续跟踪最新权重。云上Google Cloud扩展GPU/TPU VM训练命令与本地几乎一致仅需追加--use_tputrue与--tpu_name${TPU_NAME}两个可选参数即可跑在 TPU 上注意评估仅支持 GPU不支持在 TPU 上执行评估AI PlatformCloud ML需要先基于 tf2_ai_platform/Dockerfile 构建并推送自定义容器镜像再通过gcloud ai-platform jobs submit training ...提交多 GPU如 8×V100或BASIC_TPU等级的分布式训练任务训练产物与配置均可直接使用gs://路径云上路径可以是本地路径或 GCS bucket 路径脚本内已天然兼容。建议在上云之前先在本地把训练与评估各跑若干步验证配置无误再做大规模提交。用 TensorBoard 观察进度如果采用上文推荐的目录结构一条命令即可同时汇总训练与评估指标tensorboard --logdir${MODEL_DIR}其中${MODEL_DIR}指向同时包含 train 与 eval 两个子目录的父目录。TensorBoard 需要一到两分钟才能完成数据填充属正常现象。预训练模型库TF2 Detection Model Zoo仓库官方提供了一大批在COCO 2017上预训练好的检测模型完整清单与下载地址见 tf2_detection_zoo.md。这些模型的典型用途有两类开箱即用的推理当你要识别的类别已包含在 COCO 类别之内可直接加载运行配合 inference_tf2_colab.ipynb 快速体验新数据集的初始化权重作为微调起点以加速收敛这正是上面fine_tune_checkpoint/fine_tune_checkpoint_type两个字段所指的对象对应 eager_few_shot_od_training_tf2_colab.ipynb 的 few-shot 训练流程。从 Model Zoo 清单以及 configs/tf2 配置目录 中一一对应的.config文件可以看到预训练模型按输出类型可分为以下几大家族模型家族代表配置输出特点SSD 系列SSD MobileNet V2、SSD MobileNet V1 FPN、SSD MobileNet V2 FPNLite 320/640、SSD ResNet50/101/152 V1 FPNRetinaNet 640/1024Boxes覆盖移动端到服务端速度快EfficientDetD0512×512至 D71536×1536Boxes输入分辨率逐档增大精度递增Faster R-CNN 系列ResNet50/101/152 V1 640、1024、800×1333 等Boxes两阶段精度较高Mask R-CNNMask R-CNN Inception ResNet V2 1024×1024Boxes / Masks目标检测 实例分割CenterNet 系列HourGlass104 512/1024、ResNet50/101 V1 FPN、ResNet50 V2、MobileNetV2 FPN含 Keypoints 变体Boxes / Keypoints无 anchor 的中心点方法支持人体关键点ExtremeNetExtremeNetBoxes仓库中标注为 deprecated可忽略其中每份tar.gz内通常同时附带模型结构与训练用的 pipeline config。如果想自行从零复现训练直接使用 research/object_detection/configs/tf2 下对应名称的配置文件即可Model Zoo 各模型的具体速度ms与 COCO mAP 数值请以 tf2_detection_zoo.md 中完整表格为准。若目标是移动端部署可进一步参考 running_on_mobile_tf2.md。官方子指南速查本文档同时是指向 Object Detection API 全系子指南的「路由页」下面是这些指南在本仓库中的具体位置与定位可按需深入configuring_jobs.md如何配置一条完整的 object detection pipelinepipeline config 各字段详解preparing_inputs.md如何为 PASCAL VOC / Oxford-IIIT Pet 等数据集生成 TFRecord 输入defining_your_own_model.md如何定义你自己的模型架构并接入 APIusing_your_own_dataset.md如何接入自有数据集label map、TFRecord 转换evaluation_protocols.md支持的检测评估协议如 COCO 指标说明tpu_compatibility.md哪些 pipeline 支持在 TPU 上训练tf2_training_and_evaluation.md训练与评估完整指南CPU / GPU / TPU。上手路线建议先用本文完成安装与自检 → 跑通 inference_tf2_colab.ipynb 感受推理效果 → 按 preparing_inputs.md 与 using_your_own_dataset.md 准备自有数据 → 参照 configs/tf2 示例配置 写好 pipeline config → 使用model_main_tf2.py启动训练与评估。这条路径也正是官方 few-shot 训练 Colab 背后的完整工作流。【免费下载链接】modelsModels and examples built with TensorFlow项目地址: https://gitcode.com/GitHub_Trending/mode/models创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表