自行准备深度学习训练数据
来源:互联网 发布:c语言线程同算法 编辑:程序博客网 时间:2024/06/06 03:22
深度学习的模型训练中,数据的收集十分重要,取得足够的数据集对于最终模型的表现有十分重要的意义。但是开源的数据集都指定了特定的目标进行标注,如行人,车辆。当要训练自己所需要的特定检测模型,却又没有开源数据集的时候,就需要自己去收集和标注图像数据用于训练了。
1.数据收集
目前主要通过从百度图片上爬图片来进行数据收集,爬虫脚本如下:
#-*- coding:utf-8 -*- import re import requests import sys,os type=sys.getfilesystemencoding() def dowmloadPic(html,keyword , i ): pic_url = re.findall('"objURL":"(.*?)",',html,re.S) print '找到关键词:'+keyword+'的图片,现在开始下载图片...' for each in pic_url: print u'正在下载第'+str(i+1)+u'张图片,图片地址:'+str(each) try: pic= requests.get(each, timeout=50) except Exception,ex : print u'【错误】当前图片无法下载' continue string = 'pictures\\'+keyword+'_'+str(i) + '.jpg' #resolve the problem of encode, make sure that chinese name could be store fp = open(string.decode('utf-8').encode('cp936'),'wb') fp.write(pic.content) fp.close() i += 1 return i if __name__ == '__main__': word = raw_input('Input keywords:') #url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+word+'&ct=201326592&v=flip' pnMax = input('Input max pn:') pncount = 0 gsm = 80 str_gsm =str(gsm) if not os.path.exists('pictures'): os.mkdir('pictures') while pncount<pnMax: str_pn = str(pncount) url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+word+'&pn='+str_pn+'&gsm='+str_gsm+'&ct=&ic=0&lm=-1&width=0&height=0' result = requests.get(url) pncount = dowmloadPic(result.text,word ,pncount) print u'下载完毕'
需要预先安装request模块,新建个.py文件,将上面的代码复制到其中,然后在终端中切换到.py文件的路径,用python (文件名).py
执行即可。如图,输入关键词和数量即可。
2.图像重命名
下载的图像还可以按照自己的命名规则进行存储,但有些情况下你拿到的图片的名字不符合你的要求,我们希望能把图片按照顺序来排列。以下给出个小脚本进行图像的批量重命名:
# 先输入下面两行指令,按序号为所有文件命名,而且为了避免与之前的名字冲突(比如之前的名字中有数字的情况),所有名字后面加上字母adeclare -i num=0;for name in `ls`;do mv -f $name `echo $num"a.jpg"`; num=num+1; done # 再输入下面两行指令,按照序号重新给所有文件命名declare -i num=0;for name in `ls`;do mv -f $name `echo $num".jpg"`; num=num+1; done
将终端路径定到数据所在的文件夹,然后再终端里输入以上四行代码,就可以实现图片按1.jpg,2.jpg,3.jpg,4.jpg,…的顺序重命名
备注:重命名过程中可能遇到文件名中含有空格等符号的情况,当空格出现,一个文件的名字将被空格隔开而看作两个文件名,从而导致重命名失败。这时,需要先用rename命令将空格替代为其他字符,如下:
rename -v 's/ /s/' *
对于rename命令,如果将-v用-n替代,则之会在终端显示重命名过后的名字,但不会对文件名作出修改(方便大家先确认重命名是否正确),而用-v则会对文件进行重命名操作。(一般可以先用-n查看,确认无误后再用-v)之后的's/s2/s3/'
表示用字符s3将s2替换,'s/ /s/'
表示用s来替换空格,最后的添加表示需要重命名的文件,*
是正则匹配符,表示该路径下所有文件,如果需要对所有的.jpg文件进行处理,则*.jpg
即可。
3.数据标定
取得了数据后还需要对图像中目标的位置进行标定。在此推介labelImg,其可以直接把你利用你在图上画的框自动生成pascal格式的xml文件。
在此地址去下载labelImg源码 https://github.com/tzutalin/labelImg ,然后用终端进入到labelImg-master文件夹,输入python labelImg.py
启动labelImg程序。
- 快捷键Ctrl+R设置保存xml的路径(路径不能有中文)
- 源码文件夹中使用notepad++打开data/predefined_classes.txt,可以修改默认类别
- “Open Dir” 打开图片文件夹,选择第一张图片开始进行标注,使用 “Create RectBox” 或者 “Ctrl+N” 开始画框,单击结束画框,再双击选择类别。完成一张图片后点击 “Save” 保存,此时相应的XML文件已经保存到本地了;点击 “Next Image” 转到下一张图片
- 标注过程中可随时返回已编辑过的图片并进行修改,后保存的XML文件将会覆盖之前的XML文件
- 自行准备深度学习训练数据
- 自行装配适合深度学习的电脑
- 深度学习数据集准备:使用photoshop 批处理图像数据
- 深度学习前期准备
- 深度学习遥感影像分类之数据集批量准备
- 深度学习训练技巧
- 深度学习训练技巧
- 深度学习(三) YOLOv2训练自己的数据集
- 深度学习ssd检测模型训练自己的数据集
- 深度学习的核心:掌握训练数据的方法
- 深度学习的核心:掌握训练数据的方法
- 深度学习实践经验:用Faster R-CNN训练Caltech数据集——训练检测
- 深度学习实践经验:用Faster R-CNN训练Caltech数据集——训练检测
- Tensorflow深度学习入门——优化训练MNIST数据和调用训练模型识别图片
- 用tensorflow训练imagenet数据准备
- Caffe实战Day1-准备训练数据
- Caffe 中怎样准备训练数据
- python机器学习——十次交叉验证训练的数据准备算法
- webstorm的快捷键大全
- hdu 6103 Kirinriki
- linux通信 进程间通信有哪几种方式?
- SDRAM控制模块图
- restful理解
- 自行准备深度学习训练数据
- 数据结构学习笔记2
- 2015 ACM Amman Collegiate Programming Contest L.Alternating StringsII
- Hadoop新版本中map任务待处理split大小的计算方法
- radosgw 各个pool作用及联系
- 【selenium】python+selenium+unittest,关于每次执行完一个测试用例都关闭浏览器等时间较长的问题之解决方案
- days4
- java学习随笔
- TensorFlow 智能机器人原理与实现