查看网络结构:

(1)利用caffe自带的Python,可以将*.prototxt保存为一张图片,

sudo  python python/draw_net.py  *.prototxt  *.png  --rankdir=BT(或者,TB,LR,RL)

(2)利用Netscope,可以生成网络结构,并带有详细信息,

http://ethereon.github.io/netscope/quickstart.html

http://ethereon.github.io/netscope/#/editor

随机初始化训练:

./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --gpu=-0,1

微调:

./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --weights=models/bvlc_reference_caffenet/caffenet_train_iter_10000.caffemodel--gpu=-0,1

从中断处继续训练:

./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --snapshot=models/bvlc_reference_caffenet/caffenet_train_iter_10000.solverstate

统计在验证集(validation set)上的得分:

./build/tools/caffe test --model= models/bvlc_reference_caffenet/caffenet_train_iter_10000.prototxt--weights= models/bvlc_reference_caffenet/caffenet_train_iter_10000.caffemodel--gpu=0 --iterations=10000

统计训练时间:

# 在 CPU上, 10000iterations训练 caffenet的时间
./build/tools/caffe time --model= models/bvlc_reference_caffenet/caffenet_train_test.prototxt--iterations=10000
# 在 GPU上,默认的 50 iterations训练 caffenet的时间
./build/tools/caffe time --model= models/bvlc_reference_caffenet/caffenet_train_test.prototxt--gpu=0
# 在第一块 GPU上, 10000 iterations训练已给定权值的网络结构的时间
./build/tools/caffe time --model= models/bvlc_reference_caffenet/caffenet_train_test.prototxt--weights= models/bvlc_reference_caffenet/caffenet_train_iter_10000.caffemodel--gpu=0 --iterations=10000

查询GPU显卡参数信息:

# 查询第一块 GPU

./build/tools/caffe device_query --gpu=0

输出训练log日志到txt:

(1)GLOG_logtostderr=0 GLOG_log_dir=./Log/ ./build/tools /caffe  train  --solver=./deepid_solver.prototxt

(2) ./build/tools/caffe train --solver=./deepid_solver.prototxt  >&log.txt&

解析日志:

会在当前文件夹下生成一个.train文件和一个.test文件

./TOOLS/extra/parse_log.sh  *.log

生成曲线图:

./tools/extra/plot_training_log.py.example  0  *.png *.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

计算训练数据均值:

# sudo build/tools/compute_image_mean  examples/mnist/mnist_train_lmdbexamples/mnist/mean.binaryproto

生成训练数据的LMDB文件:

convert_imageset  [FLAGS]  ROOTFOLDER/  LISTFILE DB_NAME

FLAGS:

--gray: 是否以灰度图的方式打开图片。程序调用OpenCV库中的imread()函数来打开图片,默认为false

--shuffle: 是否随机打乱图片顺序。默认为false

--backend:需要转换成的db文件格式,可选为leveldb或lmdb,默认为lmdb

--resize_width/resize_height: 改变图片的大小。在运行中,要求所有图片的尺寸一致,因此需要改变图片大小。程序调用opencv库的resize()函数来对图片放大缩小,默认为0,不改变

--check_size: 检查所有的数据是否有相同的尺寸。默认为false,不检查

--encoded: 是否将原图片编码放入最终的数据中,默认为false

--encode_type: 与前一个参数对应,将图片编码为哪一个格式:‘png','jpg'......

ROOTFOLDER:

图片的绝对路径

LISTFILE:

图片txt文件,格式为.txt,内容为,图片  标签

DB_NAME:

保存的文件名

build/tools/convert_imageset --shuffle --resize_height=256 --resize_width=256 /home/xxx/caffe/examples/images/ ./train.txt  ./img_train_lmdb

matlab写caffe程序注意事项:

由于matlab的长宽和c++中opencv的长宽正好相反,同时matlab中是rgb通道,opencv中是bgr通道,因此,程序需要做这么2个变换。这里给出2种处理方式,

(1)直接调用caffe接口,

im_data =caffe.io.load_image('./examples/images/cat.jpg');

(2)用matlab函数自己实现,

im_data = imread('./examples/images/cat.jpg');% read image
im_data = im_data(:, :, [3, 2, 1]); % 从 RGB转换为 BGR
im_data = permute(im_data, [2, 1, 3]); % 改变 width与 height位置
im_data = single(im_data); % 转换为单精度

caffe模型转tensorflow工具:

https://github.com/ethereon/caffe-tensorflow

手动标注图像,生成VOC支持的XML文件工具:

https://github.com/tzutalin/labelImg

matlab将caffe模型weights中不需要的部分去掉:

去掉模型的最后一个全连接层参数,减少模型的大小,适用于只提取特征而不进行分类的开集合场景应用。

net = caffe.NET('XX_deploy.prototxt', 'XX.caffemodel', 'test');

net.save('XX_remove_the_last_fc.caffemodel');

caffe操作技巧的更多相关文章

  1. 用Excel做出比肩任务管理软件的操作技巧

    用Excel做出比肩任务管理软件的操作技巧 在项目管理中,网上有各种各样的工具可以选择,到底用哪个,曾一度困扰着我.我是一个有轻度强迫症的人,总是喜欢试用各种各样的系统,以比较他们之间的不同,试图选择 ...

  2. Jquery数组操作技巧

    Jquery对数组的操作技巧. 1. $.each(array, [callback]) 遍历[常用]  解释: 不同于例遍 jQuery 对象的 $.each() 方法,此方法可用于例遍任何对象(不 ...

  3. Vi操作技巧

    Vi操作技巧: :nu    显示当前所在行的行号 :set nu    显示全部行号 :set nonu        取消显示行号 /字符串    查询字符串,按n查询下一个,按N查询上一个 持续 ...

  4. vim常用操作技巧与配置

    vi是linux与unix下的常用文本编辑器,其运行稳定,使用方便,本文将分两部分对其常用操作技巧和配置进行阐述,其中参考了网上的一些文章,对作者表示感谢 PART1 操作技巧 说明: 以下的例子中  ...

  5. [eclipse] 三个操作技巧

    [eclipse] 三个操作技巧 1.快捷键Ctrl+Shift+i:Debug调试中直接获取方法的返回值 在下图代码中,想知道getHost(),则在调试时运行完该句代码后,选中"urlU ...

  6. eclipse 终极操作技巧

    eclipse作为一个java开发必备软件,从用户体验来说,还是蛮一般的(按照初始设置的话),所以有必要进行一些设置上的改良,加上对一些好用的快捷键的挖掘,能让你用eclipse更加得心应手,事半功倍 ...

  7. 第八章 Hibernate数据操作技巧

    第八章   Hibernate数据操作技巧8.1 分组统计数据    语法:[select]... from ...[where] [group by...[having...]] [order by ...

  8. 转:Mac操作技巧 | "键盘侠"必备快捷键

    看到一篇网友整理的比较好的“Mac操作技巧 | "键盘侠"必备快捷键”,转载过来分享给大家!希望能有帮助. 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 S ...

  9. PDF文件转换成Excel表格的操作技巧

    我们都知道2007以上版本的Office文档,是可以直接将文档转存为PDF格式文档的.那么反过来,PDF文档可以转换成其他格式的文档吗?这是大家都比较好奇的话题.如果可以以其他格式进行保存,就可以极大 ...

随机推荐

  1. MarkerOpter marker操作类

    构造函数:MarkerOpter=function(p_params): p_params={} 参数描述: p_params.layer; // markerlayer p_params.imgUr ...

  2. Memcached安装&启动

    安装 *Linux系统安装memcached,首先要先安装libevent库,安装请指定 --with--libevent=PATH(若安装过程中出现configure: error : no acc ...

  3. Bioconductor(Bioconductor for Genomic Data Science教程)

    Bioconductor for Genomic Data Science ftp://ftp.ncbi.nlm.nih.gov/genomes/archive/old_genbank/Bacteri ...

  4. HTML页面的三种弹框方式

    1.弹出警告框,带确定按钮:alert 2.弹出,选择框 有确认和取消按钮 confirm 3. 弹出,输入框 : prompt

  5. 【洛谷p1106】删数问题

    (洛谷t2755暂时过不去了) 删数问题[传送门] 洛谷算法标签: emmmm……删数问题又牵扯到了字符串.因为毕竟高精度的数240位呢!要是输入一个整型,要码240行来求出每一位……怕是还没求出来就 ...

  6. Raspbian安装Opencv3

    如果旧版本使用apt-get安装 sudo apt-get remove libopencv sudo apt-get remove opencv 如果旧版本使用编译安装 sudo make unin ...

  7. Artem and Array CodeForces - 442C (贪心)

    大意: 给定序列$a$, 每次任选$a_i$删除, 得分$min(a_{i-1},a_{i+1})$(无前驱后继时不得分), 求最大得分. 若一个数$x$的两边都比$x$大直接将$x$删除, 最后剩余 ...

  8. 46. 47. Permutations and Permutations II 都适用(Java,字典序 + 非字典序排列)

    解析: 一:非字典序(回溯法) 1)将第一个元素依次与所有元素进行交换: 2)交换后,可看作两部分:第一个元素及其后面的元素: 3)后面的元素又可以看作一个待排列的数组,递归,当剩余的部分只剩一个元素 ...

  9. spring boot(十一)MongoDB的使用

    mongodb是最早热门非关系数据库的之一,使用也比较普遍,一般会用做离线数据分析来使用,放到内网的居多.由于很多公司使用了云服务,服务器默认都开放了外网地址,导致前一阵子大批 MongoDB 因配置 ...

  10. java骰子求和算法

    //扔 n 个骰子,向上面的数字之和为 S.给定 Given n,请列出所有可能的 S 值及其相应的概率public class Solution { /** * @param n an intege ...