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()

以上就是整个过程, 仅供参考。 引用了许多网上的代码。

时间: 2024-10-06 16:16:40

caffe 训练测试自己的数据集的相关文章

使用caffe训练mnist数据集 - caffe教程实战(一)

个人认为学习一个陌生的框架,最好从例子开始,所以我们也从一个例子开始. 学习本教程之前,你需要首先对卷积神经网络算法原理有些了解,而且安装好了caffe 卷积神经网络原理参考:http://cs231n.stanford.edu/syllabus.html Ubuntu安装caffe教程参考:http://caffe.berkeleyvision.org/install_apt.html 先讲解一下caffe设计的架构吧: 训练mnist数据集使用 build/tools/caffe 训练步骤:

caffe的学习和使用&#183;一」--使用caffe训练自己的数据

学习知识的一种方式是先会用然后再问为什么. 在安装完成caffe,根据caffe的提示下载完mnist训练测试数据,并且运行lenet训练模型之后,摆在眼前的问题就是我怎么用caffe训练自己的数据啊,mnist的数据通过脚本就可以下载创建成lmdb,我要训练自己的数据集该怎么做? 用caffe训练自己的数据,必须解决的问题有两个:1.如何输入数据, 2.如何定义输出 首先我们解决第一个问题:训练数据的输入,这里我们之介绍使用lmdb的方式 查看lenet的train_val.prototxt,

利用GPU和Caffe训练神经网络

利用GPU和Caffe训练神经网络 摘要:本文为利用GPU和Caffe训练神经网络的实战教程,介绍了根据Kaggle的“奥托集团产品分类挑战赛”的数据进行训练一种多层前馈网络模型的方法,如何将模型应用于新数据,以及如何将网络图和训练权值可视化. [编者按]本文为利用GPU和Caffe训练神经网络的实战教程,介绍了根据Kaggle的“奥托集团产品分类挑战赛”的数据进行训练一种多层前馈网络模型的方法,如何将模型应用于新数据,以及如何将网络图和训练权值可视化. Caffe是由贾扬清发起的一个开源深度学

Caffe 训练和测试自己的图片

  Caffe学习系列(12):训练和测试自己的图片  在caffe上跑自己的数据    

windows10 conda2 使用caffe训练训练自己的数据

首先得到了https://blog.csdn.net/gybheroin/article/details/72581318系列博客的帮助.表示感激. 关于安装caffe已在之前的博客介绍,自用可行,https://www.cnblogs.com/MY0213/p/9225310.html 1.数据源 首先使用的数据集为人脸数据集,可在百度云自行下载: 链接:https://pan.baidu.com/s/156DiOuB46wKrM0cEaAgfMw 密码:1ap0 将train.zip解压可得

使用caffe训练自己的CNN

现在有这样的一个场景:给你一张行人的矩形图片, 要你识别出该行人的性别特侦. 分析: (1),行人的姿态各异,变化多端.很难提取图像的特定特征 (2),正常人判别行人的根据是身材比例.(如果是冬天的情况下,行人穿着厚实,性别识别更加难) solution: 针对难以提取特定特征的图像,可以采用卷积神经网络CNN去自动提取并训练. 数据准备:  采用 PETA数据集,Pedestrain Attribute Recognition At Far Distance. 该数据集一共包含了19000张标

caffe 训练imagenet

1.整理得到自己的数据库,并生成自己数据库的列表文件.txt 2.将数据库转成lmbp格式 3.计算图像均值 4.修改网络参数 5.得到结果 1.整理得到自己的数据库 因为前面博文提到的原因,技术水平有限没办法实现主机和虚拟机之间的文件共享,就暂时先用比较麻烦的方法.现在主机上整理好需要的数据集 一共四个文件:两个图像库文件夹----测试.校正 :两个图像库列表文件----测试.校 测试图像库文件夹中根据自己的分类类别在进行分类,比如我是用的两个类别,所以在测试图像库文件夹中还有两个文件夹:分别

Caffe利用测试好的模型测试图片以及每层的可视化

如果我们已经训练好了一个CNN模型,怎么去利用这个模型去测试呢?以及怎么去看每一层的输出结构呢?基于python可视化可以实现,这些都集成在了caffe-master/python中 1. 准备一些必要模板 import numpy as np #导入numpy模块用作后面的数值计算 import matplotlib.pyplot as plt #导入matplotlib 主要用作画图 2. 导入caffe, 我们的工作目录是在caffe-master/examples文件下下 import

Caffe训练好的网络对图像分类

对于训练好的Caffe 网络 输入:彩色or灰度图片 做minist 下手写识别分类,不能直接使用,需去除均值图像,同时将输入图像像素归一化到0-1直接即可. #include <caffe/caffe.hpp>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iosf