胡 凱,劉 彤,武亞恒,謝 達
(中科芯集成電路有限公司,江蘇無錫 214072)
近年來人工智能(Artificial Intelligence,AI)技術廣泛運用于復雜環(huán)境的感知識別中,AI所需要的計算量巨大,現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)單位功率算力遠高于CPU和GPU,并且具有高性能、可重編程和部署靈活的優(yōu)勢,適合應用于自動駕駛和可穿戴設備等復雜計算機視覺處理的應用場景。傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks,CNN)[1-2]在像素級別分類上存在存儲開銷大、計算能效低下、像素區(qū)域限制識別區(qū)域的大小、準確性和實時性不可兼得的缺點,語義分割是對圖像的像素進行有關聯(lián)性的預測、推斷特征值來實現(xiàn)推理的。PASZKE在2016年提出ENET網(wǎng)絡,采用編碼器-解碼器架構,相比SegNet,速度提升18倍,計算量比原來減少了75倍,參數(shù)量比原來減少了79倍,并且具有相當?shù)木萚3],同時語義分割的編碼器實現(xiàn)預先訓練網(wǎng)絡、信息處理和過濾,解碼器負責將編碼器訓練的有效特征(小尺寸)語義進行微調(diào)。在保證圖像有效精度和特征的基礎上,減少編碼器和解碼器的層數(shù)、網(wǎng)絡參數(shù)和硬件損耗。本文論證了多種語義分割算法并進行仿真驗證,XILINX發(fā)布的Vitis-AI庫和深度學習處理單元(DPU)架構獨有的量化模型、編譯模型和指令架構,可以有效支撐改進語義分割模式的部署。
ENET是一個輕量級語義分割的非對稱編解碼模型,可以有效減少浮點預算的次數(shù)(特別適合FPGA的INT8架構)、內(nèi)存占用以及推理時間,傳統(tǒng)的CNN被用于計算機視覺中的圖像分類[4-6],通常CNN由多層卷積組成,每個卷積層后面通常是最大池,最后一層是完全連接的層,它將高維向量映射到對應低維概率向量,是一個對稱結構,這樣會導致計算量巨大,對硬件的消耗比較大。典型的ENET網(wǎng)絡可以很好地解決這個問題,ENET網(wǎng)絡架構如圖1所示,深藍色表示解碼網(wǎng)絡,淺藍表示編碼網(wǎng)絡。在壓縮網(wǎng)絡的一開始就采用了兩次下采樣,這樣使得圖像的解析度直接下降了1/4,極大地減少了計算量;采用空洞卷積捕獲多尺度上下文信息,擴大感受野的同時保持特征圖的尺寸不變;采用非對稱卷積n*n的卷積核都可以被分解為n*1和1*n的兩層卷積核,使感受野擴大一倍,增加函數(shù)多樣性,減少過擬合;采用轉(zhuǎn)置卷積的上采樣將特征圖的分辨還原原始圖片的分辨大小。
圖1 ENET網(wǎng)絡架構
Cityscapes數(shù)據(jù)集提供了20種分類,是一個大規(guī)模城市大量場景理解的數(shù)據(jù)集,其圖像為1024*512*3的數(shù)據(jù),通過量化處理,進入ENET模型的初始化,其結構如圖2所示,數(shù)據(jù)經(jīng)過步距為16個2通道的3*3矩陣卷積后得到13個通道的512*256特征值,池化經(jīng)過16個通道的2*2矩陣卷積后合并成512*256*16的特征矩陣,減少硬件內(nèi)存和對位寬的依賴。
圖2 ENET初始化處理
傳統(tǒng)的Bottleneck模型為512個通道數(shù)據(jù)經(jīng)過2組512個通道3*3卷積,增加了數(shù)據(jù)深度,降低特征提取效率。采用改進模式可以利用DPU內(nèi)部的修正線性單元(Rectified Linear Unit,ReLU)激活函數(shù)硬件模式減少參數(shù),同時采用1*1的降4維矩陣,減少3*3矩陣的維度[10-11],減少運算量和數(shù)據(jù)深度,最后通過提升維度矩陣進行1*1的卷積運算。傳統(tǒng)和改進DPU的Bottleneck結構如圖3所示。
圖3 Bottleneck結構
改進DPU的Bottleneck模型一樣在上采樣和下采樣結構中激活函數(shù)參數(shù)線性單元(Parametric Rectified Linear Unit,PReLU)替換給ReLU,同時把傳統(tǒng)結構中的上采樣模式刪除,用1*1卷積矩陣代替最大池化結構,能提高DPU的工作性能。下采樣減少特征矩陣的尺寸并保留有效參數(shù),一定程度上避免過擬合,通過最大池化步距為2的2*2卷積矩陣對輸入數(shù)據(jù)進行4倍數(shù)據(jù)處理,通過2*2、3*3和1*1的卷積矩陣保證特定特征矩陣,上采樣采用反卷積操作恢復經(jīng)過下采樣的編碼圖像,恢復原有尺寸,改進前后采樣結構如圖4所示。
圖4 采樣結構
通過對上述輸入數(shù)據(jù)初始化處理,得到512*256*16的特征數(shù)據(jù),通過二次下采樣進行尺寸縮小增加通道數(shù),再進行多次的Bottleneck、擴展和非對稱處理,編碼部分經(jīng)兩次重復Bottleneck 2.1~2.8的操作進行圖像特征提取,解碼部分采用非對稱結構的反卷積上采樣模式恢復圖像尺寸,保留有效的特征參數(shù),改進ENET架構如表1所示。
表1 改進ENET架構
Vitis-AI基于XILINX平臺進行AI加速推斷,將最優(yōu)化的IP核、工具、庫文件、神經(jīng)網(wǎng)絡模型和設計組成AI加速應用系統(tǒng),適用于自適應計算加速平臺。Vitis-AI的設計流程由構建模型、構建軟件、構建硬件3部分組成[9-12]。
神經(jīng)網(wǎng)絡用Caffe平臺構建模型,采用浮點網(wǎng)絡模型和校準數(shù)據(jù)集作為訓練的輸入,AI優(yōu)化器對ENET模型進行基線模型分析,通過多次對設定閾值進行優(yōu)化,去除冗余部分,使得神經(jīng)網(wǎng)絡模型輕量化;AI量化器將ENET模型的32位浮點數(shù)據(jù)(FP32)轉(zhuǎn)換為8位整數(shù)(INT8),通過量化權重、校準激活生成DPU模型,完成DPU模型部署后可降低計算量和硬件損耗,在保證精度的前提下提高運算速度。構建軟件由AI庫、云端運算和軟件交叉編譯組成,可以調(diào)用AI庫的算法庫和基本庫;通過構建改進型ENET模型網(wǎng)絡,在Vitis運行時完成ENET模型的可執(zhí)行軟件構建。
構建硬件采用ENET網(wǎng)絡的環(huán)境要求,基于VIVADO軟件搭建硬件系統(tǒng),其硬件結構圖見圖5。
圖5 VIVADO硬件結構圖
硬件系統(tǒng)由圖像采集、可編程邏輯、處理系統(tǒng)、數(shù)據(jù)存儲和外圍接口組成。攝像頭采集1080P的視頻數(shù)據(jù),經(jīng)過處理器接口(MIPI)傳遞給可重構控制器,可重構控制器完成視頻數(shù)據(jù)拜爾格式(Bayer)的轉(zhuǎn)換,伽馬(Gamma)校正模塊實現(xiàn)輸入圖像數(shù)據(jù)的伽馬校正曲線轉(zhuǎn)換,再經(jīng)過顏色空間轉(zhuǎn)換,完成視頻數(shù)據(jù)的轉(zhuǎn)換。處理器包含多核ARM cortex-A53處理器和實時ARMCORTEX-R5處理器,分別完成系統(tǒng)的應用層處理和圖像的實時處理,通過AXI接口完成數(shù)據(jù)流的傳輸和存儲。系統(tǒng)采用Pertalinux系統(tǒng)進行開發(fā)設計,并通過內(nèi)部構建Vitis-AI的軟件模型,完成系統(tǒng)內(nèi)部調(diào)度和內(nèi)存分配。
在Ubuntu系統(tǒng)中加載Vitis-AI模塊將加速GPU訓練,分別依次訓練語義分割模型中的特征金字塔網(wǎng)絡FPN、輕量級深度學習網(wǎng)絡ESPNet、深度學習分割網(wǎng)絡Unet-net、圖形分割網(wǎng)絡Unet-lite。訓練模型采用Cityscapes數(shù)據(jù)庫,包含2975個訓練圖、500個驗證圖數(shù)據(jù)和1525個測試圖。各語義分割模型訓練時的指標交并比的計算公式如式(1)所示,模型輸出預測范圍和標記實際檢測范圍的交集除以它們的并集,得到預測的準確度。
IOU表示平均準確率的交并比,truepositive為預測的某標簽部分符合真值,flasepositive為預測中分割為某標簽的部分,flasepositive為預測中被預測為非標簽部分。各個模型訓練結果的測試精度見圖6,ENET模型采用表1中的參數(shù)數(shù)據(jù)訓練模型參數(shù),對訓練數(shù)據(jù)進行量化浮點數(shù)據(jù)處理,訓練解碼模型和batch_size設置后采用GPU訓練,經(jīng)歸一化處理生成權重參數(shù)。
圖6 各個模型訓練結果
表2分別統(tǒng)計了各個語義分割模型的迭代時間和平均交并比,通過對比分析進行ENET語義分割。
表2 各個模型I OU數(shù)值
DPU吞吐量和DDR傳輸速率如圖7所示。根據(jù)運行的FPS數(shù)據(jù)和采樣所得的讀寫傳輸速率的折線圖,可得DPU最大吞吐量滿足8.03 FPS,其中4種顏色分別代表4個DDR的讀寫速度大小,最大讀取速度為2400 Mb/s,最大寫速度為450 Mb/s,可知改進型ENET模型可以在FPGA硬件上穩(wěn)定運行,CPU、DPU和存儲器的利用率小于硬件所支持的最大損耗,在硬件上可以穩(wěn)定運行。
圖7 DPU處理性能和DDR讀寫速度
采用語義分割ENET模型的路況效果見圖8,能有效分辨汽車、草、樹、天空、人、自行車和建筑等信息,可以有效判斷道路的寬度。DPU在300 MHz運行下處理1024×512分辨率的視頻可以達到8.03 FPS。
圖8 ENET分析測試結果
選用GPU進行算力對比測試,選取傳統(tǒng)算法和改進算法分別在ZCU102的FPGA平臺和GPU的GTX1080ti平臺進行算力對比測試,評價每瓦的FPS值,從圖9中可知傳統(tǒng)ENET網(wǎng)絡算力FPGA為2 FPS/W,遠高于GPU的0.9 FPS/W,改進型ENET網(wǎng)絡算力為3.2 FPS/W,遠高于GPU的0.6 FPS/W。
圖9 算力分析測試結果
本文搭建了Vitis-AI的軟硬件平臺,借助語義分割的訓練、部署等方法,通過對比多種深度學習網(wǎng)絡結構,改進ENET網(wǎng)絡模型,使用更少的計算資源達到最優(yōu)的控制精度,并完成像素級的特征提取,在復雜路況上能準確地識別和分類事物,同時整體硬件損耗較小,可以實現(xiàn)1024×512分辨率的圖像30 ps的實時處理,算力相較于采用傳統(tǒng)ENET網(wǎng)絡的GPU提升了350%,此方法可以為后續(xù)改進訓練模型增加分類種類,可在復雜環(huán)境下廣泛推廣語義識別算法。