TF2目標檢測API

做者|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提供了什麼!算法


新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檢查點進行詳細評估。


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 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/

相關文章
相關標籤/搜索