作者|Ivan Ralašić
编译|VK
起源|Analytics Vidhya

Tensorflow指标检测API(TF OD API)刚刚变得更好。最近,Google公布了tf od api的新版本,它当初反对Tensorflow 2.x,这是一个咱们始终在期待的微小改良!

简介

最近指标检测(OD)的改良是由工业界宽泛采纳该技术所推动的。汽车制造商应用指标检测来帮忙车辆自主驾驶路线,医生应用它改良诊断过程,农民应用它来检测各种农作物疾病……还有许多其余的应用案例(尚未发现),OD能够提供微小的价值。

Tensorflow是一个深度学习框架,为自然语言解决(NLP)、语音合成、语义宰割和指标检测等畛域的许多最先进(SOTA)模型提供了反对。tf od api是一个开放源码的指标检测模型汇合,它被深度学习爱好者和该畛域的不同专家应用。

当初,当咱们探讨了根本术语之后,让咱们看看新的tf od api提供了什么!


新TF OD API

新的TF2 OD API引入了Eager执行,使得对象检测模型的调试更加容易;它还包含TF2 Model Zoo反对的新的SOTA模型。对于Tensorflow 1.x的好消息是新的OD API是向后兼容的,所以如果你喜爱,你依然能够应用TF1,只管强烈建议切换到TF2 !

除了SSD (MobileNet/ResNet),Faster R-CNN (ResNet/Inception ResNet),和Mask R-CNN模型在TF1 Model Zoo,TF2 Model Zoo引入了新的SOTA模型,如CenterNet, ExtremeNet,和EfficientDet。

TF2 OD API Model Zoo 中的模型是在COCO 2017数据集上预训练的,如果你对数据集中曾经蕴含的类别感兴趣或在新的数据集中进行训练时能够用预训练模型初始化你的模型。预训练模型对于开箱即用的推断很有用。

应用TF OD API模型而不是本人实现SOTA模型能够让你有更多的工夫关注数据,这是实现OD模型高性能的另一个关键因素。然而,即便你决定本人构建模型,TF OD API模型也提供了一个很好的性能基准测试!

依据你的要求,你能够从一长串不同型号中进行抉择(速度与精度):

Model nameSpeed (ms)COCO mAPOutputs
CenterNet HourGlass104 512x5127041.9Boxes
CenterNet HourGlass104 Keypoints 512x5127640.0/61.4Boxes/Keypoints
CenterNet HourGlass104 1024x102419744.5Boxes
CenterNet HourGlass104 Keypoints 1024x102421142.8/64.5Boxes/Keypoints
CenterNet Resnet50 V1 FPN 512x5122731.2Boxes
CenterNet Resnet50 V1 FPN Keypoints 512x5123029.3/50.7Boxes/Keypoints
CenterNet Resnet101 V1 FPN 512x5123434.2Boxes
CenterNet Resnet50 V2 512x5122729.5Boxes
CenterNet Resnet50 V2 Keypoints 512x5123027.6/48.2Boxes/Keypoints
EfficientDet D0 512x5123933.6Boxes
EfficientDet D1 640x6405438.4Boxes
EfficientDet D2 768x7686741.8Boxes
EfficientDet D3 896x8969545.4Boxes
EfficientDet D4 1024x102413348.5Boxes
EfficientDet D5 1280x128022249.7Boxes
EfficientDet D6 1280x128026850.5Boxes
EfficientDet D7 1536x153632551.2Boxes
SSD MobileNet v2 320x3201920.2Boxes
SSD MobileNet V1 FPN 640x6404829.1Boxes
SSD MobileNet V2 FPNLite 320x3202222.2Boxes
SSD MobileNet V2 FPNLite 640x6403928.2Boxes
SSD ResNet50 V1 FPN 640x640 (RetinaNet50)4634.3Boxes
SSD ResNet50 V1 FPN 1024x1024 (RetinaNet50)8738.3Boxes
SSD ResNet101 V1 FPN 640x640 (RetinaNet101)5735.6Boxes
SSD ResNet101 V1 FPN 1024x1024 (RetinaNet101)10439.5Boxes
SSD ResNet152 V1 FPN 640x640 (RetinaNet152)8035.4Boxes
SSD ResNet152 V1 FPN 1024x1024 (RetinaNet152)11139.6Boxes
Faster R-CNN ResNet50 V1 640x6405329.3Boxes
Faster R-CNN ResNet50 V1 1024x10246531.0Boxes
Faster R-CNN ResNet50 V1 800x13336531.6Boxes
Faster R-CNN ResNet101 V1 640x6405531.8Boxes
Faster R-CNN ResNet101 V1 1024x10247237.1Boxes
Faster R-CNN ResNet101 V1 800x13337736.6Boxes
Faster R-CNN ResNet152 V1 640x6406432.4Boxes
Faster R-CNN ResNet152 V1 1024x10248537.6Boxes
Faster R-CNN ResNet152 V1 800x133310137.4Boxes
Faster R-CNN Inception ResNet V2 640x64020637.7Boxes
Faster R-CNN Inception ResNet V2 1024x102423638.7Boxes
Mask R-CNN Inception ResNet V2 1024x102430139.0/34.6Boxes/Masks
ExtremeNet----Boxes

在上表中,你能够看到表中只给出了均匀COCO mAP 度量。只管对于模型的性能来说,这是一个相当好的方向,然而如果你对模型在不同大小或不同类型的对象上的执行状况感兴趣,那么附加的统计信息可能十分有用。例如,如果你对开发高级驱动辅助零碎(ADAS)感兴趣,那么你并不真正关怀检测器检测香蕉的能力是否不好!

在这篇博客中,咱们将重点解释如何对TF2 Model Zoo中现成的、通过预训练的EfficientDet检查点进行具体评估。


EfficientDets OD模型

EfficientDet是一种与RetinaNet模型十分类似的单次探测器,有几个改良:EfficientNet backboneweighted bi-directional feature pyramid network (BiFPN)和复合缩放办法。

BiFPN是十分风行的FPN的改良版本。该算法在重复利用自顶向下和自下而上的多尺度特色交融的同时,学习示意不同输出特色重要性的权重。

材料起源:https://arxiv.org/pdf/1911.09...

为了进步指标检测模型的准确性,通常的办法是减少输出图像的大小或应用更大的骨干网。复合缩放不是在繁多维度或无限的缩放维度上操作,而是联结缩放中枢、特色网络和盒/类预测网络的分辨率/深度/宽度。

具备不同缩放因子的EfficientDet模型蕴含在tf OD API Model Zoo中,缩放因子用模型名称中的{X}示意,而输出图像分辨率示意为{RES}X{RES}EfficientDet D{X}{RES}X{RES}。

复合缩放配置效率设置。材料起源:https://arxiv.org/pdf/1911.09...

EfficientDet体系结构以EfficientNet为骨干网,BiFPN为特色网络,共享类/盒预测网络。材料起源:https://arxiv.org/pdf/1911.09...


预训练的EfficientDet评估

咱们心愿进行具体的精度比拟,以钻研复合缩放配置对网络自身性能的影响。

基于这个起因,咱们创立了一个google colab Notebook,其中咱们解释了如何对模型进行评估,以及如何无效地比拟评估后果。咱们对具体的评估统计数据感兴趣,包含每个类和不同对象大小的统计信息。

可怜的是,tf od api不反对这种现成的统计信息。这就是为什么咱们创立了TF OD repo的一个分支,并更新了相干的脚本,以依照本issue中给出的阐明引入此性能:https://github.com/tensorflow...

Notebook中,咱们提供了无关如何设置Tensorflow 2和TF2 OD API的阐明。咱们还包含一些脚本,这些脚本能够不便地下载EfficientDet检查点,以及其余脚本,帮忙你获取COCO 2017 Val数据集并创立tf record文件,这些文件在评估阶段由TF OD API应用。

最初,咱们批改pipeline.config用于EfficientDet检查点,为8个EfficientDet检查点的程序评估做好筹备。tfodapi应用它们来配置训练和评估过程。训练管道的模式能够object_detection/protos/pipeline.proto 找到。在较高级别上,配置文件分为5个局部:

  1. Modell_config。这定义了将要训练的模型类型(即元体系结构、特征提取器…)。
  2. train_config,它决定应该应用哪些参数来训练模型参数(即,SGD参数、输出预处理和特征提取程序初始化值…)。
  3. eval_config,它确定将报告哪些度量以供评估。
  4. train_input_config,它定义了模型应该在哪个数据集上训练。
  5. eval_input_config,它定义将对哪个数据集评估模型。通常这应该不同于训练输出数据集。
model {(... Add model config here...)}train_config : {(... Add train_config here...)}train_input_reader: {(... Add train_input configuration here...)}eval_config: {}eval_input_reader: {(... Add eval_input configuration here...)}

咱们只对配置文件的eval_config和eval_input_config局部感兴趣。请认真查看google colab中的这个单元格,以理解无关如何设置eval参数的更多详细信息。

在TF OD API中没有现成启用的另外两个标记是:include_metrics_per_category和all_metrics_per_category。在利用Colab Notebook中给出的补丁后,当设置为true时,这两个将启用咱们感兴趣的具体统计信息(每个类别和大小)!


Allegro Trains-高效试验治理

为了可能无效地比拟模型评估,咱们应用了一个开源的试验管理工具allegro trains。很容易将其集成到代码中,并且能够实现开箱即用的不同性能。它能够作为Tensorboard的替代品,用于可视化试验后果。

OD API中的主脚本是object_detection/model_main_tf2.py。它同时解决训练和评估阶段。咱们创立了一个小脚本,在循环中调用model_main_tf.py来计算所有EfficientDet检查点。

为了将Allegro Trains试验治理集成到评估脚本中,咱们必须增加2(+1)行代码。在model_main_tf2.py脚本中,咱们增加了以下行:

from trains import Tasktask = Task.init(project_name="NAME_OF_THE_PROJECT", task_name="NAME_OF_THE_TASK")# 可选-记录pipeline.config进入训练仪表板task.connect_configuration(FLAGS.pipeline_config_path)

在训练时会主动为你记录很多事件。你能够在这里找到一个全面的特色列表:https://allegro.ai/docs/conce...


比拟不同的EfficientDet模型

在此链接中,你能够找到对蕴含在TF2 OD API中的8个EfficientDet模型的评估后果。咱们将这些试验命名为efficientdet_d{X}_coco17_tpu-32,其中{x}示意efficientdet模型的复合比例因子。如果你运行Colab Notebook,你会失去同样的后果,你的试验会显示在demo Trains服务器上:https://demoapp.trains.allegr...。

在本节中,咱们将向你展现如何无效地比拟不同的模型,并在评估数据集中验证它们的性能。咱们应用COCO 2017 Val数据集,因为它是用于评估TF OD API中指标检测模型的规范数据集。

咱们对COCO指标检测模型评估度量感兴趣。按这里查看试验后果。这个页面蕴含咱们感兴趣的所有指标的图表:https://demoapp.trains.allegr...

咱们能够先看看DetectionBoxes_Precision图,它蕴含数据集中所有类别的均匀精度度量。mAP度量值的值与TF2 Model Zoo中的表中报告的mAP度量值绝对应。

多亏了咱们利用pycocotools的补丁,咱们还能够取得每个类别的mAP度量。因为COCO数据集中有90个类别,咱们想晓得每个类别对均匀精度的奉献。通过这种形式,咱们能够更准确地理解评估模型的性能。

例如,你可能对模型如何仅对特定类别中的小对象执行操作感兴趣。从汇总的统计数据来看,不可能取得这样的论断,而倡议的补丁程序能够做到这一点!

咱们还应用Allegro Trains的能力来比拟多个试验。试验比照表明了模型之间的所有差别。咱们首先能够失去相干统计数据的具体标量和图表比拟。在咱们的示例中,咱们将比拟efficientdetd0、D1和D2模型的性能。显然,复合标度对模型的性能有踊跃的影响。

领有每个类别的统计信息的另一个益处是,你能够剖析复合比例因子对特定类别趣味的准确性的影响。例如,如果你对监控视频中的公交车感兴趣,能够剖析显示公交车类别的mAP性能与EfficientDet模型的复合比例因子的关系图。这有助于决定应用哪种模型,以及性能和计算复杂性之间的最佳地位!

你还能够比拟其中一个乏味的货色是模型配置文件pipeline.config. 你能够看到EfficientDet模型之间的根本区别在于输出图像的尺寸和滤波器的数量/深度,如前所述。

下一个图蕴含3个EfficientDet模型的mAP值。进步输出图像分辨率以及减少模型中滤波器的数量有显著的益处。D0模型的mAP为33.55%,D2模型的mAP为41.79%。你还能够尝试执行每个类的比拟、其余EfficientDet模型的比拟,或者你认为对你的应用程序感兴趣的任何货色。


如何应用TF-OD-API来进步建筑工地的安全性?

Forsight是一个晚期的守业公司,咱们的工作是把建筑工地变成工人的平安环境。Forsight利用计算机视觉和机器学习,解决实时闭路电视画面,帮忙平安工程师监控集体防护设施(PPE)的正确应用,确保现场平安。

咱们的施工现场监控管道建设在TF OD API之上,其性能包含PPE检测和监控、社会间隔跟踪、虚构土工围栏监控、禁止停车区监控和火灾探测。在Forsight,咱们还应用Trains来记录咱们的试验,在团队成员之间分享,并记录所有的事件,以便咱们可能重现。

随着COVID-19流感大风行的继续,世界各地的修建我的项目都在踊跃寻找办法,在保障工人平安的前提下,重新启动或维持我的项目。计算机视觉和机器学习能够帮忙修建经理确保他们的建筑工地是平安的。咱们建设了一个实时监控管道,跟踪员工之间的间隔。

除了COVID带来的新的、有形的威逼外,所有建筑工人每天都面临一些古老的危险,尤其是“致命的四个”:坠落、被物体击中、夹在两头或夹在两头以及触电的危险。确保工人穿戴集体防护用品对建筑工地的整体平安至关重要。tfodapi是构建一个自治的PPE监控管道的一个很好的终点。咱们的下一个博客将探讨如何应用新的tfodapi训练一个根本的头盔探测器。

建筑工地的某些区域比其余中央更危险。创立虚构的土工围栏区域并应用闭路电视摄像头监控这些区域,为施工经理减少了微小的价值,因为他们能够专一于其余工作,同时也能意识到现场产生的任何土工围栏违规事件。此外,天文围栏能够很容易地扩大到监控机器和重型设施的拜访。


论断

在本博客中,咱们探讨了应用新的TF2 OD API的益处。咱们展现了如何无效地评估预训练的OD模型,这些模型能够在tf OD API Model Zoo中找到。咱们还展现了如何应用Allegro Trains作为无效的试验治理解决方案,实现弱小的洞察力和统计数据。最初,咱们展现了指标检测在构建环境中的一些理论利用。

在博客中提供无关应用此博客API的第一个博客的倡议。在下一篇博客中,咱们将展现如何训练一个定制的指标检测器,使你可能检测到穿戴PPE的工人。请追随咱们获取更多的实际教程!


[1] “Speed/accuracy trade-offs for modern convolutional object detectors.”
Huang J, Rathod V, Sun C, Zhu M, Korattikara A, Fathi A, Fischer I, Wojna Z,
Song Y, Guadarrama S, Murphy K, CVPR 2017

[2] TensorFlow Object Detection API, https://github.com/tensorflow...

[3] “EfficientDet: Scalable and Efficient Object Detection” Mingxing Tan, Ruoming Pang, Quoc V. Le, https://arxiv.org/abs/1911.09070

[4] “EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks” Mingxing Tan and Quoc V. Le, 2019, https://arxiv.org/abs/1905.11946

原文链接:https://towardsdatascience.co...

欢送关注磐创AI博客站:
http://panchuang.net/

sklearn机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/