论文里需要画出简洁美观的深度学习模型图,如果采用PPT或者Visio一笔一笔画那么是一项非常耗时耗力的任务。想到现在深度学习这么火热,应该有相关的自动画图工具。在网上找了一些工具,最后确定了一款功能非常强大且作图非常美观的的工具——PlotNeuralNet。该软件下载地址为:https://github.com/HarisIqbal88/PlotNeuralNet
使用该软件可以作出一些非常美观的深度学习模型图,如下所示:
UNet结构图
FCN8结构图
由于该软件需要配合latex,在windows平台下遇到了几个问题。下面将整个安装和使用过程进行介绍。
为了能够使用latex进行作图,需要安装相关环境。在Windows下面比较方便的一种方法就是使用CTex,该软件已经附带相关的常用latex库 MiKTeX等。下载地址: http://www.ctex.org/CTeXDownload/ 下载对应的稳定版即可。下载后根据提示进行安装。
一般情况下,安装的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的升级。
双击打开PlotNeuralNet下examples\Unet文件夹下的Unet.tex文件,在WinEdt 7.0编辑器中单击
完成编译和pdf生成。在当前目录下会生成对应的pdf图像文件。
最后,看一下如何按照我们的实际需求来生成图像。主要分两个步骤。
(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文件,如下图所示: