999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ZYNQ和CNN模型的服裝識(shí)別系統(tǒng)①

2019-11-15 07:06:42偉,黃
關(guān)鍵詞:模型設(shè)計(jì)

熊 偉,黃 魯

(中國科學(xué)技術(shù)大學(xué) 信息科學(xué)技術(shù)學(xué)院,合肥 230027)

基于機(jī)器視覺的服裝識(shí)別主要分為兩大類,其一是采用人工提取特征進(jìn)行識(shí)別,列如基于輪廓傅里葉描述子特征的svm 分類法[1],其二是基于深度學(xué)習(xí)的方法,列如基于殘差的優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)服裝分類算法[2].雖然深度學(xué)習(xí)的方法可以大大減少開發(fā)難度和周期,但是由于網(wǎng)絡(luò)模型太大,F(xiàn)PGA 因有限的片上資源無法放下大型網(wǎng)絡(luò).針對(duì)這個(gè)問題,可以通過剪枝[3],低精度權(quán)值[4]等方法壓縮模型,從而適應(yīng)FPGA 有限的片上資源.

本文采用CNN 模型對(duì)視頻流中的服裝進(jìn)行識(shí)別.該系統(tǒng)在ZYNQ 開發(fā)板上進(jìn)行開發(fā)與驗(yàn)證,利用ZYNQ器件的軟硬件協(xié)同的處理能力,對(duì)計(jì)算任務(wù)進(jìn)行軟硬件劃分,在ARM 端完成圖像采集、預(yù)處理和顯示,F(xiàn)PGA端利用Verilog 語言設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)的硬件IP.采用AXI 總線實(shí)現(xiàn)片內(nèi)通信,提出權(quán)重?cái)?shù)據(jù)的重加載結(jié)構(gòu).可以根據(jù)不同應(yīng)用場(chǎng)景選擇合適網(wǎng)絡(luò)模型重新訓(xùn)練,只需要在ARM 端傳送已經(jīng)訓(xùn)練好的權(quán)重?cái)?shù)據(jù)而無需修改硬件.

1 卷積神經(jīng)網(wǎng)絡(luò)軟件架構(gòu)設(shè)計(jì)

1.1 CNN 模型搭建

本設(shè)計(jì)采用一種類似VGG[5]的一種自定義神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),命名為Mini-VGGNet.如圖1所示,基本結(jié)構(gòu)與VGG 網(wǎng)絡(luò)十分類似,該網(wǎng)絡(luò)結(jié)構(gòu)非常簡潔,整個(gè)網(wǎng)絡(luò)都使用了同樣大小的卷積核尺寸(3×3)和最大池化尺寸(2×2).通過不斷加深網(wǎng)絡(luò)結(jié)構(gòu)來提升性能.每一層卷積或全連接層后面都使用易于在硬件上實(shí)現(xiàn)的Relu 激活函數(shù).

圖1 網(wǎng)絡(luò)模型結(jié)構(gòu)

由于傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的90%的參數(shù)都集中在全連接層,這里在第6 層卷積后面加入global_max_pooling[6]而不是普通的池化,使得7×7 大小的特征圖直接變?yōu)?×1,大大減少了全連接層的參數(shù).使得可以利用FPGA 的片上內(nèi)存即可儲(chǔ)存所有的權(quán)重參數(shù).最后在全連接層后面加上Softmax 函數(shù),實(shí)現(xiàn)11 個(gè)分類,第11 分類為未知類.

模型的時(shí)間復(fù)雜度即運(yùn)算次數(shù),可用FLOPS (FLOating-Point operationS)衡量,也就是浮點(diǎn)運(yùn)算次數(shù).公式如下:

其中,M是每個(gè)卷積核輸出特征圖的尺寸.K是每個(gè)卷積核的尺寸.Cin是每個(gè)卷積核的輸入通道數(shù).Cout是本卷積層具有的輸出通道數(shù).由表1,可以看出90%以上的運(yùn)算都集中在卷積層.

綜上該網(wǎng)絡(luò)架構(gòu)的特點(diǎn)是:

(1) 只使用3×3 的卷積層堆疊在一起來增加深度.

(2) 使用最大池化來減小數(shù)組大小.

(3) 網(wǎng)絡(luò)末端全連接層在Softmax 分類器之前.

(4) 卷積核都是8 的倍數(shù),方便卷積核的并行化.

1.2 CNN 模型訓(xùn)練結(jié)果和參數(shù)定點(diǎn)化處理

根據(jù)本設(shè)計(jì)提出的網(wǎng)絡(luò)結(jié)構(gòu),通過使用TensorFlow深度學(xué)習(xí)庫來進(jìn)行整體網(wǎng)絡(luò)結(jié)構(gòu)搭建,最終可以對(duì)fashion-minist[7]數(shù)據(jù)集實(shí)現(xiàn)92.39%的準(zhǔn)確率.對(duì)比多份對(duì)該數(shù)據(jù)集提交的測(cè)試模型[8].由表2可以看出,Mini-VGGNet 僅使用了大約20 K 的參數(shù),沒有復(fù)雜的預(yù)處理操作就能達(dá)到相對(duì)較高的識(shí)別率.

表1 各層參數(shù)量

表2 不同測(cè)試模型

由于CPU 平臺(tái)訓(xùn)練使用的是浮點(diǎn)數(shù),所以需要對(duì)網(wǎng)絡(luò)權(quán)重定點(diǎn)化處理.通過在軟件端對(duì)比不同權(quán)重位寬對(duì)應(yīng)的準(zhǔn)確率,在FPGA 上使用11 bit 來進(jìn)行定點(diǎn)化處理而不損失精度.在PC 端將權(quán)重定點(diǎn)化,按照網(wǎng)絡(luò)模型的順序?qū)?quán)重參數(shù)保存為頭文件,通過ARM 將權(quán)重加載到PL 端的CNN IP 中去.

2 卷積神經(jīng)網(wǎng)絡(luò)硬件設(shè)計(jì)及實(shí)現(xiàn)

2.1 軟硬件協(xié)同開發(fā)系統(tǒng)

本設(shè)計(jì)提出的服裝系統(tǒng)發(fā)揮了ARM+FPGA[9-12]的軟硬件協(xié)處理能力,將運(yùn)算量巨大的CNN 放在FPGA端,充分發(fā)揮FPGA 并行運(yùn)算能力.如圖2所示,該系統(tǒng)在ARM 端實(shí)現(xiàn)攝像頭的視頻采集和前景分割,F(xiàn)PGA 端實(shí)現(xiàn)CNN 算法的硬件加速以及HDMI 的高清顯示.

圖2 系統(tǒng)框架圖

PS 部分主要包括基于Petalinux 工具的嵌入式Linux 系統(tǒng)的構(gòu)建以及交叉編譯器的搭建,OpenCV 視覺庫和QT 庫的移植.PL 部分主要包括CNN IP 的編寫和封裝,HDMI 視頻顯示驅(qū)動(dòng).

2.2 Linux 下BRAM 驅(qū)動(dòng)設(shè)計(jì)

在FPGA 上使用CNN 識(shí)別算法之前,需要將ARM端預(yù)處理的圖片加載進(jìn)來,眾所周知,AXI DMA 是PS 與PL 之間高速傳輸?shù)姆椒ǎ捎跀?shù)據(jù)量并不是很多,而且PL 與PS 之間傳輸?shù)刂凡贿B續(xù)且長度不規(guī)則的數(shù)據(jù),此時(shí)AXI DMA 便不再適用了.權(quán)衡之下,本系統(tǒng)基于BRAM 的方式,來進(jìn)行PS 和PL 之間的數(shù)據(jù)交互.

當(dāng)需要根據(jù)不同實(shí)際情況需要重新訓(xùn)練網(wǎng)絡(luò),必須經(jīng)常改變權(quán)值,因此提出權(quán)重加載結(jié)構(gòu).在將它們發(fā)送到FPGA 層之前,ZYNQ 系統(tǒng)的DDR 內(nèi)存將會(huì)保存權(quán)重.PS 通過AXI 總線把權(quán)重發(fā)給PL 端的BRAM,CNN IP 從BRAM 里面加載需要的權(quán)重?cái)?shù)據(jù).由于需要在Linux 下完成,因此需要移植AXI_BRAM 驅(qū)動(dòng),根據(jù)Vivado 工程的地址信息,更改設(shè)備樹以將BRAM內(nèi)存范圍添加到內(nèi)存節(jié)點(diǎn)并添加保留的內(nèi)存節(jié)點(diǎn),以便內(nèi)核不使用內(nèi)存,但會(huì)將內(nèi)存映射到內(nèi)核內(nèi)存中.設(shè)備樹添加如下:

memory {

device_type="memory";

reg=<0x0 0x40008000>;

};

reserved-memory {

ranges;

reserved {

reg=<0x40000000 0x8000>;

};

這樣就可以在用戶空間可以使用/dev/mem 去訪問物理地址(0x40000000)大小為8 K 的BRAM,不修改內(nèi)核.建立內(nèi)存映射函數(shù)如下:

BRAM64_vptr=(u64*)mmap(NULL,BRAM_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,BRAM_pbase);

2.3 PS 端圖像分割研究操作

由于攝像頭采集的圖像容易受光線干擾,而訓(xùn)練集的圖像背景全是0,這樣帶來的后果就是網(wǎng)絡(luò)僅對(duì)數(shù)據(jù)集比較友好,而面對(duì)實(shí)際情況就會(huì)出現(xiàn)相對(duì)較大的誤差.這里采取兩種辦法來解決這個(gè)問題,

一種是將USB 采集的真實(shí)圖像也加入到Mini-VGG Net 網(wǎng)絡(luò)進(jìn)行訓(xùn)練,這里一共拍攝了50×10=500 張,640×480 的真實(shí)圖片,利用Python 進(jìn)行預(yù)處理,這里僅僅就是利用雙線性插值法resize 到28×28 大小.

另一種因?yàn)椴杉膱D片是640×480,然后在ARM上對(duì)圖片進(jìn)行縮放加背景分離(為了還原和訓(xùn)練集的圖片差不多),grabCut 算法在ARM 端比較耗時(shí),為了滿足實(shí)時(shí)性要求,即處理時(shí)間不能超過33 ms,因此系統(tǒng)采用先將圖像縮放到56×56 大小,然后進(jìn)行背景分離算法,再縮放到28×28,最后進(jìn)行形態(tài)學(xué)操作,濾波輸出28×28 的圖片.

分割流程如圖3所示,即640×480->56×56->grabCut->28×28.最后再將CNN_28×28 的圖片送給CNN IP 來計(jì)算.

圖3 背景分割流程圖

2.4 PL-PS 數(shù)據(jù)加載結(jié)構(gòu)設(shè)計(jì)

由于本系統(tǒng)的權(quán)重和圖像數(shù)據(jù)都通過ARM 傳給FPGA,圖4為ARM 和FPGA 之間的數(shù)據(jù)加載結(jié)構(gòu)圖.ARM 在DDR 中按順序保存指定層的權(quán)重.ARM 向FPGA 發(fā)送指定層的索引號(hào)、權(quán)重?cái)?shù)量和需要在DDR中讀取權(quán)重的地址.PS 通過M_AXI_GP 口向BRAM地址依次存入32 bit (僅使用低11 bit) 的權(quán)重?cái)?shù)據(jù).PS 每向BRAM 寫完數(shù)據(jù)后通過AXI GPIO 給出一個(gè)上升沿信號(hào).PL 捕獲上升沿后立即將PS 寫入的32 位數(shù)據(jù)讀出,并寫入CNN IP 的database 模塊.同理,圖像數(shù)據(jù)加載也是如此工作.

圖4 PL-PS 數(shù)據(jù)加載結(jié)構(gòu)圖

通過Vivado 的ila(邏輯分析儀)抓取的波形如圖5所示.可以看出,該模塊能夠正常的把784 個(gè)圖像數(shù)據(jù)寫入database 模塊,并且拉低CNN IP 的啟動(dòng)信號(hào)(低電平有效).

圖5 圖像數(shù)據(jù)加載

2.5 CNN IP 設(shè)計(jì)

在系統(tǒng)框架中核心就是CNN IP 的設(shè)計(jì).如圖6所示,這個(gè)CNN 加速IP 在開始信號(hào)(start)的上升沿到來時(shí)開始工作.ARM 通過AXI 總線,將數(shù)據(jù)寫入到CNN IP 的database 中,databae 存放CNN 需要的圖像數(shù)據(jù)還有權(quán)重參數(shù).通信是加速器的主要約束條件,在CNN 的整個(gè)前向計(jì)算過程中,數(shù)據(jù)吞吐量不斷上升,對(duì)于大的特征圖基本上都是傳到片外內(nèi)存中去,而DDR 數(shù)據(jù)交互時(shí)間對(duì)幀率的影響特別大.而本設(shè)計(jì)由于大大減少了網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù),優(yōu)化feature map 數(shù)據(jù)的存儲(chǔ)方式,使得所有數(shù)據(jù)可以存放在BRAM 中,避免了和DDR 之間數(shù)據(jù)交互,只需要在片上操作.這里需要兩塊片上RAM (0~28×28×8 和28×28×8+1~28×28×16) 來儲(chǔ)存卷積計(jì)算的中間特征圖.卷積模塊從mem0 讀取數(shù)據(jù)而計(jì)算結(jié)果寫到mem1,接著下次就從mem1 讀取數(shù)據(jù)而計(jì)算結(jié)果寫到mem0,利用乒乓操作實(shí)現(xiàn)流水線,提高了數(shù)據(jù)吞吐率.流水化的設(shè)計(jì)可以提高加速器中的計(jì)算單元利用率.

圖6 CNN IP 框架圖

卷積層計(jì)算時(shí)整個(gè)網(wǎng)絡(luò)的核心計(jì)算單元,圖7是單個(gè)處理單元的結(jié)構(gòu)圖,該結(jié)構(gòu)是由9 個(gè)乘法器和8 個(gè)加法器構(gòu)成,本文利用im2col 操作和移位寄存器將圖像和權(quán)重?cái)?shù)據(jù)拼接成兩個(gè)99 bit 的數(shù)據(jù)矩陣,單時(shí)鐘周期可以對(duì)3×3 的特征圖計(jì)算輸出一個(gè)特征圖.而權(quán)重?cái)?shù)據(jù)復(fù)用可以降低帶寬提高計(jì)算效率.特征數(shù)據(jù)由一個(gè)卷積窗口不斷在特征圖上滑動(dòng)生成.

由于CNN 網(wǎng)絡(luò)模型的卷積核都是8 的倍數(shù),如圖8所示,這里最高可以配置為8 個(gè)卷積單元同時(shí)工作,以更多的資源來換取運(yùn)算時(shí)間.所以本設(shè)計(jì)能夠?qū)崿F(xiàn)單時(shí)鐘周期72 次MAC(乘累加),工作在100 M 的頻率下,峰值運(yùn)算速率最高可達(dá)7.2 GMAC/s.與普通的嵌入式設(shè)備相比,計(jì)算效率具有顯著的提高,極大地提高了數(shù)據(jù)帶寬和傳輸速率.

圖7 卷積處理單元(PE)

圖8 卷積塊處理單元(并行度為8)

卷積處理單元(PE)同樣可以用來全連接層的計(jì)算,在全連接層,每一個(gè)神經(jīng)元都與上一層相連接,網(wǎng)絡(luò)的最后一層是32 個(gè)神經(jīng)元,每8 個(gè)為一組,所以卷積處理單元在這里僅僅使用了8 個(gè)乘法器.迭代4 次,得到11 個(gè)輸出.

本文采用Softmax 函數(shù)作為分類器輸出,Softmax的公式如式(2)所示.

在布置前項(xiàng)傳播時(shí),我們不需要進(jìn)行指數(shù)操作,指數(shù)在硬件上實(shí)施代價(jià)太大,而且沒有必要,我們只需要找到11 個(gè)值中最大的那一個(gè)就可以,所以只需要一個(gè)比較器即可.

整個(gè)流程通過狀態(tài)機(jī)來調(diào)度CNN 各個(gè)模塊的運(yùn)算.

3 實(shí)驗(yàn)分析

本文實(shí)驗(yàn)使用Xilinx 公司的Vivado 進(jìn)行硬件開發(fā)和modelsim 來進(jìn)行軟件仿真.FPGA 使用ZYNQ 7000 系列AX7020 開發(fā)板.芯片為xc7z020clg400-2,該芯片擁有53 200 個(gè)LUT,106 400 個(gè)FF,140 個(gè)BRAM 36 KB (4.9 M),220 個(gè)DSP 資源,完全滿足系統(tǒng)實(shí)驗(yàn)要求,將開發(fā)板和USB 攝像頭還有HDMI 顯示器連接,實(shí)驗(yàn)平臺(tái)如圖9所示.

圖9 硬件開發(fā)平臺(tái)圖

3.1 數(shù)據(jù)集測(cè)試

將fashion-minist 數(shù)據(jù)集存放到DDR (8 GB)中去,該數(shù)據(jù)集一共有60 000 張訓(xùn)練圖片和10 000 張測(cè)試圖片,大小為28×28×1,在實(shí)驗(yàn)前在PC 上利用Python將10 000 張測(cè)試集數(shù)據(jù)轉(zhuǎn)成二進(jìn)制.ARM 通過BRAM把數(shù)據(jù)加載到CNN 中,計(jì)算完成觸發(fā)中斷,在中斷里面對(duì)錯(cuò)誤率進(jìn)行統(tǒng)計(jì),對(duì)比PC 機(jī)上利用Python 處理結(jié)果,如表3,可以發(fā)現(xiàn)在FPGA 上,準(zhǔn)確率幾乎沒有下降.

表3 測(cè)試集結(jié)果

3.2 實(shí)際圖片測(cè)試

對(duì)電商網(wǎng)站上真實(shí)的圖片進(jìn)行測(cè)試,部分測(cè)試結(jié)果如圖10所示,成功完成圖像采集、預(yù)處理和識(shí)別結(jié)果的顯示.

圖10 服裝識(shí)別實(shí)際運(yùn)行結(jié)果

每種服裝選取50 個(gè)樣本,通過USB 攝像頭對(duì)不同服裝進(jìn)行實(shí)時(shí)采集,利用OpenCV 進(jìn)行預(yù)處理縮放到28×28 大小,再送到CNN IP 計(jì)算,并通過QT 顯示.識(shí)別結(jié)果如表4,除了套衫是88%,其余種類識(shí)別率基本都達(dá)到90%以上.

表4 真實(shí)圖片測(cè)試準(zhǔn)確率

最終FPGA 工作于100 Mhz 時(shí)鐘頻率下.表5列出了CNN IP 在配置為不同卷積塊時(shí)的資源使用情況和計(jì)算速度.功耗由Vivado Power Report 獲取.

表5 CNN IP 資源消耗以及功耗

由表5可以看出當(dāng)卷積塊為1 時(shí),一副圖片的識(shí)別需要9.094 ms,完全滿足實(shí)時(shí)性的要求,DSP 資源消耗8%,BRAM 使用率達(dá)21%,在一些低成本的FPGA上可以實(shí)現(xiàn),應(yīng)用在加速物聯(lián)網(wǎng)邊緣設(shè)備機(jī)器學(xué)習(xí)推理的開發(fā).在資源允許的情況下,最高可以實(shí)現(xiàn)卷積塊為8 的并行度,識(shí)別一副圖片僅需1.361 ms,DSP 資源消耗50%,BRAM 使用率達(dá)50%,速度提高了近5.68倍.在一些對(duì)時(shí)間要求非常高的場(chǎng)合,可以利用資源去換取時(shí)間.

4 結(jié)論與展望

本文提出一種基于ZYNQ 平臺(tái)的服裝識(shí)別系統(tǒng).采用Verilog 設(shè)計(jì)服裝識(shí)別CNN 的IP 核,留出信號(hào)接口,權(quán)重可加載,通用性好,便于移植,大大縮減了SOC的開發(fā)周期,對(duì)算法芯片化的施行也具有重要意義.

該系統(tǒng)采用軟硬件協(xié)同的方式,成功移植Linux操作系統(tǒng),利用OpenCV 和QT 將分割和識(shí)別結(jié)果通過HDMI 傳輸接口進(jìn)行實(shí)時(shí)顯示,達(dá)到有實(shí)時(shí)性好、界面友好,并且具有較高的識(shí)別率和較強(qiáng)的擴(kuò)展性.

猜你喜歡
模型設(shè)計(jì)
一半模型
重要模型『一線三等角』
何為設(shè)計(jì)的守護(hù)之道?
重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
《豐收的喜悅展示設(shè)計(jì)》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
主站蜘蛛池模板: 91欧美亚洲国产五月天| 亚洲人成色在线观看| 日韩在线2020专区| 激情综合五月网| 国产婬乱a一级毛片多女| 国产日韩精品一区在线不卡| 国产欧美网站| 亚洲综合日韩精品| 亚洲va在线观看| 国产网站一区二区三区| 中国一级特黄大片在线观看| 最新日韩AV网址在线观看| 国产激情无码一区二区免费 | 久久a级片| 一级片免费网站| 国产精品久久久久无码网站| 成人精品区| 中文一区二区视频| 国产伦片中文免费观看| 在线无码九区| 久久国产亚洲偷自| 九一九色国产| 中文字幕精品一区二区三区视频 | 亚洲色图欧美在线| 欧美a在线视频| 婷婷综合缴情亚洲五月伊| 亚洲综合香蕉| 国产精品思思热在线| 久久国产精品波多野结衣| 国产精品亚洲va在线观看| 72种姿势欧美久久久久大黄蕉| 精品少妇人妻无码久久| 亚洲制服丝袜第一页| 国产乱子伦精品视频| 综1合AV在线播放| 国产精品香蕉在线| 青青草国产一区二区三区| 尤物精品视频一区二区三区| 国产理论一区| 国产欧美日韩在线一区| 又爽又大又光又色的午夜视频| 免费毛片视频| 99re在线观看视频| 国产偷倩视频| 亚洲男人的天堂网| 中文国产成人精品久久| 日本欧美一二三区色视频| 播五月综合| 日韩在线网址| 久久综合婷婷| 国产在线第二页| 热这里只有精品国产热门精品| 亚洲成aⅴ人在线观看| 97色伦色在线综合视频| 国产区成人精品视频| 91探花在线观看国产最新| 一级片免费网站| 香蕉精品在线| 久久午夜夜伦鲁鲁片无码免费| 亚洲AV无码乱码在线观看代蜜桃| 中国精品自拍| 99在线视频精品| 丝袜亚洲综合| 好紧好深好大乳无码中文字幕| 91毛片网| 不卡色老大久久综合网| 久久99国产乱子伦精品免| 九九线精品视频在线观看| 波多野结衣爽到高潮漏水大喷| 2021国产精品自拍| 亚洲日韩第九十九页| 综合五月天网| 日韩视频福利| 四虎成人在线视频| 四虎在线观看视频高清无码| 九九香蕉视频| 国产美女主播一级成人毛片| 亚洲91精品视频| 国产大片喷水在线在线视频 | 噜噜噜久久| 亚洲最大福利网站| 中文纯内无码H|