- Caffe-SSD的训练脚本已经完成了日志输出重定向工作,所以在训练时会自动生成相应的日志文件,因此绘制loss,accuracy会曲线稍简单点。训练时训练日志已经以文件形式保存在jobs文件夹下 。
1. 查看日志
进入如下目录:
cd ~/Programming/caffe-ssd/jobs/VGGNet/VOC0712/SSD_300x300
所以我们要做的就是直接利用这个日志文件绘制训练过程loss,accuracy曲线。
2. 分析日志生成数据
Caffe在tools/extra中自带日志分析工具,
在$caffe-ssd_root/tools/extra下执行(log文件名根据你的实际情况而定)
./parse_log.sh ../../jobs/VGGNet/VOC0712/SSD_300x300/VGG_VOC0712_SSD_300x300.log
会在当前目录下产生VGG_VOC0712_SSD_300x300.log.test,VGG_VOC0712_SSD_300x300.log.train两个解析过的文件.
生成的文件内容如下:
3. 修改gnuplot
在$caffe-ssd_root/tools/extra下执行
cp plot_log.gnuplot.example plot_log.gnuplot
4. 绘制train loss单曲线
复制plot_log.gnuplot.example的一个副本plot_log.gnuplot,在plot_log.gnuplot上修改,主要修改的是46行。
本人使用Vim编辑器修改
在$caffe-ssd/tools/extra下执行:
gnuplot plot_log.gnuplot
会在当前文件夹下生成 SSD_Shell_Detection.png.
5. 绘制loss/accuracy双曲线
修改plot_log.gnuplot为如下:
reset
set terminal png
# 输出文件名
set output "VGG_VOC0712_SSD_300x300.png"
set style data lines
set key right
###### Fields in the data file your_log_name.log.train are
###### Iters Seconds TrainingLoss LearningRate
# Training loss vs. training iterations
# 设置多图模式
set multiplot
# 设置标题名称
set title "SSD Training loss vs. training iterations"
# 设置x, y轴名称
set xlabel "Training iterations"
set ylabel "Training loss"
# 曲线绘制 title表示曲线名
# using 1:3 表示使用log-data.train的第一和第三列分别为x轴y轴
plot "VGG_VOC0712_SSD_300x300.log.train" using 1:3 title "train loss", "VGG_VOC0712_SSD_300x300.log.test" using 1:3 title "test loss"
再次在$caffe-ssd/tools/extra下执行一下语句就可以生成了.
gnuplot plot_log.gnuplot