Techo 2020丨騰訊優圖分享最新研究成果和產業實踐

12月19日-20日,由騰訊發起的2020 Techo Park開發者大會於北京順利召開。其中人工智慧專場以「人工智慧演算法與最佳實踐」為主題,為開發者、業界及生態夥伴呈現了雲計算時代下人工智慧領域的最新前沿技術與最佳行業實踐。

騰訊優圖實驗室的研究員梁晨、王亞彪、姚達、楊博分別圍繞AI視覺感測器、視覺演算法在影像編輯生成中的研究與應用、TNN跨平台推理優化、模量化訓練部署及實踐等發表了主題演講,向業界展示了優圖最新研究成果與產業實踐。

在論壇上,梁晨給大家介紹了一個有趣的硬體——AI視覺感測器。什麼是AI視覺感測器呢?它是由攝影機、NPU和演算法組成的硬體模組,其基本運行原理是:在NPU上運行深度學習演算法,能夠直接對攝影機拍攝到的畫面進行實時分析,並將分析的結果通過數字訊號傳輸給主機。

據梁晨介紹,騰訊優圖推出了一款自研的AI視覺感測器——VisionSeed,內置優圖領先的視覺AI演算法,還提供專業的配套工具和全平台的SDK作為支撐,讓開發者可以方便的進行二次開發。

騰訊優圖專家研究員 梁晨

演算法是AI視覺感測器的靈魂,VisionSeed具有很強的擴展性,能適應多種演算法。一是可以適配SSD、YOLO-V4等開源的目標檢測演算法。二是應用於自動駕駛小車競賽領域的車道定位演算法,將VisionSeed安裝在AGV小車的前端,獲取第一人稱視角的車道畫面後,通過演算法輸出小車在車道內的橫向偏移。這個演算法主要通過語義分割進行車道資訊提取,再通過回歸模型直接得到定位結果來完成任務,將這兩個交通標識檢測和車道定位模型都部署到AI視覺感測器中,它就能指揮AGV小車完成複雜的任務。三是OCR演算法,VisionSeed適配了基於 PyTorch開源實現的CRNN演算法。

VisionSeed將以上演算法,在客戶端工具中封裝成可以一鍵下載的模組,不僅方便用戶下載體驗,還可以進行分類任務訓練。VisionSeed還同時支援UART和USB兩個硬體介面。此外,通過VisionSeed提供的全平台SDK,開發者僅用10行程式碼就可以獲取到AI分析後的結構化結果。

什麼是影像編輯生成?人臉融合、影像分割、動漫化、影片換臉、照片驅動……這些都是利用影像編輯生產技術完成的。演講中,騰訊優圖高級研究員王亞彪重點介紹了影片換臉、面部屬性編輯、視線編輯、畫質編輯這四項技術,他表示這些技術都會用到GAN生成對抗網路和Encoder-Decoder框架。

影片換臉領域早期有一個Deepfake演算法,該演算法只能對訓練過的兩個特定ID換臉,無法使用各種各樣的人臉去做替換。針對此點不足,優圖提出了SimSwap演算法,不僅能滿足不同人臉的替換,還可以做跨性別替換,在正臉和側臉之間也可以進行替換。

騰訊優圖高級研究員 王亞彪

在面部屬性編輯技術研究中發現,模型不同層級的「風格」特徵表示,在某些層級具有很好的可分性,因此優圖提出了SSCGAN演算法,該演算法採用多級風格跳躍連接(SSC)和空間資訊遷移(SIT)兩個模組,實現整體結構和局部面部屬性的精確編輯。

在視線編輯方面,王亞彪指出,疫情期間在線影片交流越來越重要,但受限於螢幕和攝影機之間的物理布局,導致交流過程中缺乏眼神接觸,因此優圖提出Ugaze 演算法框架,矯正眼神視線方向。相較於以往基於3D變換的視圖生成和基於生成模型的單目視線編輯, Ugaze 演算法主要有兩點創新:一是提出了基於運動流場結合判別器的方案;二是使用了大量人工合成數據,採用域遷移方法,進一步提升了模型矯正精度。

針對畫質編輯,優圖提出了影像超分RealSR演算法。以往的超分演算法往往只在特定數據集上有效,難以很好的對真實世界影像做超分。針對以往演算法在高清和低清影像pair構造上的不足,我們提出了一種新的影像退化框架,該框架可以估計多樣化的模糊核和真實雜訊分布。RealSR演算法獲得了NTIRE 2020挑戰賽冠軍,並受到了眾多社區開發者的關注。

騰訊優圖高級研究員姚達在演講中介紹到,優圖的視覺AI技術如文字識別、影像識別、美容美化等核心技術,已在零售、工業、支付等多個領域進行應用。但在產業解決方案落地過程中,優圖也遇到了一些難點,比如模型格式不同一、硬體架構眾多、性能低功耗高等。

為解決以上三大難點,優圖聯合騰訊內部多個部門推出了統一推理框架TNN,以滿足演算法模型跨平台、高性能快速部署需求。TNN通過ONNX作為一個中間結構支援PyTorch、TensorFlow等多種模型格式,同時TNN在底層適配了各種各樣的晶片能力。目前在騰訊內部,TNN已在手Q、微視等多個APP端以及微信支付一體機等終端落地,穩定性和可靠性得到廣泛驗證。

騰訊優圖高級研究員 姚達

TNN推理框架是如何進行優化的呢?根據硬體架構基礎和硬體的演進,TNN提出兩個基本準則:一是減少計算量,減少記憶體讀寫,適配Cache讓記憶體讀寫更快;二是擴展適配異構計算設備。

基於以上兩個原則,TNN提出了圖優化、運算元公式優化、運算元手動調優、異構調度優化等多種優化方案。在圖優化中通過常數摺疊和運算元融合,避免運行時冗餘計算以及減少記憶體讀寫次數;在運算元公式優化中,利用子圖變換、公式等效和近似計算,減小計算量和記憶體讀寫總量。在運算元手動調優中,針對耗時佔比在70%以上的卷積運算元,根據硬體快取特性設計精細的卷積實現。在異構調度優化中,TNN提出異構單元專職專用,充分利用所有計算設備,根據計算設備特性分配不同計算任務,同時計算設備間進行流水線優化,以此減少計算設備相互等待,提升計算重疊度,減少整體延時。

在硬體適配方面,針對端邊雲硬體架構各異,相互不具備通用性,適配工作量巨大這些難點,TNN和硬體廠商進行了聯合優化,優化後可以達到兩種效果:一是介面統一,用戶只需要通過簡單的參數設置,就可以在CPU、GPU、NPU上運行。二是模型統一,TNN內部通過IR中間件的方式適配各個硬體廠商的自研框架如OpenVINO\TensorRT等,用戶僅需轉換TNN模型即可在各硬體平台部署。

優圖在推理框架TNN下與英特爾合作完成多尺度GEMM優化,使得模型性能提升24%;與NVIDIA 完成低精度量化模型的訓練和推理支援,相比FP32推理提升4倍以上。

目前,TNN已經開源,期待更多開發者加入進來,一起協同共建統一的推理框架👇

//github.com/Tencent/TNN

騰訊優圖高級研究員楊博在演講中講述了模型量化的背景,他指出業界比較常用的模型量化解決方案是NVIDIA post-train方案,這個方案是在訓練完之後對模型進行校正,使用少量的數據,部署很方便,但有一個缺點是會導致模型效果下降。此外,還有一種是以Tensorflow QAT為代表的解決方案,這種方法在訓練過程中模擬Int8計算,採用Minmax計算量化區間,Finetune補償精度損失,但訓練周期長,而且工具鏈還不是很完善,一些常用的模型無法支援從訓練到部署的轉化。

可以看出,業界傳統的解決演算法都存在某些方面的不足,針對以上這些問題,優圖和NVIDIA 合作開發了一個完善的Int8訓練到部署的方案,該方案升級了圖優化匹配模板,支援更多模型QAT圖轉換,其次增加了混合精度量化訓練方式等其他量化模型精度保持方式,最後推理框架(TensorRT、TNN)支援包含quant節點的模型轉換。

騰訊優圖高級研究員 楊博

Int8模型科學機訓練採用的是什麼工作方法呢?首先會做一個BN層的融合,然後是子圖搜索和匹配,匹配到子圖以後,會自動插入量化節點,最後通過建立黑白名單的混合精度策略、動態量化區間統計以及激活層增量量化等方法,來保持模型效果。

Int8模型前向部署主要分為兩部分,一是導出模型到onnx,完成QAT訓練後,對checkpoint進行後處理並導出包含量化op在內的onnx模型;二是採用TensorRT顯示精度的模式完成fp32模型到int8模型的轉換,對相關OP做一些融合,將onnx模型轉換到tensorRT和TNN內。

楊博表示Int8標準模型,在打通Calibration和QAT部署相關工作之後的一些數據效果很好,但會增加耗時,優圖會繼續優化技術,提高研究效率。後續優圖也將繼續和NVIDIA 展開更深度的合作,進一步完善優圖QAT工具,增加對TensorRT後續版本的支援,提供更加易用高效的QAT模型訓練和部署解決方案。

作為騰訊旗下頂級的人工智慧實驗室,優圖一直聚焦電腦視覺,專註人臉識別、影像識別、OCR、機器學習、數據挖掘等領域開展技術研發和行業落地,未來將持續深耕於此,讓人工智慧更好地助力產業數字化發展。