預(yù)備知識
- HSV
- 變換前可能需要把img的type從int轉(zhuǎn)為float
隨機變換亮度
就是把圖像加減某個值
def random_bright(self, im, delta=32):
if random.random() < 0.5:
delta = random.uniform(-delta, delta)
im += delta
im = im.clip(min=0, max=255)
return im
隨機變換通道
RGB三個通道隨機變換
def random_swap(self, im):
perms = ((0, 1, 2), (0, 2, 1),
(1, 0, 2), (1, 2, 0),
(2, 0, 1), (2, 1, 0))
if random.random() < 0.5:
swap = perms[random.randint( len(perms))]
im = im[:, :, swap]
return im
隨機變換對比度
圖片像素點隨機乘以某個值
def random_contrast(self, im, lower=0.5, upper=1.5):
if random.random() < 0.5:
alpha = random.uniform(lower, upper)
im *= alpha
im = im.clip(min=0, max=255)
return im
隨機變換飽和度
HSV的S通道乘以某個值
def random_saturation(self, im, lower=0.5, upper=1.5):
if random.random() < 0.5:
im[:, :, 1] *= random.uniform(lower, upper)
return im
隨機變換色度
HSV的H通道加上某個值(H 用角度度量捧灰,取值范圍為0~360°)
def random_hue(self, im, delta=18.0):
if random.random() < 0.5:
im[:, :, 0] += random.uniform(-delta, delta)
im[:, :, 0][im[:, :, 0] > 360.0] -= 360.0 # 角度>360的減360
im[:, :, 0][im[:, :, 0] < 0.0] += 360.0 # 角度<0的加360
return im
Resize, mean, std
- tran過程:
resize前需要把gt_box的信息從像素值轉(zhuǎn)換成百分比长踊,因為resize不影響百分比滥比,直接把百分比的gt_box輸入模型,和模型的result計算loss - test過程:
測試的時候模型不輸入gt_box信息計算loss零如,所以不用轉(zhuǎn)換乘陪,而是把模型的result轉(zhuǎn)換成像素值瞬铸,然后把檢測結(jié)果恢復(fù)原圖大小浇揩,再和gt_box計算精度
注:
train 過程所有的增強方式都可到
test 過程一般只用到Resize, mean, std