張 嘉,李新增,康 鵬,朱海云,金 婕
(上海工程技術大學 電子電氣工程學院,上海 201620)
異常檢測是發現與大部分對象不同的個體、即發現離群點,也稱偏差檢測,異常對象是相對罕見的。異常檢測主要應用于欺詐檢測、入侵檢測和醫療領域等。金屬的工業化生產與制造過程中,需要根據金屬圖片進行異常檢測,辨別高品質金屬樣本與低品質金屬樣本。
本文基于第五代精簡指令集計算機(Reduced Instruction Set Computer-Five,RISC-V)設計了異常圖片檢測方案,在檢測算法上擯棄了傳統的圖像識別算法,采用了人工智能應用領域中較為常見的生成 對 抗 網 絡(Generative Adversarial Networks,GAN)。通過測試實驗,驗證了該方法的可行性以及實用性。
精簡指令集計算機(Reduced Instruction Set Computer,RISC)具有指令長度固定、指令格式種類少、尋址方式種類少等特點。復雜指令的功能可由簡單指令的組合來實現,最具代表性的精簡指令集計算機為ARM架構計算機。RISC相較于以x86架構為代表的復雜指令集計算機(Complex Instruction Set Computer,CISC),具有指令更為精簡、更易操作的特點。RISC-V則是由加州大學伯克利分校所研發并開源的第五代精簡指令集計算機,是一款高質量、免許可證、開放的指令集,也是一套由RISC-V基金會所通力維護的標準,以達到代碼開源、指令集開放的目的。采用RISC-V設計的芯片,面積功耗比更低,更為簡潔,面積功耗以及性能之比更加平衡,在實際應用中,其性價比更高。
本設計采用了加州大學伯克利分校于2015年所開源的RISC-V裸核,在該裸核的基礎上構建片上系統,即包括DDR2控制器、VGA顯示器、SD卡讀寫器等外圍設備,并生成了可下載于FPGA板上的比特流文件進行板上開發。
本文的異常檢測系統需要基于實際的硬件平臺進行驗證與測試,故僅僅通過中央處理器(Central Processing Unit,CPU)裸核進行系統設計不能滿足整套測試驗證硬件系統平臺搭建的需求。故通過CPU裸核的選型,進行了片上系統(System-On-Chip,SOC)的設計。由CPU裸核通過AMBA AXI4總線協議,與MIG 7series、BRAM Controller相連,其中MIG 7series為DDR2控制器,BRAM Controller為塊RAM控制器;PSOC是負責協調外設的控制器,目前掛在內核上的外設有IIC接口、VGA接口、以太網接口和PS2等。片上系統總體設計如圖1所示。對此擬展開研究分述如下。

圖1 片上系統設計Fig.1 System-On-Chip design
中央處理器Rocket是一款采用RISC-V指令系統的開源處理器,擁有五級流水線,且為單發射順序執行的64位標量處理器。Rocket支持內存管理單元和分頁虛擬內存,具有兼容IEEE 754-2008標準的浮點處理單元。
Rocket內部總線協議為TileLink協議,連接內部核內各個子模塊與計算核心Rocket Tile。計算核心中集成了指令緩沖器(IBUF)、控制與狀態寄存器(CSR)、中斷單元(BPU)、算術邏輯單元(ALU)、乘除法器單元(MULDIV)、浮點處理單元(FPU)等。
外設片上系統(Periphery System-On-Chip,PSOC)內部集成了子模塊SD卡讀寫器、VGA顯示器、Ethernet、PS2鍵盤鼠標等模塊的接口控制器。與Rocket核相連的BRAM Controller通過PSOC與塊RAM、外圍設備搭建數據通路。外圍設備中,SD卡讀寫器采用SPI通信協議,VGA顯示器接口通過HSYNC和VSYNC信號線控制行與幀時序進行VGA顯示。
內存接口生成器(Memory Interface Generator,MIG)7 series是Xilinx公司的7系列開發板所使用的內存控制器。MIG 7series控制器在軟件VIVADO中創建,配置時鐘參數以及引腳約束后,需單獨編譯此內存控制器IP核,編譯成功則生成了可調用的MIG 7series控制器IP核工程,在SOC設計工程中可直接添加此IP核。
由于本文的應用設計需基于硬件系統,即部署于FPGA開發板內的硬件系統以及操作系統,在該系統內進行網絡結構的設計與異常檢測。文中將給出探討論述如下。
生成對抗神經網絡設計了3組子網絡。第一組子網絡是一個自動編碼器網絡和一個解碼器網絡,第二組子網絡是一個編碼器網絡,第三組子網絡是一個判別器網絡。
本文設計的具體網絡結構如圖2所示。生成對抗網絡模型的生成器網絡包括一個自動編碼器網絡、一個解碼器網絡和一個編碼器網絡。生成器網絡分別通過自動編碼器網絡和解碼器網絡學習輸入數據表示并重構輸入圖像。生成器網絡首先讀取輸入圖像,并將其前向傳播到第二個編碼器網絡中。第一個子網絡中緊鄰歸一化卷積層和泄露線性修正激活函數,網絡中的下采樣過程通過壓縮輸入圖片為向量來實現,向量稱為生成器的瓶頸特征,并假設為包含的最好表征的最小維度。生成器網絡中的解碼器部分采用了深度卷積生成對抗網絡(Deep Convolutional Generative Adversarial Networks,DCGAN)的體系結構,包括卷積變換層、ReLU激活函數、歸一化層、以及tanh激活函數。

圖2 網絡結構Fig.2 Network structure

第三組子網絡是判別器網絡,負責分辨輸入和輸出的真假。該子網絡是DCGAN中引入的標準判別器網絡。
圖片數據輸入網絡之前,已將異常圖片修改為網絡特定的輸入尺寸,網絡輸出再經過層輸出為真類和假類,輸出層節點數為2,即為二分類。
在金屬鋁材的生產制造過程中,金屬表面會因為各方面因素而產生差異性,出現裂紋、劃傷、起皮等不規則紋理,這些瑕疵會引起金屬應用時的不確定性,從而增加了工業生產及測試的工作量。實驗中讀取各個不同特征的金屬圖片進行訓練,包括斑塊、開裂、劃痕等。通過生成對抗網絡對缺陷圖片進行特征捕捉,將具有異常缺陷的圖片特征與表面光滑、即完好的圖片特征一并導入網絡中,從而生成權重文件以供測試識別過程中對真類圖片及假類圖片進行分類。
異常檢測算法的識別步驟:首先,導入深度學習框架,創建并設定神經網絡參數;其次,導入數據集并開始訓練,訓練完成時保持模型權重數據;最后,導入訓練完成的模型并進行圖片的識別。
本文提出的異常圖片檢測與識別系統是基于Xilinx公司的XC7A100T FPGA芯片構成的開發板Nexys4 DDR2,SOC使用VIVADO軟件設計并實現。
由于所需的鋼材圖片數據集為二次修改后生成的圖片,故在網絡訓練前,需要對鋼材圖片數據集進行微調,包括修改圖片名稱、圖片大小及圖片格式等。
修改后的圖片為32×32或64×64的PNG圖片,本實驗所使用的訓練集和測試集為64×64的PNG圖片。數據集中的每一類的標簽即為該類所在文件夾的文件夾名。在網絡訓練時,可讀取該文件夾名作為對應的標簽。本文將取另外一部分同源圖片作為網絡的測試驗證集。
基于Python-OpenCV以及Pytorch深度學習框架環境進行實驗。
由于本文采用的訓練方法是反向傳播法(back-propagation),權重梯度更新參數設置過大會引起過擬合效應,并且動量參數應與權重梯度更新參數相近,故設定該反向傳播中所需要的權重梯度更新參數為0.1,動量參數也為0.1,訓練停止條件為最大迭代次數或閾值,滿足其一則停止本次訓練。基于算法魯棒性考慮,最大迭代次數或閾值依次設定為500及0.01,設定了整體訓練集的訓練次數為1 200,即整個數據集訓練1 200次后,就會保存已訓練完成的模型權重數據參數以供識別過程中導入該模型。
本文所提出的基于FPGA的RISC-V架構開發的識別應用系統有效地實現了異常圖片的檢測與識別,異常圖片檢測準確率可達到99.9%。本實驗中的假類圖片與真類圖片測試中可清晰比對出真假圖片,如圖3、圖4所示。

圖3 假類圖片Fig.3 Negative samples

圖4 真類圖片Fig.4 Positive samples
與采用無監督、預訓練的卷積神經網絡以及卷積自編碼器網絡的結果對比,采用生成對抗網絡算法具有一定的優越性,算法比較結果見表1。

表1 算法比較Tab.1 Algorithms comparison
本文通過FPGA平臺,搭建了基于RISC-V架構的SOC,并在SOC上完成了異常圖片檢測與識別系統的設計;在SOC中運用高準確率以及結構精簡的生成對抗網絡,對異常金屬圖片進行檢測,實現了高達99.9%識別準確率,為工業生產制造與異常檢測提供了有效幫助,為基于RISC-V的微系統開發和芯片設計奠定了基礎。