論文裏需要畫出簡潔美觀的深度學習模型圖,如果採用PPT或者Visio一筆一筆畫那麼是一項非常耗時耗力的任務。想到現在深度學習這麼火熱,應該有相關的自動畫圖工具。在網上找了一些工具,最後確定了一款功能非常強大且作圖非常美觀的的工具——PlotNeuralNet。該軟件下載地址爲:https://github.com/HarisIqbal88/PlotNeuralNet
使用該軟件可以作出一些非常美觀的深度學習模型圖,如下所示:
UNet結構圖
FCN8結構圖
由於該軟件需要配合latex,在windows平臺下遇到了幾個問題。下面將整個安裝和使用過程進行介紹。
1. 安裝CTex
爲了能夠使用latex進行作圖,需要安裝相關環境。在Windows下面比較方便的一種方法就是使用CTex,該軟件已經附帶相關的常用latex庫 MiKTeX等。下載地址: http://www.ctex.org/CTeXDownload/ 下載對應的穩定版即可。下載後根據提示進行安裝。
2. 升級Tikz
一般情況下,安裝的CTex安裝包默認包含了畫圖相關的Tikz/PGF庫,但是其版本都比較舊,需要更新一下才能使用PlotNeuralNet(這一點非常重要,否則下載下載下來的PlotNeuralNet是沒有辦法正常編譯運行的)。Tikz下載網站:https://sourceforge.net/projects/pgf/files/?source=navbar
單擊“download”即可下載。下載下來後解壓該文件夾,其中包含三個子文件夾:doc、source、tex。將三個子文件夾複製到CTex安裝目錄下的MikTex文件夾下,完成覆蓋替換。
文件替換完成後,打開WinEdit 7.0編輯器,依次單擊菜單欄 “TeX”—“MikTeX”—“MikTeX Options”,在彈出的對話框中單擊“Refresh FNDB”按鈕,完成庫更新操作,如下圖所示:
這樣就實現了Tikz的升級。
3. 使用測試
雙擊打開PlotNeuralNet下examples\Unet文件夾下的Unet.tex文件,在WinEdt 7.0編輯器中單擊
完成編譯和pdf生成。在當前目錄下會生成對應的pdf圖像文件。
4. 定製化使用
最後,看一下如何按照我們的實際需求來生成圖像。主要分兩個步驟。
(1)編寫Python腳本用於生成tex文件
(2)編譯並執行tex文件生成圖像對應的pdf文件
PlotNeuralNet中已經提供了相關的使用案例。打開pyexamples文件夾,找到其中的test_simple.py文件,文件內容如下:
import sys
sys.path.append('../')
from pycore.tikzeng import *
# defined your arch
arch = [
to_head( '..' ),
to_cor(),
to_begin(),
to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=64, depth=64, width=2 ),
to_Pool("pool1", offset="(0,0,0)", to="(conv1-east)"),
to_Conv("conv2", 128, 64, offset="(1,0,0)", to="(pool1-east)", height=32, depth=32, width=2 ),
to_connection( "pool1", "conv2"),
to_Pool("pool2", offset="(0,0,0)", to="(conv2-east)", height=28, depth=28, width=1),
to_SoftMax("soft1", 10 ,"(3,0,0)", "(pool1-east)", caption="SOFT" ),
to_connection("pool2", "soft1"),
to_end()
]
def main():
namefile = str(sys.argv[0]).split('.')[0]
to_generate(arch, namefile + '.tex' )
if __name__ == '__main__':
main()
上述文件定義了一個簡單的網絡結構,對照代碼讀者只需要依葫蘆畫瓢的添加結構就可以。完成以後運行該python腳本,正常運行後在本地會生成一個同名的tex文件。使用CTex打開該tex文件並按照步驟3中的方式編譯並生成,在本地會生成對應的pdf文件,如下圖所示: