caffe常用小工具
1. caffe 网络结构可视化
http://ethereon.github.io/netscope/quickstart.html
将网络结构复制粘贴到左侧的编辑框,按Shift+Enter就可以显示出你的网络结构
2. caffe计算图片的均值
使用caffe自带的均值计算工具
./build/tools/compute_image_mean ROOT_OF_IMAGES ROOT_TO_PLACE_MEAN_FILE
第一个参数:需要计算均值的图片路径,格式为LMDB训练数据
第二个参数:计算出来的结果保存路径
./build/tools/compute_image_mean project/SqueezeNet/SqueezeNet_v1.0/test_lmdb project/SqueezeNet/SqueezeNet_v1.0/test_mean.binaryproto
python格式的均值计算
先用LMDB格式数据,计算出二进制格式均值,然后转换成python格式均值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/usr/bin/env python import numpy as np
import sys,caffe
if len (sys.argv)! = 3 :
print "Usage: python convert_mean.py mean.binaryproto mean.npy"
sys.exit()
blob = caffe.proto.caffe_pb2.BlobProto()
bin_mean = open ( sys.argv[ 1 ] , 'rb' ).read()
blob.ParseFromString(bin_mean) arr = np.array( caffe.io.blobproto_to_array(blob) )
npy_mean = arr[ 0 ]
np.save( sys.argv[ 2 ] , npy_mean )
|
脚本保存为convert_mean.py
调用格式:
1 |
sudo python convert_mean.py mean.binaryproto mean.npy |
mean.npy是我们需要的python格式二进制文件
3. 可视化训练过程中的 training/testing loss
- NVIDIA-DIGITS: caffe训练可视化工具(数据准备,模型选择,学习曲线可视化,多GPU训练
- 训练时 --solver=solver.ptototxt 2>&1 | tee train.log, 然后使用 ./tools/extra/parse_log.py train.log将其转为两个csv 文件分别包括train loss和test loss, 然后使用以下脚本画图:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import pandas as pd
from matplotlib import *
from matplotlib.pyplot import *
train_log = pd.read_csv( "./lenet_train.log.train" )
test_log = pd.read_csv( "./lenet_train.log.test" )
_, ax1 = subplots(figsize = ( 15 , 10 ))
ax2 = ax1.twinx()
ax1.plot(train_log[ "NumIters" ], train_log[ "loss" ], alpha = 0.4 )
ax1.plot(test_log[ "NumIters" ], test_log[ "loss" ], 'g' )
ax2.plot(test_log[ "NumIters" ], test_log[ "acc" ], 'r' )
ax1.set_xlabel( 'iteration' )
ax1.set_ylabel( 'train loss' )
ax2.set_ylabel( 'test accuracy' )
savefig( "./train_test_image.png" ) #save image as png
|
分类: Tool