knowwell-livewellの日記

knowwell-livewellの日記

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

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

前回の続きになります。

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

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

今回はRegion-based Lossにカテゴリー分けされているDice LossとIoU Loss、Tversky Loss、FocalTversky Lossについて紹介していきたいと思います。

③Dice Loss

この損失関数も②Focal Lossと同じく「クラス不均衡なデータに対しても学習がうまく進むように」という意図があります*1。①Cross Entropy Lossが全てのピクセルのLossの値を対等に扱っていたのに対して、②Focal Lossは重み付けを行うことで、(推測確率の高い)簡単なサンプルの全体Loss値への寄与率を下げるよう工夫していましたが、Dice Lossでは正解領域と推測領域の重なり具合(Dice係数)に注目します。領域(の重なり具合)に基づいているという意味でRegion-based Lossにカテゴリー分けされているわけですね。
実際の計算方法は、1 - {2 * (正解と推測の重なり領域) / (正解領域)+(推測領域)}です({}内がDice係数です)。数式で表すと以下になります(図を見るのが分かりやすいですね)。

f:id:knowwell-livewell:20220131120519p:plain
Dice Loss
f:id:knowwell-livewell:20220131114305p:plain
Dice係数とDice Loss

 yは正解ラベル、 \hat{p}は推測結果です。例えば、正解ラベルを背景0、前景1のマスク画像とし、推測結果を前景クラスに対するモデル出力(確率)とすると、分母は両者を加算後に全ピクセルで加算を、分子は両者の要素積をとって、全ピクセルで加算すれば前景クラスに対するDice Lossを求めることが出来ます。ただし、計算上の安定性のために(分母が0にならないように)、分母と分子に1を足して計算するのが一般的です。論文によっては分母の y \hat{p}を2乗しているものも見られました。また、いくつかの実装を見ると、出現回数の少ないクラスのDice Lossのみを計算しているものや、(正解マスクをone-hot表現に変換し)各クラスのDice Lossの(重み付け)平均をとっているものなど多少バリエーションがあるように思います(Pytorchの公式実装が欲しいですね)。

④ IoU(Jaccard) Loss

IoU Lossも③Dice Lossと同じく領域の重なり具合に注目します。IoUと言えば、セマンティックセグメンテーションの精度を測る指標としておなじみですよね。(個人的なイメージですが)評価指標としてはDiceよりもIoUを使うことが多く、Loss関数はIoUよりもDiceを使うことが多い気がします。医療セグメンテーション分野では評価指標としてDice係数(DSC)がよく使われているようですね。
IoU Lossの計算方法は、1 - {(正解と推測の重なり領域) / (正解領域)+(推測領域)- (正解と推測の重なり領域)}です(「かつ」/「または」ですね)。数式で表すと以下になります(こちらも図を見るのが分かりやすいですね)。

f:id:knowwell-livewell:20220131133956p:plain
IoU Loss
f:id:knowwell-livewell:20220131151117p:plain
IoUとIoU Loss

IoU Lossに関しては、Dice Lossと同じ要領で理解できるかなと思います。
ところで、IoUとDiceにどのような違いがあるのでしょうか。Dice Lossの図(式)における分子の2倍を分母の \frac{1}{2}倍と考えると、Diceは正解領域と推測領域の平均に対する重なり領域の割合を計算していると考えられますが、IoUは正解領域と推測領域の「または」領域に対する割合を計算していますね。ということは、例えば推測領域が広がっている場合には、DiceよりもIoUの方が(分母が大きくなるため)値が小さくなりそうです。
Deep Learning等の精度評価において、F値(Dice)とIoU(Jaccard)のどちらを選択するべきか? - OPTiM TECH BLOG
こちらのブログは実際にDiceとIoUの違いを分かりやすく説明されています。IoUの方が厳密に評価できるという意味で評価指標として広く活用されているのかもしれないですね(ただ、そうなるとLossもIoUの方が良い気がするのですが)。


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