Categories
程式開發

谷歌宣布TensorFlow Object Detection API支持TensorFlow 2


谷歌宣布 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还提供了预训练“模型动物园”,这对于开发自定义对象检测应用程序非常有用。“模型动物园”包含了几种流行的深度学习计算机视觉架构,如 MobileNetResNet,它们是基于 Common Objects in Context(COCO) 2017数据集进行训练的。

TensorFlow 2于2019年9月发布,采用Keras作为定义模型的官方高级API。Keras最初被设想为定义神经网络的接口,支持后端,包括TensorFlow和 Theano。TF2还将eager执行设置为默认模式,让开发和调试变得更加容易。新的OD API利用了这些特性。预训练的模型使用Keras层重新实现,权重以TF2检查点格式进行保存。OD框架中的辅助代码已经经过编译,开发人员可以通过交互式的方式来调试模型。新的OD API还支持同步分布式训练,可以加快大型模型的训练,同时不会降低准确性(相比异步分布式训练)。

除了移植现有模型,新版本还包含了两个新的模型架构: CenterNetEfficientDet。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