caffe训练自己的数据集

环境:ubuntu16.04,caffe环境已经配好。
1、准备数据,以3分类为例,先将图片分为3个文件夹放好,例如1、2、3(即train、val文件夹下面分别有1、2、3三个文件夹,存放三类)。
生成train.txt和val.txt:执行下面语句(已train的2文件夹为例,如果类别多可以写个shell脚本),一般来说,类别以0、1、2、3……进行命名区分,从0开始。

ls train/2/ | sed "s:^:2/:" | sed "s:$: 1:">>train.txt

2、创建LMDB数据,一般放在caffe/example/myfile文件夹下面,创建create_lmdb.sh:

#!/usr/bin/env sh
MY=examples/myfile

TRAIN_DATA_ROOT=/caffe/examples/myfile/data/train/
VAL_DATA_ROOT=/caffe/examples/myfile/data/val/

echo "Create train lmdb.."
rm -rf $MY/img_train_lmdb
build/tools/convert_imageset \
--shuffle \
--resize_height=128 \
--resize_width=128 \
$TRAIN_DATA_ROOT \
$MY/data/train.txt \
$MY/img_train_lmdb

echo "Create test lmdb.."
rm -rf $MY/img_val_lmdb
build/tools/convert_imageset \
--shuffle \
--resize_height=128 \
--resize_width=128 \
$VAL_DATA_ROOT \
$MY/data/val.txt \
$MY/img_val_lmdb

echo "All Done.."

先赋权限,再执行这个文件,这里需要注意的是检查一下生成的lmdb文件是否正确(可通过文件大小等方式简单验真下),若这里出了问题,后面训练会出现错误blob.cpp:133] Check failed: data_ ,一般就是数据准备出现了问题。
3、生成均值文件,同样创建create_meanfile.sh:

#!/usr/bin/env sh
EXAMPLE=examples/myfile
DATA=examples/myfile
TOOLS=build/tools
$TOOLS/compute_image_mean $EXAMPLE/img_train_lmdb $DATA/mean.binaryproto
echo "Done."

如果后面重新生成lmbd数据,这个文件也需要重新执行一遍。
4、准备模型文件和配置文件
这个可以从example文件夹下面的例子里找,例如模型文件cifar10_full_train_test.prototxt以及对应的配置文件cifar10_full_solver.prototxt。记得修改路径以及输出的类别数。进行训练:

./build/tools/caffe train -solver examples/myfile/resnet_18_solver.prototxt

5、测试生成的caffemodel。修改模型文件,例如cifar10_full.prototxt,修改数据输入的大小

input_param { shape: { dim: 1 dim: 3 dim: 32 dim: 32 } }

以及输出的类别数,再进行测试。

./build/examples/cpp_classification/classification.bin examples/myfile/cifar10_full.prototxt examples/myfile/model/cifar10_full_solver_iter_5000.caffemodel examples/myfile/mean.binaryproto examples/myfile/synset_words.txt examples/myfile/0685_nothing.jpg

切记,训练时用的模型要与测试时的对应上,图像大小也要对应,否则会报错。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值