英偉達CV公開課第1期:快速搭建基于Python的車輛信息識別系統
隨著智慧城市、自動駕駛的快速落地,車輛的檢測和識別應用場景非常廣泛,如車牌識別、車流統計、車輛屬性識別等。
近日,在英偉達x量子位發起的系列CV公開課第一期課程直播中,NVIDIA社區開發者經理何琨老師分享了如何利用TLT 3.0、DeepStream等工具低門檻、快速搭建一個車輛信息識別系統。
分享大綱如下:
·?車輛信息識別任務介紹
·?NVIDIA DeepStream SDK簡介及其使用
·?NVIDIA Transfer Learning Toolkit介紹及其使用
·?實戰演示:快速搭建車輛信息識別系統
·?下期直播報名
以下為分享內容整理:
大家好,我來自NVIDIA開發者社區,今天的分享內容是“快速搭建基于Python的車輛信息識別系統”。
今天的分享仍然以一個具體的項目來做實例,包含源碼和部署流程,課后會把課程PPT、源碼分享給大家(見文末),希望大家能夠有所收獲。
車輛信息識別任務
首先,通過這個動圖說明我們今天“車輛信息識別”的任務,首先我們需要檢測到車輛,然后檢測到這輛車的車牌并識別;另外我們還需要識別這輛車的顏色、品牌、類型等。這就是我們今天課程的任務,我們可以將上述任務拆解為5個小任務:
1.檢測到車輛
2.識別車類型
3.識別車品牌
4.檢測到車牌
5.識別車牌號
我將分兩部分演示這5個小任務。一部分是完成車輛檢測,車牌檢測與識別;另一部分是識別車輛品牌與車輛型號。
拿到這個任務,首先我們需要考慮采用什么樣的數據集;其次在訓練過程中還要考慮在什么框架下完成訓練,如何對模型進行剪枝、優化;模型訓練完成后,還需要考慮部署到哪里,比如服務器終端還是一些嵌入式產品。
首先,是數據的準備部分。NVIDIA提供的是一些美國車牌的視頻,跟國內車牌有一些區別。大家在實際訓練中,可以自行收集更合適的數據集。
其次,為快速完成一個模型訓練,需要用到遷移學習工具:Transfer Learning Toolkit(TLT)。
最后,部署模型時,可以使用DeepStream工具便捷實現。
在今天的示例展示開始前,先為大家介紹一下這兩個工具的功能及如何使用。
NVIDIA DeepStream SDK
DeepStream是NVIDIA專門為視覺相關的應用來設計的一整套工具鏈,集成了很多工具。
它的核心任務之一是幫用戶搭建視頻應用的完整產業鏈。當我們要做一個基于視覺的應用時,我們不只是在訓練一個模型,還需要處理很多流程,比如編解碼、批處理等,DeepStream可以幫助用戶完成這些流程。
如上圖,最底層基礎部分,NVIDIA有一系列的硬件;
再往上看,在不同硬件部署時,我們可以再采用不同的基于CUDA-X的工具,比如要做視頻的編、解碼可能用到CUDA,做視頻的inference時可以用到TensorRT、Triton Inference Server,不同的工具對應不同的調用方式;
大家用DeepStream搭建系統時,只需要調用DeepStream SDK這一個應用,它是一系列軟件搭建起來的工具的集合,并且可以投產于真實的項目中。
如何使用DeepStream?
說明文檔:https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_Quickstart.html#quickstart-guide
具體看下DeepStream SDK每一步的處理過程。
我們要搭建一個基于視覺應用的程序,第一步是數據源。今天我們展示的實例代碼是基于本地的視頻,大家也可以使用不同的視頻源,都可以接入到SDK系統里。
第二步,對視頻源的數據進行處理。包括Code、DeCode的過程,使程序、算法能夠直接使用和識別數據。這一步可以極大提升我們的處理效率、節省時間。
第三步,視頻預處理,包括縮放、剪切、調整分辨率等。
第四步,Batching,即設置一定延遲,將幾張圖片組合起來,組成一張大圖再傳輸給GPU,同時處理多張圖片來提高效率。
第五步,深度學習推理任務。這里可以使用您已有的模型、或者NVIDIA提供的預訓練模型等,不需要再從頭開始進行訓練。推理主要包含檢測、識別、圖像分割三部分,今天的課程任務都會涵蓋到。
推理完成后,還可以進行二級推理網絡或者多級網絡的搭建。比如今天的課程任務,檢測到車輛后,再在檢測框里檢測車牌,就是二級網絡。接下來可能還要識別車牌號,這個識別網絡就是三級網絡。
第六步,深度學習的結果出來之后,針對某些需要Tracking的任務,DeepStream里邊也已經內置了相應模塊,直接調用就可以進行跟蹤任務的處理。
這時,主要的計算任務就完成了,第七步就需要將結果顯示出來,比如顯示在屏幕上、傳輸到遠端,或者儲存為本地的文件。(今天直播里我們將用到一個嵌入式設備—NX來顯示畫面,將處理完的視頻存到本地后播放。)
以上就是一套完整的流程,我們通過使用DeepStream SDK,只需100多行代碼就可以實現整個流程。
上圖是關于DeepStream的注意事項,大家在實際應用的時候,可以參考相關內容、應用場景等。
TensorRT
TensorRT是英偉達專門為GPU深度學習推理設置的一個工具(相關課程可參考英偉達開發者社區:https://www.nvidia.cn/developer/online-training/community-training/),可以幫助GPU更快的做深度學習推理任務。
它會在內部做一系列優化,如精度校正,動態Memory,多流的執行,Kernel調用,網絡層融合計算等。正是通過這一系列優化,生成了可執行的推理引擎,就可以進行一個深度學習推理任務。
NVIDIA Transfer Learning Toolkit
接下來介紹一下NVIDIA Transfer Learning Toolkit(TLT)工具。
上述介紹了部署工具,那么如何得到推理引擎呢?這就需要用到TLT工具(目前版本已更新至TLT 3.0)。
TLT 3.0是一個簡單的、集成化的工具,可以幫助大家快速地訓練一個模型,并且把這個模型轉化成TensorRT或者DeepStream可以直接使用的深度學習推理引擎。
TLT 3.0為開發者提供了一系列的預訓練模型,并且提供了一系列工具,大家可以在預訓練模型的基礎上進行模型訓練、調整、剪枝,以及導出模型進行部署等。而且大家可以通過簡單的幾行代碼來實現上述功能。
目前,TLT 3.0已經涵蓋了很多內容,在視覺、語音等方面都有很多可以實際應用的模型。
我們今天的主題是“車輛信息識別”,課程任務中主要會涉及圖像分類、目標檢測和圖像分割方面的預訓練模型,大家都可以去NGC下載(ngc.nvidia.com)。
實戰演示:快速搭建車輛信息識別系統
接下來,何琨老師通過代碼演示,帶大家實現了“車輛信息識別”任務。大家可觀看視頻、繼續學習:
直播回放:
源代碼下載鏈接:
Python:https://github.com/NVIDIA-AI-IOT/deepstream_python_apps
C:https://github.com/NVIDIA-AI-IOT/deepstream_lpr_app
課程PPT鏈接:https://images.nvidia.cn/cn/webinars/2021/May18/%E5%BF%AB%E9%80%9F%E6%90%AD%E5%BB%BA%E5%9F%BA%E4%BA%8EPython%E7%9A%84%E8%BD%A6%E8%BE%86%E4%BF%A1%E6%81%AF%E8%AF%86%E5%88%AB%E7%B3%BB%E7%BB%9F.pdf
—?完?—
- 天云數據CEO雷濤:從軟件到數件,AI生態如何建立自己的“Android”?| 量子位·視點分享回顧2022-03-23
- 火熱報名中丨2022實景三維創新峰會成都站將于4月13日召開!2022-03-21
- 從軟件到數件,AI生態如何建立自己的“Android”?天云數據CEO直播詳解,可預約 | 量子位·視點2022-03-11
- 什么樣的AI制藥創企才能走得更遠?來聽聽業內怎么說|直播報名2022-03-03




