图像采集
可以自己拍照,或者是搜集网络图片,我都试了一下,感觉自己拍的更好一些,原因有二,一是自己拍的图片尺寸风格都一致,更好处理,二是网络上的图片五花八门,差异太大,对于初学者来说,这些图片的组合可能很难轻易训练出一个好的结果,新手很难在短时间内获得成就感。
图像预处理
图片批量改名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import os import sys def rename(): path=r"C:\\Users\\Administrator\\Desktop\\pic" name="" startNumber="10000" fileType=".jpg" print("正在生成以"+name+startNumber+fileType+"迭代的文件名") count=1 filelist=os.listdir(path) for files in filelist: Olddir=os.path.join(path,files) if os.path.isdir(Olddir): continue Newdir=os.path.join(path,name+str(count+int(startNumber))+fileType) os.rename(Olddir,Newdir) count+=1 print("一共修改了"+str(count)+"个文件")
rename()
|
深度学习按像素来进行计算,在不明显失真的情况下,建议先压缩图片,可以大大提高计算速度,尤其是手机拍的图片,比如我的手机拍的照片尺寸40001800,我把它按比例调整到了800360
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| from PIL import Image import os.path import glob def convertjpg(jpgfile,outdir,width=800,height=360): img=Image.open(jpgfile) try: if(img.width<img.height): img = img.transpose(Image.ROTATE_90) new_img=img.resize((width,height),Image.BILINEAR) new_img.save(os.path.join(outdir,os.path.basename(jpgfile))) except Exception as e: print(e) for jpgfile in glob.glob("C:\\Users\\Administrator\\Desktop\\pic\\*.jpg"): convertjpg(jpgfile,"C:\\Users\\Administrator\\Desktop\\xml")
|
图像标注
所谓图像标注就是框出图像中的某个对象,并且标记这个对象应属于哪一类。
标注后生成的文件格式通常是xml(voc)或者txt(yolo),图片和标注文件的一一对应的批量集合,就是数据集。
标注软件可以使用labelimg,这篇文章写得还不错,可以参考一下,我的总结是:
安装:pip install labelimg -i http://mirrors.aliyun.com/pypi/simple
打开:cmd输入labelimg
标注(打框):英文输入法下按w
保存:软件左上角设置好保存目录,ctrl+s
下一张图:英文输入法下按d
切换导出格式和设置默认标签:
标注完后把图片整理到images文件夹,标注文件放到labels文件夹,再进行分割,目录结构如下
images
train
val
test
labels
train
val
Done.