knowwell-livewellの日記

knowwell-livewellの日記

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

JupyterLab (Anaconda)「Server Connection Error」の対処法について

今回はJupyterLab立ち上げ後に「Server Connection Error」が表示されて使えなくなったときの対処法について書いていきます(注:すべての「Server Connection Error」に対応できる訳ではないです)。

 

<いきさつ>

対処法の前に私自身のいきさつを少し書きます。普段私はWindowsでJupyterLabを使っています。Windowsは厄介なことに勝手にアップデートをしてしまうので、前日にJupyterLabを使っていたのに、ある日の夜に再起動されていました(学習を回すときはちゃんとチェックしているのですが汗)。そこで、再度Anaconda Promptから「jupyter lab」と入力して立ち上げてみても、数秒で「Server Connection Error A connection to the notebook server could not be established. JupyterLab will continue trying to reconnect. Check your network connection or Jupyter server configuration.」と表示されて何もできなくなってしまいました。

 

<対処法>

JupyterLabを立ち上げたときに、Anaconda Promptを見ると、

WARNING| Parent appears to have exited, shutting down.

との表記がありました。そこで、調べてみると、これは「JupyterLab上で多くのファイルを開けていて、ブラウザのタブを消すことでそれらのファイルを閉じた」とき(厳密には閉じて再度JupyterLabを立ち上げようとしたときだと思います)に発生するようです。以下のサイトを参照しました。

stackoverflow.com

 

で、肝心の対処法はというと、以下のサイトの方法で解決しました(今回の現象はフリーズではないですが)。

www.simpletraveler.jp

 

具体的には、Anaconda Promptで「Jupyter Lab」を入力する前に、「cd ○○」(○○は別のフォルダ場所)でカレントディレクトリを変更してから、一度JupyterLabを立ち上げます。すると、「Server Connection Error」が出ません。立ち上げたJupterLabをShutdownして、Anaconda Promptで元のディレクトリに戻り、再度JupyterLabを立ち上げると、もうエラーは出なくなります。

 

<おわりに>

おそらく、たくさんのファイルを開いた状態で、PCを再起動してしまったので、おかしくなったのでしょうね。「Server Connection Error」というよりは、「WARNING| Parent appears to have exited, shutting down.」への対処法ですね。

 

 

「Zoe Kravitz and Robert Pattinson talk about new film, 'The Batman' | GMA」の英語を眺める

映画「THE BATMAN」が3月4日に公開(日本では3月11日)ということで、監督や出演者のインタビュー動画がYouTubeにあがっています。今回は、アメリカの朝の情報番組であるGood Morning Americaにバットマンロバート・パティンソンキャットウーマンゾーイ・クラヴィッツがリモート出演した際の動画を見ていきます。

 

www.youtube.com

 

(Interviewer A) We have been putting the bat signal up all week here in Times Square and this morning not only is batman answearing the call, he's got catwoman with him too, the stars of the batman, Robert Pattinson and Zoe Kravitz are joining us, live from London. Good Morning, great to see you both. And you know we're excited to have you both on the show and everybody's so excited for this movie to come out. But Zoe, I don't think anybody is as excited as your dad because I hear he's been running around telling everybody that the movie is called Catwoman.

(雑訳)バットシグナルを一週間ここタイムズスクエアにて出していましたが、今朝バットマンがシグナルに答えてくれただけでなく、キャットウーマンも連れてきてくれました。バットマンに主演しているロバート・パティンソンゾーイ・クラヴィッツがロンドンから中継で参加してくれます。私たちはお二人がこの番組に出てくれるのを楽しみにしていたし、みんな映画が公開するのを楽しみにしています。でもゾーイ、あなたのお父さん(レニー・クラヴィッツ)ほど楽しみにしている人はいないでしょう、だって映画の題名がキャットウーマンだとみんなに言いまわっているんでしょ。

 

(Zoe) Yes. I know. I know. It's really sweet. He keeps on saying "You know when catwoman comes out" and I keep on having to be like, "Dad, it's the batman." 

(雑訳)ええ、知っているわ。彼が「キャットウーマンが公開されたら」と言い続けるから、そのたびに私は「お父さん、バットマンよ」と言っているわ。

 

(Interviewer A) Robert, is your family equally as excited for this movie to come out with you starring as the lead?

(雑訳)ロバート、あなたの家族もこの映画の公開を待ち望んでいる?

 

(Robert) They're very very excited, I think they still can't really believe that it's actually happening. They're all gonna see it in New York next week.

(雑訳)彼らはとてもとても楽しみにしているし、実際に起きていることだと信じていないと思う。彼らは来週ニューヨークで見ると思うよ。

 

(Zoe) They're also calling it The Catwoman.

(雑訳)彼らもキャットウーマンと呼んでいるのよ。

 

(Interviewer B) And you guys have known each other for years? This is actually the first time that you're working together on screen. Did that make you the chemistry really pop for you?

(雑訳)あなたたちは何年も前から知り合いなの?映画で共演するのは今回が初めてですよね。何か化学反応は起こった?

 

(Robert) I mean I guess she's already seen me at my worst in social situations so you know it's easier to not get so embarrassed I mean especially with such an iconic character I mean but with your screen test with me, I was still thinking I was gonna get fired even though I already got the job. And so knowing that she wasn't gonna judge me too harshly and would give me a second chance, it's kinda nice.

(雑訳)彼女は社交的な場での自分の最悪な部分を既に見ていたと思うから、自分が困ることはあまりなかったけど、自分とのスクリーンテストのときに、クビにされるんじゃないかと考えていたんだ。彼女が自分を厳しくジャッジしていなくて、2度目のチャンスを与えてくれると知ったとき、良かったと思ったよ。

 

(Zoe) I was just impressed that I was able to forget that it was Rob and he put on the suit and I would just see batman and when you know somebody that's sometimes really hard and I thought it was amazing that he was able to completely transform into batman.

ロバートだということを忘れることが出来て、ただバットマンとして見ることが出来たので、とても感心しているわ。彼が完璧にバットマンになりきっていたのはとてもすごいと思ったわ。

 

(Interviewer C) Let's take a look at a clip.

(雑訳)映画のクリップ映像を見てみましょう。

 

(Interviewer C) Wow. So is it true that was the first scene you guys filmed together?

(雑訳)すごい。二人が初めて撮影したシーンだというのは本当?

 

(zoe) Yes. It was a very intense way to start.

(雑訳)ええ。とても緊迫した始まりだったわ。

 

(Robert) Interesting just listening to only the audio.

(雑訳)音声だけを聞くのは面白いね。(リモート出演のため映像が見れなかったから)

 

(Zoe) Yeah.

(雑訳)確かにそうね。

 

(Zoe) We trained for about a month together learning to fight choreography and then we jumped right in. It's an intense way to start a movie.

(雑訳)私たちは闘いの振り付けを覚えるのに約一か月トレーニングしたの。そしてこのシーンを撮影したわ。とても緊迫した撮影の始まりね。

 

(Interviewer C) Well, good thing you guys knew each other beforehand.

(雑訳)前もって知り合いだったのはよかったね。

 

(Zoe) Honestly yeah I made it easier to handle Rob sweating all over my face. 

(雑訳)そうね。私の顔の近くでロバートが汗をかいているのを我慢することができたわ。

 

(Interviewer A) And Zoe said earlier when you put on the batman suit, you completely transformed, so how was it practically to move around in that suit once you put it on because I know you mentioned that you felt different yourself but was it easy to move around and do all those things in it?

(雑訳)ロバートがスーツを着ると完全にバットマンになるとゾーイがさっき言ったけど、スーツを着て動くのはどんな感じだったの?スーツを身に着けて動いたり動作するのは簡単だった?

 

(Robert) I auditioned in George Clooney's bat suit and that when I you know you have all your plans of how you wanna play the part and it's when I put that suit on, I was absolutely terrified about doing the movie 'cause I mean I was sweating in the suit. I had in the Clooney suit. I mean you know you had zero liquids left in your body. But when I put on the one I had made  for me, it's so incredibly well-designed and considering it's pretty heavy it's probably about 60 pounds but it kinda it was so well articulated that you could I mean like the first thing as soon as  I put it on your start doing them and what do we I keep forgetting , I keep saying roly-polies cause I don't know oh yeah well.

(雑訳)自分はジョージクルーニーのバットスーツでオーディションを受けたんだ。どういう風に役を演じたいかのプランがあったけど、そのスーツを着た時、映画をやるのがとても怖かったよ、だってスーツの中でとても汗をかいていたから。自分の体の中に一滴も水分が無かったように感じたよ。でも自分のために作られたバットスーツを身に着けた時、それはとても良くデザインされていて、大体60ポンドくらいあったと思うけど、とても可動域が広かったんだ。スーツを身に着けて最初にしたのはなんだっけ。rolly-poliesだってずっと言っていたんだっけ。

 

(Zoe) Are they cartwheels? He started doing cartwheels. I think it's just rolling around I think It's just rolling around on the floor.

(雑訳)あれは側転だったの?私はただ床を転がりまわっていると思ったの。(この辺は間違っているかもしれないです)

 

(Interviewer C) How does something like that happen you go up to George Clooney and say hey can I borrow your suit? 

(雑訳)ジョージ・クルーニーのところへ行って、スーツを貸してほしいって、どうやってそうなったの?

 

(Zoe) He's on the batman. Texting that.

(雑訳)バットマンのオーディションを受けるんだってメッセージを送ったんでしょ。

 

(Robert) I'm like Goerge I've got an audition. I need that suit.

(雑訳)ジョージ、オーディションがあるんだ。そのスーツが必要だって。

 

(Robert) I had to try on all of the different suits and you basically I think it's all about your head size and so you get to figure out what size head Michael Keaton Val Kilmer Chirstian' head is. 

(雑訳)色々なスーツを身に着ける必要があって、思うに頭の大きさが重要なんだ。マイケル・キートンヴァル・キルマークリスチャン・ベイルがどれくらいの頭のサイズか分かるようになるんだ。

 

(Interviewer B) How about for catwoman batman Zoe were you a fan growing up?

(雑訳)ゾーイ、あなたはキャットウーマンバットマンのファンとして育ったの?

 

(Zoe) Oh yeah absolutely I mean I grew up you know from Eartha Kitt to Michelle Pfeiffer and the dark knight was one of my favorite films and I've loved this world for a really long time.

(雑訳)ええ、アーサー・キットやミシェル・ファイファーを見て育ったし、ダークナイトはお気に入りの映画の一つで、長い間この世界が大好きよ。

 

(Interviewer B) Hey Robert how about you? Big Batman fan were you dreaming of this as a little boy?

(雑訳)ロバート、あなたはどうなの?バットマンの大ファンで小さいころ夢見ていたの?

 

(Robert) I mean I think it's quite difficult to imagine that one day you're gonna end up playing batman but uh I definitely I was looking for a picture of . I remenber having a little bat suit when I was a kid, and I was looking for a picture so I could kinda like show it's like a cute little story on them talk shows and stuff and then I found that there's about 50 different pictures over a period of about six years so I feel like i was wearing bat suit until it was way too small for me and very very bobbly and dirty. 

(雑訳)いつかバットマンを演じるとは想像できなかったよ。小さいころ、バットスーツを持っていたんだけど、6年間の間に50枚の写真があって、どうやら自分の体格に対してとても小さくなって、毛羽立って、汚くなるまで、着続けていたみたいだ。

 

(Interviewer A) But I tell you what you two are both fantastic in the movie. I've been saying it all week I had a chance to see it and I'm excited for everybody else a good chance to see it as well. Thank you both for joining us from London. We appreciate you both. Thank you.  The Batman will be in theaters next Friday make sure you get a chance to check it out. 

(雑訳)二人ともこの映画で素晴らしい演技をしています。私は事前に見る機会があって、今週ずっとそう言っていたんだけど、他の人も見ることを楽しみにしています。二人ともロンドンから出演してくれてありがとう。The Batmanは来週金曜日から劇場で公開されます。ぜひチェックしてください。

 

 

 

こちらもどうぞ

knowwell-livewell.hatenablog.com

映画「THE BATMAN」(予告編)の英語を眺める

I'M VENGEANCE....!!!

でお馴染みの(?)映画「THE BATMAN」の公開(2022年3月11日)までおよそ2週間になりました。最初の予告編が公開されたとき(2020年8月!)からずっと楽しみにしていたので、いよいよかとドキドキが止まりません。今回はそんな「THE BATMAN」の予告編の英語を見ていこうと思います。

 

1. The Batman - DC FanDome Teaser

www.youtube.com

 

(Gordon)  "From your secret friend. Who? Haven't a clue? Let's play a game just me and you..." Any of this mean anything to you?  

(Alfred) you're becoming quite a celebrity. Why's he writing to you?

(Riddler) If you're justice, please do not lie. What is the price for your blind eye?

(mob) The hell are you supposed to be?

(Batman) I'm vengeance.

(Penguin) Whoa! This guy's crazy.

(Riddler) you're a part of this, too.

(Batman) How am I a part of this?

(Riddler) You'll see.

 

<メモ>

vengeanceとrevengeとavengeについて。vengeanceは名詞で、「vengeanceする」(つまり動詞)に近い意味を持つのがavengeです。revengeは個人的な恨みに対する復讐を意味し、vengeance(avenge)は不正や悪事に対する(正義感に基づいた)復讐を意味するようです。

 

2. The Batman - Main Trailer

www.youtube.com

 

(police) Police! Hands up! Stay still! Get outta here!

(Gordon) Fear is a tool. (And) when that light hits the sky... It's not just a call. It's a warnig.

(Riddler) I've been trying to reach you.

(Batman) What have you done?

(Bruce/Batman) This is a powder keg and Riddler's the match.

(Catwoman) I can take care of myself.

(Alfred) If this continues, it won't be long before you've nothing left.

(Bruce/Batman) I don't care what happens to me.

(Catwoman) It's only gonna get worse for you.

(Penguin) Oh! Take it easy, sweetheart. You're everything they say, ain't ya?

(Catwoman) Maybe we're not so different. Who are you under there?

(Batman) I'm vengeance.

(Riddler) What's black and blue and dead, all over? ...You.

(Alfred) Dear God.

(Penguin) I got you.

 

<メモ>

「powder keg」は火薬が入った樽のことで、比喩的に「一触即発の状況、場所」を意味します。ここではRiddlerがマッチ(火をつける、つまり大惨事を引き起こすきっかけになる存在)だと言っています。「I've been trying to reach you.」は便利な表現で、ずっと探していた上司や学校の先生に言ってあげましょう。

 

3. The Batman - TV spot

www.youtube.com

 

(Riddler) What's black and blue and dead, all over? ...You.

(Bruce/Batman) This is a powder keg and Riddler's the match.

(Penguin) Oh! Take it easy, sweetheart. 

(Riddler) I've been trying to reach you.

(Batman) What have you done?

(Alfred) If this continues, it won't be long before you've nothing left.

(Bruce/Batman) I don't care what happens to me.

(Catwoman) (Maybe) we're not so different. Who are you under there?

(Batman) I'm vengeance.

 

<メモ>

「What have you done?」の音声が2. The Batman - Main Trailerと変わっていますね。

 

4. The Batman - The Bat and The Cat Trailer

www.youtube.com

(lady) Bruce Wayne?

(Bruce) I'm sorry?

(lady) I wouldn't be bothering you here, but your people keep telling me you're unavailable. You know, you really could be doing more for this city. Your family has a history of philanthropy, but as far as I can tell, you're not doing anything.

 (Gordon) The Riddler is asking for you.

(Alfred) The killer left this for the Batman. Why is he writing to you?

(Riddler) You came. I've been trying to reach you.

(Catwoman) Riddler's latest.  It's all about the Wayne's. If we don't stand up, no one will.

(Batman) You got a lot of cats.

(Catwoman) I have a thing about strays. The Bat and the Cat. It's got a nice ring.

(Alfred) A new friend of yours? 

(Bruce) I'm not so sure.

(Riddler) I'm just here to unmask the truth about this cesspool we call a city. You are a part of this, too.

(police) Hands up! Stay still!

(Batman) How am I a part of this?

(Riddler) Oh, you're really not as smart as I thought you were. Bruce ...Wayne.

(Bruce) All these years you lied to me, Alfred.

(Alfred)We all have our scars, Bruce. You're still a Wayne.

(Police/commissioner? ) He's involved in this?

(Gordon) No, he's not involved.

(Police/commissioner?) How do you know?He's a vigilante!

(Catwoman) Who are you under there? What are you hiding?

(Batman) Selina, don't throw your life away.

(Catwoman)Don't worry, honey. I got nine of 'em.

(Riddler) It can be cruel, poetic, or blind. But when it's denied, it's your violence you may find.

(Batman) Justice. The answer's justice.

(Catwoman) Come on, vengeance. Let's get into some trouble.

 

<メモ>

「philanthropy」は慈善活動、社会奉仕といった意味で、「cesspool」は汚水(ゴミ)溜めみたいな感じです。「pool」は何かが溜まっているイメージですね。ちなみにこの予告で、RiddlerがBatmanに対してゴッサムシティの一部だと言っていたのが分かりましたね(thisの意味)。「vigilante」はバットマンのような自警団のことでアメコミ作品でよく出てくる単語です。

 

5.  おわりに

ここまで予告編のクオリティが高いと本編を見るのがちょっと怖いです(笑)。この予告編の画質はどういう処理をかけているのでしょうね。ちょっと古いような映像で渋くてとても良いです。

 

こちらもどうぞ

knowwell-livewell.hatenablog.com

 

 

Cross-Entropy LossとBinary Cross-Entropy Lossの式と違いについて(クラス分類)

今回はCross-Entropy(クロスエントロピー)とBinary Cross-Entropy (バイナリクロスエントロピー)について書きます。クロスエントロピーは、分類タスクでよく用いられる損失関数ですね。一般的にクロスエントロピーの式といえば、下図第二辺ですが、特に2クラス分類の場合は第三辺のように表すこともできます。第二辺と第三辺の意味についてクラス分類の具体例を交えながら考えていきます。

f:id:knowwell-livewell:20220219214832p:plain
クロスエントロピー誤差( 交差エントロピー - Wikipedia より)
1. 多クラス分類の場合(例として3クラス分類)

例として、画像を入力して、それが犬、猫、ウサギのどれかを分類する深層学習モデルを考えます。この場合、犬、猫、ウサギをそれぞれ、(1,0,0)、(0,1,0)、(0,0,1)のようにone-hot表現で表し、モデル出力のユニット(ニューロン)数を3にして、モデルを学習させることが多いです。モデル学習時、モデル出力はソフトマックス関数により、確率に変換します。例えば、モデル出力がソフトマックス関数により(0.25,0.67,0.08)となれば、犬の確率が0.25(25%)、猫の確率が0.67(67%)、ウサギの確率が0.08(8%)であることを意味します。猫の画像を入力して、モデル出力の確率が(0.25,0.67,0.08)だった場合、(モデルを学習させるために必要な)クロスエントロピー誤差は以下のように計算できます。

f:id:knowwell-livewell:20220219225233p:plain
クロスエントロピーの計算

最初の図における pは正解の確率分布で、ここでは猫の画像を入力したことにしているので(0,1,0)です。 qはモデル出力の確率分布で、(0.25,0.67,0.08)になります。正解クラスのモデル出力(確率)の対数の負を計算していますね。

2. 2クラス分類の場合

続いて、2クラス分類の場合を考えます。1. 多クラス分類の場合 からウサギをなくしましょう(つまり、犬と猫の2クラス分類)。先ほどと同様に、犬、猫をそれぞれone-hot表現により、(1,0)、(0,1)と表し、モデル出力のユニット数を2として学習させることにします。例えば、犬の画像を入力して、モデル出力の確率が(0.74,0.26)となったとすると、クロスエントロピー誤差は1. 多クラス分類の場合 と同じように以下で計算することが出来ます。

f:id:knowwell-livewell:20220219231536p:plain
クロスエントロピーの計算

ところで、2クラス分類の場合、片方のクラスに対する確率が分かると、もう片方の確率が自動的に分かる(1から引けばよい)ので、出力層のユニット数は1つでもクラス分類することができます。犬を0、猫を1と表現(labelエンコーディング)し、モデル出力のユニット数を1にして学習させることにします。このとき、モデル出力をシグモイド関数により0~1の値に変換し、その値を1のクラス(ここでは猫)の確率と考えます。例えば、モデル出力の確率が0.26となれば、猫の確率が0.26、犬の確率が0.74であることを意味します(そのため、0.5以上なら猫と、0.5より小さいなら犬と予測したのだと判断できます)。例えば、猫の画像を入力して、モデル出力の確率が0.6になったとすると、クロスエントロピー誤差は最初の図の第三辺を用いて、以下のように計算できます。

f:id:knowwell-livewell:20220219234907p:plain
クロスエントロピーの計算

最初の図における yは正解ラベルで、ここでは猫の画像を入力したことにしているので1です。 \hat{y}はモデル出力の確率で、0.6です。続いて、one-hot表現で計算した例と同じ例を考えてみます。つまり、犬の画像を入力して、モデル出力が0.26となった場合、クロスエントロピー誤差は以下のように計算できます。

f:id:knowwell-livewell:20220220000451p:plain
クロスエントロピーの計算

同じ結果が得られましたね。
まとめると、正解クラスが0の場合、最初の図の第三辺の一項目がなくなり、モデル出力を1から引いたもの(つまり、クラス0の確率)の対数の負を計算することになります。正解クラスが1の場合には、二項目がなくなり、モデル出力(クラスの確率)の対数の負を計算することになります。

3. おわりに

2. 2クラス分類の場合 で見たように、正解をone-hot表現で表してクロスエントロピー誤差を計算する場合(最初の図の第二辺)でも、正解を0と1で表して計算する場合(最初の図の第三辺)でも、結局は正解クラスのモデル出力(確率)の対数の負を計算していて、同じ値になることが確認できましたね。


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

セマンティックセグメンテーションで利用される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と組み合わせて学習させることで、精度および学習安定性が向上したとのことです。

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

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

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

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

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

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

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

前回に引き続き、Boundary-based LossのHD Lossについて紹介します。

b. Morphological Erosion-based
前回紹介したDistance Transform(DT)に基づく方法は、(One-Sidedバージョンでも)計算コストが高いため、モルフォロジー変換を利用してHDを算出しよう、というのがMorphological Erosion-basedの方法です。下図から分かるように、 HD(\delta q, \delta p)は、 \bar{p} \triangle \bar{q}の領域(図(b))での最も厚い部分に(おおよそ)関係があるはずなので、モルフォロジー収縮処理でHDの近似を得ることを考えます。

f:id:knowwell-livewell:20220211230020p:plain
https://arxiv.org/pdf/1904.10030v1.pdfより引用

筆者らは半径 rカーネル B_rと表記した際に、以下でHDを近似することを提案しています。

f:id:knowwell-livewell:20220211232054p:plain
HDのモルフォロジーによる近似

これは \bar{p} \triangle \bar{q}の領域をカーネル B_rで収縮処理( \ominus)した際に、 \bar{p} \triangle \bar{q}の領域が無くなるような rの最小値の2倍(直径)です(なのでおよそカーネルサイズだと言ってもよいような気がします)。このように近似したHDを基に、HD Lossを以下のように設計しています。

f:id:knowwell-livewell:20220212042142p:plain
HD Lossの定義③

 \ominus_{k}はk回収縮処理を行うことを意味します。 Kは10、 \alphaは2.0に設定しているようです。モルフォロジー処理は畳み込み処理で実現できるので、以前紹介したDTベースの手法よりも効率良く求めることが出来ます。

個人的には、このHD Lossの定義はあまり腑に落ちないです。というのも、1回モルフォロジーかけた結果残っている画素数の和、2回モルフォロジーかけた結果残っている画素数の和、3回、、、のK回分のすべての和ってこれHDではないように思います(厳密には多値なので画素数の和にはならないですが)。初めのHDの近似は納得できるのですが...。論文中では実際のHDとの相関が高いから理にかなっていると述べています。確かに相関は高くなりそうですし、それで良いならこれでいいのかもしれません。あくまで近似したHDに基づいて設計したLoss関数であるので実際のHDと相関が高いのであればこれで良いですね。)

c. Circuluar Kernels-based
最後の近似方法は、円形の畳み込みカーネル閾値処理を活用する方法です。半径 rの円形カーネル B_rと表現すると、HDは以下の式で計算することができます。

f:id:knowwell-livewell:20220212013233p:plain
HDの円形カーネルの畳み込みによる近似

ここで \bar{p}^C 1 - \bar{p}で、 f_hは1より小さい値を0にする処理をします。図で考えることにすると、 r_1は緑境界の外側領域( \bar{p}^C)に対して円形カーネル B_r)を畳み込みこんだ結果(の1より小さい値を0とした)において、赤領域内の最大値が正である(0でない)ような rの最大値です。多分これだと分からないですね。ポイントは、「カーネルの要素は合計で1になっていることと、 \bar{p}^Cおよび \bar{p}が0と1で成り立っていることから、カーネル内に0の領域が含まれた時点で、閾値処理により0になってしまう」ということです。 r_1で考えると、赤領域内で畳み込んだ結果が正になる(つまりカーネルが緑境界内に入らない) rで最大になるのは図の黒点の位置に対して黒の円のときになります。

f:id:knowwell-livewell:20220212013732p:plain
https://arxiv.org/pdf/1904.10030v1.pdfより引用(一部改変)

このように近似したHDを基に以下のLoss関数を提案しています。

f:id:knowwell-livewell:20220212032202p:plain
HD Lossの定義④

論文中では、 R = \{3,6,...18\}としていて、 \alphaは2.0としているようです。それぞれの半径のカーネルで畳み込んだ結果の対象領域内の和を加算しているので、このLoss関数もb. Morphological Erosion-basedと同じようなイメージですね。

以上3つのHD Lossを紹介しましたが、論文中ではDice Lossと組み合わせて精度評価をしており、以下3つのことを述べています:(1)評価指標Dice係数では3つに有意な差は見られなかった、(2)評価指標HDではa. Distance Transform-basedとc. Circuluar Kernels-basedが精度として似ており、Dice Lossのみとb. Morphological Erosion-basedよりも有意に良い精度となった、(3)評価指標HDにおいて、b. Morphological Erosion-basedを入れた場合、Dice Lossのみに比べて有意に良い精度となった。


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

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

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

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

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

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

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

今回は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とは...

f:id:knowwell-livewell:20220211000753p:plain
https://arxiv.org/pdf/1904.10030v1.pdfより引用

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

f:id:knowwell-livewell:20220211002415p:plain
Hausdorff Distance

これは一体何を表しているのかというと「X内のどんな点(図の青点線上のどんな点)からでも距離 rの範囲内にYの点(図の赤線上の点)が必ず存在する」ような距離 rの最小値です。ちょっと言葉では分かりにくいですね。こちらのブログ記事がとても分かりやすいです。
ハウスドルフ距離 (Hausdorff distance) - 大人になってからの再学習
一方、集合Yから集合XへのHDは上式で x yを入れ替えれば計算できます。上記のブログ記事で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値画像を Xとすると、 Xのある画素 [i,j]における DT_{X}[i,j]は以下の式で表されます。

f:id:knowwell-livewell:20220211180430p:plain
Distance Transform

ここで、正解マスク画像 \bar{p}の境界 \delta pに対するDTを d_pと表現すると、 HD_{DT}(\delta q, \delta p)は以下のように表すことができます。

f:id:knowwell-livewell:20220211184658p:plain
Hausdorff Distanceの計算方法①

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

f:id:knowwell-livewell:20220211182023p:plain
https://arxiv.org/pdf/1904.10030v1.pdfより引用

当然ながら、 HD_{DT}(\delta p, \delta q) d_p d_qに入れ替えたものになります。上記のようなHDの推定方法に基づいて、HD Lossを以下のように定義しています。

f:id:knowwell-livewell:20220211203117p:plain
HD Lossの定義①

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

f:id:knowwell-livewell:20220211205506p:plain
HD Lossの定義②


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