caffe模型、迭代损失可视化

安装配置完caffe后,一般都是拿官方的例子跑跑,然后终端输出一串一串的字母,感觉很神奇,因为初学caffe,所以很好奇这些信息能不能够图形化显示出来,这里记录下在ubuntu下caffe的相关图形显示。

首先便是模型的可视化,在caffe安装好后,在caffe/python/目录下有一个draw_net.py的python脚本文件,这是官方提供的一个模型可视化的脚本文件,运行这个文件,可以将模型的文件可是化,即使用图表的形式表示模型的网络。

cd caffe#进入caffe目录
python ./python/draw_net.py  (这里输入你的网络模型文件路径)  (图片存放的路径)

比如在我的电脑上运行如下命令:

python ./python/draw_net.py ./examples/myfile/train_val.prototxt ./examples/myfile/a.png

运行上面这行代码后就会在examples/myfile/目录下生成a.png的一张图片,我的如下所示。

caffe模型、迭代损失可视化

这个就是你在模型文件train_val.prototxt中定义的网络模型。还可以在后面加上 --rankdir=BT命令,则图片显示的是从下到上的方式,可选的有(BT / TB / LR)默认的是LR形式。

定义好了模型就要训练啊,但是训练的时候信息都是显示在终端,刷刷的就刷屏了,然后又没有图像,很不直观。在caffe中官方还是很人性化的,在caffe/tools/extra/目录下官方提供了两个文件:

plot_training_log.py.example和parse_log.py这两个脚本文件,使用第一文件我们可以将相关日志文件图形化显示出来。

在终端输入:

python ./tools/extra/plot_training_log.py.example

终端会输出如下提示:

This script mainly serves as the basis of your customizations.
Customization is a must.
You can copy, paste, edit them in whatever way you want.
Be warned that the fields in the training log may change in the future.
You had better check the data files and change the mapping from field name to
 field index in create_field_index before designing your own plots.
Usage:
    ./plot_training_log.py chart_type[0-7] /where/to/save.png /path/to/first.log ...
Notes:
    1. Supporting multiple logs.
    2. Log file name must end with the lower-cased ".log".
Supported chart types:
    0: Test accuracy  vs. Iters
    1: Test accuracy  vs. Seconds
    2: Test loss  vs. Iters
    3: Test loss  vs. Seconds
    4: Train learning rate  vs. Iters
    5: Train learning rate  vs. Seconds
    6: Train loss  vs. Iters
    7: Train loss  vs. Seconds

从中可以看出这个文件执行的格式。数字0-7表示你想要显示的类型。以及文件要求的格式文件为.log的日志文件,所以我们首先需要的是日志文件.

在调用caffe可执行文件train的时候在后面加入一小段代码便可生成我们需要的日志文件。

一般我们训练时的命令如下:

sudo ./build/tools/caffe train -solver examples/myfile/solver.prototxt

运行上述命令后,终端会刷刷的出现很多信息,根本来不及看,我们在命令后面加入一小段代码后,便可生成我们需要的日志文件,然后就可以使用./tools/extra/plot_training_log.py.example这个工具来显示相关数据了。命令如下:

sudo ./build/tools/caffe train -solver examples/myfile/solver.prototxt 2>&1 | tee examples/myfile/a.log

>是重定向的意思&是在后台运行,tee是linux的一个命令,不知道的话可以百度,后面便是日志文件.log的存放路径了。运行后会在examples/myfile/目录下生成一个a.log的日志文件。这样我们便可以使用工具来显示我们想要的信息了。

在终端输入:

python ./tools/extra/plot_training_log.py.example 6 ./examples/myfile/6.png ./examples/myfile/a.log

屏幕便会显示如下图片。

caffe模型、迭代损失可视化

这是训练损失与迭代次数的关系图。其中的6则是通过工具提示内容输入的,后面依次是图片存放的路径 、日志文件的路径。如果想看测试的精度与迭代次数的关系将数字6改为0即可。

parse_log.py文件的作用就是:将你的日志文件分解成两个txt的文件。

终端输入如下命令

python ./tools/extra/parse_log.py ./examples/myfile/a.log  ./examples/myfile/

便会在myfile/目录下产生a.log.train 和a.log.test的文件,根据这两个文件你可以使用matplotlib库画出你想要的图像。