
如何快速實現REST API集成以優化業務流程
在上表中,你可以看到表中只給出了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.09070.pdf
為了提高目標檢測模型的準確性,通常的方法是增加輸入圖像的大小或使用更大的骨干網。復合縮放不是在單一維度或有限的縮放維度上操作,而是聯合縮放中樞、特征網絡和盒/類預測網絡的分辨率/深度/寬度。
具有不同縮放因子的EfficientDet模型包含在tf OD API Model Zoo中,縮放因子用模型名稱中的{X}表示,而輸入圖像分辨率表示為{RES}X{RES}EfficientDet D{X}{RES}X{RES}。
復合縮放配置效率設置。資料來源:https://arxiv.org/pdf/1911.09070.pdf
EfficientDet體系結構以EfficientNet為骨干網,BiFPN為特征網絡,共享類/盒預測網絡。資料來源:https://arxiv.org/pdf/1911.09070.pdf
我們進行詳細的精度比較,以研究復合縮放配置對網絡本身性能的影響。
我們創建了一個google colab Notebook,其中我們解釋了如何對模型進行評估,以及如何有效地比較評估結果。我們希望獲取詳細的評估統計數據,包括每個類和不同對象大小的統計信息。
不幸的是,tf od api不支持這種現成的統計信息,這就是為什么我們創建了TF OD repo的一個分支,并更新了相關的腳本,以按照本issue中給出的說明引入此功能:https://github.com/tensorflow/models/issues/4778#issuecomment-430262110
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/concepts_arch/concepts_arch/
在此鏈接中,你可以找到對包含在TF2 OD API中的8個EfficientDet模型的評估結果。我們將這些實驗命名為efficientdet_d{X}_coco17_tpu-32
,其中{x}表示efficientdet模型的復合比例因子。如果你運行Colab Notebook,你會得到同樣的結果,實驗結果會顯示在demo Trains服務器上:https://demoapp.trains.allegro.ai/。
在本節中,我們將向你展示如何有效地比較不同的模型,并在評估數據集中驗證它們的性能。我們使用COCO 2017 Val數據集,因為它是用于評估TF OD API中目標檢測模型的標準數據集。
我們對COCO目標檢測模型評估度量感興趣,這個頁面包含我們感興趣的所有指標的圖表:https://demoapp.trains.allegro.ai/projects/8d752f81080b46cb9bf6ebcaf35bc8d2/experiments/950e39d811aa413d81aa0f2c8cbf0e5a/info-output/metrics/scalar?columns=selected&columns=type&columns=name&columns=tags&columns=status&columns=project.name&columns=users&columns=started&columns=last_update&columns=last_iteration&order=-name
我們可以先看看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作為有效的實驗管理解決方案,實現強大的洞察力和統計數據;最后,我們展示了目標檢測在構建環境中的一些實際應用。
[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/models/tree/master/research/object_detection
[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.com/new-tf2-object-detection-5c6ea8362a8c
文章轉自微信公眾號@深度學習與計算機視覺