谷歌宣布 TensorFlow Object Detection API(OD)支持 TensorFlow 2(TF2)。该版本包含与 eager 模式兼容的二进制文件、两个新的网络架构和针对所有受支持模型的预训练权重。
软件工程师 Vivek Rathod 和研究科学家 Jonathan Huang 在 TensorFlow 博客上对新版本的新特性做了概述。大部分工作是让现有的预训练模型与 TF2 兼容,对模型代码进行移植,使用了 Keras 层,并提供权重作为 TF2 检查点。OD 框架还支持同步分布式训练,以及用于训练、评估和导出的 eager 模式二进制文件。虽然所有的新模型和新的开发工作都只与 TF2 有关,但 TF1 仍然受支持。大多数代码模块都兼容 TensorFlow 的两个版本,不兼容的模块则分成两个版本。Rathod 和 Huang 写道:
我们的想法是让 TF2 和 Keras 的所有好处都暴露出来,同时继续为 TF1 的广大用户群提供支持。
TensorFlow Object Detection API 是“一个建立在 TensorFlow 之上的开源框架,让对象检测模型的构建、训练和部署变得更加容易”。这个框架包含了一组用于管理图像数据输入和对象检测模型接口的工具。一般来说,目标检测模型的输入是一个图像,然后输出一组方框,表示在图像中检测到的物体位置。OD API 还提供了预训练“模型动物园”,这对于开发自定义对象检测应用程序非常有用。“模型动物园”包含了几种流行的深度学习计算机视觉架构,如 MobileNet和 ResNet,它们是基于 Common Objects in Context(COCO) 2017 数据集进行训练的。
TensorFlow 2 于 2019 年 9 月发布,采用 Keras 作为定义模型的官方高级 API。Keras 最初被设想为定义神经网络的接口,支持后端,包括 TensorFlow 和 Theano。TF2 还将 eager 执行设置为默认模式,让开发和调试变得更加容易。新的 OD API 利用了这些特性。预训练的模型使用 Keras 层重新实现,权重以 TF2 检查点格式进行保存。OD 框架中的辅助代码已经经过编译,开发人员可以通过交互式的方式来调试模型。新的 OD API 还支持同步分布式训练,可以加快大型模型的训练,同时不会降低准确性(相比异步分布式训练)。
除了移植现有模型,新版本还包含了两个新的模型架构: CenterNet和 EfficientDet。CenterNet 使用单点来表示对象位置,而不是方框,并具备“最佳的速度和精度权衡”(基于 COCO 数据集)。EfficientDet 是一个新的对象检测模型,比之前的 SOTA 模型体积小了 4 倍到 9 倍,使用更少的 FLOP(13 倍到 42 倍)。
一名 Reddit 用户评论道:
EfficientDet 看起来真的很有前途,它们致力于通过 TF2 让训练 OD 模型变得更容易。不过我觉得 TF 团队绝对可以投入一些资源来构建一个更简单的 Object Detection API,可以从 Torch Hub、Huggingface 甚至 Tensorflow Hub 获得灵感。
Object Detection API源代码和预训练模型可以在 GitHub 上找到。
原文链接 :
Google Announces TensorFlow 2 Support in Object Detection API
评论