1. 程式人生 > >深度學習訓練資料python程式碼——資料增廣(二)

深度學習訓練資料python程式碼——資料增廣(二)

python影象資料增強庫

Augmentor使用比較簡單,只有一些簡單的操作。 imgaug實現的功能更多,可以對keypoint, bounding box同步處理,比如你現在由一些標記好的資料,只有同時對原始圖片和標記資訊同步處理,才能有更多的標記資料進行訓練。我在segmentation和detection任務經常使用imgaug這個庫。

Augmentor

[直接點開,谷歌翻譯,文件很全]

Augmentor 是管道化的影象增強庫,每一個增強操作都是逐步疊加在影象上。此外對於輸入的影象,可以選擇按照一定的概率進行增強,比如只隨機對一半影象進行旋轉。

可以實現的操作有, rotate, crop, perspective skew(視角傾斜

), elastic distortions(彈性變換【OCR非剛體中可以利用隨機扭曲】), sheering(座標軸傾斜), mirroring(映象)、隨機改變影象亮度Augmentor.Operations.RandomBrightness、隨機改變對比度/飽和度、隨機擦除某一矩形框裡的畫素Augmentor.Operations.RandomErasing、隨機裁剪

/*注意傾斜後,旋轉後都有多餘的邊界,從傾斜影象中裁剪原始影象的相同縱橫比的最大可能區域,然後調整大小以匹配原始影象尺寸*/

安裝

sudo -H pip install Augmentor

升級:

pip install Augmentor --upgrade  

用法

第1步:建立新的管道

必須首先初始化一個Pipeline物件,該物件指向儲存原始影象資料集的目錄

>>> import Augmentor
>>> p = Augmentor.Pipeline("/path/to/images")
Initialised with 100 images found in selected directory.

第2步:向管道新增操作

>>> p.rotate(probability=0.7, max_left_rotation=10, max_right_rotation=10)

新增進一步的操作,在這種情況下是一個

zoom()操作

>>> p.zoom(probability=0.3, min_factor=1.1, max_factor=1.6)

第3步:從流水線執行和取樣

並指定所需的影象數量,在本例中為10,000:

>>> p.sample(10000)

預設情況下,新生成的增強影象將儲存到名為output的目錄中,相對於包含初始影象資料集的目錄。

可以使用Augumentor.Pipeline()建立一個例項,呼叫各種方法向pipeline新增方法, status()可以顯示當前pipeline的狀態,在status中每個操作都有一個對應的index, remove_operation(index)移除一個操作, 最後呼叫sample(nums)得到nums個augument後的影象。

import Augmentor
p = Augmentor.Pipeline("/path/to/images/")
p.status()
p.remove_operation(0)