設計目的與應用
隨著人工智能的發展,神經網絡正被逐步應用于智能安防、自動駕駛、醫療等各行各業。目標識別作為人工智能的一項重要應用也擁有著巨大的前景,隨著深度學習的普及和框架的成熟,卷積神經網絡模型的識別精度越來越高。有名的LeNet-5手寫數字識別網絡,精度達到99%,AlexNet模型和VGG-16模型的提出突破了傳統圖像識別算法,GooLeNet和ResNet推動了卷積神經網絡的應用。
但是神經網絡的發展也給我們帶來了更多挑戰,權重參數越來越多,計算量越來越大導致了復雜的模型很難移植到移動端或嵌入式設備中,且嵌入式環境對功耗、實時性、存儲都有著嚴格的約束。因此如何將卷積神經網絡部署到嵌入式設備中是一件非常有意義的事情。目前神經網絡在傳統嵌入式設備上絕大部分是基于ARM平臺,神經網絡在ARM上部署時存在的巨大問題是算力的不足。GPU主要應用于神經網絡訓練階段,對環境和庫的依賴性較大,國內技術積累較弱,難以實現技術自主可控。ASIC 是為特定需求而專門定制優化開發的架構,靈活性較差,缺乏統一的軟硬件開發環境,開發周期長且造價極高。所以,基于FPGA的硬件加速平臺是時候發揮它的優勢了。FPGA由于獨特的架構,被廣泛的應用與實時信號處理、圖像處理領域,其并行性也為卷積神經網絡提供了巨大算力。
傳統的RTL開發FPGA流程相比緩慢,不如軟件的開發效率高,所以HLS運營而生,使用高層次語言來進行轉換為底層的硬件代碼,極大的加快開發進程。因此項目選用HLS工具來實現算法中的加速IP核,將SSD目標檢測網絡移植到FPGA硬件平臺上, 對于硬件加速過程中的算法并行性,在本設計中主要采用兩個方式:對層內的運算并行化,將多個通道的數據進行分塊,每一塊內的通道同時進行運算,最后將結果累加在一起。對于模塊的運算采用HLS并行優化,對數組核循環添加優化指令進行優化。整個系統采用PYNQ的軟件框架來實現,為SSD目標檢測算法提供了硬件加速方案,充分發揮了FPGA的并行性。
SSD目標檢測算法原理
SSD于2016年提出,是經典的單階段目標檢測模型之一。它的精度可以媲美FasterRcnn雙階段目標檢測方法,速度卻達到了59FPS(512x512,TitanV),單階段目標檢測方法的目標檢測和分類是同時完成的,其主要思路是利用CNN提取特征后,均勻地在圖片的不同位置進行密集抽樣,抽樣時可以采用不同尺度和長寬比,物體分類與預測框的回歸同時進行,整個過程只需要一步,所以其優勢是速度快。
SSD采用的主干網絡是VGG網絡,VGG是由Simonyan 和Zisserman在文獻《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷積神經網絡模型,其名稱來源于作者所在的牛津大學視覺幾何組(Visual Geometry Group)的縮寫。該模型參加2014年的 ImageNet圖像分類與定位挑戰賽,取得了優異成績:在分類任務上排名第二,在定位任務上排名第一。

圖1.VGG16網絡結構
這里的VGG網絡相比普通的VGG網絡有一定的修改,主要修改的地方就是:
1、將VGG16的FC6和FC7層轉化為卷積層。
2、去掉所有的Dropout層和FC8層;
3、新增了Conv6、Conv7、Conv8、Conv9。

圖2.SSD主干網絡結構
上圖展示了SSD的主干網絡結構,整個網絡為全卷積網絡結構,SSD將VGG16的兩個全連接層轉換成了普通的卷積層,池化層POOL5由原來的stride=2,kernel大小2x2變成stride=1,kernel大小3x3,為了不改變特征圖大小同時獲得更大的感受野,Conv6改為空洞卷積,diliation=6,輸入的圖片經過了改進的VGG網絡(Conv1->fc7)和幾個另加的卷積層(Conv6->Conv9)進行特征提取。
從圖2我們可以看出,SSD將conv4_3、conv7、conv6_2、conv7_2、conv8_2、conv9_2都連接到了最后的檢測分類層做回歸,6個特征圖分別預測不同大小和長寬比的邊界框,具體細節如圖3。

圖3.SSD特征提取網絡
SSD為每個檢測層都預定義了不同大小的先驗框(prior boxes),Conv4_3、Conv8_2和Conv9_2分別有4個先驗框,而Conv7、conv7_2和Conv8_2分別有6種先驗框,即對應于特征圖上的每個像素,都會生成4或6個prior box.
在淺層的神經網絡里,只能看到圖片的細節和紋理信息,就如管中窺豹。隨著網絡層數的加深,相當于把圖片往后移動一段距離。這樣才能夠感知到圖片的整體信息。低層卷積可以捕捉到更多的細節信息,高層卷積可以捕捉到更多的抽象信息。低層特性更關心“在哪里”,但分類準確度不高,而高層特性更關心“是什么”,但丟失了物體的位置信息。SSD正是利用不同尺度檢測圖片中不同大小和類別的目標物體,獲得了很好的效果。
作品展示
-
FPGA
+關注
關注
1660文章
22412瀏覽量
636376 -
SSD
+關注
關注
21文章
3111瀏覽量
122239 -
人工智能
+關注
關注
1817文章
50098瀏覽量
265416 -
卷積神經網絡
+關注
關注
4文章
372瀏覽量
12877
發布評論請先 登錄
FPGA硬件加速卡設計原理圖:1-基于Xilinx XCKU115的半高PCIe x8 硬件加速卡 PCIe半高 XCKU115-3-FLVF1924-E芯片
YOLO5目標檢測方案-基于米爾RK3576開發板
復雜的軟件算法硬件IP核的實現
常用硬件加速的方法
目標追蹤的簡易實現:模板匹配
硬件加速模塊的時鐘設計
如何驗證硬件加速是否真正提升了通信協議的安全性?
有哪些方法可以確保硬件加速與通信協議的兼容性?
如何利用硬件加速提升通信協議的安全性?
【機器視覺】睿擎平臺支持NCNN AI 推理框架,輕松實現實時目標檢測( 睿擎線下 Workshop 報名已開啟)|產品動
【VisionFive 2單板計算機試用體驗】在 VisionFive 2 上為目標檢測準備軟件環境并運行 MobileNet-SSD 模型
基于FPGA的SSD目標檢測算法設計
基于PYNQ的軟件框架實現SSD目標檢測算法硬件加速方案
評論