caffe训练siamese network
2016-01-18 23:23
148 查看
最近要用caffe训练siamese network,但是对c++并不熟,所有用了某博主的代码,和自己的图片数据,来训练siamese网络.
caffe中的siamese network用于train Mnist dataset,步骤如下:
1.准备数据
将图片分为train.txt, val.txt, test.txt, 通过编译caffe/tools/convert_imageset.cpp将图片转为leveldb格式.
编译:cd caffe/build; make clean; make all -j8
生成: caffe/build/tools/convert_imageset
执行: ./examples/mydata/create_mnist.sh;
生成: train和test set的leveldb格式, 分别是/examples/mydata/mnist_siamese_train_leveldb和/examples/mydata/mnist_siamese_test_leveldb
2.定义general model
/examples/mydata/mnist_siamese.prototxt中定义了siamese net的网络结构;与LeNet model相同,除了top layer.
3.定义detailed siamese network
/examples/mydata/mnist_siamese_train_test.prototxt.
注意修改source path.
3.1读pair data
3.2构建siamese net的first side数据和second side数据
/examples/mydata/mnist_siamese_train_test.prototxt.
3.3添加contrastive loss层
4.定义Solver
solver主要是指定model file的path.
/examples/mydata/mnist_siamese_solver.prototxt
训练和测试
定义好net protobuf和solver protobuf,就可以训练该net了.
执行: ./examples/mydata/train_mnist_siamese.sh
生成: /examples/mydata/mnist_siamese_iter_xx.caffemodel, mnist_siamese_iter_xx.solverstate
其中, caffemodel文件主要是存放各层的参数,即net.params(权重/filters),里面没有数据(net.blobs); 用于在测试阶段进行分类;
solverstate和caffemodel差不多,但是多一些数据,如模型名称,当前迭代次数等;用于恢复训练,防止意外终止而保存.
绘制结果
6.1 画model和siamese network:
注释: general model,siamese net的一层数据网络,即CNN
./python/draw_net.py \
./examples/mydata/mnist_siamese.prototxt \
./examples/mydata/mnist_siamese.png
注释: detailed model, siamese net的完整结构图
./python/draw_net.py \
./examples/mydata/mnist_siamese_train_test.prototxt \
./examples/mydata/mnist_siamese_train_test.png
6.2 使用iPython notebook, load model并绘制features
(后续)
7.参考
caffe siamese tutorial: http://caffe.berkeleyvision.org/gathered/examples/siamese.html
博客园: /article/6294341.html
caffe中的siamese network用于train Mnist dataset,步骤如下:
1.准备数据
将图片分为train.txt, val.txt, test.txt, 通过编译caffe/tools/convert_imageset.cpp将图片转为leveldb格式.
编译:cd caffe/build; make clean; make all -j8
生成: caffe/build/tools/convert_imageset
执行: ./examples/mydata/create_mnist.sh;
生成: train和test set的leveldb格式, 分别是/examples/mydata/mnist_siamese_train_leveldb和/examples/mydata/mnist_siamese_test_leveldb
2.定义general model
/examples/mydata/mnist_siamese.prototxt中定义了siamese net的网络结构;与LeNet model相同,除了top layer.
3.定义detailed siamese network
/examples/mydata/mnist_siamese_train_test.prototxt.
注意修改source path.
3.1读pair data
3.2构建siamese net的first side数据和second side数据
/examples/mydata/mnist_siamese_train_test.prototxt.
3.3添加contrastive loss层
4.定义Solver
solver主要是指定model file的path.
/examples/mydata/mnist_siamese_solver.prototxt
训练和测试
定义好net protobuf和solver protobuf,就可以训练该net了.
执行: ./examples/mydata/train_mnist_siamese.sh
生成: /examples/mydata/mnist_siamese_iter_xx.caffemodel, mnist_siamese_iter_xx.solverstate
其中, caffemodel文件主要是存放各层的参数,即net.params(权重/filters),里面没有数据(net.blobs); 用于在测试阶段进行分类;
solverstate和caffemodel差不多,但是多一些数据,如模型名称,当前迭代次数等;用于恢复训练,防止意外终止而保存.
绘制结果
6.1 画model和siamese network:
注释: general model,siamese net的一层数据网络,即CNN
./python/draw_net.py \
./examples/mydata/mnist_siamese.prototxt \
./examples/mydata/mnist_siamese.png
注释: detailed model, siamese net的完整结构图
./python/draw_net.py \
./examples/mydata/mnist_siamese_train_test.prototxt \
./examples/mydata/mnist_siamese_train_test.png
6.2 使用iPython notebook, load model并绘制features
(后续)
7.参考
caffe siamese tutorial: http://caffe.berkeleyvision.org/gathered/examples/siamese.html
博客园: /article/6294341.html
相关文章推荐
- 01.HTML 5与HTML4的区别
- jQuery - Detect value change on hidden input field
- jquery当鼠标移动到button按钮控件时,会出现提示信息
- jstl标签用法技巧
- JS弹出窗口代码大全(详细整理)
- Jsp状态管理(Cookie和Session的对比)
- Jekyll search组件
- 289. Game of Life
- HTML5绘图基础_09_绘制弧线详解
- JavaScript-浏览器对象
- jQuery-Mobile学习(表单)
- Git pull 和fetch merge的区别, 单独更新某一个文件
- json web token登录
- NodeJS-图片上传(Express)
- 如何解析JSON数组,并只拿到其中的一个属性集
- Nodejs·构建web应用
- Java基础-FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream实现文件拷贝...
- Java基础-FileInputStream、FileOutputStream、BufferedInputStream、BufferedOutputStream实现文件拷贝
- R和JSON的傻瓜式编程
- 【BZOJ1823】 [JSOI2010]满汉全席