caffe图像分类教程_实践详细篇-Windows下使用Caffe训练自己的Caffemodel数据集并进行图像分类...

本文详述在Windows环境下,使用Caffe进行图像分类的完整流程,包括素材准备、样本处理、数据转换、模型训练及异常处理。通过实例演示如何将8种不同类型验证码图片进行分类,训练自己的Caffemodel数据集,并进行图像识别。
摘要由CSDN通过智能技术生成

三:使用Caffe训练Caffemodel并进行图像分类

上一篇记录的是如何使用别人训练好的MNIST数据做训练测试。上手操作一边后大致了解了配置文件属性。这一篇记录如何使用自己准备的图片素材做图像分类。第一篇《实践详细篇-Windows下使用VS2015编译安装Caffe环境(CPU ONLY) 》有讲过使用Caffe的背景.所以这篇记录使用的素材就是12306的验证码来进行图像识别分类。

1、准备素材

由于这里抓取到的验证码是整合后的大图。就是8张小图片合成的。由于12306的验证码大图并不是固定的,而是每一张验证码图片都是随机使用一些小图组成,所以需要将大图进行切割为八张小图片,这样才能准确的提高识别图。

大图:

切割后的小图:

注意:准备的样本图片命名最好有一个格式,比如同一种类型用一种编号,可以是数字或者是数字+字母。比如狮子的编号以100开始,图片编号就是100,101,102....。以此类推。

2、处理样本并将素材转换为leveldb或lmdb数据格式

2.1.下载样本处理工具,解压至Caffe根目录。结构如下:

在mydata目录中分别创建train文件夹和test文件夹。train文件夹用于存放训练样本图片,test文件夹用于存放测试样本图片。

注意:

一、train图片资源最好是比测试图片多。

二、图片尺寸需要保持统一并图片名称不能包含特殊字符 有规则的命名,这样便于下一步创建标签

2.2.创建标签样本

首先需要确定自己有几个样本标签。在caffe根目录\examples目录下新建一个文件夹testImg(这个文件夹就是后期用到的训练主目录了,里面将存放均值文件+神经网络等配置主文件。)并在testImg目录下新建一个文本labels.txt 将样本标签内容填写进去,比如我们这里测试用了8个标签样本,分别是:

1 狮子

2 海鸥

3 本子

4 剪纸

5 绿豆

6 啤酒

7 锦旗

8 金字塔

找到create_filelist.sh文件进行编辑

需要修改的地方:

for i in 语句后面对应的就是需要循环的样本编号 需要修改两处,修改完成后直接运行脚本。

FILETYPE 需要处理的图片类型 我这边使用的是png 如果你是jpg或者其他格式就修改为别的类型即可

#!/usr/bin/env sh

DATA=mydata

FILETYPE=png ##需要处理样本的图片格式

echo "Create train.txt..."

rm -rf $DATA/train.txt

for i in 1 2 3 4 5 6 7 8 ##需要处理几个样本标签就填写几个 我这里处理8个样本 顺序最好是从0开始 我这里以1开始迭代,但是后面我又手动处理了的

do

find $DATA/train -name $i*.$FILETYPE | cut -d '/' -f2-4 | sed "s/$/ $i/">>train.txt

done

echo "Create test.txt..."

rm -rf $DATA/test.txt

for i in 1 2 3 4 5 6 7 8 ##需要处理几个样本标签就填写几个 我这里处理8个样本

do

find $DATA/test -name $i*.$FILETYPE | cut -d '/' -f2-4 | sed "s/$/ $i/">>test.txt

done

echo "All done"

pause

执行脚本进行创建样本文件

Administrator@2T93DQV8MG8N68O MINGW64 /e/shenduxuexi/caffe/create_img_db (windows)

$ sh create_filelist.sh

Create train.txt...

Create test.txt...

All done

执行完成后会在当前脚本目录生成两个文件,分别是train.txt和test.txt样本文件。其中的内容就是使用脚本进行便利图片然后根据图片编号第一位生成了标签编号,标签编号就是用于分类使用的。每一行包含两个内容,分别是图片路径和标签编号。

手动处理:

去掉路径(train/)/(test/),如果将图片分类放置不同的文件夹的话可以不用处理。比如train/老虎/106.png。

将编号-1  也就是 全部替换 将1 改为0 ,2改为1  以此类推,因为标签索引从0开始可以避免一个错误

train.txt文件内容:

train/100.png 1

train/101.png 1

train/103.png 1

train/104.png 1

train/105.png 1

train/106.png 1

train/108.png 1

train/109.png 1

train/110.png 1

train/112.png 1

train/201.png 2

train/202.png 2

train/203.png 2

train/204.png 2

train/205.png 2

train/206.png 2

train/207.png 2

train/208.png 2

........

test.txt内容:

test/100.png 1

test/101.png 1

test/103.png 1

test/104.png 1

test/105.png 1

test/106.png 1

test/108.png 1

test/124.png 1

test/125.png 1

test/200.png 2

test/201.png 2

test/202.png 2

test/203.png 2

test/204.png 2

test/205.png 2

test/206.png 2

test/207.png 2

test/208.png 2

test/209.png 2

test/300.png 3

test/301.png 3

test/302.png 3

test/303.png 3

.......

将两个文件复制到examples/testImg目录下。

2.3.资源转换为数据库文件

找到create_db.sh或create_db.bat文件 进行编辑修改。(如果准备的资源素材图片尺寸不统一则修改resize_height和resize_width表示对图像的尺寸统一转换。自行根据资源决定)我准备的资源尺寸都是67的,所以我在转换的过程就不用附带--resize_height=227 --resize_width=227参数了

#!/usr/bin/env sh

ROOTURL=E:/shenduxuexi/caffe/create_img_db ##当前文件夹绝对路径根目录 根据自己的项目路径修改

BACKEND=lmdb ##需要创建的数据集格式 leveldb或lmdb

echo "Create test $BACKEND.."

rm -rf ./mnist_test_$BACKEND

../scripts/build/tools/Release/convert_imageset --resize_height=227 --resize_width=227 --backend=$BACKEND --shuffle $ROOTURL/mydata/test/ ./test.txt ./mnist_test_$BACKEND

echo "Create train end.."

echo "Create train $BACKEND.."

rm -rf ./mnist_train_$BACKEND

../scripts/build/tools/Release/convert_imageset --resize_height=227 --resize_width=227 --backend=$BACKEND --shuffle $ROOTURL/mydata/train/ ./train.txt ./mnist_train_$BACKEND

echo "All Done.."

修改完成保存后运行create_db.sh文件进行创建图片数据转换,转换成功后会分别创建两个文件夹 mytest_test_lmdb和mytest_train_lmdb。

2.3.1.mytest_test_lmdb文件夹中存放的就是用于测试训练模型的数据集

2.3.2.mytest_train_lmdb文件夹中存放的就是用于训练的数据模型

如两个文件夹中分别包含了以上两个文件表示转换成功了。将转换好的数据模型(mytest_train_lmdb文件夹)和测试数据集(mytest_test_lmdb文件夹)拷贝至examples\testImg文件夹下。

3、计算图像的均值

图片减去均值后再训练会提高训练速度和精度。

caffe程序提供了一个计算均值的工具,所以我们直接使用就可以了

在caffe根目录下新建一个脚本,名为computeImageMean.bat。

第一个是启动均值计算的程序路径(scripts\build\tools\Release\compute_image_mean),

第二个是需要计算均值的数据库文件(examples\testImg\mnist_train_lmdb)

第三个是创建均值保存的路径(examples\testImg\train_mean.binaryproto)。

路径根据自己的项目路径决定

::当前caffe根目录

SET ROOTURL=E:\shenduxuexi\caffe\

%ROOTU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值