如何讓Netron可以正常顯示自定義的Layer — 以darknet的cfg檔案為例

尚為安裝過node.js的人請透過https://nodejs.org 安裝

環境設定

git clone https://github.com/lutzroeder/netron.git
cd netron
npm install
npx electron . # 啟動electron

修改 darknet.js 程式碼

由於我們的目標為darknet的cfg檔案,所以請用文字編輯器開啟source/darknet.js和source/darknet-metadata.json

請在darknet.js中的702行case 'shortcut' {....省略....}之後,加入目前已經寫好的Layer名稱在其後例如:cfg裡面有個my-layer,有兩個參數,分別是alpha和beta,這時候程式碼可以寫成:case 'my-layer': {
const alpha = option_find_str(options, 'alpha', '0.9');
const beta = option_find_str(options, 'beta', '0.1');
layer.out_w = params.w; /* output width */
layer.out_h = params.h; /* output height */
layer.out_c = params.c; /* output channel */
layer.out = params.w * params.h * params.c;
layer.outputs[0].type = new darknet.TensorType('float32', make_shape([ params.w, params.h, params.c ], 'my-layer'));
break;
}
不過實際上的程式撰寫,要依照自己所新建的layer用途來作layer.out的修改

修改 darknet-metadata.json

這個json檔案定義了Netron的所需參數名稱,新增的資料(my-layer)可在任意一行填入。比較需要注意的是{ }、 , 這兩個符號使用要正確,否則可能會產生錯誤。

# category為layer的類別,有Activation, Layer, Shape, Tensor......等# attributes則是layer的屬性參數,可自己定義加入name, type, default等,也能加入description去描述該layer的功用,會在Netron軟體中以Documentation的方式呈現{
"name": "my-layer",
"schema": {
"category": "Layer",
"attributes": [
{ "name": "alpha", "type": "float32", "default": 0 },
{ "name": "beta", "type": "float32", "default": 0 }
]
}
},

檢視更新程式碼後的Netron

請將CMD介面中的Netron終止,再次執行npx electron .即可

打包Netron成可執行檔 *.exe

在Netron的開發目錄下執行下列指令

npm install electron-builder --save-dev# 在package.json加入以下內容    "build": {
"appId": "com.xxx.app",
"mac": {
"target": ["dmg","zip"]
},
"win": {
"target": ["nsis","zip"]
}
},
"scripts": {
"dist": "electron-builder --win --x64"
}
npm run dist# 打包後在dist資料夾產生:
[1]:*.exe格式的安裝執行檔
[2]:*.zip的壓縮檔
[3]:[2]解壓縮完的免安裝執行檔
[注]:要讓其他人的電腦安裝,請使用*.exe的格式。
若使用免安裝檔案,請先確保電腦上是否有安裝node.js,否則一律以*.exe為主

Written by

Machine Learning / Deep Learning / Python / Flutter cakeresume.com/yanwei-liu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store