Semi-Supervised Semantic Segmentation with Cross-Consistency Trainingを読んだのでメモ
はじめに
Semi-Supervised Semantic Segmentation with Cross-Consistency Trainingを読んだのでメモ. semantic segmentationのための半教師あり学習手法.
Cross-Consistency Training
semantic segmentationでは入力の空間では半教師あり学習のcluster assumption(同じクラスに属するデータが入力の空間で近いという仮説)が成り立たない(領域分割ではデータ点はピクセルのため同じクラスに属すると言って色が近いとは限らない)が,CNNの中間特徴では成り立つという観測の下,中間層に摂動を与えてconsistencyを課すというもの.
まず,ラベル付きデータを集合で表し,ラベルなしデータを集合で表す. 仮定としてとする.
encoder とdecoder から成り立つモデルを考える. 提案するモデルでは上記モデルに対し個のauxiliary decoder を導入する. ベースのdecoder (main decoder)は教師付きラベルによって学習が進み,auxiliary decoderはラベルなしデータによって学習が進んでいく.
より具体的には教師付きデータに関しては次の損失をencoderとmain decoderに関して最小化する.
ただし,はクロスエントロピーを表す. ラベルなしデータに関してはまず共通のencoderで中間表現とした後,個の確率的な摂動を与える関数のどれかをランダムに選び,個の異なる摂動が加えられた中間表現を作り,それぞれを個のauxiliary decoderへ入力する. これに対し下記の損失を最小化するようにauxiliary decoderとencoderを学習する(main decoderに関しては勾配を計算しない).
は距離関数で自乗誤差やJSダイバージェンス など. よって最終的な損失は次のようになる.
はハイパーパラメータで,他のconsistency regularizationと同様に学習中にrampupする.
auxiliary decoderに関して,イントロダクションにはラベルなしデータを利用するため導入すると書いてあるが,アイディアのベースとしているcluster assumptionやアルゴリズム的に導入する必然性がないため,いまいちどういう役割を担うか分からない.
Perturbaation functions
摂動としては下記の5つを利用する.
- F-Noise:としてサンプリングしたノイズをと加える.
- F-Drop:としてサンプリングした閾値を使って入力をとしてマスクする.ただし,は指示関数.大体10%から40%くらいの領域がマスクされるとのこと.
- Guided Masking:main decoderの予測結果を使って生成したマスクからcontext mask を作り,このcontext maskによりをマスクする.の生成は2007年に提案された手法を利用とのこと.
- Guided Cutout:から物体らしい領域のbounding boxを取得し,それに基づきに対しcutoutを行う.
- Intermediate VAT:に対しVATを計算.
Practical considerations
UDAで提案されたTSAと同様に,段階的に教師あり損失を計算するサンプルを増やしていく方法,an annealed version of the bootstrapped-CE (ab-CE)を使う. 具体的には予測結果に対し,予測確率がある閾値以下のピクセルのみ損失を計算するというもの.式的には下記.
式にも文章に書いてはないが,閾値判定はおそらく予測確率の最大値に対して評価する. は学習中に徐々に大きくしていく.意味としては,大きく間違えているサンプルから優先的に学習していくというもの.
もう一つのpracticalな要素として,弱教師付きセグメンテーションの利用をする.image-level labelはセグメンテーションラベルより入手コストが低いため存在するものとし,そのようなデータを集合とする. 元々のモデルの構成に加えて,image-level labelを分類するglobal average poolingを持つブランチを追加し,学習する. このブランチからclass activation mappingを使ってマスクを作り,適当な閾値を使って擬似ラベルを作る.この擬似ラベルをCRFによりrefinementし教師データとして他の2つの損失に加え,次の損失を最小化するようにauxiliary decoderとencoderを学習する.
その他,デコーダーを追加することで複数ドメインでの学習にも利用可能とのこと. ざっくり言えば,ドメイン1とドメイン2があれば,encoderは共通でそれぞれのドメインに対応するmain decoder とauxiliary decoder を用意して学習するというもの,
まとめ
ablationを見るとab-CEの利用が精度向上にかなり寄与するよう. auxiliary decoderの数は増やしても精度が上がったり下がったりで設定にかなり依存がありそう. 個人的にはauxiliary decoderの必要性に関してもう少し説明もしくは実験が欲しかった.