knowwell-livewellの日記

knowwell-livewellの日記

好きなこととかもろもろ書きます

セマンティックセグメンテーションで利用されるloss関数(損失関数)について⑥

本記事は連載6回目になります。

1回目:
セマンティックセグメンテーションで利用されるloss関数(損失関数)について① - knowwell-livewellの日記

2回目:
セマンティックセグメンテーションで利用されるloss関数(損失関数)について② - knowwell-livewellの日記

3回目:
セマンティックセグメンテーションで利用されるloss関数(損失関数)について③ - knowwell-livewellの日記

4回目:
セマンティックセグメンテーションで利用されるloss関数(損失関数)について④ - knowwell-livewellの日記

5回目:
セマンティックセグメンテーションで利用されるloss関数(損失関数)について⑤ - knowwell-livewellの日記

f:id:knowwell-livewell:20220130221411p:plain
https://github.com/JunMa11/SegLossより引用

今回はBoundary-based LossのBoundary Lossについて紹介します。

⑧Boundary Loss

不均衡データ(画像に占める対象物体の面積がとても小さいような画像)に対して学習がうまく進むように、というモチベーションで提案された手法をこれまでいくつも紹介してきましたが、"過度に"不均衡なデータにおいて、精度、学習安定性を高めるために境界同士の距離を考慮に入れたLoss関数がBoundary Loss*1です。
Boundary Lossにおいて、実際に求めたい境界同士の距離とは以下のように表すことが出来ます。

f:id:knowwell-livewell:20220212133950p:plain
境界同士の距離
f:id:knowwell-livewell:20220212134042p:plain
https://arxiv.org/pdf/1812.07032.pdfより引用

ここで、 \partial Gは領域 Gの境界を表し、 \partial Sは領域 Sの境界を表し、 pは境界 \partial G上の点、 y_{\partial S}(p) pからの \partial Gの法線と \partial Sとの交点です。この数式の意味は分かりやすいですが、この式では直接 Sにモデル出力を適用することができません(モデル出力である確率に対する境界を表現するのが困難であるため)。そこで、以下のように近似することを考えます。

f:id:knowwell-livewell:20220212141240p:plain
境界同士の距離の近似
f:id:knowwell-livewell:20220212141348p:plain
https://arxiv.org/pdf/1812.07032.pdfより引用

 D_{G}(q)は境界同士の差の領域 \Delta S内の任意の点 q \partial G上の近傍点 z_{\partial G}(q)との距離 ||q - z_{\partial G}(q)||です。このように近似できるのは、以下の式を考えることで理解することが出来ます。

f:id:knowwell-livewell:20220212143652p:plain
 D_G ||y_{\partial S}(p)-p||^2の関係

 q pから y_{\partial S}(p)まで動かしたときの 2D_{G}(q)積分結果は、 D_{G}を0から ||y_{\partial S}(p)-p||まで動かしたときの積分結果と同じになるので、第2辺を直接計算することで、 ||y_{\partial S} (p)-p||^2になることが分かります。上式の第1辺と第3辺で \int_{\partial G} dpを計算すれば、近似できることが分かりますね。
さらに、Dist (\partial G,\partial S)(の1/2)を以下のように表すことで、計算を楽にすることが出来ます。

f:id:knowwell-livewell:20220212192735p:plain
計算方法の改変

第1辺から第2辺への変換は \triangle{S}内の点の距離を S内の点の距離と G内の点の距離の差分で表現するようにしており、第2辺から第3辺への変換は、 s(q) g(q)を導入して表現するようにしています。ここで、 \phi_{G} (q)は学習に関係なく正解マスク画像 Gから直接計算できるため、計算効率が良くなっています。また、第3辺における2項目はモデル出力(およびパラメータ)とは関係ないため、最終的にBoudnary Lossは以下のようになります。

f:id:knowwell-livewell:20220212152829p:plain
Boundary Loss

ちなみに、 s_{\theta} (q)はモデル出力の確率です。

論文によると、Dice Lossと組み合わせて学習させることで、精度および学習安定性が向上したとのことです。