深度學習開源框架眾多,對于開發(fā)者來說其中有一個很硬的需求,就是模型結(jié)構(gòu)和權(quán)重的可視化。使用過Caffe的同學都因為強大的Netscope可以離線修改實時可視化網(wǎng)絡結(jié)構(gòu)而暗爽,那其他的框架怎么樣呢?
今天給大家介紹一個可以離線可視化各大深度學習開源框架模型結(jié)構(gòu)和權(quán)重的項目,netron。
作者&編輯 | 言有三
1 項目介紹
項目開發(fā)者Lutz Roeder,一位來自于微軟Visual Studio團隊的小哥,按照他自己的介紹,就是在家搞點AI tools玩玩。
這是過去一年的contributions,基本就沒有停過,這是真正硬核的開源貢獻者呀,個人主頁https://www.lutzroeder.com/ai,有興趣可以去瞧瞧。
Netron是他開源的深度學習模型可視化工具,項目地址為:
https://github.com/lutzroeder/netron
目前支持哪些框架呢?
ONNX (.onnx, .pb, .pbtxt)
Keras (.h5, .keras)
Core ML (.mlmodel)
Caffe (.caffemodel, .prototxt)
Caffe2 (predict_net.pb, predict_net.pbtxt)
MXNet (.model, -symbol.json)
TorchScript (.pt, .pth)
NCNN (.param)
TensorFlow Lite (.tflite)
PyTorch (.pt, .pth)
Torch (.t7)
CNTK (.model, .cntk)
Deeplearning4j(.zip)
PaddlePaddle (.zip, __model__)
Darknet (.cfg)
scikit-learn (.pkl)
TensorFlow.js (model.json, .pb)
TensorFlow (.pb, .meta, .pbtxt).
共18個框架,除了chainer,matconvnet等框架基本上把數(shù)得上名字的框架一網(wǎng)打盡,下面是ONNX的可視化界面,很visual studio的感覺。
另一方面,小哥哥也是非常的貼心,提供了各大平臺的安裝包!macOS的.dmg,Linux的.deb,Windows的.exe,還有瀏覽器版本,Python服務器版本,真是good man,小白們再也不用擔心環(huán)境配置問題。
2 可視化實驗
下面我們就來嘗試幾個框架的可視化結(jié)果,首先要祭出有三AI開源的12大深度學習開源框架的項目,從模型和數(shù)據(jù)接口定義,到訓練測試可視化,提供了全套代碼,地址如下:
https://github.com/longpeng2008/yousan.ai
具體的教程大家可以跳轉(zhuǎn)閱讀原文。
這12個框架我們都使用一個3層的卷積模型來完成一個圖像分類問題,下面挑選其中幾個常用的來體驗可視化效果。
2.1 Caffe
Caffe模型可視化的輸入可以是prototxt文件和caffemodel文件。下面首先分別可視化訓練網(wǎng)絡和測試網(wǎng)絡train.prototxt和deploy.prototxt,結(jié)果如下:
比起Netscope,是不是效果也不遑多讓。如果想要查看某一個網(wǎng)絡層的細節(jié),就可以點擊該網(wǎng)絡層,結(jié)果如下,所有網(wǎng)絡配置參數(shù)細節(jié)皆可見,完美!
這就是全部了嗎?當然不,你還可以直接載入.caffemodel權(quán)重文件,直接查看每一個網(wǎng)絡層的權(quán)重!
老司機們可以從中簡單統(tǒng)計權(quán)重的分布,還可以一鍵導出參數(shù)為npy文件,看到那個保存小按鈕沒有,這就是細節(jié),不得不再次給小哥哥點贊??????
2.2 keras
keras的可視化輸入是json格式的模型文件,可以通過model.to_json()將模型存儲下來,然后載入.json文件。
如果想查看權(quán)重,就載入.h5文件,結(jié)果如下,雖然沒有caffe的那么漂亮,也是很直觀的,不過權(quán)重參數(shù)矩陣順序不太一樣。
2.3 tensorflow
要想可視化tensorflow的模型結(jié)構(gòu),就必須將模型存儲為pb格式,這樣就能同時保存網(wǎng)絡結(jié)構(gòu)和參數(shù)了,結(jié)果如下。
2.4 pytorch
pytorch的網(wǎng)絡結(jié)構(gòu)可視化不支持,不過可以像keras一樣查看pt權(quán)重文件。如果想可視化網(wǎng)絡結(jié)構(gòu),可以使用yousan.ai項目中pytorch目錄下的visualize.py腳本。
2.5 Mxnet
Mxnet通過symbol接口定義網(wǎng)絡,網(wǎng)絡結(jié)構(gòu)一般存在后綴為symbol.json的文件中,因此載入該文件即可進行可視化。權(quán)重的可視化原理類似,就不做贅述。
2.6 Darknet
DarkNet的網(wǎng)絡結(jié)構(gòu)定義在cfg文件中,載入該cfg文件即可進行可視化。
其他開源框架的案例,大家可以去下載我們的開源框架項目進行嘗試,感謝小哥作出的貢獻!
另外再安利一下我們之前的講述如何繪制更好看的網(wǎng)絡結(jié)構(gòu)的文章,一起享用,保證更香。
平時多留意一些好的工具,可以大大提升我們的學習效率,養(yǎng)成好的學習習慣,歡迎大家給我們推薦好的工具,在有三AI知識星球社區(qū)也可以一起分享。
有三AI夏季劃
有三AI夏季劃進行中,歡迎了解并加入,系統(tǒng)性成長為中級CV算法工程師。
轉(zhuǎn)載文章請后臺聯(lián)系
侵權(quán)必究
聯(lián)系客服