caffe 训练測试自己的数据集
简单记录一下自己使用caffe的过程和遇到的一些问题。
下载caffe以及安装不具体叙述了。 可參照 http://caffe.berkeleyvision.org/installation.html。
以下准备数据集和训练的过程參照imagenet的过程:可參考 http://drubiano.github.io/2014/06/18/caffe-custom-data.html
1. 将数据集分为train和validate, 分别写到train.txt和val.txt中。 格式每一行文件名称+ 空格 + label (label 是从0開始, 并连续)
00001.jpg 0
00002.jpg 1
00004.jpg 1
00003.jpg 2
2. 将准备好的两个txt, 放到caffe_root/data/myfile/ (caffe_root是caffe的根文件夹, myfile自己命名)。
3. 进入caffe_root/examples/imagenet/ 文件夹中, 改动create_imagenet.sh
DATA=data/myfile
TRAIN_DATA_ROOT=/img_full_dir1
(img_full_dir1 存放训练图片的文件夹)
VAL_DATA_ROOT=/img_full_dir2 (img_full_dir2 存放測试图片的文件夹)
在caffe_root 下运行 ./examples/imagenet/create_imagenet.sh , 能够在examples/imagenet 文件夹下找到, ilsvrc12_train_lmdb ilsvrc12_val_lmdb两个文件夹
4. 在caffe_root 下运行 ./examples/imagenet/make_imagenet_mean.sh , 结果保存在data/ilsvrc12/imagenet_mean.binaryproto
5. 改动models/bvlc_reference_caffenet 下的solver.prototxt和 train_val.prototxt。 假设不改动网络的结构, 仅仅需改动图片的大小crop_size <imagewidth。
6. 在caffe_root 下运行 ./examples/imagenet/train_caffenet.sh, 进行训练。训练好的模型放在models/bvlc_reference_caffenet
測试网络及模型
1. 在python下执行。 须要先在根文件夹下执行 make all
make pycaffe make distribute
2. 将data/ilsvrc12/imagenet_mean.binaryproto 转为numpy格式, 在caffe_root 创建一个mycode的目录,创建一个convertmean.py。内容例如以下:
#!/usr/bin/python import numpy as np
import sys
sys.path.append('/caffe_root/python')<span style="white-space:pre"> </span>#caffe_root is your caffe root dir need change
import caffe if len(sys.argv) != 3:
print "Usage: python convert_protomean.py proto.mean out.npy"
sys.exit() blob = caffe.proto.caffe_pb2.BlobProto()
data = open( sys.argv[1] , 'rb' ).read()
blob.ParseFromString(data)
arr = np.array( caffe.io.blobproto_to_array(blob) )
out = arr[0]
np.save( sys.argv[2] , out )
3. 运行 python convertmean.py /caffe_root/data/ilsvrc12/imagenet_mean.binaryproto mean.npy
4. 将一张图片放到mycode的文件夹下,vim testcode.py
#!/usr/bin/python
import numpy as np
caffe_root = '/caffe_root/'<span style="white-space:pre"> </span>#<span style="font-family: Arial, Helvetica, sans-serif;">caffe_root is your caffe root dir need change</span> import sys
sys.path.insert(0,caffe_root+'python')
import caffe MODEL_FILE = caffe_root + '/models/bvlc_reference_caffenet/deploy.prototxt'<span style="white-space:pre"> </span>#your net
PRETRAINED = caffe_root + '/models/bvlc_reference_caffenet/caffenet_train.caffemodel'<span style="white-space:pre"> </span>#your model
IMAGE_FILE = caffe_root + 'mycode/imagename.jpg'<span style="white-space:pre"> </span>#your image import os
if not os.path.isfile(PRETRAINED):
print("Downloading pre-trained CaffeNet model...") caffe.set_mode_cpu()
#net = caffe.Classifier(MODEL_FILE, PRETRAINED,
# mean=np.load(caffe_root + 'mycode/mean.npy').mean(1).mean(1),
# channel_swap=(2,1,0),
# raw_scale=255,
# image_dims=(256, 256)) net = caffe.Classifier(MODEL_FILE, PRETRAINED)
net.set_raw_scale('data',255)
net.set_channel_swap('data',(2,1,0))
net.set_mean('data',np.load(caffe_root + 'mycode/mean.npy')) input_image = caffe.io.load_image(IMAGE_FILE)
prediction = net.predict([input_image])
print 'prediction shape:', prediction[0].shape
print 'predicted class:', prediction[0].argmax()
以上就是整个过程, 仅供參考。 引用了很多网上的代码。
caffe 训练測试自己的数据集的更多相关文章
- caffe在windows编译project及执行mnist数据集測试
caffe在windows上的配置和编译能够參考例如以下的博客: http://blog.csdn.net/joshua_1988/article/details/45036993 http://bl ...
- TensorFlow CNN 測试CIFAR-10数据集
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50738311 1 CIFAR-10 数 ...
- Caffe-python interface 学习|网络训练、部署、測试
继续python接口的学习.剩下还有solver.deploy文件的生成和模型的測试. 网络训练 solver文件生成 事实上我认为用python生成solver并不如直接写个配置文件,它不像net配 ...
- Tensorflow MNIST 数据集測试代码入门
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50614444 測试代码已上传至GitH ...
- 使用caffe训练mnist数据集 - caffe教程实战(一)
个人认为学习一个陌生的框架,最好从例子开始,所以我们也从一个例子开始. 学习本教程之前,你需要首先对卷积神经网络算法原理有些了解,而且安装好了caffe 卷积神经网络原理参考:http://cs231 ...
- mahout測试朴素贝叶斯分类样例
对于这个測试建议大家先理解原理,这里我画了例如以下的示意图 接下来就依照例如以下的细节来输入指令測试: 首先前提是Hadoop安装并启动,mahout已经安装了. <strong>< ...
- caffe︱深度学习参数调优杂记+caffe训练时的问题+dropout/batch Normalization
一.深度学习中常用的调节参数 本节为笔者上课笔记(CDA深度学习实战课程第一期) 1.学习率 步长的选择:你走的距离长短,越短当然不会错过,但是耗时间.步长的选择比较麻烦.步长越小,越容易得到局部最优 ...
- 实践详细篇-Windows下使用Caffe训练自己的Caffemodel数据集并进行图像分类
三:使用Caffe训练Caffemodel并进行图像分类 上一篇记录的是如何使用别人训练好的MNIST数据做训练测试.上手操作一边后大致了解了配置文件属性.这一篇记录如何使用自己准备的图片素材做图像分 ...
- 深度学习之Matlab 转C++在iOS上測试CNN手型识别
1 前言 在上一篇Blog.我介绍了在iOS上执行CNN的一些方法. 可是,一般来说.我们须要一个性能强劲的机器来跑CNN,我们仅仅只是须要将得到的结果用于移动端. 之前在Matlab使用UFLDL的 ...
随机推荐
- js常用事件及事件对象
- ACdream 1157 Segments
Segments Time Limit: 2000ms Memory Limit: 10000KB This problem will be judged on ACdream. Original I ...
- Apache Mahout 0.9、10.1、11. CardinalityException: Required cardinality 60 but got 29
我们可以使用Apache Mahout来快速创建高效扩展性又好的机器学习应用.Mahout结合了诸如H2O算法.Scala.Spark和Hadoop MapReduce等模块,为开发人员提供了一个 ...
- 博客迁移到reetsee.com
正如上一篇博客所言.眼下CSDN的博客已经基本完毕它的使命了.感谢CSDN带给我的全部美好回顾. 如今我想尝试一下自己维护一个博客,所以博客的全部内容都迁移到了reetsee.com. 以后博客更新会 ...
- php+mysql时报错:Unknown column '' in 'field list'解决方案
答案来源:http://jingyan.baidu.com/article/9f7e7ec05c5ad76f281554ab.html 很多人在用php+MySQL做网站往数据库插入数据时发现如下错误 ...
- zzulioj--1634--Happy Thanksgiving Day - A + B Problem(模拟水题)
1634: Happy Thanksgiving Day - A + B Problem Time Limit: 1 Sec Memory Limit: 128 MB Submit: 136 ...
- http请求常出现的状态码
服务器返回的 响应报文 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果. 状态码 类别 原因短语 1XX Informational(信息性状态码) 接收的请求正在处理 2XX ...
- Sed Awk 日常使用总结
Sed命令语法sed [option] {sed-commands}{input-file}sed首先从input-file中读取第一行,然后执行所有的sed-commands:再读取第二行,执行所有 ...
- SSM博客实战(9)-拦截器验证权限和登录与注销的实现
转载 https://liuyanzhao.com/6300.html
- HDU 1166 敌兵布阵【线段树 单点更新】
题意:给出n个数,a1,a2,a3,,,,,an,再给出一些操作 add i j 表示给第i个节点增加j sub i j 表示给第i个节点减少j query i j 表示询问第i个节点到第j个节点 ...