NVIDIA 公開課|詳解遷移式學習下的實時目標檢測模型訓練與部署

主講人 | 何琨 NVIDIA 量子位編輯 | 公眾號 QbitAI

2月27日,NVIDIA 影像處理系列公開課第一期線上開播,跟數百位開發者同學共同探討了如何利用 NVIDIA 遷移式學習工具包和Deepstream實現實時目標檢測。

應讀者要求,將分享內容整理成文,與大家分享,文末附有實戰notebook。

大家好,今天要給大家介紹的工具是NVIDIA Transfer Learning Toolkit(遷移式學習工具包,簡稱TLT)和DeepStream SDK。

這張圖很好的詮釋了深度學習的框架,從應用角度來說,視覺、語音識別、NLP、情感與推薦系統等是目前發展較快的領域。市面上有很多框架支援這些深度學習的應用,如Caffe、TensorFlow、PyTorch等,而支撐起這些框架的基礎是強大的計算能力。

NVIDIA提供了大量的GPU、邊緣設備等,為深度學習框架、推理訓練提供了強大的支撐能力。在NVIDIA CUDA生態系統上,建立了cuDNN、TensorRT、DeepStream SDK、cuBLAS等一系列工具,都是中層的框架應用的基礎的內容。

今天要介紹的遷移式學習工具包,串聯起了下面一層的工具(最後一個除外),是一個非常好用的工具。

今天的分享主要介紹TLT,以及將訓練出的模型放到DeepStream SDK上。

DeepStream SDK

DeepStream SDK是為大規模創建和部署基於AI的影片分析應用程式解決方案而設計的,涵蓋了影片處理部署階段的所有模組,它提供了完整的框架和所有基本構建模組。可以讓開發者專註於自己的核心深度學習網路和IP,而不是從頭開始設計端到端解決方案。

最新的DeepStream 已經成為一個通用的工具,支援多平台、跨平台的應用,支援多系列顯示卡,也可以放到嵌入式平台,對記憶體的管理方面節約了計算資源,減少介面使用,編解碼加速等方面也有所提升。

下面展示一個例子,以下兩個影片都是基於Yolo v3網路,我們將Batch Sizing都設為1。

上圖是未優化的,結果是大概1幀每秒的推理速度,而下圖是僅用DeepStream優化過,已經達到了4.5幀每秒,也就是說達到了4倍的優化效果。

DeepStream推理加速的核心是TensorRT,一個GPU推理引擎工具,我們製作了很多講解的影片和官方案例,大家可以在優酷搜索「NVIDIA 中國」查看。

遷移式學習工具包

另一個工具是NVIDIA Transfer Learning Tooklkit。TLT是一個基於Python的工具包,它提供了大量預先訓練的模型,並提供一系列的工具,使流行的網路架構適應開發者自己的數據,並且能夠訓練、調整、修剪和導出模型,以進行部署,大大提高深度學習工作流的效率。

TLT還有一個功能是,在異構多GPU環境下模型訓練或調整效果非常好,並且訓練處的模型可以直接部署到Tesla、Jetson等產品上。

目標檢測實戰

接下來我們一步一步介紹從安裝到出模型到推理的使用方式。

這裡列舉了30多種常用模型,大家可以在程式碼中找到。為應用在電腦視覺領域的深度學習工作流程,提供了全方位的便利。

首先我們需要在NGC(https://www.nvidia.cn/gpu-cloud/)下載工具和模型,並進行初步訓練、剪枝、再訓練。輸出的模型直接放在TensorRT。

接下來在伺服器上部署TLT,我們推薦了一些硬體。

其中,Ubuntu使用16.04LTS以上即可,GPU driver需要v410及以上版本,DeepStream推薦使用4.0以上版本。

首先需要安裝docker,生成API Key,這個Key很重要,生成後一定要保存起來。

接下來在伺服器上運行TLT鏡像。

標紅處需要用v1.0.1_py2。

進入操作介面後,我們需要在Server端訓練模型、優化、評估、數據預處理、模型轉換等流程,在Jetson端部署利用引擎。

* 接下來詳解了程式碼的部署。受限於文字描述,我們將操作流程Notebook上傳至網盤,同時可下載直播回放、PPT等資料,正在學習的小夥伴可以直接下載查看:

提取鏈接:https://pan.baidu.com/s/1o_5yA8DYGTk3rz5i2oJmeQ

提取碼:nveu

接下來的課程,我們也將分享更多能實際運行的程式碼。也歡迎訪問NVIDIA 開發者社區,獲取更多資源:https://developer.nvidia-china.com。