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

基于ZYNQ和CNN模型的服裝識別系統①

2019-11-15 07:06:42偉,黃
計算機系統應用 2019年11期
關鍵詞:模型設計

熊 偉,黃 魯

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

基于機器視覺的服裝識別主要分為兩大類,其一是采用人工提取特征進行識別,列如基于輪廓傅里葉描述子特征的svm 分類法[1],其二是基于深度學習的方法,列如基于殘差的優化卷積神經網絡服裝分類算法[2].雖然深度學習的方法可以大大減少開發難度和周期,但是由于網絡模型太大,FPGA 因有限的片上資源無法放下大型網絡.針對這個問題,可以通過剪枝[3],低精度權值[4]等方法壓縮模型,從而適應FPGA 有限的片上資源.

本文采用CNN 模型對視頻流中的服裝進行識別.該系統在ZYNQ 開發板上進行開發與驗證,利用ZYNQ器件的軟硬件協同的處理能力,對計算任務進行軟硬件劃分,在ARM 端完成圖像采集、預處理和顯示,FPGA端利用Verilog 語言設計卷積神經網絡的硬件IP.采用AXI 總線實現片內通信,提出權重數據的重加載結構.可以根據不同應用場景選擇合適網絡模型重新訓練,只需要在ARM 端傳送已經訓練好的權重數據而無需修改硬件.

1 卷積神經網絡軟件架構設計

1.1 CNN 模型搭建

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

圖1 網絡模型結構

由于傳統卷積神經網絡的90%的參數都集中在全連接層,這里在第6 層卷積后面加入global_max_pooling[6]而不是普通的池化,使得7×7 大小的特征圖直接變為1×1,大大減少了全連接層的參數.使得可以利用FPGA 的片上內存即可儲存所有的權重參數.最后在全連接層后面加上Softmax 函數,實現11 個分類,第11 分類為未知類.

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

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

綜上該網絡架構的特點是:

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

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

(3) 網絡末端全連接層在Softmax 分類器之前.

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

1.2 CNN 模型訓練結果和參數定點化處理

根據本設計提出的網絡結構,通過使用TensorFlow深度學習庫來進行整體網絡結構搭建,最終可以對fashion-minist[7]數據集實現92.39%的準確率.對比多份對該數據集提交的測試模型[8].由表2可以看出,Mini-VGGNet 僅使用了大約20 K 的參數,沒有復雜的預處理操作就能達到相對較高的識別率.

表1 各層參數量

表2 不同測試模型

由于CPU 平臺訓練使用的是浮點數,所以需要對網絡權重定點化處理.通過在軟件端對比不同權重位寬對應的準確率,在FPGA 上使用11 bit 來進行定點化處理而不損失精度.在PC 端將權重定點化,按照網絡模型的順序將權重參數保存為頭文件,通過ARM 將權重加載到PL 端的CNN IP 中去.

2 卷積神經網絡硬件設計及實現

2.1 軟硬件協同開發系統

本設計提出的服裝系統發揮了ARM+FPGA[9-12]的軟硬件協處理能力,將運算量巨大的CNN 放在FPGA端,充分發揮FPGA 并行運算能力.如圖2所示,該系統在ARM 端實現攝像頭的視頻采集和前景分割,FPGA 端實現CNN 算法的硬件加速以及HDMI 的高清顯示.

圖2 系統框架圖

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

2.2 Linux 下BRAM 驅動設計

在FPGA 上使用CNN 識別算法之前,需要將ARM端預處理的圖片加載進來,眾所周知,AXI DMA 是PS 與PL 之間高速傳輸的方法,由于數據量并不是很多,而且PL 與PS 之間傳輸地址不連續且長度不規則的數據,此時AXI DMA 便不再適用了.權衡之下,本系統基于BRAM 的方式,來進行PS 和PL 之間的數據交互.

當需要根據不同實際情況需要重新訓練網絡,必須經常改變權值,因此提出權重加載結構.在將它們發送到FPGA 層之前,ZYNQ 系統的DDR 內存將會保存權重.PS 通過AXI 總線把權重發給PL 端的BRAM,CNN IP 從BRAM 里面加載需要的權重數據.由于需要在Linux 下完成,因此需要移植AXI_BRAM 驅動,根據Vivado 工程的地址信息,更改設備樹以將BRAM內存范圍添加到內存節點并添加保留的內存節點,以便內核不使用內存,但會將內存映射到內核內存中.設備樹添加如下:

memory {

device_type="memory";

reg=<0x0 0x40008000>;

};

reserved-memory {

ranges;

reserved {

reg=<0x40000000 0x8000>;

};

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

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

2.3 PS 端圖像分割研究操作

由于攝像頭采集的圖像容易受光線干擾,而訓練集的圖像背景全是0,這樣帶來的后果就是網絡僅對數據集比較友好,而面對實際情況就會出現相對較大的誤差.這里采取兩種辦法來解決這個問題,

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

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

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

圖3 背景分割流程圖

2.4 PL-PS 數據加載結構設計

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

圖4 PL-PS 數據加載結構圖

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

圖5 圖像數據加載

2.5 CNN IP 設計

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

圖6 CNN IP 框架圖

卷積層計算時整個網絡的核心計算單元,圖7是單個處理單元的結構圖,該結構是由9 個乘法器和8 個加法器構成,本文利用im2col 操作和移位寄存器將圖像和權重數據拼接成兩個99 bit 的數據矩陣,單時鐘周期可以對3×3 的特征圖計算輸出一個特征圖.而權重數據復用可以降低帶寬提高計算效率.特征數據由一個卷積窗口不斷在特征圖上滑動生成.

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

圖7 卷積處理單元(PE)

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

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

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

在布置前項傳播時,我們不需要進行指數操作,指數在硬件上實施代價太大,而且沒有必要,我們只需要找到11 個值中最大的那一個就可以,所以只需要一個比較器即可.

整個流程通過狀態機來調度CNN 各個模塊的運算.

3 實驗分析

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

圖9 硬件開發平臺圖

3.1 數據集測試

將fashion-minist 數據集存放到DDR (8 GB)中去,該數據集一共有60 000 張訓練圖片和10 000 張測試圖片,大小為28×28×1,在實驗前在PC 上利用Python將10 000 張測試集數據轉成二進制.ARM 通過BRAM把數據加載到CNN 中,計算完成觸發中斷,在中斷里面對錯誤率進行統計,對比PC 機上利用Python 處理結果,如表3,可以發現在FPGA 上,準確率幾乎沒有下降.

表3 測試集結果

3.2 實際圖片測試

對電商網站上真實的圖片進行測試,部分測試結果如圖10所示,成功完成圖像采集、預處理和識別結果的顯示.

圖10 服裝識別實際運行結果

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

表4 真實圖片測試準確率

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

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

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

4 結論與展望

本文提出一種基于ZYNQ 平臺的服裝識別系統.采用Verilog 設計服裝識別CNN 的IP 核,留出信號接口,權重可加載,通用性好,便于移植,大大縮減了SOC的開發周期,對算法芯片化的施行也具有重要意義.

該系統采用軟硬件協同的方式,成功移植Linux操作系統,利用OpenCV 和QT 將分割和識別結果通過HDMI 傳輸接口進行實時顯示,達到有實時性好、界面友好,并且具有較高的識別率和較強的擴展性.

猜你喜歡
模型設計
一半模型
重要模型『一線三等角』
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
重尾非線性自回歸模型自加權M-估計的漸近分布
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
3D打印中的模型分割與打包
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 欧美综合中文字幕久久| 东京热一区二区三区无码视频| 亚洲人成网站在线播放2019| 老汉色老汉首页a亚洲| 无码专区第一页| 丁香六月激情综合| 国内精品91| 国产欧美日韩va| 91视频青青草| 91破解版在线亚洲| 中日无码在线观看| 日本91视频| 国产新AV天堂| 久久久精品国产亚洲AV日韩| 精品视频一区二区三区在线播| 五月婷婷伊人网| 国产日本欧美亚洲精品视| 成人福利在线观看| 国产精品真实对白精彩久久| 99re热精品视频国产免费| 精品国产中文一级毛片在线看| 国产微拍一区二区三区四区| 97色婷婷成人综合在线观看| 激情乱人伦| 日本黄色a视频| 制服无码网站| 日本免费一区视频| 国产精鲁鲁网在线视频| 欧美日韩免费| 亚洲aaa视频| 国产精品丝袜在线| 亚洲天堂成人在线观看| 久久精品国产91久久综合麻豆自制 | 亚洲男人天堂2020| 国产一级裸网站| 亚洲精品中文字幕无乱码| 久久香蕉国产线看观看式| 99热在线只有精品| 色精品视频| 青青网在线国产| 波多野结衣国产精品| 国产精品白浆无码流出在线看| 六月婷婷精品视频在线观看| 精品综合久久久久久97| 永久免费AⅤ无码网站在线观看| 国产AV毛片| 高清无码手机在线观看| 九九热精品视频在线| 综合色天天| 最新国产午夜精品视频成人| 国产又色又刺激高潮免费看| 黄色福利在线| 国产熟睡乱子伦视频网站| 99ri精品视频在线观看播放| 日韩在线2020专区| 久久中文无码精品| 国产人妖视频一区在线观看| 色婷婷电影网| 国产成人无码久久久久毛片| 最新午夜男女福利片视频| 国产亚洲精品自在线| 中文成人在线| 国产精品深爱在线| 日日拍夜夜操| 国产成人8x视频一区二区| 欧美日韩一区二区三| 国产日韩丝袜一二三区| 成人在线亚洲| 在线亚洲精品福利网址导航| 亚洲人成影院午夜网站| 好吊色妇女免费视频免费| 日本AⅤ精品一区二区三区日| 亚洲人精品亚洲人成在线| 国产菊爆视频在线观看| 国产粉嫩粉嫩的18在线播放91| 久久国产免费观看| 伊人国产无码高清视频| 国产精品成人久久| 国产成人精品一区二区| 美女无遮挡拍拍拍免费视频| 亚洲国产成人久久77| 久久美女精品|