?

基于深度卷積神經網絡的汽車圖像分類算法與加速研究

2024-04-02 03:42黃佳美張偉彬熊官送
現代電子技術 2024年7期
關鍵詞:加速器卷積神經網絡

黃佳美,張偉彬,熊官送

(北京自動化控制設備研究所,北京 100074)

0 引 言

隨著城市化建設不斷發展,我國對交通建設的需求也不斷增長,成為了世界上在交通領域基礎設施建設方面最快的國家之一,但車輛管控問題、道路交通問題、車輛違章問題等層出不窮,很難做到全面、有效的管理。例如搶占公交專用車道,會造成車輛停站時間較長,市民乘車不方便等問題,更容易導致壓車現象出現,進而造成新的交通擁堵。馬路上的攝像頭每天拍攝下許多汽車照片,如何在大量的圖片中篩選出汽車的圖片,并且識別出車輛種類,這時車輛識別就顯得尤為重要。傳統的手動分類方式需要耗費大量的時間和精力,且容易出現主觀性誤判的情況[1]。而深度學習作為新一代計算模式,近年來在眾多領域中發揮了重要作用[2],以卷積神經網絡為代表的深度學習算法在計算機視覺處理領域中發揮著巨大的作用,如圖像分類、目標檢測等具體應用[3-6]。隨著近年來智慧交通系統的快速發展,利用深度神經網絡區分公交車道上的公共汽車與非法停留的車輛是一個很好的解決途徑,能夠有效地減少交通堵塞并打擊社會車輛在高峰時期非法占用公交車道的行為。

神經網絡在PC 端訓練完成后需要進行模型部署。模型部署是指把訓練好的模型布置在特定環境中運行的過程,可以將神經網絡部署在服務器上,通過網絡調用進行預測,或者部署在嵌入式設備上,實現嵌入式端數據分析處理。模型部署要解決模型框架兼容性差和部署后模型運行速度慢這兩大問題[7]。隨著物聯網時代的來臨和邊緣計算的興起,未來社會的發展趨勢是萬物互聯和萬物感知,因此在嵌入式端部署深度學習算法具有重要的現實意義[8-10]。

而神經網絡處理單元是應用人工智能的核心組件,決定著神經網絡運算的性能和功耗。為了提供更好的運算能效比和滿足算法在嵌入式端的應用落地,在現有研究的基礎上,本文提出基于FPGA 的嵌入式深度卷積神經網絡實現加速,去改進對于模型部署后運行速度慢的問題。與其他研究相比,本文主要做了以下工作:

1)針對現有占用公交專用車道的問題,在開源數據集的基礎上提取訓練集并加入遷移學習方法進行重新訓練,使得訓練后的模型參數對公交車分類的精確度更高。

2)對于訓練方法,提出基于深度卷積神經網絡的圖像物體分類算法,采用多精度混合訓練方法,根據網絡結構特性在特征提取部分采用INT8,線性層分類采用FP32,在保證運算效率的同時降低精度損失。

3)對于在FPGA 部署方案,采用匹配靈活硬件加速結構的軟件計算框架,通過高效的調度保證硬件加速器中各個模塊能及時連續地工作,從而實現神經網絡的高效任務執行。

1 模型選擇與分析

殘差卷積神經網絡能夠有效解決因網絡深度增加而產生梯度消失的問題。ResNet 是一種深度殘差網絡,在多個圖像分類基準數據集上都取得了優異的性能,實現了高精度的分類。ResNet 系列網絡包括ResNet18、ResNet34、ResNet50、ResNet101 等,網絡模型數字越大,代表模型越大,所需要的計算量越大。ResNet50 具有精度高、模型小、易于實現等優點[11-12],綜合考慮,本文所部署的ResNet 網絡采用ResNet50 網絡模型。

1.1 數據集處理

在基于深度學習的圖像分類方法中,圖像被表示為一個張量,其中每個張量都代表一個RGB 圖像,各種圖像作為label,根據數據分布情況排成與張量數量相等的矩陣表示label,并將輸入數據送入深度神經網絡訓練,學習出最優的分類器模型。

為了實現所需的應用落地,基于開源數據集從中重新抽取了相關圖片作為數據集。訓練前,對數據進行預處理,包括刪除重復項、填補缺失值和去除異常模糊圖片等。最終,本文得到了包含約1 萬張圖片的數據集,用于后續的分析。其中大約70%用于訓練,20%用于測試,10%用于驗證。本文選取進行目標分類的數據集共包含兩類,分別是公交車輛和其他車輛。圖片是不同大小的RGB 圖像,對數據進行預處理,將像素值統一為224×224 的圖片大小,并將圖片放到相應分類的文件夾里。目標分類數據集如圖1 和表1 所示。

表1 數據集

圖1 目標分類數據集部分示例

1.2 殘差模型

若將輸入設為X,將某一有參網絡層設為H,那么以X為輸入的此層輸出將為H(X)。一般的CNN 網絡如Alexnet、VGG 等會通過訓練直接學習出參數函數H的表達。殘差學習則是致力于使用多個有參網絡層來學習輸入、輸出之間的參差,其中X這一部分作為分支直接輸入,使得網絡的深度更加穩定,而有參網絡層要學習的輸出H(X)用于計算結果并預測損失值。

殘差網絡模塊如圖2 所示。

圖2 殘差網絡模塊

ResNet50 采用殘差連接的結構,整體模塊由卷積層、批次歸一化層、特征拼接層、池化、激活函數等組成。ResNet50 共有50 層,模型的輸入為224×224 的RGB 圖像,經過第一層的卷積、池化運算之后通道數增加到64,圖像降維到56×56,進入殘差模塊之后,經過4 次殘差操作圖像特征圖變為(2 048,7,7)。雖然ResNet50 解決了梯度消失問題,但是依舊存在大模型在嵌入式平臺部署后實時性較差的問題。

1.3 樣本訓練方法

遷移學習是指將在某個領域或任務上學習到的知識和技能應用到新的領域或者任務中,可有效解決深度學習中因為數據集不足而導致網絡模型出現過擬合的問題。遷移學習大致可以分為:基于特征的遷移方法、基于共享參數的遷移方法和基于關系的遷移方法[13]。其中,基于共享參數的遷移方法結合了深度學習和遷移學習,通過對包含高質量的標注數據大數據集進行訓練,得到預訓練模型,在此基礎上,采用少量標注數據的小樣本數據集進行遷移學習,完成目標分類的任務。本文采用的是基于共享參數的遷移方法。

遷移學習與傳統學習對比如圖3 所示。

圖3 遷移學習與傳統學習對比

針對小樣本數據集及樣本數據相似度高的情況,本文方法保留了預訓練模型中的卷積層、Bottle-Nect 網絡結構以及預訓練參數,所保留的網絡結構和預訓練參數用于提取圖像初始特征,另外的全連接層參數則進行重置,并基于小樣本數據集進行重新訓練。本文對全連接層網絡結構進行了改進,模型訓練數據處理如圖4所示。

圖4 模型訓練數據處理

圖5 全連接層網絡結構

式中:ncorrect為被正確分類的圖片數量;ntotal為測試集總的圖片數量。通常認為Acc 越高代表模型分類效果越好。

2 FPGA 實現方法及設計結果

ResNet50 計算加速系統如圖6 所示。

圖6 加速系統架構

所述系統包括ARM 和FPGA 平臺架構、片外存儲區、AXI 接口,所述ARM 平臺架構包括核心處理器、數據和內存控制器,所述FPGA 平臺架構包括加速核心單元、輸入緩存端和輸出緩存端。使用軟核ARM 作為片上系統的主控,控制外設、DMA、CNN 加速器來實現數據調度和操作,為FPGA 設備設計了一個IP,用于卷積加速的應用。

片外存儲區包括SD 卡和外部DDR,加速核心單元包括數據矩陣向量陣列和計算模塊,緩存區連接數據和內存控制器,數據和內存控制器連接片外存儲區,數據和內存控制器連接AXI_M 和AXI_S 接口,輸入緩存端連接數據矩陣向量陣列,計算模塊連接輸出緩存端,使用AXI 接口連接計算模塊。根據計算描述生成計算實現的過程,總結如下:

算法: 計算描述與計算實現的映射算法

Input:算法中產生的映射表s,卷積參數描述Ip

Output:硬件算子隊列Q

1:根據I,分配該層卷積中所有數據片外存儲地址

本文將協同過濾算法用于學生學習結果預測,將學生看作用戶,將學生的學習表現看作項目,采用以學生為主體的協同過濾算法,尋找與目標學生距離最近的K個學生,根據這K個學生的學習結果來預測目標學生的學習結果。

2:根據s中的塊級映射參數和I,分配每個塊級任務中的數據的片上地址

3:進行數據張量與片上內存段的標記

4:fori=0 to IC_C,j=0 to OC_C,k=0 to FM_C do

5:根據s中的細粒度映射參數,分配每個細粒度任務中的片上數據地址

6:進行細粒度任務級別的數據張量標記與片上內存段的標記

7:根據塊級任務中的標記與細粒度任務級中的標記,確定依賴信息

8:forl=0 to ic_c,m=0 to oc_c,n=0 to fm_c,p=0 to k_c do

9:根據依賴信息及計算描述和細粒度映射參數,生成硬件元算子隊列Q

10:endfor

11:endfor

加速器的工作過程分為數據加載、數據處理和結果輸出3 個步驟。在數據加載階段, 計算所需的所有數據都從片外的動態隨機存取存儲器傳輸到片上緩沖區,包括該層的量化后權重、偏置和特征圖。CPU 在調用PL端的加速器之前,將這一層的控制信息寫入PL 端的控制寄存器,加速器根據這些參數處理數據。每一層的輸出結果必須在下一層數據加載前寫回DRAM。

每個模塊并行地按序執行指令,不同模塊間使用和產生的數據之間存在依賴關系,同時每條指令都需要使用片上存儲,同一個單元RAM 在同一時間段內只能被一個模塊讀、一個模塊寫,所以不同模塊之間的指令執行既需要保證順序正確,同時也要保證訪存不會出現沖突。本設計中使用兩種機制來保證指令流和數據流的順序正確以及訪存不會出現沖突,模塊雖然并行地按序執行指令,但指令是否執行由每個模塊中用于處理依賴和內存請求信息的頂部模塊決定,指令的執行需要滿足兩個條件,依賴檢查通過以及請求的內存未被占用。

緩存順序如圖7 所示。

圖7 緩存順序

3 仿真與結果分析

本文實驗使用Pytorch 深度學習框架搭建卷積神經網絡,采用ResNet50 模型在圖像數據集上進行實驗。對于所有量化實驗,學習率最初設置為0.001,每10 個epoch 衰減一次,衰減系數設置為0.1。將輸入圖像大小統一調整為224×224 進行訓練。

將在Pytorch 下訓練好的模型分別部署至CPU 與加速器上進行運算,模型部署至邊緣式上需要兩個步驟:首先將Pytorch 的.pth 模型轉換成ONNX 的.onnx 模型;然后采用人工拆解將.onnx 模型轉換算子通過SDK 進行部署。硬件平臺選用Xilinx ZU9 開發板(4 核ARM Cortex-A53+FPGA),加速器使用Vivado 設計工具,在Vivado v2018.2中完成綜合與布局布線。

實驗結果如圖8 和表2 所示。

表2 使用加速器對比

圖8 結果圖片展示

實驗結果表明,在200 MHz 工作頻率下,加速器的峰值計算性能達到425.8 GOP/s,推測壓縮模型速度達到30.3 f/s,模塊功耗為3.56 W,是未使用FPGA 加速的推理速度的5 倍。

表3 是加速器中各類資源的使用情況。相比其他加速器方案,本文提出的硬件加速架構對FPGA 片上各類資源要求較少。

表3 FPGA 資源消耗與系統功耗

4 結 語

本文采用軟硬件協同的方式將深度學習領域中的神經網絡模型應用于識別占用公交車道任務中,設計一種基于算子的通用深度卷積神經網絡加速器,并在ARM+FPGA 異構平臺上成功部署,實現了神經網絡推理加速,并利用ARM 核對加速器進行調度,加快了硬件推理速度的同時減少了精度損失,最終完成目標分類任務。

在軟件層面,本文利用遷移學習的深度學習方法,構造ResNet50 預訓練模型,克服了傳統網絡每次添加新的樣本都需要重新進行大樣本訓練、訓練時間長等缺點;在硬件層面,通過合理設計硬件架構和硬件算子,在保證加速器性能的同時減少了FPGA 資源消耗。該圖像物體分類算法為實現神經網絡在嵌入式平臺的高效、高速應用提供了有效解決方案。

注:本文通訊作者為張偉彬。

猜你喜歡
加速器卷積神經網絡
化學工業的“加速器”
莫比斯加速器眾創辦公空間
基于3D-Winograd的快速卷積算法設計及FPGA實現
全民小康路上的“加速器”
神經網絡抑制無線通信干擾探究
從濾波器理解卷積
基于傅里葉域卷積表示的目標跟蹤算法
等待“加速器”
基于神經網絡的拉矯機控制模型建立
復數神經網絡在基于WiFi的室內LBS應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合