您的位置:首页 > 理论基础 > 计算机网络

深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-1.制作自己的数据集

2017-03-22 15:36 1351 查看
A,准备自己的数据

图像数据从徐其华的博客,(http://www.cnblogs.com/denny402/p/5083300.html).网盘下载:http://pan.baidu.com/s/1nuqlTnN。

这是一个小型的图片数据库,这个图片数据库有500张图片;训练样本400张,测试样本100张;分为5类:bus,dinosaur,elephant,rose,horse(大巴,恐龙,大象,鲜花,马)

整理数据,重新命名及重新设置大小,做成32×32像素的数据,与CIFAR10数据大小保持一致。

python修改文件名代码:

import os;

def rename():
count=20;   #文件名的起始值        在此设置文件名的起始值
path='//home//lw//deeplearning//re//train//bus1';  #所要修改的文件所在地方
filelist=os.listdir(path)#该文件夹下所有的文件(包括文件夹)
for files in filelist:#遍历所有文件
Olddir=os.path.join(path,files);#原来的文件路径
if os.path.isdir(Olddir):#如果是文件夹则跳过
continue;
filename=os.path.splitext(files)[0];#文件名
filetype=os.path.splitext(files)[1];#文件扩展名
Newdir=os.path.join(path,str(count)+filetype);#新的文件路径
os.rename(Olddir,Newdir);#重命名
count+=1;
print "修改完成"
rename();

python修改文件大小代码:

import os;
from PIL import ImageTk, Image

def resizeImg():
path='/home/lw/workspace/resizeImg/train/bus/';  #所要修改的文件所在地方
filelist=os.listdir(path)#该文件夹下所有的文件(包括文件夹)
for files in filelist:#遍历所有文件
files = path + files
im = Image.open(files)

x_s = 256 #define standard width
y_s = 256 #calc height based on standard width
out = im.resize((x_s,y_s),Image.ANTIALIAS) #resize image with high-quality
out.save(files)
print "修改完成"

resizeImg()

注意:在此需要修改一些文件目录的位置,请自己调整路径或文件所在位置

B.针对数据,打标签,生成train.txt,val.txt文件

打标签python代码:

import os

def IsSubString(SubStrList,Str):
flag=True
for substr in SubStrList:
if not(substr in Str):
flag=False

return flag

#扫面文件
def GetFileList(FindPath,FlagStr=[]):
FileList=[]
FileNames=os.listdir(FindPath)
if len(FileNames)>0:
for fn in FileNames:
if len(FlagStr)>0:
if IsSubString(FlagStr,fn):
fullfilename=os.path.join(FindPath,fn)
FileList.append(fullfilename)
else:
fullfilename=os.path.join(FindPath,fn)
FileList.append(fullfilename)

if len(FileList)>0:
FileList.sort()

return FileList

#1.制作训练集中的标签

train_txt=open('train.txt','w')
#制作标签数据
imgfile=GetFileList('train/bus')
for img in imgfile:
str1=img+' '+'0'+'\n'        #用空格代替转义字符 \t
train_txt.writelines(str1)

imgfile=GetFileList('train/dinosaur')
for img in imgfile:
str1=img+' '+'1'+'\n'        #用空格代替转义字符 \t
train_txt.writelines(str1)
#根据所属类型训练数据的多少,自行添加上述四行代码

train_txt.close()

#测试集文件列表
test_txt=open('val.txt','w')
#制作标签数据,如果是男的,标签设置为0,如果是女的标签为1
imgfile=GetFileList('val/bus')#将数据集放在与.py文件相同目录下
for img in imgfile:
str1=img+' '+'0'+'\n'
test_txt.writelines(str1)

imgfile=GetFileList('val/dinosaur')#将数据集放在与.py文件相同目录下
for img in imgfile:
str1=img+' '+'1'+'\n'
test_txt.writelines(str1)

#根据所属类型测试数据的多少,自行添加上述四行代码

test_txt.close()

print("成功生成文件列表")

最后结果如下图:



C.制作lmdb文件

a.在caffe目录下面的examples目录下,建立一个自己的文件目录,如:testCreateLmDB,友情提醒:必须在这建立,这样好应用caffe提供的建立lmdb文件

 

b.从caffe目录下examples/imagenet目录中将create_imagenet.sh文件copy至自己所建立的文件目录,
如:testCreateLmDB,并修改相关路径。如下代码如下,一定要注意 目录路径,否则制作不成功。

#!/usr/bin/env sh
# Create the imagenet lmdb inputs
# N.B. set the path to the imagenet train + val data dirs
set -e

EXAMPLE=examples/testCreateLmDB  #EXAMPLE为当前文件在caffe目录的相对路径。
DATA=/home/lw/caffe/my_data      #数据所在位置,此处一定不要加/
TOOLS=build/tools                #该路径要保持不变

TRAIN_DATA_ROOT=/home/lw/caffe/my_data/  #训练数据的绝对路径。
VAL_DATA_ROOT=/home/lw/caffe/my_data/    #验证数据的绝对路径。

# Set RESIZE=true to resize the images to 256x256. Leave as false if images have
# already been resized using another tool.
RESIZE=true               #RESIZE为是否对图像进行缩放
if $RESIZE; then
RESIZE_HEIGHT=32
RESIZE_WIDTH=32
else
RESIZE_HEIGHT=0
RESIZE_WIDTH=0
fi

if [ ! -d "$TRAIN_DATA_ROOT" ]; then
echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT"
echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \
"where the ImageNet training data is stored."
exit 1
fi

if [ ! -d "$VAL_DATA_ROOT" ]; then
echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT"
echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \
"where the ImageNet validation data is stored."
exit 1
fi

echo "Creating train lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$TRAIN_DATA_ROOT \
$DATA/train.txt \
$EXAMPLE/my_train_lmdb              #修改生成后的训练文件名

echo "Creating val lmdb..."

GLOG_logtostderr=1 $TOOLS/convert_imageset \
--resize_height=$RESIZE_HEIGHT \
--resize_width=$RESIZE_WIDTH \
--shuffle \
$VAL_DATA_ROOT \
$DATA/val.txt \
$EXAMPLE/my_val_lmdb               #修改生成后的测试文件名

echo "Done."


c.在终端的caffe目录下执行该脚本,否则也执行不成功,一定是caffe目录下,因为:TOOLS=build/tools



至此完成自己的图像数据CAFFE格式制作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐