深度學習訓練資料python程式碼——資料增廣(二)
阿新 • • 發佈:2019-01-06
python影象資料增強庫
Augmentor使用比較簡單,只有一些簡單的操作。 imgaug實現的功能更多,可以對keypoint, bounding box同步處理,比如你現在由一些標記好的資料,只有同時對原始圖片和標記資訊同步處理,才能有更多的標記資料進行訓練。我在segmentation和detection任務經常使用imgaug這個庫。
Augmentor
[直接點開,谷歌翻譯,文件很全]
Augmentor 是管道化的影象增強庫,每一個增強操作都是逐步疊加在影象上。此外對於輸入的影象,可以選擇按照一定的概率進行增強,比如只隨機對一半影象進行旋轉。
可以實現的操作有, rotate, crop, perspective skew(視角傾斜
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)