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