英偉達(dá)CV公開課第1期|詳解遷移式學(xué)習(xí)下的實(shí)時目標(biāo)檢測模型訓(xùn)練與部署
主講人 | 何琨 英偉達(dá)
量子位編輯 | 公眾號 QbitAI
2月27日,英偉達(dá)圖像處理系列公開課第一期線上開播,跟數(shù)百位開發(fā)者同學(xué)共同探討了如何利用 NVIDIA 遷移式學(xué)習(xí)工具包和Deepstream實(shí)現(xiàn)實(shí)時目標(biāo)檢測。
應(yīng)讀者要求,將分享內(nèi)容整理成文,與大家分享,文末附有實(shí)戰(zhàn)notebook。
大家好,今天要給大家介紹的工具是NVIDIA Transfer Learning Toolkit(遷移式學(xué)習(xí)工具包,簡稱TLT)和DeepStream SDK。
這張圖很好的詮釋了深度學(xué)習(xí)的框架,從應(yīng)用角度來說,視覺、語音識別、NLP、情感與推薦系統(tǒng)等是目前發(fā)展較快的領(lǐng)域。市面上有很多框架支持這些深度學(xué)習(xí)的應(yīng)用,如Caffe、TensorFlow、PyTorch等,而支撐起這些框架的基礎(chǔ)是強(qiáng)大的計(jì)算能力。
NVIDIA提供了大量的GPU、邊緣設(shè)備等,為深度學(xué)習(xí)框架、推理訓(xùn)練提供了強(qiáng)大的支撐能力。在英偉達(dá)CUDA生態(tài)系統(tǒng)上,建立了cuDNN、TensorRT、DeepStream SDK、cuBLAS等一系列工具,都是中層的框架應(yīng)用的基礎(chǔ)的內(nèi)容。
今天要介紹的遷移式學(xué)習(xí)工具包,串聯(lián)起了下面一層的工具(最后一個除外),是一個非常好用的工具。
今天的分享主要介紹TLT,以及將訓(xùn)練出的模型放到DeepStream SDK上。
DeepStream SDK
DeepStream SDK是為大規(guī)模創(chuàng)建和部署基于AI的視頻分析應(yīng)用程序解決方案而設(shè)計(jì)的,涵蓋了視頻處理部署階段的所有模塊,它提供了完整的框架和所有基本構(gòu)建模塊。可以讓開發(fā)者專注于自己的核心深度學(xué)習(xí)網(wǎng)絡(luò)和IP,而不是從頭開始設(shè)計(jì)端到端解決方案。
最新的DeepStream 已經(jīng)成為一個通用的工具,支持多平臺、跨平臺的應(yīng)用,支持多系列顯卡,也可以放到嵌入式平臺,對內(nèi)存的管理方面節(jié)約了計(jì)算資源,減少接口使用,編解碼加速等方面也有所提升。
下面展示一個例子,以下兩個視頻都是基于Yolo v3網(wǎng)絡(luò),我們將Batch Sizing都設(shè)為1。
上圖是未優(yōu)化的,結(jié)果是大概1幀每秒的推理速度,而下圖是僅用DeepStream優(yōu)化過,已經(jīng)達(dá)到了4.5幀每秒,也就是說達(dá)到了4倍的優(yōu)化效果。
DeepStream推理加速的核心是TensorRT,一個GPU推理引擎工具,我們制作了很多講解的視頻和官方案例,大家可以在優(yōu)酷搜索“英偉達(dá)中國”查看。
遷移式學(xué)習(xí)工具包
另一個工具是英偉達(dá)Transfer Learning Tooklkit。TLT是一個基于Python的工具包,它提供了大量預(yù)先訓(xùn)練的模型,并提供一系列的工具,使流行的網(wǎng)絡(luò)架構(gòu)適應(yīng)開發(fā)者自己的數(shù)據(jù),并且能夠訓(xùn)練、調(diào)整、修剪和導(dǎo)出模型,以進(jìn)行部署,大大提高深度學(xué)習(xí)工作流的效率。
TLT還有一個功能是,在異構(gòu)多GPU環(huán)境下模型訓(xùn)練或調(diào)整效果非常好,并且訓(xùn)練處的模型可以直接部署到Tesla、Jetson等產(chǎn)品上。
目標(biāo)檢測實(shí)戰(zhàn)
接下來我們一步一步介紹從安裝到出模型到推理的使用方式。
這里列舉了30多種常用模型,大家可以在代碼中找到。為應(yīng)用在計(jì)算機(jī)視覺領(lǐng)域的深度學(xué)習(xí)工作流程,提供了全方位的便利。
首先我們需要在NGC(https://www.nvidia.cn/gpu-cloud/)下載工具和模型,并進(jìn)行初步訓(xùn)練、剪枝、再訓(xùn)練。輸出的模型直接放在TensorRT。
接下來在服務(wù)器上部署TLT,我們推薦了一些硬件。
其中,Ubuntu使用16.04LTS以上即可,GPU driver需要v410及以上版本,DeepStream推薦使用4.0以上版本。
首先需要安裝docker,生成API Key,這個Key很重要,生成后一定要保存起來。
接下來在服務(wù)器上運(yùn)行TLT鏡像。
標(biāo)紅處需要用v1.0.1_py2。
進(jìn)入操作界面后,我們需要在Server端訓(xùn)練模型、優(yōu)化、評估、數(shù)據(jù)預(yù)處理、模型轉(zhuǎn)換等流程,在Jetson端部署利用引擎。
* 接下來詳解了代碼的部署。受限于文字描述,我們將操作流程N(yùn)otebook上傳至網(wǎng)盤,同時可下載直播回放、PPT等資料,正在學(xué)習(xí)的小伙伴可以直接下載查看:
提取鏈接:https://pan.baidu.com/s/1o_5yA8DYGTk3rz5i2oJmeQ
提取碼:nveu
接下來的課程,我們也將分享更多能實(shí)際運(yùn)行的代碼。也歡迎訪問英偉達(dá)開發(fā)者社區(qū),獲取更多資源。