製作自己的資料集

2021-09-26 15:52:43 字數 2330 閱讀 9838

eg:這裡的影象樣本已經分好類0-7共8類

為資料夾內所有的影象打上標籤

原始碼參考

import os

''' 為資料集生成對應的txt檔案

'''train_txt_path = './train.txt'

train_dir = './train/'

#valid_txt_path = './valid.txt'

#valid_dir = './valid/'

def gen_txt(txt_path, img_dir):

f = open(txt_path, 'w')

for root, s_dirs, _ in os.walk(img_dir, topdown=true): # 獲取 train檔案下各資料夾名稱

for sub_dir in s_dirs:

i_dir = os.path.join(root, sub_dir) # 獲取各類的資料夾 絕對路徑

img_list = os.listdir(i_dir) # 獲取類別資料夾下所有png的路徑

for i in range(len(img_list)):

if not img_list[i].endswith('bmp'): # 若不是png檔案,跳過

continue

label = img_list[i].split('_')[0]

#img_path = os.path.join(i_dir, img_list[i])

line = i_dir +'/'+label+' '+sub_dir+ '\n'

f.write(line)

f.close()

if __name__ == '__main__':

gen_txt(train_txt_path, train_dir)

#gen_txt(valid_txt_path, valid_dir)

生成速度超級快,非常方便。

3. 生成的txt檔案

第一列為影象的路徑,第二列為對應的標籤。

])此處,特別注意一點就是transforms處理的資料**是pil image的庫,pil image讀進來的資料是要和opencv讀進來的資料做區分的。

(1)compose方法是將多種變換組合在一起。上述對data_transforms進行了四種變換,前兩個是對pilimage進行的,resize到指定大小224,以及對原始影象進行隨機的水平翻轉;

(2)第三個transforms.totensor()將pilimage轉變為torch.floattensor的資料形式;而最後乙個normalize則是對tensor進行的。

(3)多種組合變換有一定的先後順序,處理pilimage的變換方法(大多數方法)都需要放在totensor方法之前,而處理tensor的方法(比如normalize方法)就要放在totensor方法之後。

2. 由前面的小例子可以看出,我們要做的資料增強是要放在 transforms.totensor()之前,對資料進行相應操作,具體操作要根據自己影象的特點,加高斯雜訊、平滑處理、旋轉、平移等等操作。

3. 為什麼transforms能增強樣本

自己的理解是,transforms中翻轉、旋轉、雜訊等等都是按照一定的概率隨機發生的,從而導致每次epoch讀進來的資料都是不一樣的,也就一定程度上防止了過擬合,因而稱之為樣本增強;從大數定理的角度來看,執行多次epoch,最終效果相當於增加了樣本數量。

這裡不再使用transforms來進行資料增強,而是直接線下來增加樣本數量,這樣做的好處是更加靈活,可以對樣本進行任何自己所需要的改變,來增加樣本數量。

通過高斯雜訊、模糊等操作來生成更多的影象,然後為所有的影象打標籤,就可以來訓練網路了。

SSD訓練自己的資料集(一) 製作VOC資料集

import os path 123 filelist os.listdir path 該資料夾下所有的檔案 包括資料夾 count 0 for file in filelist print file for file in filelist 遍歷所有檔案 olddir os.path.join p...

使用caffe製作自己的lmdb資料集

新鳥最近在一家半導體公司實習,接觸到的專案都是基於 caffe框架的深度學習方面的知識,前期對tensorflow比較熟,但是到了公司沒辦法啊!不會怎麼辦,只能硬著頭皮上啊!中途碰壁不少,寫這篇部落格只是想以後方便查閱資料,另外一方面是給同樣在深度學習裡面摸爬滾打的朋友乙個參考吧!公司提供的資料都是...

資料集製作

一 安裝labelme 1.pip install labelme 2.pip install pyqt5 3.pip install pillow 4.0.0 二 標註資料 1.使用labelme得到json標註檔案 不考慮中模糊的部分 分為pig和pig2標籤 考慮一些鏡頭角度問題 豬只有無跑丟...