1. 加載和顯示圖片
由于imgaug只處理增強而不是圖像輸入/輸出,我們需要另一個庫來加載圖像。在Python中,常見的選擇是imageio和CV2。然而,()以BGR顏色空間返回圖像,而不是RGB,需要重新排序通道軸。后一種方法的缺點是所有可視化函數(shù)(例如下面的())仍然需要輸入RGB格式。
觀察imshow源碼后發(fā)現(xiàn),imshow只能輸入RGB格式,如果采用imageio讀取不用轉換通道格式,而使用CV2的話,需要轉成RGB格式。其實當使用CV2的時候,()內部還是調用了(),只不過又把RGB轉成了BGR……所以感覺這個()相當雞肋。
【資料圖】
2. 圖像增強
imgaug的增強技術是從Augmenter父類派生的。要使用一種增強技術,我們需要用一組參數(shù)實例化增強對象。
仿射變換
Augmenter to apply affine transformations to images.
Affine類是對圖片進行仿射變化的增強類,包括平移,旋轉,縮放,錯切。
如果不傳入?yún)?shù),該類會自動賦值一些變換參數(shù),內部實現(xiàn)如下
幾個主要的參數(shù)如下:
scale=None
縮放因子,表示無變化,表示縮小50%,還支持其他類型的參數(shù)以對不同軸做不同變化。
translate_percent=None
其中0表示無變化,表示平移圖片大小的一半。常用的方式如下:
x軸隨機平移左右平移0~比例,y軸同理上下平移
translate_px=None
以像素單位平移,和上面相同。
rotate=None
旋轉取值范圍在[-360,360],如果是元組,例如(30,60),會在范圍內隨機均勻采樣。如果是列表,隨機取列表中的某個值。
shear=None
錯切角度在[-360,360],但是合適的范圍在[-45,45]
order=1
插值方法,0表示最近鄰,1表示雙線性,常用的是這兩個,還有其他方法。
cval=0
mode="constant"時要填充的常數(shù)值,輸入元組代表范圍取值,列表代表隨機取值。
mode="constant"
填充新創(chuàng)建的像素時要使用的模式,默認用常數(shù)填充。
fit_output=False
經過一些仿射變化后,圖像的一些邊緣可能就會丟失,如果將該參數(shù)設置為True,那么整張圖片會完整的顯示出來,但是此時圖像大小會發(fā)生改變。如果不想圖像大小發(fā)生變化,用包裹增強對象即可。
以上輸入的參數(shù)類型大致分為三類,數(shù)字,元組,列表,字典。其中數(shù)字就是對應的值,元組就是在這個范圍內部均勻隨機采樣,列表就是隨機采樣列表值,字典可以針對x軸和y軸做不同變化,字典key對應的value可以是數(shù)字,元組,列表類型。此外,還有一種隨機數(shù)類型,這里不做介紹。
?批量增強
imgaug支持批量圖片的增強,如果這批圖片的大小不一,那么只能使用數(shù)組,如果圖片大小相同例如一批圖片為[B,H,W,C],可以使用numpy張量格式,速度上會更快一些。
注意這里傳入的參數(shù)是images。
?同時使用多種增強
我們可以使用Sequential來整合一系列增強對象,這和pytorch里面的有異曲同工之妙。如果希望增強不是按照定義的順序而是隨機,可以設置random_order=True。
其他的類似方法還有:
SomeOf表示選取給定增強中的某些增強;
OneOf表示只應用所有給定增強中的一個;
Sometimes按概率隨機增強;
關鍵詞:
凡注有"實況網-重新發(fā)現(xiàn)生活"或電頭為"實況網-重新發(fā)現(xiàn)生活"的稿件,均為實況網-重新發(fā)現(xiàn)生活獨家版權所有,未經許可不得轉載或鏡像;授權轉載必須注明來源為"實況網-重新發(fā)現(xiàn)生活",并保留"實況網-重新發(fā)現(xiàn)生活"的電頭。