NNIE

https://blog.csdn.net/ywcpig/article/details/85260752

1. NNIE介紹

NNIE 是 Neural Network Inference Engine 的簡稱,是海思媒體 SoC 中專門針對神經網絡特別是深度學習卷積神經網絡進行加速處理的硬件單元,支持現有大部分的公開網絡,如 Alexnet、VGG16、Googlenet、Resnet18、Resnet50 等分類網絡,Faster R- CNN、YOLO、SSD、RFCN 等檢測網絡,以及 SegNet、FCN 等場景分割網絡。

目前 NNIE 配套軟件及工具鏈僅支持以 Caffe 框架,使用其他框架的網絡模型需要轉化爲 Caffe 框架下的模型。

2. 工具鏈介紹

SVP NNIE 在 HiSVP_PC_Vx.x.x.x.rar 組件包中,提供如下的工具鏈:

    nnie_mapper(tool\nnie\linux\mapper 目錄):簡稱 mapper,該工具將用戶開通過開源深度學習框架訓練得到的模型轉化成在 Hi35xx 芯片上或者在仿真庫中可以加載的數據指令文件(文件後綴爲 wk,後文中提到的 wk 文件即由該工具生成)。

    仿真庫(software\x64 目錄):模擬 NNIE 的硬件執行和軟件接口調用,在“相同的輸入”下仿真庫與硬件得到相同的結果。仿真庫可以使用戶脫離硬件在 PC 環境下仿真,且便於調試,有助於用戶提前快速開發算法原型。仿真庫有基於 Visual Studio 和 MinGW 版本,後者集成在 RuyiStudio 中。

    仿真 Sample 工程(software\sample_simulator 目錄):,包含仿真 sample 源代碼供開發者學習參考,支持 Visual Studio 或 RuyiStudio 環境運行。

    模型包(software\data):包含若干 sample 中用到的網絡的 caffe 模型文件及對應的 NNIE mapper 配置文件、wk 文件、圖像文件等。

    Windows 版 IDE(tool\nnie\windows 目錄)工具 RuyiStudio,集成 Windows 版的 NNIE mapper 和仿真庫,用戶可以將仿真 Sample 工程導入運行、調試;IDE 還集 成了代碼編輯、編譯、調試、執行、畫框、相似度比對等功能,具體參考  “RuyiStudio 工具使用指南”章節。

3. 開發流程

以 Caffe 框架上訓練的模型爲例,NNIE 的開發流程如圖所示。在 Caffe 上訓練、 使用 NNIE 的 mapper 工具轉化都是離線的。通過設置不同的模式,mapper 將 *.caffemodel 轉化成在仿真器、仿真庫或板端上可加載執行的數據指令文件。一般在開發前期,用戶可使用仿真器對訓練出來的模型進行精度、性能、帶寬進行初步評估, 符合用戶預期後再使用仿真庫進行完整功能的仿真,最後將程序移植到板端。

4. 網絡層分類

一個網絡的層可分爲如下的 3 類:

    標準層:NNIE 支持的 Caffe 標準層,比如 Convolution,Pooling 層等;

    擴展層:NNIE 支持的公開但非 Caffe 標準層,分爲 2 種:

        −  一種是基於 Caffe 框架進行自定義擴展的層,比如 Faster RCNN 中的 ROIPooling 層、SSD 中 Normalize 層、RFCN 中的 PSROIPooling 層,SegNet 中 的 UpSample 層等;

        −  另外一種是來源於其他深度學習框架的自定義層,比如 YOLOv2 中 Passthrough 層等;

    Non-support 層:NNIE 不支持的層,比如 Caffe 中專用於 Tranning 的層、其他非 Caffe 框架中的一些層或者用戶自定義的私有層等。

5. 擴展層規則

Faster RCNN、SSD、RFCN 和 SegNet 等網絡都包含了一些原始 Caffe 中沒有定義的層 結構,如 ROIPooling、Normalize、PSROI Pooling 和 Upsample 等。NNIE 的 mapper 目 前僅支持 Caffe 框架,且以 Caffe-1.0 爲基礎。爲了使 mapper 能支持這些網絡,需要對 原始的 Caffe 進行擴展。
https://blog.csdn.net/ywcpig/article/details/85260752

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章