做者|Ivan Ralašić
编译|VK
来源|Analytics Vidhyapython
Tensorflow目标检测API(TF OD API)刚刚变得更好。最近,Google发布了tf od api的新版本,它如今支持Tensorflow 2.x,这是一个咱们一直在等待的巨大改进!
最近目标检测(OD)的改进是由工业界普遍采用该技术所推进的。汽车制造商使用目标检测来帮助车辆自主驾驶道路,医生使用它改进诊断过程,农民使用它来检测各类农做物疾病……还有许多其余的使用案例(还没有发现),OD能够提供巨大的价值。git
Tensorflow是一个深度学习框架,为天然语言处理(NLP)、语音合成、语义分割和目标检测等领域的许多最早进(SOTA)模型提供了支持。tf od api是一个开放源码的目标检测模型集合,它被深度学习爱好者和该领域的不一样专家使用。github
如今,当咱们讨论了基本术语以后,让咱们看看新的tf od api提供了什么!算法
新的TF2 OD API引入了Eager执行,使得对象检测模型的调试更加容易;它还包括TF2 Model Zoo支持的新的SOTA模型。对于Tensorflow 1.x的好消息是新的OD API是向后兼容的,因此若是你喜欢,你仍然可使用TF1,尽管强烈建议切换到TF2 !api
除了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模型也提供了一个很好的性能基准测试!网络
根据你的要求,你能够从一长串不一样型号中进行选择(速度与精度):app
Model name | Speed (ms) | COCO mAP | Outputs |
---|---|---|---|
CenterNet HourGlass104 512x512 | 70 | 41.9 | Boxes |
CenterNet HourGlass104 Keypoints 512x512 | 76 | 40.0/61.4 | Boxes/Keypoints |
CenterNet HourGlass104 1024x1024 | 197 | 44.5 | Boxes |
CenterNet HourGlass104 Keypoints 1024x1024 | 211 | 42.8/64.5 | Boxes/Keypoints |
CenterNet Resnet50 V1 FPN 512x512 | 27 | 31.2 | Boxes |
CenterNet Resnet50 V1 FPN Keypoints 512x512 | 30 | 29.3/50.7 | Boxes/Keypoints |
CenterNet Resnet101 V1 FPN 512x512 | 34 | 34.2 | Boxes |
CenterNet Resnet50 V2 512x512 | 27 | 29.5 | Boxes |
CenterNet Resnet50 V2 Keypoints 512x512 | 30 | 27.6/48.2 | Boxes/Keypoints |
EfficientDet D0 512x512 | 39 | 33.6 | Boxes |
EfficientDet D1 640x640 | 54 | 38.4 | Boxes |
EfficientDet D2 768x768 | 67 | 41.8 | Boxes |
EfficientDet D3 896x896 | 95 | 45.4 | Boxes |
EfficientDet D4 1024x1024 | 133 | 48.5 | Boxes |
EfficientDet D5 1280x1280 | 222 | 49.7 | Boxes |
EfficientDet D6 1280x1280 | 268 | 50.5 | Boxes |
EfficientDet D7 1536x1536 | 325 | 51.2 | Boxes |
SSD MobileNet v2 320x320 | 19 | 20.2 | Boxes |
SSD MobileNet V1 FPN 640x640 | 48 | 29.1 | Boxes |
SSD MobileNet V2 FPNLite 320x320 | 22 | 22.2 | Boxes |
SSD MobileNet V2 FPNLite 640x640 | 39 | 28.2 | Boxes |
SSD ResNet50 V1 FPN 640x640 (RetinaNet50) | 46 | 34.3 | Boxes |
SSD ResNet50 V1 FPN 1024x1024 (RetinaNet50) | 87 | 38.3 | Boxes |
SSD ResNet101 V1 FPN 640x640 (RetinaNet101) | 57 | 35.6 | Boxes |
SSD ResNet101 V1 FPN 1024x1024 (RetinaNet101) | 104 | 39.5 | Boxes |
SSD ResNet152 V1 FPN 640x640 (RetinaNet152) | 80 | 35.4 | Boxes |
SSD ResNet152 V1 FPN 1024x1024 (RetinaNet152) | 111 | 39.6 | Boxes |
Faster R-CNN ResNet50 V1 640x640 | 53 | 29.3 | Boxes |
Faster R-CNN ResNet50 V1 1024x1024 | 65 | 31.0 | Boxes |
Faster R-CNN ResNet50 V1 800x1333 | 65 | 31.6 | Boxes |
Faster R-CNN ResNet101 V1 640x640 | 55 | 31.8 | Boxes |
Faster R-CNN ResNet101 V1 1024x1024 | 72 | 37.1 | Boxes |
Faster R-CNN ResNet101 V1 800x1333 | 77 | 36.6 | Boxes |
Faster R-CNN ResNet152 V1 640x640 | 64 | 32.4 | Boxes |
Faster R-CNN ResNet152 V1 1024x1024 | 85 | 37.6 | Boxes |
Faster R-CNN ResNet152 V1 800x1333 | 101 | 37.4 | Boxes |
Faster R-CNN Inception ResNet V2 640x640 | 206 | 37.7 | Boxes |
Faster R-CNN Inception ResNet V2 1024x1024 | 236 | 38.7 | Boxes |
Mask R-CNN Inception ResNet V2 1024x1024 | 301 | 39.0/34.6 | Boxes/Masks |
ExtremeNet | -- | -- | Boxes |
在上表中,你能够看到表中只给出了平均COCO mAP 度量。尽管对于模型的性能来讲,这是一个至关好的方向,可是若是你对模型在不一样大小或不一样类型的对象上的执行状况感兴趣,那么附加的统计信息可能很是有用。例如,若是你对开发高级驱动辅助系统(ADAS)感兴趣,那么你并不真正关心检测器检测香蕉的能力是否很差!框架
在这篇博客中,咱们将重点解释如何对TF2 Model Zoo中现成的、通过预训练的EfficientDet检查点进行详细评估。
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...
咱们但愿进行详细的精度比较,以研究复合缩放配置对网络自己性能的影响。
基于这个缘由,咱们建立了一个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个部分:
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。很容易将其集成到代码中,而且能够实现开箱即用的不一样功能。它能够做为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...
在此连接中,你能够找到对包含在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模型的比较,或者你认为对你的应用程序感兴趣的任何东西。
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/