PyTorch - transforms.ColorJitter 改變影像的屬性:亮度(brightness)、對比度(contrast)、飽和度(saturation)和色調(hue)

flyfish1986發表於2020-09-28

PyTorch - transforms.ColorJitter 改變影像的屬性:亮度(brightness)、對比度(contrast)、飽和度(saturation)和色調(hue)

flyfish

jitter的意思

v. 緊張不安 / 抖動 / 戰戰兢兢 / 神經過敏
n. 緊張不安 / 晃動 / 偏移 / 振動
這裡抖動或者偏移 是隨機變化的含義

下面以亮度brightness舉例,假設brightness設定為0.5
brightness_change = transforms.ColorJitter(brightness=0.5)
它的含義是將影像的亮度隨機變化為原圖亮度的50%(1−0.5)∼150%(1+0.5)
說明中的[max(0, 1 - brightness), 1 + brightness]就是 [0.5 , 1.5]
其他引數可以舉一反三

brightness(float或 float型別元組(min, max))– 亮度的偏移幅度。
brightness_factor從[max(0, 1 - brightness), 1 + brightness]中隨機取樣產生。應當是非負數。

contrast(float或 float型別元組(min, max))– 對比度偏移幅度。
contrast_factor從[max(0, 1 - contrast), 1 + contrast]中隨機取樣產生。應當是非負數。

saturation(float或 float型別元組(min, max))– 飽和度偏移幅度。
saturation_factor從[max(0, 1 - saturation), 1 + saturation]中隨機取樣產生。應當是非負數。

hue(float或 float型別元組(min, max))– 色相偏移幅度。
hue_factor從[-hue, hue]中隨機取樣產生,其值應當滿足0<= hue <= 0.5或-0.5 <= min <= max <= 0.5

程式碼示例

import numpy as np
import cv2
import os
import torch
import math
import torchvision.transforms as transforms
from PIL import Image


# 單獨設定
# 隨機改變影像的亮度
brightness_change = transforms.ColorJitter(brightness=0.5)
# 隨機改變影像的色調
hue_change = transforms.ColorJitter(hue=0.5)
# 隨機改變影像的對比度
contrast_change = transforms.ColorJitter(contrast=0.5)

# 綜合設定
color_aug = transforms.ColorJitter(brightness=0.5, contrast=0.5, saturation=0.5, hue=0.5)

transform = transforms.Compose([
        brightness_change,
        hue_change,
        contrast_change,
    ])

相關文章