圖像讀取
Pillow讀取
Pillow是Python圖像處理函式庫(PIL)的一個分支。Pillow提供了常見的圖像讀取和處理的操作,而且可以與ipython notebook無縫集成,是應用比較廣泛的庫。
數(shù)據(jù)擴增方法
2.1 數(shù)據(jù)擴增介紹
數(shù)據(jù)擴增可以增加訓練集的樣本,同時也可以有效緩解模型過擬合的情況,也可以給模型帶來的更強的泛化能力。
在這里插入圖片描述
數(shù)據(jù)擴增用處:
在深度學習模型的訓練過程中,數(shù)據(jù)擴增是必不可少的環(huán)節(jié)?,F(xiàn)有深度學習的參數(shù)非常多,一般的模型可訓練的參數(shù)量基本上都是萬到百萬級別,而訓練集樣本的數(shù)量很難有這么多。其次數(shù)據(jù)擴增可以擴展樣本空間,假設現(xiàn)在的分類模型需要對汽車進行分類,左邊的是汽車A,右邊為汽車B。如果不使用任何數(shù)據(jù)擴增方法,深度學習模型會從汽車車頭的角度來進行判別,而不是汽車具體的區(qū)別。
在這里插入圖片描述
數(shù)據(jù)擴增方法:
數(shù)據(jù)擴增方法有很多:從顏色空間、尺度空間到樣本空間,同時根據(jù)不同任務數(shù)據(jù)擴增都有相應的區(qū)別。
對于圖像分類,數(shù)據(jù)擴增一般不會改變標簽;對于物體檢測,數(shù)據(jù)擴增會改變物體坐標位置;對于圖像分割,數(shù)據(jù)擴增會改變像素標簽。
2.2 常見的數(shù)據(jù)擴增方法
在常見的數(shù)據(jù)擴增方法中,一般會從圖像顏色、尺寸、形態(tài)、空間和像素等角度進行變換。當然不同的數(shù)據(jù)擴增方法可以自由進行組合,得到更加豐富的數(shù)據(jù)擴增方法。
以torchvision為例,常見的數(shù)據(jù)擴增方法包括:
1、transforms.CenterCrop 對圖片中心進行裁剪
2、transforms.ColorJitter 對圖像顏色的對比度、飽和度和零度進行變換
3、transforms.FiveCrop 對圖像四個角和中心進行裁剪得到五分圖像
4、transforms.Grayscale 對圖像進行灰度變換
5、transforms.Pad 使用固定值進行像素填充
6、transforms.RandomAffine 隨機仿射變換
7、transforms.RandomCrop 隨機區(qū)域裁剪
8、transforms.RandomHorizontalFlip 隨機水平翻轉(zhuǎn)
9、transforms.RandomRotation 隨機旋轉(zhuǎn)
10、transforms.RandomVerticalFlip 隨機垂直翻轉(zhuǎn)
在這里插入圖片描述
在本次賽題中,任務是需要對圖像中的字符進行識別,因此對于字符圖片并不能進行翻轉(zhuǎn)操作。比如字符6經(jīng)過水平翻轉(zhuǎn)就變成了字符9,會改變字符原本的含義。
2.3 常用的數(shù)據(jù)擴增庫
torchvision
https://github.com/pytorch/vision
pytorch官方提供的數(shù)據(jù)擴增庫,提供了基本的數(shù)據(jù)數(shù)據(jù)擴增方法,可以無縫與torch進行集成;但數(shù)據(jù)擴增方法種類較少,且速度中等;
imgaug
https://github.com/aleju/imgaug
imgaug是常用的第三方數(shù)據(jù)擴增庫,提供了多樣的數(shù)據(jù)擴增方法,且組合起來非常方便,速度較快;
albumentations
https://albumentations.readthedocs.io
是常用的第三方數(shù)據(jù)擴增庫,提供了多樣的數(shù)據(jù)擴增方法,對圖像分類、語義分割、物體檢測和關鍵點檢測都支持,速度較快。
3、Pytorch讀取數(shù)據(jù)
在Pytorch中數(shù)據(jù)是通過Dataset進行封裝,并通過DataLoder進行并行讀取。所以我們只需要重載一下數(shù)據(jù)讀取的邏輯就可以完成數(shù)據(jù)的讀取。