aiorhiroki / farmer

farmer is an automated machine learning library.👨‍🌾
Apache License 2.0
12 stars 3 forks source link

Data Augmentationの項目追加 #87

Closed yumion closed 4 years ago

yumion commented 4 years ago

変更点

kerasのImageDataGeneratorの幾何学的変換を全て追加

fill_mode='constant', cval=0 端は黒で埋めます

問題点・未実装

また、元論文だと

通常のLoss(SoftmaxCrossEntropyとか)に加えて以下のようなJensen-Shannon divergenceを加えたLossで評価する。 image


# Cross-entropy is only computed on clean images
loss = F.cross_entropy(logits_clean, targets)
  p_clean, p_aug1, p_aug2 = F.softmax(
      logits_clean, dim=1), F.softmax(
          logits_aug1, dim=1), F.softmax(
              logits_aug2, dim=1)

  # Clamp mixture distribution to avoid exploding KL divergence
  p_mixture = torch.clamp((p_clean + p_aug1 + p_aug2) / 3., 1e-7, 1).log()
  loss += 12 * (F.kl_div(p_mixture, p_clean, reduction='batchmean') +
                F.kl_div(p_mixture, p_aug1, reduction='batchmean') +
                F.kl_div(p_mixture, p_aug2, reduction='batchmean')) / 3.

だそうですが、未実装。

元論文だと、AugMixする前に
horizontal_flip
左右反転+上下左右4ピクセル?のクロップ(上下左右0.125でランダムクロップ)
をしている模様だが、未実装。~~(segmentation_augの順番入れ替えればすぐできます)~~
ImageDataGeneratorのあとにAugMixするように変更しました。

- AugmentationのOptuna
AutoAugment, RandAugmentの方が良さそう?
ただし、上記は幾何学的DAしか探索してくれない
yumion commented 4 years ago

yamlのaugmentationの書き方が変わりました 辞書型の入れ子になりました. zoomはリストで範囲を決めます.

# Data Augmentation
augmentation: 
    # -(ハイフン) 入れちゃダメ
    vertical_flip: no
    horizontal_flip: yes
    zoom_range: [0.5, 1.2]  # x0.5 ~ x1.2 # min: x0.1 ~ max: x1.9
    rotation_range: 30  # -30 ~ +30 degree
    width_shift_range: 0.3  # -30% ~ 30%
    height_shift_range: 0.1  # -10% ~ 10%
    shear_range: 30  # -30 ~ 30 degree
    augmix: yes
yumion commented 4 years ago

現状のコードだと

vertical_flip: no

とかやっても書いてあったらDAかかっちゃう仕様になっちゃいました

aiorhiroki commented 4 years ago

見ま〜す。でも、albumentationでできるなら、また考えないといけないかな??

yumion commented 4 years ago

そうですね、AugMixもPILなので、cv2に書き直します