作者 |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 name | Speed (ms) | COCO mAP | Outputs |
---|---|---|---|
CenterNet HourGlass104 512×512 | 70 | 41.9 | Boxes |
CenterNet HourGlass104 Keypoints 512×512 | 76 | 40.0/61.4 | Boxes/Keypoints |
CenterNet HourGlass104 1024×1024 | 197 | 44.5 | Boxes |
CenterNet HourGlass104 Keypoints 1024×1024 | 211 | 42.8/64.5 | Boxes/Keypoints |
CenterNet Resnet50 V1 FPN 512×512 | 27 | 31.2 | Boxes |
CenterNet Resnet50 V1 FPN Keypoints 512×512 | 30 | 29.3/50.7 | Boxes/Keypoints |
CenterNet Resnet101 V1 FPN 512×512 | 34 | 34.2 | Boxes |
CenterNet Resnet50 V2 512×512 | 27 | 29.5 | Boxes |
CenterNet Resnet50 V2 Keypoints 512×512 | 30 | 27.6/48.2 | Boxes/Keypoints |
EfficientDet D0 512×512 | 39 | 33.6 | Boxes |
EfficientDet D1 640×640 | 54 | 38.4 | Boxes |
EfficientDet D2 768×768 | 67 | 41.8 | Boxes |
EfficientDet D3 896×896 | 95 | 45.4 | Boxes |
EfficientDet D4 1024×1024 | 133 | 48.5 | Boxes |
EfficientDet D5 1280×1280 | 222 | 49.7 | Boxes |
EfficientDet D6 1280×1280 | 268 | 50.5 | Boxes |
EfficientDet D7 1536×1536 | 325 | 51.2 | Boxes |
SSD MobileNet v2 320×320 | 19 | 20.2 | Boxes |
SSD MobileNet V1 FPN 640×640 | 48 | 29.1 | Boxes |
SSD MobileNet V2 FPNLite 320×320 | 22 | 22.2 | Boxes |
SSD MobileNet V2 FPNLite 640×640 | 39 | 28.2 | Boxes |
SSD ResNet50 V1 FPN 640×640 (RetinaNet50) | 46 | 34.3 | Boxes |
SSD ResNet50 V1 FPN 1024×1024 (RetinaNet50) | 87 | 38.3 | Boxes |
SSD ResNet101 V1 FPN 640×640 (RetinaNet101) | 57 | 35.6 | Boxes |
SSD ResNet101 V1 FPN 1024×1024 (RetinaNet101) | 104 | 39.5 | Boxes |
SSD ResNet152 V1 FPN 640×640 (RetinaNet152) | 80 | 35.4 | Boxes |
SSD ResNet152 V1 FPN 1024×1024 (RetinaNet152) | 111 | 39.6 | Boxes |
Faster R-CNN ResNet50 V1 640×640 | 53 | 29.3 | Boxes |
Faster R-CNN ResNet50 V1 1024×1024 | 65 | 31.0 | Boxes |
Faster R-CNN ResNet50 V1 800×1333 | 65 | 31.6 | Boxes |
Faster R-CNN ResNet101 V1 640×640 | 55 | 31.8 | Boxes |
Faster R-CNN ResNet101 V1 1024×1024 | 72 | 37.1 | Boxes |
Faster R-CNN ResNet101 V1 800×1333 | 77 | 36.6 | Boxes |
Faster R-CNN ResNet152 V1 640×640 | 64 | 32.4 | Boxes |
Faster R-CNN ResNet152 V1 1024×1024 | 85 | 37.6 | Boxes |
Faster R-CNN ResNet152 V1 800×1333 | 101 | 37.4 | Boxes |
Faster R-CNN Inception ResNet V2 640×640 | 206 | 37.7 | Boxes |
Faster R-CNN Inception ResNet V2 1024×1024 | 236 | 38.7 | Boxes |
Mask R-CNN Inception ResNet V2 1024×1024 | 301 | 39.0/34.6 | Boxes/Masks |
ExtremeNet | — | — | Boxes |
在上表中,你能够看到表中只给出了均匀 COCO mAP 度量。只管对于模型的性能来说,这是一个相当好的方向,然而如果你对模型在不同大小或不同类型的对象上的执行状况感兴趣,那么附加的统计信息可能十分有用。例如,如果你对开发高级驱动辅助零碎 (ADAS) 感兴趣,那么你并不真正关怀检测器检测香蕉的能力是否不好!
在这篇博客中,咱们将重点解释如何对 TF2 Model Zoo 中现成的、通过预训练的 EfficientDet 检查点进行具体评估。
EfficientDets OD 模型
EfficientDet 是一种与 RetinaNet 模型十分类似的单次探测器,有几个改良:EfficientNet backbone、weighted 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 个局部:
- Modell_config。这定义了将要训练的模型类型(即元体系结构、特征提取器…)。
- train_config,它决定应该应用哪些参数来训练模型参数(即,SGD 参数、输出预处理和特征提取程序初始化值…)。
- eval_config,它确定将报告哪些度量以供评估。
- train_input_config,它定义了模型应该在哪个数据集上训练。
- 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 Task
task = 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/