TensorFlow Models 中的目标检测模块提供了一个全面的框架,用于构建、训练和部署目标检测模型。本页面描述了目标检测子系统的架构、组件和工作流程,主要侧重于 research/object_detection 目录中的研究实现。
有关模型训练和评估的信息,请参阅相应的训练文档。有关模型部署,请参阅导出和提供指南。
目标检测系统支持多种检测架构(称为“元架构”)和特征提取器,为不同的性能需求提供了灵活的框架。该系统遵循模块化设计,在数据处理、模型定义以及训练/评估循环之间实现了清晰的分离。
来源
目标检测系统由几个协同工作的关键组件组成
该系统支持不同的元架构,每种都实现了不同的检测范式
每个元架构都继承自 DetectionModel 基类,并实现了特定的 predict()、loss() 和 postprocess() 方法。
来源
特征提取器将输入图像转换为用于检测元架构的特征图
特征提取器特定于每个元架构,并实现从不同尺度提取特征的方法。
来源
目标分配在训练期间将地面真实标注映射到模型预测目标
TargetAssigner 类处理
来源
输入管道负责读取、预处理和批处理训练样本
来源
CenterNet 是一种基于关键点的目标检测算法,它将对象表示为点,并且是该框架中的关键元架构之一。
CenterNet 可通过额外的预测头进行扩展
来源
目标检测系统使用不同的边界框编码和预测机制
来源
训练管道整合了所有组件
inputs.py 创建数据集model_builder.py 构建模型model_lib_v2.py 中处理梯度更新来源
目标检测框架使用协议缓冲区进行配置
CenterNet 配置的示例组件
message CenterNet {
// Number of classes to predict
optional int32 num_classes = 1;
// Feature extractor config
optional CenterNetFeatureExtractor feature_extractor = 2;
// Image resizer for preprocessing
optional ImageResizer image_resizer = 3;
// Object detection task configuration
optional ObjectDetection object_detection_task = 4;
// Object center prediction parameters
optional ObjectCenterParams object_center_params = 5;
}
来源
在运行目标检测训练时,系统遵循以下流程
pipeline.config 解析配置对于推理,流程是
来源
目标检测模块需要多个依赖项
| 依赖项 | 目的 |
|---|---|
| TensorFlow ≥ 2.5 | Core ML 框架 |
| tf-models-official | 官方 TF 模型 |
| Pillow | 图像处理 |
| lxml | XML 解析 |
| Cython | 用于 COCO API |
| pycocotools | 用于 COCO 评估 |
| tensorflow_io | 附加数据格式支持 |
安装通常通过 pip 处理
pip install -e ./research/object_detection/packages/tf2/
来源
目标检测模块提供了一个灵活的框架,用于训练和部署不同的目标检测架构。通过将数据管道、模型架构和训练循环分开,它允许研究人员和从业人员在保持系统其余部分不变的情况下尝试不同的组件。
模块化设计支持
这种灵活性使其成为计算机视觉研究和实际应用中的强大工具。