关于标准Caffe绘制loss,accuracy曲线参见这篇博客,写得很详细《Caffe 绘制训练过程loss,accuracy曲线》,而训练SSD时绘制loss,accuracy曲线稍简单点,因为SSD的训练脚本已经完成了日志输出重定向工作 。训练时训练日志已经以文件形式保存在jobs文件夹下
所以我们要做的就是直接利用这个日志文件绘制训练过程loss,accuracy曲线。
分析日志生成数据
caffe在tools/extra中自带日志分析工具,
在$ssd_root/tools/extra下执行(log文件名根据你的实际情况而定)
./parse_log.sh ../../jobs/VGGNet/VOC2007/SSD_300x300/VGG_VOC2007_SSD_300x300.log
会生VGG_VOC2007_SSD_300x300.log.test,VGG_VOC2007_SSD_300x300.log.train两个解析过的文件
内容如下:
修改gnuplot设置
在$ssd_root/tools/extra下执行
cp plot_log.gnuplot.example plot_log.gnuplot
绘制train loss单曲线
复制plot_log.gnuplot.example的一个副本plot_log.gnuplot,在plot_log.gnuplot上修改,主要修改的是44行
下图是用rabbitvcs显示了修改前后的差异
删除掉注释后plot_log.gnuplot的完整内容及说明
reset
set terminal png
# 输出文件名 可不改
set output "VGG_VOC2007_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 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轴
# VGG_VOC2007_SSD_300x300.log.train即为上一步生成的训练日志分析文件
plot "VGG_VOC2007_SSD_300x300.log.train" using 1:3 title "train loss"
在$ssd_root/tools/extra下执行
gnuplot plot_log.gnuplot
主就会在当前文件夹下生成 VGG_VOC2007_SSD_300x300.png。
绘制loss/accuracy双曲线
reset
set terminal png
# 输出文件名
set output "VGG_VOC2007_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_VOC2007_SSD_300x300.log.train" using 1:3 title "train loss", "VGG_VOC2007_SSD_300x300.log.test" using 1:3 title "test loss"