深度学习-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修改文件名代码:
python修改文件大小代码:
注意:在此需要修改一些文件目录的位置,请自己调整路径或文件所在位置
B.针对数据,打标签,生成train.txt,val.txt文件
打标签python代码:
最后结果如下图:
C.制作lmdb文件
a.在caffe目录下面的examples目录下,建立一个自己的文件目录,如:testCreateLmDB,友情提醒:必须在这建立,这样好应用caffe提供的建立lmdb文件
b.从caffe目录下examples/imagenet目录中将create_imagenet.sh文件copy至自己所建立的文件目录,
如:testCreateLmDB,并修改相关路径。如下代码如下,一定要注意 目录路径,否则制作不成功。
c.在终端的caffe目录下执行该脚本,否则也执行不成功,一定是caffe目录下,因为:TOOLS=build/tools
至此完成自己的图像数据CAFFE格式制作
图像数据从徐其华的博客,(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格式制作
相关文章推荐
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-2生成图像库的均值文件
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-4应用生成模型进行预测
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-3结合caffe中的CIFAR10修改相关配置文件并训练
- 【深度学习】笔记6:使用caffe中的CIFAR10网络模型和自己的图片数据训练自己的模型(步骤详解)
- Caffe深度学习入门—— caffenet 微调网络 训练自己的数据并测试训练的模型
- 【神经网络与深度学习】Caffe使用step by step:使用自己数据对已经训练好的模型进行finetuning
- 深度学习文章5:使用caffe对自己的图像数据进行训练并测试
- Caffe初试(三)使用caffe的cifar10网络模型训练自己的图片数据
- Caffe学习——使用自己的数据(非图像)训练网络
- matconvnet环境下训练自己的数据集及模型测试-mnist网络结构-cifar10部分数据集
- 深度学习之图像分类模型Cifar10数据集解读
- 深度学习Caffe实战笔记(19)Windows平台 Faster-RCNN 制作自己的数据集
- 深度学习实战——caffe windows 下训练自己的网络模型
- 【神经网络与深度学习】深度学习实战——caffe windows 下训练自己的网络模型
- caffe学习笔记3:使用caffe对自己的图像数据进行训练和测试
- 【计算机视觉】【神经网络与深度学习】YOLO v2 detection训练自己的数据
- 深度学习 13. 能力提升, 一步一步的介绍如何自己构建网络和训练,利用MatConvNet(二),思路整理
- 利用tensorflow训练自己的图片数据(3)——建立网络模型
- 深度学习与人脸识别系列(4)__利用caffe训练深度学习模型
- 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练