SRFlow: Learning the Super-Resolution Space with Normalizing Flowを読んだのでメモ
はじめに
SRFlow: Learning the Super-Resolution Space with Normalizing Flowを読んだのでメモ. 従来のdeep super resolutionが決定的な出力をすることに対し,超解像はそもそも決定的に決まる問題ではないという考えからconditionalなgenerative flowを使って,低解像度画像を条件とする確率モデルとして超解像を実現.
SRFlow
手法はシンプルで,基本的にはGlowをベースとしている. 低解像度画像を条件としてモデルに与えるために,まず低解像度画像をCNN により,と変換する. このCNNはinvertibleではなく通常のCNN. 得られた表現をaffine coupling層へ次のように導入することでconditionalなモデルとする.
は層目の出力を2分割したもの. アフィン変換のパラメータを出力するニューラルネットにも同時に入力するというのが通常のgenerative flowとの違い.
さらにAffine Injector層も導入する. Affine injector層は次のように表現される.
Coupling層のようにアフィン変換のパラメータをニューラルネットに出力させるもので,変換対象はgenerative flowの中間出力で,パラメータを出力するニューラルネットへの入力がとなっている. これも条件付けを強めている.
モデルの学習は通常のgenerative flowと同様に変数変換の公式から導かれる尤度の最大化によって実現され,従来のdeepモデルによる超解像と違い複数の損失の組み合わせなどが必要ない.
まとめ
結果がかなり良い.特に低解像度画像で潰れてしまい超解像の際に不定性が残るような画素はサンプリングごとに変化しており(Fig. 3参照),期待通りの働きができていることがわかる.
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の必要性に関してもう少し説明もしくは実験が欲しかった.
Bootstrap Your Own Latent A New Approach to Self-Supervised Learningを読んだのでメモ
はじめに
Bootstrap Your Own Latent A New Approach to Self-Supervised Learningを読んだのでメモ. とにかくcontrastive learningのnegativeとの比較というものをなくしたいという思い. ただcontrastive learningにおいてnegative examplesとの比較をなくすと全てを同じ表現にする自明な解に落ちるので新たな手法,Bootstrap Your Own Latent(BYOL)を提案.
BYOL
BYOLでは二つのモデルを用意する.一つはonline networkでこれが真に学習したいモデル. もう一つはtarget networkで,online networkの教師信号を作り出すモデル. Target networkはonline networkと同一の構造でパラメータがonline networkの指数移動平均で定義される. すなわち,online networkのパラメータを,target networkのパラメータをとすると,学習のステップごとにtarget networkのパラメータは次のように更新される.
ただしは減衰係数.
それぞれのモデルは入力から特徴ベクトルを得ると表現を適当な空間へ写像すると,写像されたベクトルから予測を行うから成る. 入力データが与えられた時,画像のaugmentation をそれぞれ二種類ランダムに選び新たな画像を作る. それぞれをonline networkで,target networkでのように写像する. 得られた表現をonline networkは,target networkはとそれぞれ変換し,次の二乗誤差を最小化するようにonline modelを学習する.
上記の例ではをonline networkにをtarget networkに入力する形だったが,これらを入れ替え,をtarget networkにをonline networkに入力して計算した二乗誤差をと定義し,最終的な目的関数をとして,これをについて最小化する.
学習終了後はのみを保持し,任意のタスクへ利用する.
Image augmentation
BYOLで利用する画像拡張はSimCLRと同じ候補を利用. 具体的には画像をランダムに切り抜き(224,224)にリサイズし,画像反転と,brightness, contrast, saturation, hue adjustments, optional grayscale conversionなどの色変換を行い,最後にGaussian blurとsolarizationをする.
Architecture
はResNet50の出力層手前の平均プーリング層までをベースとして,パラメータを2x~4xまで増やしたResNet101, 152, 200それぞれ実験. はSimCLRと同様にMLPで構成され,隠れ層が4096次元で出力層が256次元.はと同様の構造とのこと.
Optimization
ここも他手法と同じくLARS optimizer+cosine learning rate scheduleを利用し,1000epoch学習. 学習率はで定義し,重み減衰を係数で使用. target networkの減衰係数はとし,でスケジューリング.ただし,は学習の繰り返し回数で,は最大繰り返し回数.
まとめ
半教師あり学習で使われるmean teacherという感じ. SimCLRの時も少し思ったが,半教師あり学習と教師なし表現学習は手法的にはどんどん似通ってくるのかなと.
BATCHENSEMBLE: AN ALTERNATIVE APPROACH TO EFFICIENT ENSEMBLE AND LIFELONG LEARNINを読んだのでメモ
はじめに
BATCHENSEMBLE: AN ALTERNATIVE APPROACH TO EFFICIENT ENSEMBLE AND LIFELONG LEARNINを読んだのでメモ.
気持ち
簡単にモチベーションを言えば,通常のモデルアンサンブルはアンサンブルする分だけモデルを個別に用意する必要があるが学習にも推論にも時間がかかる. そのため,コストを減らすために一つのモデルに少量のパラメータを追加することでアンサンブルを実現する.
Method
まずベースとなるモデルの各層における重みをとする. ここではいわゆる全結合のニューラルネットを例に説明するが,畳み込み層などへの拡張も簡単にできる.
各層は追加の学習パラメータとしてとを持つ. 添字はからまでのインデックスではアンサンブルの数(モデルの数)を表す. すなわち,通常の個のモデルを用意するアンサンブルに対し,提案する手法は各層につき個の追加の学習パラメータを持つだけとなる.
各層はこの追加パラメータを使って次のように重みを計算する.
すなわちrank-1の行列ともとの重みの要素積で番目のモデルの重みを作り出すというもの. これは入力のベクトルをとすれば全結合層の計算を次のように計算を展開できる.
すなわち層への入力時点でとの要素積をとり,出力でとの要素積をとるとかけ,演算量の点で非常にリーズナブルとなる. 結果として通常の独立に個のモデルを容易するより計算コストが低い.
このモデルはいわゆるlifelong learningのようなタスクが時々刻々と変化していく問題においても,タスク毎にを用意することで応用が効く.
通常のモデルアンサンブルと比較したときの欠点としては学習時に入力されたバッチサイズの倍のサンプルを計算することになるという点. 通常のモデルアンサンブルなら個のモデルは非同期に勝手に学習すればいいので1モデル分の学習で済むが,提案する方法では個のモデルに対し共通する重みがあるため,個々のモデル毎に学習するわけにはいかなくなる. ただし,data parallelや分散学習などはできるのでそれはマシーンパワーで解決しろとのこと.
まとめ
実装の簡便さや性能が十分出ることから非常に使い勝手の良い手法なよう. ただ,時間があってマシンが限られる場合には従来の方法が好まれる気がするのでその辺は使い分けかなと.
Prototypical Contrastive Learning of Unsupervised Representationsを読んだのでメモ
はじめに
Prototypical Contrastive Learning of Unsupervised Representationsを読んだのでメモ.
気持ち
近年流行しているContrastive Learning(例えばSimCLR)はpositive pairとnegative pariを元となるデータ点が等しいかどうかで識別的に分類することで表現学習を行う. この論文ではそのようなinstance-wiseなcontrastive learningでは例えどんなに似たデータだったとしても異なるデータとして扱うためデータに内在するsemanticな構造を得られないと考え,instance-wiseではなくprototypical contrastive learningを提案する.
一言で言ってしまえば,contrastive learningとself-labeling(DeepClusterなど)の組み合わせ.
Prototypical Contrastive Learning
データセットをで定義する. 学習対象のモデルをとする. 従来のinstance-wise contrastive learningでは次の損失を最小化する.
は番目のデータに対する埋め込みで,は一つのpositive pairの埋め込みと個のnegative pairの埋め込みを含む. は温度パラメータ.
prototypical contrastive learningではこのの代わりにprototype を利用する. さらにハイパーパラメータをprototype毎の集中度に置き換える.
ここでの目的は下記の対数尤度の最大化として表現される.
ここでは仮定として,観測されたデータは潜在変数に関係があるとし,対数尤度を次のように書き直す.
これを直接的に最適化するのは困難であるため,次の下界を考える.
はを満たす分布. この不等式はJensenの不等式から得られる. 等式はの中身が定数の場合に成り立ち,そこからが得られる.
定数を無視することで次の式の最大化として考えられる.
最適化は次のEMアルゴリズムで実現される.
- E-stepではの推定を行う.これは上の-meansとして実行される.prototype を番目のクラスターのセントロイドとし,として計算する.この時のはMoCoと同様にmomentum encoderを利用する.
- M-stepではE-stepで得られたを前述の目的関数の下界に代入してについて最大化する.
ここではに対し事前分布として一様分布を仮定することで次のように書き直す.
さらにに対して等方性のガウス分布を仮定する.
これを目的関数に代入すると,下記の目的関数が得られる.
ただしここではとのl2ノルムが1に正規化されていることを仮定した. また,practicalなところとして従来のInfoNCEをコストに加える,-meansによるセントロイドの計算は複数回繰り返すというのが効いたらしく,最終的な目的関数は以下のようになる.
ここまで説明が保留されていただが,これはprototype 内のデータに対するmomentum encoderの出力を使って次のように計算される.
は小さいクラスタが不当に大きなをもたないようにするためのパラメータ. 意味するところとして,相対的に分散が大きいクラスタは類似度が高くなりにくく,分散が小さいクラスタは低くなりにくいということ.
まとめ
実験結果を見ると,semi-supervisedの評価で異様に精度を向上させている. 論文の気持ちから,目的関数はprototypeを使った項だけで済まして欲しかった. そういった意味で,prototypeを使ったcontrastive lossのみの精度も気になる.
SELF-LABELLING VIA SIMULTANEOUS CLUSTERING AND REPRESENTATION LEARNINGを読んだのでメモ
はじめに
SELF-LABELLING VIA SIMULTANEOUS CLUSTERING AND REPRESENTATION LEARNINGを読んだのでメモ. K-Meansクラスタリングによりデータにラベル付け(self-labeling)を行うDeepClusterに対し,self-labelingで生成されたラベルとモデルの出力間のクロスエントロピーを最適輸送問題として考えることでself-labelingを行う手法.
Method
事前準備として色々定義する. まず,データを適当な空間マッピングするニューラルネットを考える. ただし,は特徴ベクトル. さらに,特徴ベクトルを入力とし識別を行うclassification head を考える. ただし,はカテゴリ数を表す. データは点あるとし,それぞれのデータに対応するラベルをとする. 最終的な分類スコアはsoftmax関数を用いて下記のように計算される.(論文の通りに書いたが,ここまでの定義に従えばを挟んでいるのではとなる気がする.)
モデルは下記のクロスエントロピーを最小化するように学習が進められる.
上記の学習は,ラベルが利用できない場合にはself-labelingの方法によって自動的にラベル付けを行う必要がある.
半教師あり学習などの枠組みではモデルとラベルの同時最適化となるが,完全な教師なし学習では全てを同一ラベルにアサインすることによってコストを簡単に最小化してしまう. そのためここではラベルを事後分布として下記のようにクロスエントロピーを書き直す.
仮に事後分布をクロネッカーのデルタとして決定的に定義をしたのならば上記の式は最初に定義したクロスエントロピーの式に等しい([E(p,q)=E(p|y_1,\dots,y_N)]). この式でも自明な解にたどり着くため,下記のように制約を与えることでこれを避ける.
この制約は,各データには一つのラベルしか割り当てが行われず,各カテゴリに属するデータ数が均一であることを意味する. するとこの問題は最適輸送理論の問題として考えることが可能となる. より具体化するためをモデルから予測されたの同時確率行列とし,同様にをの同時確率行列とする. ここではを次のような輸送多面体の要素(すなわちではなくの連続値)に緩和する.
は全要素が1の列ベクトルで,はを列方向,行方向へ積分することを意味している. ここでが条件付き確率となることを要請する.すなわち
これにより元の目的関数(クロスエントロピー)は次のように書き直される.
はフロべニウス内積(要素積+総和)では行列の各要素ごとに適用されるものとする. 結果として最適なは次の最小化問題を解くことで得られる.
これは線形計画法で溶けるが,通常データ数がミリオンオーダーでクラス数が数千になるので解くことが困難である. ここではSiknhorn Distance(以前まとめたブログ記事)で導入された次のような正則化を導入することで高速に解く方法を提案する.
はKullback-Leiblerダイバージェンスではの確率行列. この正則化の導入により上記の最小化問題のかいが次のように表現される.
注意としては行列の乗ではなく要素毎の乗を表す. とはが確率行列の性質を満たすためのスケーリング係数ベクトルで単純な繰り返し計算で得られる. 面白い知見としては,は大きな値を取れば元の最適輸送問題と等しくなるが,ここではを大きくして正確に解くよりも適当な固定のを使う方が良い結果が得られた. おそらくの緩和により,各クラスに属するデータが均一であるという制約も多少緩和されるためや,smooth labelを使うと良いという知られた知見によるものと考えられる.
最終的なアルゴリズムとしては,モデルとの最適化を交互に解くことで表現学習をする. より具体的には
- 現在得られているに対し,クロスエントロピーの最小化によりのパラメータを更新.
- 現在得られているモデルに対しを計算し,とを次のように更新することでを得る.
の更新は行列ベクトル積であり計算オーダーはであるため,線形計画法で解くよりもリーズナブルに計算が可能(とは言えくらいなのでどうなのかという疑問がある). 論文によれば繰り返し計算はGPUで収束まで2分程とのこと.
解釈
ここまでのアルゴリズムが結局何をやっているのかを考える. 簡単のため,データをそのインデックスとしてと書き換える. すると
とかける. この最小値はの時に得られる. ここで,,周辺化エントロピーが定数,からもまた定数と仮定する. するとエントロピーから二つの定数を引くことで
と相互情報量が導かれる. すなわち結果として元の問題は相互情報量の最大化に等しくなっている.
まとめ
DeepClusterとの関連や,data augmentationの活用,マルチタスクでの学習に関する説明は省略した. データ数が各クラス毎に均一という仮定を導入することで最適輸送問題としてラベリングを定式化する着眼点が非常に面白かった. 一方で,をデータ数に対して線形時間で得ることができると言っているがデータ数を考えるとそんな簡単な話でもない気がするがどうなのか. またの更新の際にを計算する必要があるが,それもナイーブには全データを一回モデルに入力する必要があるので実装上どう実現されているか気になるところ(実験の章はまともに読んでいないので書いてあるかも…).
RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Cloudsを読んだのでメモ
はじめに
RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Cloudsを読んだのでメモ. LiDARデータなど,大量の点群データ(オーダー)に対して従来より高速にsemantic segmentationをするモデルの提案.
RandLA-Net
提案するモデルは点群を効率的に演算するためのRandom Samplingと局所的な特徴を抽出するLocal Feature Aggregationからなる.
Random samplingは名前の通り入力の点群からランダムに点をサンプリングする. ランダムのモチベーションは,何か凝ったことをやろうとするとオーダーになり,ミリオンオーダーの点群に対しては例え線形のオーダーでも厳しい. 強化学習で効率的なサンプリングのpolicyを学習する方法もあるが,探索空間が広すぎて学習が収束しないという問題がある. なのでランダムサンプリングにしたよということ. 一方で,ランダムにサンプリングすると重要な点を落とす可能性があるので強力なfeature aggregationが必要ということで,新たなaggregation方法を提案する.
RandLA-Netのlocal feature aggregationはlocal spatial encoding (LocSE)とAttentive Poolingから成るresidual blockによって実現される.
local spatial encoding (LocSE)
入力として,点群の点ごとの3次元座標と特徴量(RGBや中間出力など) を考える. 処理としてまず,番目の点に対して近傍[tex:\{p_i^1,\dots,p_i^k,\dots,p_i^K\}を計算する. これらrの点を使い次のように変換する.
ただし,はconcatenationで,はユークリッド距離を表す. MLPの入力は冗長性を持つがプラクティカルには良かったとのこと. 結果的に次元ベクトルをMLPに入力し,対応する特徴ベクトルと同じ次元ベクトルを出力する. これは近傍の各点に適用されるため,結果として次元となる.
最終的にとをconcatenateして次元ベクトルを出力する.
Attentive Pooling
Attentive PoolingはLocSEの出力を集約する.
より具体的には次のように重み付き和を行う.
はMLPからとして計算される. ただし,はMLPの学習パラメータで,式の通りやに依存しない(パラメータ共有してる). また,式からは分かりにくいが,はsoftmaxで正規化されている(Fig. 3).
Dilated Residual Block
上記のLocSEとAttentive Poolingから成るDilated Residual BlockとRandom Samplingを積み上げることで提案するRandLA-Netは構成される. 言葉で書くと煩雑に成るためFig. 3参照.
最終的なモデルの全体像はAppendixのFig. 7参照.
まとめ
各種データセットで従来手法を上回るmIoUを達成. 計算時間もPointNetより少し早いにもかかわらずmIoUはPointNetを大幅に上回る. Random Samplingでも十分動くものだなという印象. 前のPoint-Voxel Convでも思ったけど,点群処理は意外と単純なやり方でも精度出るものだなと.