はじめに
何かと話題のmixupだが、今回はmixupをsegmentationタスクに適応させたこの論文
[1] Z. Eaton-Rosen, et. al. "Improving Data Augmentation for Medical Image Segmentation", MIDL 2018
をまとめてみた。
本論文:
https://openreview.net/pdf?id=rkBBChjiG
mixupの論文:
https://arxiv.org/abs/1710.09412
コード:
著者らのコードはこのサイト内に
http://www.niftynet.io
にupされてるそう。どこにあるかは未確認だけど。。。
概要
- mixup を若干修正し、初めて semantic segmatation タスクに応用させた
- 著者らはこの augmentation を mixmatch と名付けた
miupの復習
まず mixup の復習から。
トレーニングデータとそのラベルから任意に2つのペア $(x_i, y_i)$ 、 $(x_j, y_j)$ を取り出す。
mixupしたデータはこれら2つの線形結合。
\begin{align}
x_{mixup} &= \lambda x_i + (1 - \lambda ) x_j, \\
y_{mixup} &= \lambda y_i + (1 - \lambda) y_j, \\
\end{align}
となる。 $\lambda$ は $\lambda \sim \beta (\alpha, \alpha) \ for \ \alpha \in (0, \infty) $ とベータ関数から得る。
mixup から mixmatch への修正点
mixup では、 $x_i$ と $x_j$ はランダムにサンプリングされたが、ここを修正する。
具体的には、対象物体が高い密度で写ってる画像群を $x_{I}$ 、最も低い密度で写ってる画像群を $x_J$ として、 この両者で mixup する。
mixmatch の有効性を検証
各augmentation手法と比較
BraTS 2017 datasetというのを用いて検証を行なった。
用いたモデルはBraTS 2017というコンペで2位だった a cascade neural network[2] 。
メトリクスは dice score。結果以下のようになった。

nomixはaugmentationなし。augはrotation、横flip、zoomのみ。mixupはmixupのみ。mixmatchはmixmatchのみ。
mixupとmixmatchの性能がいい。
勾配を用いての有効性検証
\frac{\partial L}{\partial p_i}(\lambda x_i + (1-\lambda) x_j) \approx \lambda \frac{\partial L}{\partial p_i}(x_i) + (1 - \lambda)\frac{\partial L}{\partial p_i}(x_j)
と考えて、 $\lambda$ を変化させて右辺と左辺を図示したものが以下。

上記式の右辺はmini-batchを増やしたようなものなのだが、これに左辺の値は似ている。特に $\lambda$ が0や1に近い時。
まとめ
mixup や mixmatch は semantic segmentation でも有効。
個人的感想
mixupにしてもmixmatchにしてもsemantic segmentationタスクで有効性が示されたのは大きいね〜。
実装も簡単だし、他のaugmentationと組み合わせて使っていきたい。
ただmixmatchにすべきか、mixupのままでいいのかは要検討。
reference
[2] G. Wang, et. al. "Automatic Brain Tumor Segmentation using Cascaded Anisotropic Convolutional Neural Networks" CoRR, 2017