本記事は連載4回目になります。
1回目:
セマンティックセグメンテーションで利用されるloss関数(損失関数)について① - knowwell-livewellの日記
2回目:
セマンティックセグメンテーションで利用されるloss関数(損失関数)について② - knowwell-livewellの日記
3回目:
セマンティックセグメンテーションで利用されるloss関数(損失関数)について③ - knowwell-livewellの日記

今回はBoundary-based LossのHD Lossについて紹介します。
⑦Hausdorff Distance Loss (HD Loss)
こちらは、医療セグメンテーション分野における精度評価指標であるHausdorff Distance(HD)に基づいたLoss関数です。提案論文*1中では、正解マスク画像とモデル出力からHDを推定する方法として、a. Distance Transform-based、 b. Morphological Erosion-based 、c. Circuluar Kernels-basedの3種類を提案しています。まずは、そもそもHausdorff Distanceとは何なのか、から説明していきます。
Hausdorff Distanceとは...

Hausdorff Distanceは2つの点の集まり(集合)に対して定義されるもので、ある集合Xから他方の集合YへのHDは以下のように表されます。

これは一体何を表しているのかというと「X内のどんな点(図の青点線上のどんな点)からでも距離の範囲内にYの点(図の赤線上の点)が必ず存在する」ような距離
の最小値です。ちょっと言葉では分かりにくいですね。こちらのブログ記事がとても分かりやすいです。
ハウスドルフ距離 (Hausdorff distance) - 大人になってからの再学習
一方、集合Yから集合XへのHDは上式でと
を入れ替えれば計算できます。上記のブログ記事でh(b,a)はb2とa2の距離かb2とa1の距離の小さいほうになります。ちなみに、論文中では上式のHDを小文字のhd(one-sided HD)で表し、hd(x,y)とhd(y,x)の大きい方を大文字のHD(bidirectional HD)と表記しています。
それでは、HD Lossについて見ていきましょう。
a. Distance Transform-based
一つ目の方法はDitance Transform(DT)を用いる方法です。ある2値画像(0:背景、1:前景)に対するDTは、その画像と同じサイズで、各画素値が任意の前景位置との距離の最小値になっているような画像(行列)のことです。ここで、2値画像をとすると、
のある画素
]における
]は以下の式で表されます。

ここで、正解マスク画像の境界
に対するDTを
と表現すると、
は以下のように表すことができます。

ここで、で、
は要素積、
は全ての画素を意味しています。図を見るとイメージしやすいかと思います。
(緑の領域と赤の領域を合わせた領域)内で、
(緑の境界への距離)が最も大きいのは(
=
となる画素位置は)図(c)の白点の位置になりそうで、これは確かにHasudorff Distanceとは...で見た定義と同じになりそうですよね。

当然ながら、は
を
に入れ替えたものになります。上記のようなHDの推定方法に基づいて、HD Lossを以下のように定義しています。

の部分に関しては、
で計算できそうなのは分かりやすいですね(ここでは絶対値ではなく2乗を利用しています)。ちなみに、
と
は多値であることを意味します(正解マスクである
は2値であることが一般的です)。また、bidirectional HDを意識して、
と
の両方を考慮しているようです。
は2.0が良かったとのことです。
ところで、上記のは計算コストが高く、特に、モデル出力
を基に算出する
は学習の度変化することになるので、(かつ正確なHDを求める必要は必ずしもないことから)以下のように
のみを考慮したLoss関数も提案しています。OSはOne-Sidedのことです。

(思ったより長くなってきたので)続きます...
(間違っていたらコメントでお教えいただけますと助かります。)