デジカメとWebカメラの画像の差を軽減して深層学習に使う

Albumentationsのコード例

ここでは、高解像度の画像と低画質の画像の差異を考慮して、より微妙な色味の調整とボケ具合の調整を行うように設定しています。

import albumentations as A

# ホワイトバランスの調整
# ガンマ補正で画像の明るさを調整する
# 色相、彩度、明度を微調整する
color_adjustments = A.Compose([
    A.OneOf([
        A.CLAHE(clip_limit=(1,4), tile_grid_size=(4,4)),
        A.RandomBrightnessContrast(brightness_limit=0.1, contrast_limit=0.1),
    ], p=1.0),
    A.Gamma(),
    A.HueSaturationValue(hue_shift_limit=5, sat_shift_limit=5, val_shift_limit=5),
])

# ボケ具合の調整
# シャープネスを調整する
# ノイズを加える
blur_adjustments = A.Compose([
    A.OneOf([
        A.IAASharpen(alpha=(0.2, 0.5), lightness=(0.5, 1.0)),
        A.Blur(blur_limit=3),
    ], p=1.0),
    A.OneOf([
        A.GaussNoise(var_limit=(10.0, 50.0)),
        A.IAAAdditiveGaussianNoise(loc=0, scale=(0.01*255, 0.05*255)),
    ], p=1.0),
])

# データ拡張
# 画像のスケール変更
# 画像のランダムな回転、トリミング、フリップ、変形
# 色味の微調整
# ボケ具合の微調整
transformations = A.Compose([
    A.Resize(416, 416),
    A.OneOf([
        A.Rotate(limit=10, border_mode=A.BORDER_CONSTANT),
        A.RandomSizedCrop(min_max_height=(300, 416), height=416, width=416, p=0.5),
    ], p=0.5),
    A.HorizontalFlip(p=0.5),
    color_adjustments,
    blur_adjustments,
])