張 嘉,李新增,康 鵬,朱海云,金 婕
(上海工程技術大學 電子電氣工程學院,上海 201620)
異常檢測是發(fā)現(xiàn)與大部分對象不同的個體、即發(fā)現(xiàn)離群點,也稱偏差檢測,異常對象是相對罕見的。異常檢測主要應用于欺詐檢測、入侵檢測和醫(yī)療領域等。金屬的工業(yè)化生產(chǎn)與制造過程中,需要根據(jù)金屬圖片進行異常檢測,辨別高品質(zhì)金屬樣本與低品質(zhì)金屬樣本。
本文基于第五代精簡指令集計算機(Reduced Instruction Set Computer-Five,RISC-V)設計了異常圖片檢測方案,在檢測算法上擯棄了傳統(tǒng)的圖像識別算法,采用了人工智能應用領域中較為常見的生成 對 抗 網(wǎng) 絡(Generative Adversarial Networks,GAN)。通過測試實驗,驗證了該方法的可行性以及實用性。
精簡指令集計算機(Reduced Instruction Set Computer,RISC)具有指令長度固定、指令格式種類少、尋址方式種類少等特點。復雜指令的功能可由簡單指令的組合來實現(xiàn),最具代表性的精簡指令集計算機為ARM架構(gòu)計算機。RISC相較于以x86架構(gòu)為代表的復雜指令集計算機(Complex Instruction Set Computer,CISC),具有指令更為精簡、更易操作的特點。RISC-V則是由加州大學伯克利分校所研發(fā)并開源的第五代精簡指令集計算機,是一款高質(zhì)量、免許可證、開放的指令集,也是一套由RISC-V基金會所通力維護的標準,以達到代碼開源、指令集開放的目的。采用RISC-V設計的芯片,面積功耗比更低,更為簡潔,面積功耗以及性能之比更加平衡,在實際應用中,其性價比更高。
本設計采用了加州大學伯克利分校于2015年所開源的RISC-V裸核,在該裸核的基礎上構(gòu)建片上系統(tǒng),即包括DDR2控制器、VGA顯示器、SD卡讀寫器等外圍設備,并生成了可下載于FPGA板上的比特流文件進行板上開發(fā)。
本文的異常檢測系統(tǒng)需要基于實際的硬件平臺進行驗證與測試,故僅僅通過中央處理器(Central Processing Unit,CPU)裸核進行系統(tǒng)設計不能滿足整套測試驗證硬件系統(tǒng)平臺搭建的需求。故通過CPU裸核的選型,進行了片上系統(tǒng)(System-On-Chip,SOC)的設計。由CPU裸核通過AMBA AXI4總線協(xié)議,與MIG 7series、BRAM Controller相連,其中MIG 7series為DDR2控制器,BRAM Controller為塊RAM控制器;PSOC是負責協(xié)調(diào)外設的控制器,目前掛在內(nèi)核上的外設有IIC接口、VGA接口、以太網(wǎng)接口和PS2等。片上系統(tǒng)總體設計如圖1所示。對此擬展開研究分述如下。
圖1 片上系統(tǒng)設計Fig.1 System-On-Chip design
中央處理器Rocket是一款采用RISC-V指令系統(tǒng)的開源處理器,擁有五級流水線,且為單發(fā)射順序執(zhí)行的64位標量處理器。Rocket支持內(nèi)存管理單元和分頁虛擬內(nèi)存,具有兼容IEEE 754-2008標準的浮點處理單元。
Rocket內(nèi)部總線協(xié)議為TileLink協(xié)議,連接內(nèi)部核內(nèi)各個子模塊與計算核心Rocket Tile。計算核心中集成了指令緩沖器(IBUF)、控制與狀態(tài)寄存器(CSR)、中斷單元(BPU)、算術邏輯單元(ALU)、乘除法器單元(MULDIV)、浮點處理單元(FPU)等。
外設片上系統(tǒng)(Periphery System-On-Chip,PSOC)內(nèi)部集成了子模塊SD卡讀寫器、VGA顯示器、Ethernet、PS2鍵盤鼠標等模塊的接口控制器。與Rocket核相連的BRAM Controller通過PSOC與塊RAM、外圍設備搭建數(shù)據(jù)通路。外圍設備中,SD卡讀寫器采用SPI通信協(xié)議,VGA顯示器接口通過HSYNC和VSYNC信號線控制行與幀時序進行VGA顯示。
內(nèi)存接口生成器(Memory Interface Generator,MIG)7 series是Xilinx公司的7系列開發(fā)板所使用的內(nèi)存控制器。MIG 7series控制器在軟件VIVADO中創(chuàng)建,配置時鐘參數(shù)以及引腳約束后,需單獨編譯此內(nèi)存控制器IP核,編譯成功則生成了可調(diào)用的MIG 7series控制器IP核工程,在SOC設計工程中可直接添加此IP核。
由于本文的應用設計需基于硬件系統(tǒng),即部署于FPGA開發(fā)板內(nèi)的硬件系統(tǒng)以及操作系統(tǒng),在該系統(tǒng)內(nèi)進行網(wǎng)絡結(jié)構(gòu)的設計與異常檢測。文中將給出探討論述如下。
生成對抗神經(jīng)網(wǎng)絡設計了3組子網(wǎng)絡。第一組子網(wǎng)絡是一個自動編碼器網(wǎng)絡和一個解碼器網(wǎng)絡,第二組子網(wǎng)絡是一個編碼器網(wǎng)絡,第三組子網(wǎng)絡是一個判別器網(wǎng)絡。
本文設計的具體網(wǎng)絡結(jié)構(gòu)如圖2所示。生成對抗網(wǎng)絡模型的生成器網(wǎng)絡包括一個自動編碼器網(wǎng)絡、一個解碼器網(wǎng)絡和一個編碼器網(wǎng)絡。生成器網(wǎng)絡分別通過自動編碼器網(wǎng)絡和解碼器網(wǎng)絡學習輸入數(shù)據(jù)表示并重構(gòu)輸入圖像。生成器網(wǎng)絡首先讀取輸入圖像,并將其前向傳播到第二個編碼器網(wǎng)絡中。第一個子網(wǎng)絡中緊鄰歸一化卷積層和泄露線性修正激活函數(shù),網(wǎng)絡中的下采樣過程通過壓縮輸入圖片為向量來實現(xiàn),向量稱為生成器的瓶頸特征,并假設為包含的最好表征的最小維度。生成器網(wǎng)絡中的解碼器部分采用了深度卷積生成對抗網(wǎng)絡(Deep Convolutional Generative Adversarial Networks,DCGAN)的體系結(jié)構(gòu),包括卷積變換層、ReLU激活函數(shù)、歸一化層、以及tanh激活函數(shù)。
圖2 網(wǎng)絡結(jié)構(gòu)Fig.2 Network structure
第三組子網(wǎng)絡是判別器網(wǎng)絡,負責分辨輸入和輸出的真假。該子網(wǎng)絡是DCGAN中引入的標準判別器網(wǎng)絡。
圖片數(shù)據(jù)輸入網(wǎng)絡之前,已將異常圖片修改為網(wǎng)絡特定的輸入尺寸,網(wǎng)絡輸出再經(jīng)過層輸出為真類和假類,輸出層節(jié)點數(shù)為2,即為二分類。
在金屬鋁材的生產(chǎn)制造過程中,金屬表面會因為各方面因素而產(chǎn)生差異性,出現(xiàn)裂紋、劃傷、起皮等不規(guī)則紋理,這些瑕疵會引起金屬應用時的不確定性,從而增加了工業(yè)生產(chǎn)及測試的工作量。實驗中讀取各個不同特征的金屬圖片進行訓練,包括斑塊、開裂、劃痕等。通過生成對抗網(wǎng)絡對缺陷圖片進行特征捕捉,將具有異常缺陷的圖片特征與表面光滑、即完好的圖片特征一并導入網(wǎng)絡中,從而生成權重文件以供測試識別過程中對真類圖片及假類圖片進行分類。
異常檢測算法的識別步驟:首先,導入深度學習框架,創(chuàng)建并設定神經(jīng)網(wǎng)絡參數(shù);其次,導入數(shù)據(jù)集并開始訓練,訓練完成時保持模型權重數(shù)據(jù);最后,導入訓練完成的模型并進行圖片的識別。
本文提出的異常圖片檢測與識別系統(tǒng)是基于Xilinx公司的XC7A100T FPGA芯片構(gòu)成的開發(fā)板Nexys4 DDR2,SOC使用VIVADO軟件設計并實現(xiàn)。
由于所需的鋼材圖片數(shù)據(jù)集為二次修改后生成的圖片,故在網(wǎng)絡訓練前,需要對鋼材圖片數(shù)據(jù)集進行微調(diào),包括修改圖片名稱、圖片大小及圖片格式等。
修改后的圖片為32×32或64×64的PNG圖片,本實驗所使用的訓練集和測試集為64×64的PNG圖片。數(shù)據(jù)集中的每一類的標簽即為該類所在文件夾的文件夾名。在網(wǎng)絡訓練時,可讀取該文件夾名作為對應的標簽。本文將取另外一部分同源圖片作為網(wǎng)絡的測試驗證集。
基于Python-OpenCV以及Pytorch深度學習框架環(huán)境進行實驗。
由于本文采用的訓練方法是反向傳播法(back-propagation),權重梯度更新參數(shù)設置過大會引起過擬合效應,并且動量參數(shù)應與權重梯度更新參數(shù)相近,故設定該反向傳播中所需要的權重梯度更新參數(shù)為0.1,動量參數(shù)也為0.1,訓練停止條件為最大迭代次數(shù)或閾值,滿足其一則停止本次訓練?;谒惴敯粜钥紤],最大迭代次數(shù)或閾值依次設定為500及0.01,設定了整體訓練集的訓練次數(shù)為1 200,即整個數(shù)據(jù)集訓練1 200次后,就會保存已訓練完成的模型權重數(shù)據(jù)參數(shù)以供識別過程中導入該模型。
本文所提出的基于FPGA的RISC-V架構(gòu)開發(fā)的識別應用系統(tǒng)有效地實現(xiàn)了異常圖片的檢測與識別,異常圖片檢測準確率可達到99.9%。本實驗中的假類圖片與真類圖片測試中可清晰比對出真假圖片,如圖3、圖4所示。
圖3 假類圖片F(xiàn)ig.3 Negative samples
圖4 真類圖片F(xiàn)ig.4 Positive samples
與采用無監(jiān)督、預訓練的卷積神經(jīng)網(wǎng)絡以及卷積自編碼器網(wǎng)絡的結(jié)果對比,采用生成對抗網(wǎng)絡算法具有一定的優(yōu)越性,算法比較結(jié)果見表1。
表1 算法比較Tab.1 Algorithms comparison
本文通過FPGA平臺,搭建了基于RISC-V架構(gòu)的SOC,并在SOC上完成了異常圖片檢測與識別系統(tǒng)的設計;在SOC中運用高準確率以及結(jié)構(gòu)精簡的生成對抗網(wǎng)絡,對異常金屬圖片進行檢測,實現(xiàn)了高達99.9%識別準確率,為工業(yè)生產(chǎn)制造與異常檢測提供了有效幫助,為基于RISC-V的微系統(tǒng)開發(fā)和芯片設計奠定了基礎。