Caffe实战Day1-准备训练数据
来源:互联网 发布:网络管理系统组成部分 编辑:程序博客网 时间:2024/05/17 10:09
1、准备数据集
这一步就是想方设法搞来训练数据,可以是图像,可以是语音文件、视频等等。
ok,现在假设你找到了所需的数据集(本教程就以图片为例),数据集需要进行预处理,这部分工作量比较大,需要将庞大的数据集人工分类好。
每个文件夹下就是相应的图片,然后将每一类的图片重命名,切记:不同类的图片要有区别,比如bus类的图片命名为300-399(因为我这里每一类的图片不超过100张,所以用三位数表示,一般命名为六位数数字串),dinosaur类图片为400-499....以此类推,命名完所有类别图片。
2、制作训练集(train)及验证集(val)
第一步当然是新建两个文件夹train和val用来存放训练集、验证集。
第二步确定训练集大小和验证集大小,比如在本教程,我使用了一共五类图片共500张,每种100张,我的选择是每类图片中20张用于验证,80张用于训练,即train文件夹里面共有400张图片,val文件夹下共有100张图片。
下图是train文件夹下的图片:
下图时val文件夹下的图片:
如图所示我是把每类中的*00-*19号丢进val文件夹里面,*20-*99丢进train文件夹里。
第三步整理图片
这一步实现方法很多,C++/Python/sh脚本等等,我们这里使用python,原因是代码简洁且简单。
不过要先新建两个txt文件train.txt和val.txt用来保存图片名称和对应标签。
get_data.py
# -*- coding: UTF-8 -*-# Author:dasuda# Date:2017.8.18import osimport repath_train = "train文件夹路径" #建议是用绝对路径path_val = "val文件夹路径"if not os.path.exists(path_train):print "path_train not exist!!!"ox._exit()else:print "path_train exist!!!"if not os.path.exists(path_val):print "path_val not exist!!!"ox._exit()else:print "path_val exist!!!"file_train = open('train.txt的路径','wt')file_val = open('val.txt的路径','wt')file_train.truncate()file_val.truncate()pa = r".+(?=\.)"pattern = re.compile(pa)print "now,creating train.txt..."for filename in os.listdir(path_train):#print filename#abspath = os.path.join(path_train,filename);group_lable = pattern.search(filename)str_label = str(group_lable.group())if str_label[0]=='3':train_lable = '0'elif str_label[0]=='4':train_lable = '1'elif str_label[0]=='5':train_lable = '2'elif str_label[0]=='6':train_lable = '3'elif str_label[0]=='7':train_lable = '4'else:print "error data!!!"ox._exit()#print abspath,train_lable.group()file_train.write(filename+' '+train_lable+'\n')print "train.txt created!!!"print "-----------------------------------"print "now,creating val.txt..."for filename in os.listdir(path_val):#print filename#abspath = os.path.join(path_val,filename);group_lable = pattern.search(filename)str_label = str(group_lable.group())if str_label[0]=='3':val_lable = '0'elif str_label[0]=='4':val_lable = '1'elif str_label[0]=='5':val_lable = '2'elif str_label[0]=='6':val_lable = '3'elif str_label[0]=='7':val_lable = '4'else:print "error data!!!"ox._exit()#print abspath,train_lable.group()file_val.write(filename+' '+val_lable+'\n')print "val.txt created!!!"print "function over!!!"
执行完之后,若路径都正确,命令行输出为:
接下来查看一下train.txt和val.txt的内容(乱序排列)
这里提一下:网上各种各样的教程txt文件格式可谓是五花八门,谁也没说清楚,为什么是这样的格式,为什么不是那样的格式,在这里澄清一下,这里的txt格式没有固定的格式,他只是生成lmdb的中间文件,他这里的格式只与生成lmdb时有关,等到下一节讲解怎样生成lmdb文件时候,你就会恍然大悟。我的建议是:txt里面命名尽可能简单,最好是像我这样,直接-文件名 标签。
阅读全文
2 0
- Caffe实战Day1-准备训练数据
- Caffe 中怎样准备训练数据
- Caffe研究实践 二 ------准备数据 训练 测试
- Caffe中实现多标签数据准备及训练
- Caffe简单实战(1)- Windows下训练图片数据
- Caffe实战:LeNet模型训练测试MNIST数据集
- caffe实战之训练并测试自己的数据
- Caffe实战Day3-准备网络结构文件和训练文件(重点)
- caffe训练自己的数据集——1. 数据准备
- Caffe 训练mnist数据
- Caffe中LMDB接口实现多标签数据准备及训练
- faster-rcnn 之训练数据是如何准备的:imdb和roidb的产生(caffe版本)
- Caffe 入门- caffe数据准备,格式转换
- caffe mnist数据实战
- 深度学习Caffe实战笔记(20)Windows平台 Faster-RCNN 训练自己的数据集
- caffe训练自己的数据
- [caffe] 数据制作和训练
- caffe训练自己的数据
- 存储过程初步学习
- java集合类总结
- elasticsearch之curl操作PUT和POST区别
- struts-文件下载
- iziModal使用过程遇到
- Caffe实战Day1-准备训练数据
- 【全栈工程师】前端深度技术 + 后台大数据处理大分析
- git配置
- 阅读笔记 > 靠“巧合”编程?
- [NOI2004] 郁闷的出纳员
- 函数高级之递归调用,回调函数及原理
- HDU 6161 Big binary tree
- 记录一个暂时没有答案的race condition问题
- 英语基础语法