零基礎入門語義分割 TASK02資料擴增

2021-10-19 21:49:51 字數 2654 閱讀 7562

opencv資料擴增

albumentations資料擴增

pytorch讀取賽題資料

datawhale

本章對語義分割任務中常見的資料擴增方法進行介紹,並使用opencv和albumentations兩個庫完成具體的資料擴增操作。

本章主要內容為資料擴增方法、opencv資料擴增、albumentations資料擴增和pytorch讀取賽題資料四個部分組成。

資料擴增(data augmentation)是不可少的環節。

1.資料擴增可以增加訓練集的樣本

2.也可以有效環節模型過擬合的情況

3.可以給模型帶來的更強的泛化能力

4.資料擴增可以擴充套件樣本空間,從而豐富樣本,給予不同角度、不同狀態下的樣本用作訓練

資料擴增是對讀取進行資料增強的操作,所以需要在資料讀取的時候完成。

此外由於資料擴增有一定的隨機性,相同的經過資料擴增可能得到不同的

對於影象分類,資料擴增方法可以分為兩類:

標籤不變的資料擴增方法:資料變換之後影象類別不變;

標籤變化的資料擴增方法:資料變換之後影象類別變化;

而對於語義分割而言,常規的資料擴增方法都會改變影象的標籤。如水平翻轉垂直翻轉旋轉90%旋轉隨機裁剪,這些常見的資料擴增方法都會改變影象的標籤,即會導致地標建築物的畫素發生改變。

使用opencv完成影象加噪資料擴增;

使用opencv完成影象旋轉資料擴增;

albumentations是基於opencv的快速訓練資料增強庫,擁有非常簡單且強大的可以用於多種任務(分割、檢測)的介面,易於定製且新增其他框架非常方便。

如圖下所示的色彩變換效果圖(同時也可以進行空間變換,暫不展示了):

對影象分類、語義分割、物體檢測和關鍵點檢測都支援,速度較快。

參考源:

由於本次賽題我們使用pytorch框架講解具體的解決方案,接下來將是解決賽題的第一步使用pytorch讀取賽題資料。在pytorch中資料是通過dataset進行封裝,並通過dataloder進行並行讀取。所以我們只需要過載一下資料讀取的邏輯就可以完成資料的讀取。

dataset:資料集,對資料進行讀取並進行資料擴增;

dataloder:資料讀取器,對dataset進行封裝並進行批量讀取;

定義dataset

import torch.utils.data as d

class tianchidataset(d.dataset):

def __init__(self, paths, rles, transform):

self.paths = paths

self.rles = rles

self.transform = transform

self.len = len(paths)

def __getitem__(self, index):

img = cv2.imread(self.paths[index])

mask = rle_decode(self.rles[index])

augments = self.transform(image=img, mask=mask)

return self.as_tensor(augments['image']), augments['mask'][none]

def __len__(self):

return self.len

例項化dataset

trfm = a.compose([

a.resize(image_size, image_size),

a.horizontalflip(p=0.5),

a.verticalflip(p=0.5),

a.randomrotate90(),

])dataset = tianchidataset(

train_mask['name'].values,

train_mask['mask'].fillna('').values,

trfm

)loader = d.dataloader(

dataset, batch_size=10, shuffle=true, num_workers=0)

1.基本資料擴增方法及擴增資料安裝包

2.針對不同維度的資料傳統擴增方法

Task02 零基礎入門資料探勘 資料分析

train data pd.read csv path used car train 20200313.csv sep test data pd.read csv path used car testa 20200313.csv sep display train data.shape displa...

零基礎入門語義分割 Task2 資料擴增

顏色變換 kernel filters mixing random erasing opencv的資料擴增 albumentations資料擴增 pytorch 處理 顧名思義,資料擴增的原因是原始資料量不足,希望通過擴增達到 mnist 在 20 到20 之間沒問題 加大旋轉角可能會影響標籤 平移...

零基礎入門語義分割 Task6 模型整合

總結整合學習方法 深度學習中的整合學習和結果後處理思路。在機器學習中的整合學習可以在一定程度上提高 精度,常見的整合學習方法有stacking bagging和boosting,同時這些整合學習方法與具體驗證集劃分聯絡緊密。由於深度學習模型一般需要較長的訓練週期,如果硬體裝置不允許建議選取留出法,如...