怎么制作自己的数据集
我們?cè)谧錾疃葘W(xué)習(xí)時(shí),一般都是跑別人公開的數(shù)據(jù)集,如果想要跑自己的數(shù)據(jù)集怎么辦?今天就記錄一下我自己用的一種方法。
1、假設(shè)待分類一共有n類
2、新建一個(gè)文件夾,在該文件夾下新建n子個(gè)文件夾和n個(gè)對(duì)應(yīng)的txt文件。將對(duì)應(yīng)分類的圖片放入到新建的分類文件夾中。假設(shè)? ? ? ? ? ?訓(xùn)練圖片子文件夾名稱分別為train_1到train_n,相對(duì)應(yīng)的txt文件命名為train_1.txt到train_2.txt
3、使用如下命令:將每個(gè)子文件夾的內(nèi)容(圖像的名字)和標(biāo)簽寫到txt文件中。
import os DIRECTORY= "C:\\Users\\FT\\jupyter\\train_1"#這里是自己子文件夾的圖片的位置,train_1到train_n f = open('C:\\Users\\FT\\jupyter\\train_1.txt','w') #txt文件位置train_1到train_n files=os.listdir(DIRECTORY) for file in files:f.writelines(file+“ “+’num_class’)#num_class 是該類圖像對(duì)應(yīng)的分類一般用0-9f.write('\n') f.close()? ? ? 寫入的過后的txt文件如下:
?4、將所有的train_n.txt文件復(fù)制到一個(gè)總的txt文件命名為train.txt。這個(gè)txt文件包括了所有訓(xùn)練圖片的名字和對(duì)應(yīng)的標(biāo)簽.。并將? ? ? ? train_1到train_n文件夾中所有的圖片復(fù)制到一個(gè)文件夾train中
5、使用下面的命令將該train.txt文件中圖片對(duì)應(yīng)名字的圖片和標(biāo)簽取出來。
??
DIRECTORY= "C:\\Users\\FTM\\jupyter\\train"#這里是自己的所有圖片的位置 f = open('C:\\Users\\FTM\\jupyter\\train.txt','r')#產(chǎn)生一個(gè)0-130的隨機(jī)序列。130 是自己訓(xùn)練圖片的總張數(shù)。用于將train.txt中的數(shù)據(jù)隨機(jī)排序,訓(xùn)練時(shí)生成隨機(jī)的batch list=[] for i in range(0,130):list.append(i) random.shuffle(list)##########分開train.txt中的數(shù)據(jù)############### num=[] #labels數(shù)據(jù)集 imgs=[]#data數(shù)據(jù) line=f.readline() while line:a = line.split()#將txt分成兩列 data = a[0] # 這是選取圖像的名稱,一般是xxx.jpg或其他圖片格式imgs.append(data) #將其添加在列表之中l(wèi)abel = a[1] # 這是選取圖像的標(biāo)簽,一般是0-9的數(shù)字num.append(label)line = f.readline() f.close()##############讀取圖片數(shù)據(jù)######################batch=[] #圖像數(shù)據(jù)labels=[] #標(biāo)簽for j in range(len(list)): #隨機(jī)取出train文件夾中的圖像num_1=list[j]file_path=DIRECTORY+"\\"+imgs[num_1] #圖像的位置img=cv2.imread(file_path) #將圖像的信息讀出來img=cv2.resize(img,(32,32),interpolation=cv2.INTER_CUBIC) #將圖像變?yōu)橹付ù笮atch.append(img)#圖像數(shù)據(jù)存入batch中l(wèi)abels.append(num[num_1])#標(biāo)簽數(shù)據(jù)存入到labels中?6、使用時(shí)使用如下數(shù)據(jù)變換操作:
? ? ? ?1)、將batch中的圖像數(shù)據(jù)分批。即設(shè)置batch_size大小
?????? 2)、將batch數(shù)據(jù)轉(zhuǎn)為Tensor : batch_train=torch.Tensor(batch).permute(0,3,2,1)/255
? ? ? ?3)、? 將labels數(shù)據(jù)做如下變換:
? ? ? ? ? ? ? ? label1=[int(x)for x in label] #因?yàn)榍懊鎡xt中加的標(biāo)簽是一個(gè)str
? ? ? ? ? ? ? ? label1=torch.Tensor(label1).type(torch.LongTensor)
? ? ? 4)、到這一步,數(shù)據(jù)就完全處理好了,可以送入神經(jīng)網(wǎng)絡(luò)訓(xùn)練了。
7、如果有什么待改進(jìn)和其他方法,歡迎在下面留言。上面這個(gè)步驟經(jīng)過我試過是可以使用的。
?
總結(jié)
以上是生活随笔為你收集整理的怎么制作自己的数据集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bootstraptable获得所有行_
- 下一篇: POJ_2513Colored Stic