新型コロナウイルス感染症対策専門家会議記者会見2020/3/19 質疑応答(一部) 文字起こし

表記の件、質疑応答の中で、下記のやり取りが印象深かったので、文字起こしした。

(質問)NHKマツオ記者
 この感染症はオーバーシュートしても事前にその兆候を察知できない、ある日オーバーシュートが突然起こりかねない、つまりそれは3つの条件が同時に重なる場を避けていただくということ、でなければそれが避けられないと(資料に)書かれているが、あらためて現在がどういう状況なのか、端的にどのように考えているか教えて欲しい。

(回答)
*****************

(書き起こし文章)

 新型コロナウイルス感染症対策専門家会議記者会見
 https://www.youtube.com/watch?v=Ldc--rAw9sI&t=4351s
 FNNプライムオンライン 
 北海道大学西浦教授説明 1時間09分ころから

*****************

 今回の日本全体の評価に関して、皆さんには希望の光を見出してもらいたいと思っています。この感染症に関してはひとたび大規模に流行が起こると目を覆いたくなるような被害規模になることが予測されます。一定の規模で医療機関が溢れてしまうような状態が出来かねないということなんですけれども、一方でここ最近の、3月上旬に入ってからの実行再生産数は1を割っています。中国でも知られてきたことなんですけども、この感染症はいわゆるsocial distancingと言って社会的隔離をすることで一定の制御ができることがどうも確からしいということを感じる結果でした。どういうことかというと例えばクラスターの大規模なメガクラスターが発生するのを避けるために大規模イベントを自粛をしたり、あるいは皆さんができるだけ閉鎖空間で接触することを避けたりとか、減らせれる接触を減らす努力を皆さんして来てくださったと思うんです。それには皆さんいろんな影響があって、科学者の端くれとして大変ご不便をおかけしたことをおわびしたいと思うんですけども、その影響で感染者数というのに減少があるかもしれないと、こういう対策をすると減少するかもしれないということが少しだけ希望の光として見えたかもしれないと思っています。今後市民の皆さんに考えてもらいたいんですね。今減らされる大規模イベントをやめておく。今減らせれる接触をみんなで協力をして減らすということをすることで、それが長期間流行持続しますので、長時間それを続けれるような持続可能なものを見つけながら社会経済活動の機能も最低限維持できるレベルっていうのを皆で見つけると、もしかすると切り抜けられるかもしれないです。なので今、ここで一気に堰を切って接触をするのかどうかっていうのは一度皆さんで考えてもらいたい、そういう機会があるといいなっていうのは科学的に個人的な意見ですけども、思っています。今このままの状態でせっかくの希望の光が見えたところなんですけども、分析の所でお話をしましたけれども欧州とアメリカと東南アジアで流行が拡大していますから、そこから感染者はこれまでの中国と比べ物にならないレベルで日本にやってきます。これだけはどうしても止めることができませんので、このまま丸腰で受けると大規模流行が起こります。なのであまり残されている時間はないんですけれども、以上のようなことをもとに皆さんでここから一度社会経済活動を元に戻すのかどうかっていうのは、一度みんな向き合って考えてもらいたいなと。憂慮すべき状態です。それをもとに考えてもらいたいなと思ってます。

新型コロナウイルス感染症対策専門家会議記者会見2020/3/19 状況分析部分 文字起こし

*****************

(書き起こし文章)

 新型コロナウイルス感染症対策専門家会議記者会見
 https://www.youtube.com/watch?v=Ldc--rAw9sI&t=4351s
 FNNプライムオンライン 
 北海道大学西浦教授説明 36分30秒くらいから

*****************

私からはこのお手元にあります資料の図を見ながら状況分析の結果を説明させていただきます。

f:id:eiji-kb:20200320081559p:plain

 まず4ページの図1をご覧ください。北海道の流行状況の評価に関してです。
 この図1は4つのパネルがありますけれども、左側の2つというのが流行曲線ですね。一番左上が全感染者を発病時刻ごとにプロットしてみた流行曲線です。大体2月の18日から20日にかけての頃をピークにして、流行曲線が描かれているのを見て取っていただけると思います。そのうち左下の図なんですけども、その全感染者のうちでリンクなしと言って、感染源が不明の患者さんの数がこの左下の流行曲線になります。いずれも北海道庁が発表した公表データをベースにしているもので、実際のところではその公表されていないリンクのある方っていうのがこの中に数人いる可能性があるということもお含みおきください。
 今その流行曲線を取ってみていただけてわかるということはその左下の図なんですけれども時刻と共にリンクなしの感染者数が減っているというものです。リンクのない感染者数というのはどこで感染をしたのかがわからない感染者数を表しています。言い換えるならばその北海道のコミュニティにおいてどれくらい伝播が盛んに起こってきたのかということを反映している感染者数ですが、そのリンクのなかった感染者数が明確に減少傾向にあったように見て受け取れるということがこの図の左下からわかることです。

 右側の2つのパネルをご覧下さい。右側の図の黄色の棒グラフというのは私たちはその発病時刻をもとに逆計算というテクニックを使って推定をした感染推定時刻です。なのでこの右側の2つのパネルの左側の縦軸というのは感染者数を表します。感染というイベントは通常直接に見て取れない、直接に見れないんですけれども、感染の時刻を推定したものがその黄色のバーになります。黄色のバーのときどき途中に灰色の者っていうのが混じっているんですが、1人とか2人とか混じってるんですけどそれらは輸入感染者と言って、海外で感染したことが明確な者。黄色のバーは国内感染例です。その推定感染時刻をもとに実効再生産数と各時刻で1人当たりの感染者が生み出した2次感染者数の平均値を推定したものが青い線になります。その青い線を取り囲むように青い影が95%信頼区間になります。この実効再生産数が1を上回っていると1人当たりが生み出す2次感染者数は1を超えているので流行が拡大傾向にあると。一方で1を下回っていると感染者数は減衰をしていて、おそらく流行が制御状態にあるのだろうということを判断できるんですけれども、右の上の図を見ていただくと2月の上旬の辺りは一応上回っている時期があって、その間その後、1を上回ったり下回ったりすることを繰り返していたんですけども、最近特に3月の上旬になってから1を下回っている傾向があるように見えると。特にその傾向を明確にするために右下の図というのは何をしてるかと言うと、2月29日から2月の2つの期間を比較しているんですけれども、1つの期間は2月16日から2月28日までの、北海道でいわゆる緊急事態宣言を発出する前の期間と、それから緊急事態宣言の翌日の2月の29日から3月の12日までというそれぞれの2つの期間で、仮に実効再生産数が定数だったとした場合に、どの程度の実効再生産数の変化があったのかというのを見たものです。緊急事態宣言の発出前の時の実効再生産数のその期間の平均値が0.9、発出後には0.7になっています。0.7の95%信頼区間の上限値が0.9ということなので、宣言を発出した後に明確に有意に実効再生産数が1を下回って、流行が減少傾向というのが顕著になったというふうに評価することができます。
 なのでこれは北海道民の皆様には行動を自粛して頂いて不便をおかけして大変申し訳なかったと思っていますが、地域の医療現場だったりあるいは地域保健の皆さんが寝ずに皆さん努力していただいたことのたまもので、北海道モデルと言えるものが成功したものと感謝しています。 もちろんまだ札幌を中心として感染者の2次感染の伝播のチェーンが切れてる状態にはありませんから、一切予断を許さない状況であるのですけども、緊急事態宣言を発出後には実効再生産数は明確に減少したということが見て取れました。




f:id:eiji-kb:20200320083318p:plain

 図2をご覧下さい。ページで言うと5ページです。同様のことを日本全国で見た場合というのが、この図に相当します。
 黄色のバーは再びですけども感染時刻を逆計算によって推定したものです。青の線が実効再生産数。分かりやすいように点線を引いていて、それよりも横軸と平行な点線よりも実効再生産数が上であると感染者数は増加傾向にあり、それより下であると減少傾向にあるということが見て取れるんですけども、これまでは 1の値を挟んで1を超えたり下回ったりというのを繰り返してきたんですけども、3月の上旬から1を下回る傾向が見られます。これもしかすると一定の行動変容の影響があったのではないかと考えられるものです。1を下回っていて2次感染者数が減っている。大規模イベントの自粛であったり接触を皆さんが外出を自粛して接触を減らす行動があったり、地域保健の皆さんが接触者の追跡調査を頑張って、医療現場でも患者数が増える中で皆さん頑張っていただきました。それで1を下回るという状態で減少の兆しが見られるということです。
 しかしながら黄色のバーと一緒にある灰色から黒に見えるような棒グラフを見ていただけるんですけども、これは国外から帰ってきた感染者です。最近になって欧州、米国それから東南アジアで感染が拡大していて、それらの地で感染をしたものが、旅行者であったりあるいは法人である場合があるんですけども日本に帰国をすることでまた新たな流行が生じるという危険が高まっていて、むしろ以前よりも大規模流行が起こってしまう可能性が、このまま丸腰で受けてしまうと大変高い状況にあると考えて憂慮しています。




f:id:eiji-kb:20200320083917p:plain

 次のページをご覧下さい。ページ6の図3をご説明します。これも公表データを基に各都道府県別で感染源が不明の感染者数に関して、その動向を検討したものです。
 一番上の図が2月27日から3月4日までに報告された感染者、真中が3月5日から3月11日までに報告された感染者、一番下がもっとも最近の一週間です。3月12日から3月18日までに報告された感染者で、いずれもリンクがない、感染源が不明の人だったと、公表データをベースにするとそう報告されていた人で、縦軸っていうのは全ての都道府県でこのデータっていうのの和を取って100%になると。それぞれの週で計算した時に、それぞれの都道府県が何パーセント分その感染者がいたのかというものを表します。ご覧いただければ分かると思うんですけども、当初北海道でリンクの追えない感染者が多かったという状況が続いていて、その後2週前は、その前からでしょうかね、都市部でリンクの追えない感染者が無視できない程度の数がいると。それが増加している場合は大変憂慮すべき状態にあると考えられるものです。




f:id:eiji-kb:20200320084327p:plain

 7ページご覧ください。図4は国別で報告日別で見た時の新規の死亡者数を検討した結果です。
 皆さんご存知の通りで、イランやあるいはイタリアで大規模な流行が起こっていて、相当数の死者数が確認されていますけれども、日本でも死亡者数が微増しているのが見て取れると思います。ただ顕著で異常な大規模な増加にはまだ至っていないというのがこちらで見て取っていただけるかと思います。




f:id:eiji-kb:20200320084405p:plain

 8ページご覧ください。図5です。国別の累積感染者数、累積ってのはこれまでの感染者数をトータルで取ったものですけども、その推移を検討したものです。
 皆さん見て取っていただけるんですけどイタリアで大規模な流行が起こってそのあと欧州の各国でそれに引き続くように感染者数の指数関数的な増加が見られています。スペイン、ドイツ、フランスそれぞれ似たような指数関数的な感染者の増殖率で、だいたい2,3日に1回感染者が倍増するペースで流行が拡大しています。一方で日本とシンガポールがその横に伸びている増殖度の遅い状態です。大規模な流行というのがまだ起こっていないというだけと評価をしています。だいたいその倍増する時間は欧州のそれが2,3日に1回なのに対して、日本で大体10日に1回程度で倍増しています。ただこのまま感染者の増加を許すといつか欧州と同様に指数関数的な増殖が認められるリスクがないわけではありません。




f:id:eiji-kb:20200320084459p:plain

 9ページご覧ください。図6です。これはドイツで大規模な流行が起こっていることを受けて、大規模流行時に1つの都市部などで想定される10万人当たりの新規感染者数と、重篤患者数に関してを計算シミュレーションしたものです。
 左側の図が新規感染者数と1日あたりに新たに感染する感染者数をそれぞれの年齢群別に検討したものです。先ほど尾身先生からドイツなみと説明いただきましたけど、基本再生産数がだいたいドイツで推定したものが2.5程度なんですが、それを元に流行が起こってしまったという場合には流行50日目にピークを迎えるような大変急峻な流行曲線が見られることが危惧されます。成人の感染者が最も多くて高齢者がそれに続くと。だいたい50日でピークになると。右側の図が重篤患者といって呼吸管理あるいは全身管理を必要とするものの数を10万人あたりで計算したものです。横にまっすぐ引いている赤い線が日本で10万あたりで許容されるという集中治療で人工呼吸器のavailableな数を示しています。縦軸の解釈ってのは時点の患者数で、あるその流行時刻で特定の日付に重篤な患者数で、呼吸管理全身管理が必要な人がどれくらいの数がいるのかいうことなんですけど、10万人当たり200人を超える高齢者の重篤患者が出ると想定され、それが大体流行時刻で言うと62日目ぐらいにピークを迎えます。それは ICU の入所可能な人工呼吸器の使用可能なキャパシティというのを超えてしまうということが想定されます。もちろんこれはその仮想的な争点によるシミュレーションなんですけれども、今ヨーロッパで起こっているということは目を覆いたくなるようなシビアな状態であるということをまず私たち理解しないといけないのでこういった数値計算を出させていただきました。こういった状況が生じないようにこれから公衆衛生学的な対策を講じることでオーバーシュートを避けるということが大事であるということが皆さんこれでご理解いただけるかと思います。

図の説明は以上です。


*****************


・引用(図表)
 新型コロナウイルス感染症対策専門家会議
 「新型コロナウイルス感染症対策の状況分析・提言」(2020 年 3 月 19 日)
 https://www.mhlw.go.jp/content/10900000/000610566.pdf
 厚生労働省

・引用(文章)
 https://www.youtube.com/watch?v=Ldc--rAw9sI&t=3747s
 FNNプライムオンライン 

・文章は、ほぼ放送そのままです。いわゆる「えー・でー」などの言葉のみ取り除いています。
・文字起こしはほぼGoogleドキュメントの仕事です。
・このページはアフィリエイトなど金銭的利益は一切ありません。

(後編)マハリクmahalita 白黒アニメよ色よ付け えいっ! (ディープラーニングによる白黒アニメの自動彩色実験)

白黒アニメをカラーで見たい...。

 

  f:id:eiji-kb:20161125214435p:plain     (C)光プロダクション・東映アニメーション/魔法使いサリーより引用。右は自動彩色。

 
前編(この彩色手法の基本的概要)

ネットワーク構造

今回の彩色実験に用いたモデルのネットワーク図です。 

f:id:eiji-kb:20161125224703p:plain

ベースはPavel Gonchar氏のcolornet*1です(上図右側)。これはRyan Dahl氏のAutomatic Colorization*2をベースにしたTensorflowによる実装です。今回作成したモデルは、colornetのChainerによる移植ですが、さらに以下の変更を加えています。

1.色空間としてYUVではなくLabを使用し、colornetの最終層のシグモイドを除外した。
2.VGG16第5層も彩色ネットワーク側に接続し利用した。
3.Satoshi Iizuka, Edgar Simo-Serra, and Hiroshi IshikawaのLet there be Color!*3のFusion Layerに影響を受け、VGG16全結合層を利用する簡易FUSION層を追加した。

や3は、アニメはキャラクタがアップで表示されることがあるため、大域的な領域の、彩色性能の向上を目標として追加しました。
細かい話ですが、colornetでは拡大にバイリニア法が使っていますが、このモデルでは、Upconvolution(Deconvolution)を使用しています。
なおVGG部分は、K. Simonyan氏らによるILSVRC-2014 model*4をCaffeモデルからChainerモデルへ移転したmitmul氏の chainer-imagenet-vgg*5を使用しました。

訓練データ

 実験で使用したアニメは、横山光輝原作、東映動画製作の魔法使いサリーです。少女向けアニメですが、内容的には男児も含めた子供一般が楽しめるように作成されています。放送開始は1966年、17話まで白黒、18話からカラーで制作されました。よってオープニングも白黒版とカラー版が存在します(オープニングは、背景とカメラワークに差異が存在します)。

 今回は、本編(第1話)を彩色することを主な目標とします。そのため、18話からのカラー放送を訓練データとして使用しました。

訓練データ
  魔法使いサリー6話分(18〜23話,OP ED抜き,2時間18分,フレーム数248,433)

 なお、フレーム数は約25万ですが、アニメには連続して同じフレームが存在します。そのため、実質的な訓練データ数としては、もう少し少なめに見積る必要があります。

訓練時間

使用機器

  CPU Intel Core i7-4790K
  GPU NVIDIA TITAN

 訓練時間は1エポック(6話分の訓練データをモデルに1回学習させる)およそ20〜22時間かかりました。なお、学習状況のモニタ機能を利用し、かつ同じ計算機上で別作業も行っていましたので、実際は、もう何割かは速く処理することが可能です。今回は1エポックずつ作業し、3日かけて3エポック実施しました(厳密には、1から2エポックのつなぎ処理が少し漏れましたので,3エポックには満たないです。次章に記載した最大学習回数(741,868)が、フレーム数248,433×3エポック=745,299とイコールでないのはそのため)。
 話が前後しますが、訓練データとして動画をそのまま使用しました。手軽に大容量の訓練データを与えたいというのが第一の理由でしたが、実際に行おうとすると、サリーのカラー放送は全91話ありますので、これを訓練するには1エポックだけでざっと12〜13日はかかりそうです。今回は断念して6話分で訓練を行いました。

実験結果

下図は、白黒放送第1話に、自動彩色を施した結果です。自動彩色に使用したモデルの学習回数は、741868(最大)、720000、680000、660000です。


・学習回数741868(最大)モデルによる自動彩色

 f:id:eiji-kb:20161125231342p:plain  

・学習回数720000モデルによる自動彩色

 f:id:eiji-kb:20161125235630p:plain

・学習回数680000モデルによる自動彩色 

 f:id:eiji-kb:20161126000127p:plain 

・学習回数660000モデルによる自動彩色

 f:id:eiji-kb:20161126001223p:plain


 
 以上の画像ですが、各モデルで見栄えがいいのものを選んで載せています。実際には、彩色はうまく行かなかった例も多々あります。下図では、よし子ちゃん(右のキャラクタ)の腕に塗り漏れが発生しています。 (その他の例は動画で確認できます)


 

 f:id:eiji-kb:20161126001656p:plain

 

学習結果の傾向

 学習モデルによって、彩色の得意不得意があります。例えば学習回数720000では背景の木々の緑がよく出ます。今回、訓練データとして動画を用いましたが、これは、モデルは動画の頭から順に1フレームずつ学習しています。そして、アニメはシーンにより色彩が違ってきます。モデルを保存するタイミングで、そのタイミングのシーンに適合しているため学習モデルによって彩色の傾向に違いが出たと考えられます。またモデルによっては、シーンをまたがっての学習中なのか、まったく冴えない彩色をするモデルもあります。この点は、今回の訓練方式の欠点かと思います。エポックごとに学習係数を低減していくと、もう少しモデル間の差異は小さくなったかもしれませんが、今回は全エポック一律の学習係数で訓練しています。
 学習回数680000のモデルでは、背景の木々が緑だったりピンクだったりに彩色されました。これは訓練データの風景(下図)に、日中の緑の木々だけでなく、桜や夕焼けに染まった風景もあったことが影響したと考えられます。しかしながら、これはこれでグラデーションがかかったように見えていいリズム感が出ましたので、個人的には気に入っています。

 

  f:id:eiji-kb:20161126003319p:plain



ところで、シーンによって彩色が違ってくるということは、やはりそのシーンばかりを集めて専用の訓練データを作って訓練したほうが綺麗では、と考えられます。試してみたところ、魔法の国のシーンでは、カラー放送に近い彩色結果が得られました。 


(左から、白黒、本編モデルで彩色、魔法の国モデルで彩色)

   f:id:eiji-kb:20161126004124p:plain



 しかし、他のシーンでは特に印象的な結果は出ませんでした。理由は6話分(約2時間20分)からシーンを集めましたので、訓練データ自体が小さくなったのが一因と考えられます。かといって訓練データを大きくするのは、現状では手作業となってしまうためあまり現実的とは言えません。魔法の国のシーンがうまくいったのは、元々背景の色が単調であったことや、白黒放送と同じ原画・動画(中割り)を使ったと考えられるシーンがカラー放送にあったためと考えられます。

 

 あと、オープニングについては、カラー放送のオープニングを学習していない本編モデルでも、当然白黒放送のオープニングの彩色はできますが、やはりカラー放送のオープニングを訓練したモデルを使った方が、カラー放送に近い彩色はできます。



(左から、白黒放送、本編モデル(680000)彩色、カラー放送OPモデル彩色、カラー放送)
f:id:eiji-kb:20161109235311j:plain                          ©光プロダクション・東映アニメーション



 サリーちゃん本編(白黒放送第1話)への彩色実験の結果です。今回、複数モデルを使用して彩色しましたので、主観になりますがモデル間で比べてみて綺麗と思ったシーンで編集してみたのが以下の動画となります。(OP+1話。1話はダイジェスト編集しています)


 

     

                      ©光プロダクション・東映アニメーション

 


単体のモデルで彩色した結果を知りたい方は、先に紹介したGitHubに、学習回数680000で彩色した動画のリンクを貼っていますのでご参照ください。

色彩設計の違い

 上の動画を見たら、カブ(下図のキャラクタ)の服の色が、カラー放送と比較してかなり違うと感じられたと思います。また、オープニングの家の屋根も赤になっていません。これらは、カラー放送と白黒放送で色彩設計が違うためと考えられます。


 

(左から、カラー放送、カラー放送→グレースケール化したもの、白黒放送)  

  f:id:eiji-kb:20161126005629p:plain


真ん中がカラー放送をグレースケール化したものですが、白黒放送と比べると服や屋根の輝度が違うのがわかります。カブは白黒放送ではシャツとズボンの違いがはっきりわかりますが、カラー放送をグレースケール化すると、服の境界線が分かりづらくなります。なおカラー放送だからカラーを優先するのは当然ですが、カラー放送に切り替えられた1967年当時はまだカラーTVの普及率は1.6%(翌68年でも5.4%、ただしこの後急速に普及し75年には90%超えます。*6総務省)だったため、当時放送を見ていた、多くのちびっ子たちは切り替わった際に違和感を抱いたのではと思われます。話がそれましたが、今回使った手法では彩色にあたってグレースケールが重要な情報となりますので、輝度にこれだけ違いがあると彩色は難しいようです。
 なおサリーちゃんの服は白黒放送から赤としての設定だったようで、今回の手法でも赤でうまく塗れています。ただしサリーちゃんの顔の色には、ばらつきがでました。原因のひとつとして考えられるのは、訓練データ(カラー放送)でも、サリーちゃんの顔の色にばらつきがあることです。
 また、訓練データについて補足しますと、キャラクターの作画についても多様性があります。サリーちゃんも、顔の描き方から身長まで、かなり幅があります(特に中割りにおいて顕著でした。中にはサリーちゃんじゃなくて別のギャグアニメだろうといったテイストのものまでありました)。

汎化性能

 上で紹介したサリーちゃんの動画も、彩色したのは訓練データには含まれていない白黒作品です。さらに、サリーちゃんで学習したモデルを、まったく違う白黒作品に適用して彩色テストしてみました。テストしたのは、石ノ森章太郎原作、佐武と市捕物控(1968)です。サリーちゃんとはかなり違う作風の作品です。使用したモデルは、サリーちゃん本編学習回数680000のモデルです。

  

  f:id:eiji-kb:20161126025102p:plain


 最後のフレームはかなりポップな彩色となりました。全体的に色がにじみましたが、それでかえって味が出たというか、印象深い彩色になったと感じました。かつてのパソコン、AppleIIやPC-6001では、あえてにじみを活用することで色を出していたといいますが、2016年の今に、このようなアナログっぽい処理が復活するとは感慨深いです。ディープラーニングの自動彩色でこういったことが楽しめるのは、今のうちだけかもしれないですね。
 動画は、後半とOPのみとしています。

 

     

                                ©石森プロ

ソース

 ソースをGitHubに上げています。

github.com

ネットワーク構造は先に述べたとおりです。損失関数は平均二乗誤差(MSE)です。Labのaとbの分それぞれMSEを求めます。そしてそれぞれSGDで最適化します。SGDの学習係数はデフォルト0.0002です。なお、VGGとcolornetの接続については、ソフトなので戻り値でと言われそうですが、ワイヤ的に記述したかったため、そういう書き方にしております。

ネットワーク設定について

 ネットワーク設定するにあたって、実験して結果を見ながら試行錯誤を行いました。しかしディープラーニングは訓練データも大きく実験時間もかかるため、なかなか恵まれた環境でもない限りデータや実験時間に制約を受けてしまうのが実情かと思います。今回、予備実験の段階では、軽めの訓練データで試行して、あたりをつけながら進めていきました。そのため、考察を述べるには実験が不十分な側面がありますが、差し支えないと思える程度で述べておきます。

 2.の第5層の接続ですが、これはもともとオリジナルのAutomatic colorizatonでもマシンリソース不足により実装されなかったことが述べられています。実際にこの層を利用したモデルをいくつか作り実写動画で訓練して試したところ、どのモデルにおいても大域的な領域の、色の学習は速くなりました。その点は良かったのですが、単に第5層を接続しただけのモデルでは、学習時に下図左のような、パズルの抜けのような塗り漏れが散見されました。 

 

    f:id:eiji-kb:20161125230108p:plain

 

第5層は空間情報としては縦横14x14と大域的なため、そのような影響が出たと考えられます。この改善についてはあとで述べます。3.の簡易FUSION層も大域的な塗りの精度向上を目指したものです。これは、意味論的情報(参照論文では大域特徴)である全結合層を再度2次元に束ね、抽象化の進んだ空間的情報(参照論文では中レベル特徴)となった層と融合させるというものです。自分は全結合層の利用は発想にありませんでしたので、最初論文を読んだ時、なるほどと感嘆しました。そしてVGGの全結合層をFUSIONして特徴量として使うだけなら、たいして実装の手間はかからないため追加しました。しかし、当モデルにおいては、大域的な塗りと言う点で期待したほどの効果は表れませんでした。参照論文のモデルとは、ネットワーク構造から損失関数から誤差逆伝搬の範囲から、いろいろと差異があるためと考えられます。しかしながら、前述の塗り漏れについては改善傾向が見られました(上図右)。ただその理由としては、単に第5層の情報が弱まったことでそのような効果が現れた可能性があります(FUSIONする際に第5層由来のデータもサイズが半分に縮小されています)。しかし、第5層を使用したモデルの、大域的な領域の色の学習の速さを持ち、かつ第4層までを使用した従来モデルに劣らない塗りの丁寧さが共存していると評価できましたので、この簡易FUSION層はモデルに採用しました。  

試される方へ

 試して見ようとする方のためにメモ的なことを記しておきます。まず、画像の明度のヒストグラムは、訓練データとテストデータの間で差が小さくなるように調整した方が、良い結果が得られると思います。
 Chainerのバージョンですが、今回紹介した実験は全て1.8.2でおこなっています。現在(2015年12月5日)の最新バージョンは、1.18.0です。この最新バージョンで簡単な動画を使い、訓練と検証が動作することを確認しています。細かいことですが、この間のバージョンでは、動かない場合があるかもしれません。1.13.0にバージョンアップをした時に訓練を試したところ、画像に強いムラが表れました(一度しか試していないため、たまたまかもしれません)。また1.14.0にバージョンアップしたときは、CUDA関連のエラーが出ました。
 CPUでの利用ですが、出先で古いMacBook Air(Late2010)でサリーちゃんOPを使って訓練を試したことがありますが、1エポックでおよそ1日かかりました。CPUのみでの処理なら、検証のみ行うのがおすすめです。

おわりに

 このブログはChainer MeetUP #03で発表した内容をもとに作成しました。それから少し手を加えています。カラー化に関する論文やソースの著者の方に感謝します。そして原作者の方、アニメ制作の方に敬意を表します。サリーちゃん50周年おめでとうございます。mOm

*1:Pavel Gonchar, "colornet", https://github.com/pavelgonchar/colornet, 2016

*2:Ryan Dahl, "Automatic Colorization", https://github.com/Eiji-Kb/mahalitahttp://tinyclouds.org/colorize, 2016

*3:Satoshi Iizuka, Edgar Simo-Serra, and Hiroshi Ishikawa, "Let there be Color!: Joint End-to-end Learning of Global and Local Image Priors for Automatic Image Colorization with Simultaneous Classification",ACM Transaction on Graphics ,Proc. of SIGGRAPH 2016

*4:K. Simonyan, A. Zisserman, "Very Deep Convolutional Networks for Large-Scale Image Recognition", https://arxiv.org/pdf/1409.1556.pdf,2015

*5:mitmul, "chainer-imagenet-vgg", https://github.com/mitmul/chainer-imagenet-vgg, 2015

*6:総務省,平成26年版情報通信白書,http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h26/html/nc121220.html

MacのTeX (TeXShop)でpdf経由の図の貼り付け(備忘)

matplotlib などで作成した図を、TeXへ貼り付ける時の手順



1.PDFで貼り付ける.

 (1)python(matplotlib)などで作成した図を、PDFで保存する.

 (2)PPT(パワーポイント)等

   1)PPT等で,貼り付けたい部分を選択する.[編集]-[コピー]

   2)Mac標準の「プレビュー」を起動してPDFに変換する.

      ・ランチャから起動

      ・[ファイル]-[クリップボードから新規作成] で貼り付け.

      ・[ファイル]-[保存] ドロップダウンで,フォーマット「PDF」とし,

       任意ファイル名(例:waowao.pdf)を付けて保存.

       注意!まぎわらしいが,[ファイル]-[PDFとして書き出す]では保存しないこと。

          これで保存すると、A4縦とか横のPDFに変換されるため、

          TeXで読み込んだ時に,異常に縦長とか,90度回転(横)で表示される.

2.ebbでebbファイル作成

 (1)ebbを起動する.(パスを切れば ebbだけでOK)

   ebb -b -x waowao.pdf

   ・フルパスの場合  /usr/local/texlive/2014/bin/x86_64-darwin/ebb -b -x waowao.pdf

3.あとはTeXで指定すればOK.

4.おまけ 写真の加工(例face.jpgからEPS形式に変換)

 (1)convert face.jpg face.eps

 (2)ebb -b -x face.jpg

   ・フルパスの場合/usr/local/texlive/2014/bin/x86_64-darwin/ebb -b -x face.jpg

マウス肩かと思っていたら、肩が石灰化していた件

マウス肩が慢性化して、四十肩にでもなったかな?と思っていたら、肩が石灰化していた。肩をやられたらコンピュータが使えないのであかんがな。
肩が痛ければ、自分で勝手に判断しないで、ちゃんと整形外科に行って、医師の診断を受けましょうという当たり前の話です。さっさと行かないとこんな痛い目に遭うという話。

f:id:eiji-kb:20161119012100p:plain

痛みの始まり

今回の激痛が、いつから始まったのか、はっきり覚えていない。ただ、10月の月末にかなり冷え込んだ日があって、朝起きたら右肩にかなり痛みがあった。冷やしたのが悪かったようだ。10月は月初は気温が30℃越える日もあり、寝るときも布団を掛けない癖が抜けなくて、その痛みが出た日も、布団を掛けて寝ていなかった。あと、その日か前の日が忘れたが、前腕の内側に痙攣が2回ほど発生した。今まで経験したことが無かったためうす気味悪かったが、ただ別にそのままにしていた。というのもそもそも右肩は20代前半から時々痛むことが多かったので、気にしなかった。痛めたのは昔マウスの位置や操作に悪い癖があったのだと思う。パソコンを置いたサイドテーブルの空間に限りがあったので、キーボードより奥にマウスを置いて腕を伸ばしきってマウスを操作する癖があった。それで傷んだんだと思う。でもまあ、コンピュータ使うし、しょうがないくらいに思っていた。痛いが、我慢できないような痛みでもなかったし。

強まる痛み

ところが今回は腕を上げてマウスを操作しようとしても、相当に痛くて出来なかった。ネットで調べると、マウスは体の前に置いて操作するのが負担がかからないとあったので、その体勢でちまちまと操作した。あまりに痛みが強かったので、ネットで四十肩とか五十肩とか検索を検索すると、最初は痛いがそのうち痛みは弱くなるという記事を見て、まあしばらくの辛抱だろうと勝手に判断した。この時、記事をキチンと読めば、石灰化とかの可能性もあることが分かったのだが、自分がまさかという思いもあって、斜め読みしてしまった。それも良くなかった。

そのうちどんどん痛みが強くなってきた。腕を上げて机の上のキーボードが打てなくなった。膝の上にキーボードを置くと、まだ打てる。運良く安物のメンブレンキーボードがあり、これが軽量だったので、それを膝の上に置いて入力していたが、そのうち、それも辛くなってきた。そこで、立って腕をぶらんと下げて、手首だけ起こすとキーボードが打てたのでそれで入力した。まあ、この時までは、痛みは生きてる証拠だぜというギャグを思い起こすくらいの余裕があったのだが...。

金属片を埋め込んだような激痛

数日過ぎて週末の土日になると、痛みがさらに増した。どれくらい痛いか例えると、鈍い鋭さの金属片を3枚くらい、肩の筋肉に埋め込まれたような痛さだった(もちろんそんな経験はないが)。あまりに痛いと本当に何もできない。痛みに耐えてじっと過ごすしかない。夜も眠れなかった。起きているときは腕をだらんと下げることができて少し負担が減るが、横になると、重力で少し腕がずれるというのか、腕を筋肉で保持できず、さらに痛みが増した。常備薬の市販の痛み止め(バッファリンね)があり、それを飲んで痛みを散らせた。しかし効果は寝る前に飲んでも長くて3時間くらい、短いと数十分で、肩の激痛とともに目が覚めるのだ。起きた姿勢で寝た方が痛みが減ると思い、安物のベットだが電動で背もたれが起こせるので、それで寝てみた。しかし電車では座っていても熟睡できるのに、電車とは違い心地よい揺れが無いためか、部屋のベットでは深く眠ることができない。劇的に睡眠の質が悪くなった。眠りたいのに痛くて横になれない。これはとてもつらい。

収まらない痛み → 限界突破

明けて月曜日、朝起きたら相変わらず痛いが、我慢できないことはない。ついに峠を超えたかと、勝手に解釈した。しかし甘かった。昼飯を食った後に激痛が来た。痛みが移動する。肩の前の方に、金属片を埋め込んで肉がちぎられるような痛みがあったが、それが知らぬうちに、ジャンプしながら上にゆっくりと移動していき、最後にはぐるっとまわって肩の後ろ側まで来た。呼吸は浅くなり、椅子から立ち上がろうとしても、腰を浮かした瞬間に痛さで引っ繰り返りそうで立ち上がれない。ほんとギャーと叫びたくなるくらい、我慢できない痛さだった。さすがに観念して、痛み止めを飲んで病院に行った。

病院へ

病院に行ってレントゲン撮ったら、石灰化が見つかった。いやこれは大きい。と感心された。先生に診てもらって、病状の説明を受けて、注射を打つかどうか聞かれた。レントゲンを見せられた後で、あんな腕の奥まで針を通すのか?この痛いところに注射を打つなど、超激痛ではないのか?と恐れたが、(特に治りが早くなるとかはないが)痛みにはかなり効くということで、そしてとにかく痛みから逃れたかったので、打ってもらった。注射は痛い瞬間もあったが、激痛自体に比べればはるかにましだった。おかげさまで注射がよく効いて、その晩(と次の日)は、数日ぶりにじっくり眠ることができた。これは有り難かった。そして久しぶりに夢を見ることができた。なぜか、非常に事務的な夢だったので、目が覚めたあと笑えたが。

薬で治療

治療は薬で対処することになった。痛み止めと、石灰をなくす効果のある薬をもらった。これは8割の人には効果があるということだった。一ヶ月服用して、またレントゲンを取って効果を見ることになる。

経過(途中)

注射を打って、2日くらいは眠れたが、その後はやはり寝ると肩が痛い。横になって腕が楽になるポジションがない。右腕で布団をぐるっと巻き込んで少し浮かすと楽になった。しかし目が覚めたら相変わらず激痛だ。やはり3時間くらいで目が覚めたりする。だいたい、十日少しはそんな感じだった。睡眠の質が悪いと辛い。しかし十日ほど過ぎたら、やっとぐっすり眠れるようになった。目が覚めたら相変わらず重い痛みはあるが。腕も少しずつ動かせるようになった。キーボードも、膝の上にキーボードを置いて、両手でタイプできるようになった。

あたりまえの話だが、片手が使えないと日常生活が大変だ。ベットから起きるのも、服を着るのも、歯磨きも、風呂も、ドライヤーを掛けるのも、トイレも。ほとんどの日常生活が。腕が上がらないので、脇の下も不快になる。ただ、コンタクトレンズを入れるのは、片手でも入れやすいと発見した。左手ばかり使うことになるので、あまり負担がかかリ過ぎないように注意した。左肩も痛んだらたまらない。

その後(2018年追記)

自分は薬で治りました。一ヶ月後に撮ったレントゲンでは石灰化はかなり小さくなっていました。今はぜんぜん痛みはありません。全く快適です。それまでは重い物を持った後や、季節の変わり目に痛み(激痛ではないのだが、肩の奥の方から発する重い感じの痛み)を感じることがあり、それが慢性化して当たり前のようになっていたのですが、そういったことからも開放されました。

激痛でないと、仕事にかまけたり、この程度で医師に見てもらうのはどうかと思い病院に行かなかったりしていましたが、この件は自分でマウス肩とか判断せずに早く見てもらっておけばよかったと思いましたね。

 

UbuntuへのUnity (game engineの方)インストール

Unity(ゲームエンジンの方だよ)の、Ubuntuへのインストールについてメモ。


インストールしても、
・背景が紫一色 (地面と空に別れていない)
になったり、バージョンアップしても、
・動作がハングアップしたように異常に遅い。
というトラブルに見舞われた。

オフィシャルのサイトでは、インストーラーはWindowsやMac用は前面に出てるのですぐ見つかるが、Ubuntu版は見つからない。

色々探したら、
以下のオフィシャルの掲示板にダウンロードリンク先の履歴があった。
https://forum.unity3d.com/threads/unity-on-linux-release-notes-and-known-issues.350256/

Linux用のUnityインストーラは、
Ubuntu専用と、Linux汎用のものが用意されていた。
なお、上でトラブルが発生したのは汎用だった。

上の掲示板の下の方にある下記の専用インストーラから再導入したら解消した。
Official Installers for 64-bit Ubuntu Linux:
5.4.1f1: http://download.unity3d.com/download_unity/linux/unity-editor-5.4.1f1+20160913_amd64.deb

(前編)マハリクmahalita 白黒アニメよ色よ付け えいっ! (ディープラーニングによる白黒アニメの自動彩色実験)

白黒映像をカラーで見たい...。

 

  f:id:eiji-kb:20161125214435p:plain     (C)光プロダクション東映アニメーション魔法使いサリーより引用。右は自動彩色。


 おおげさかもしれませんが、それは空を飛びたいとかいったものと同じたぐいの欲求ではないかと思います。自分も惹きつけられますが、かなり昔にもそれに挑戦した人がいました。以前図書館で、たしか1960〜70年代くらいの古い技術雑誌でしたが、白黒TVの前でカラーフィルタを高速回転させてカラーTVにするという記事を見たことがあります。しかし情熱には感心しましたが、そんな単純な仕組みでまともに色が付くとはとても思えませんでした。

以下はカラー(RGB)から白黒(グレースケール)へ変換する式ですが、

 白黒(グレースケール)*1 = 0.299×R + 0.587×G + 0.114×B

白黒(グレースケール)からカラーに戻そうにも、RGBの値の組み合わせはいくつも存在するため値が特定できません。ある白黒(グレースケール)の値が青みがかった色なのか、緑がかった色なのか特定できない...。
 ところが人間なら、ある程度は特定することができます。上の白黒の絵なら、木は緑、空は青、顔は肌色と、特に意識せずに特定できます。上の式の係数は、カラーを人間が自然に感じられる白黒の輝度に変換する値となっていて、その結果の値も、色を特定する手がかりとなります。しかしそれに加えて、人間は絵の中の物体が何か認識してその色を知っているからこそ色を特定できます。当たり前ですね。正確には、特定というよりも、頭の中の記憶から色を決めていますので、それらしい色(もっともらしい色)を想像していると言った方がより正確です。たとえば白黒のドラえもんを見せられてもほとんどの人はドラえもんの青や鈴の黄色を想像できます。しかし、知らない鳥や花や蝶など見せられたら場合はどうでしょうか。それらに詳しくなければ、正しい色ではなく、それらしい色で想像しているはずです。自然の風景などでも、人によって想像する色が微妙に違ってくるはずです。
そういった意味では、たぶん、冒頭の高速回転するカラーフィルタも、カラーTVにするというよりは、見る側の想像力を補って脳内補完(妄想)で色を付けるのをアシストするだけの装置だったのではないかと想像します。

自動彩色ネットワークの概要

 さて先に述べたような、もっともらしい色を想像して色を付けるという処理を、機械で実現するには、

 ① 画像から物体を認識
 ② データベースから物体の色を検索
 ③ 物体の領域に色を塗る

と処理すれば実現できそうです。しかし、現実には画像の認識や領域の特定は機械にとっては難しい問題でした。このあたりの話は画像処理の教科書やディープラーニングの記事でよく出てきますので簡単に述べますが、研究は進み、21世紀に入ってからは画像の明暗の方向や量などから画像の特徴量を取り出し、それを識別器で学習して画像を認識することができるようになりました。そして、2012年にディープラーニングが、それらの手法をかなり上回る精度での認識を実現しました。このとき用いられた手法のCNN(Conventional Neural Network:畳み込みニューラルネットワーク)は、実は以前から存在していたものだったのですが、以前と比べより高速な計算機と大量のデータ処理ができるようになり画像認識に適用したところ、最高の認識精度が達成されました。この最高の精度を達成したという事実は圧倒的な力をもち、ディープラーニングが急速に広まって現在に至るのは多くの方が目にされたとおりだと思います。

 ディープラーニングによる自動彩色は、2015年の末くらいから出てきました。手法はいくつかありますが、以降では、今回実験で用いた手法の概要を、キーワードを元に説明していきます。これは、Ryan Dahl氏によるAutomatic Colorizationサイト*2をベースとしていますが、文章と図は独自に作成しています。この手法(この手法に参照された手法も含む)は、上の①〜③に相当する処理が、ディープラーニングのネットワーク内だけで完結します。そして、訓練後はあたかもカラーフィルタのように、白黒画像をネットワークに流すだけで色を付けて出力するところが、シンプルで感心するところです。CNNに関する基礎知識があればより理解しやすいと思いますが、数多くの良解説サイトがありますので、知りたい方はそちらをご覧ください。

CNNの基本

 CNNは画像認識によく用いられます。学習済みのCNNは、画像が何であるかを予測します。下の図では、画像が「傘」「クラゲ」「こども」であることを予測しています。(クラゲは明らかに勘違いですが)

 

f:id:eiji-kb:20161125222153p:plain(注:上図のCNNは4層ですが、これは簡略化して描いており、実際はまだ多層です)

意味論的情報と空間情報

  一番右側の、線の形の層(全結合層)から「傘」の確率が何%、「くらげ」の確率が何%などといった確率を取り出すようにしますが、言い換えるとこの層は、その画像は何か、という意味的な情報(ここでは以降、意味論的情報と書きます)を持つと考えられます。この層は1次元です。
 他方、四角で表した畳み込み層は、縦、横からなる2次元の空間を持ちます。まず一番左側の層に画像が入力されますが、ここでは入力画像と同じ解像度を持ちます。つまり元の画像のディテールがわかる情報を持ちます。右の層に進むにつれ、プーリング層というものを通して縦横のサイズは小さくなっていき、解像度は低下していきます。一番左側の畳み込み層がもっとも大きな空間情報をもち、右に進むにつれて空間情報は小さくなります。

まとめると、CNNの層は、
 ・右に行くほど、意味論的情報が増大します。(左に行くほど、意味論的情報は減少します)
 ・左に行くほど、空間情報が大きくなります。(右に行くほど、空間情報が小さくなります)

大域的な空間情報

右に行くほど空間情報が小さくなるということは、
・右に行くほど、大域的な空間情報を捉えている。
とも言えます。

下図は、各畳み込み層のあるチャネル(プレーン)を、拡大して大きさを揃えてみたものです。一番右のチャネルでは、1画素が画像をより大域的に捉えていることがわかると思います。 

 

f:id:eiji-kb:20161130055548p:plain

 以下の絵の方が分かりやすいでしょうか。太陽など、右の層の方がより大域的に捉えているのがわかると思います。(注:色は便宜的に塗ったものです。)

  f:id:eiji-kb:20161202100716p:plain

 なお、このような考え方はCNNだけということではなく、従来手法でも画像ピラミッドという同様の考え方が存在します。

ハイパーコラム

 CNNに入力された画像の、1画素分のデータを、CNNの層の間で串刺しで見たものが、ハイパーコラム*3
です。画像を入力して各層で活性化したデータ*4を全て結合します。
上の2つの図で言えば、赤線でつないだデータを結合するイメージです。下図で言えば、すべての層の活性化したデータを結合するイメージです。

      f:id:eiji-kb:20161125221551p:plain

      

 このハイパーコラムには、単に画像の各画素の明暗や色の情報だけではなく、CNNで物体の認識や領域検出に使われる情報も、含まれることになります。

(メモ:このハイパーコラムは、脳の第一次視覚野のハイパーコラムから名前を借用しています。視覚野については画像処理分野でもよく触れられますので、簡単に説明します。第一次視覚野などの脳の新皮質は、6層の神経細胞層を持ちます。そして第一次視覚野の細胞には特定の方位の線分に好んで反応するものがあります。この同じ方位に反応する細胞を縦に6層にまとめたものが、方位コラムと呼ばれるものです。方位コラムは、少しずつ違う方位に反応し、それらが集合しています。この集合の内部には、色や明暗に反応する部位が存在し、これらはブロブと呼ばれます。また両眼からの情報は第4層に入力されますが、ここでは左右両眼どちらの入力が優位か明瞭に分かれます。この部位が眼球優位コラムと呼ばれます。これら両眼に対応する眼球優位コラムとブロブと一周期分の方位コラムの集まりをワンセットにしたものがハイパーコラムと呼ばれるものです。これは、視覚情報分析の最小単位と考えられています。
つまり、ディープラーニングでいうハイパーコラムと第一次視覚野のハイパーコラムは同じものではありません。ディープラーニングでいうハイパーコラムも、方位選択性は存在しますが、ある1点の情報を中心に一周期分が集合しているわけではありません。また意味論的にはより多くの情報を含んでいます。後者は第二次、第三次視覚野といった上位の視覚野との連携を連想させます。)    

          f:id:eiji-kb:20161119230847p:plain

 (引用 https://grey.colorado.edu/CompCogNeuro/index.php/CCNBook/Perception、一部加筆)

セグメンテーション

 ハイパーコラムのデータを利用することで、領域の検出(セグメンテーション)が可能です。

f:id:eiji-kb:20161125221943p:plain


 左下のオレンジ枠は、各層から印象的なチャネルを選択して可視化したものです。3列目では、顔のパーツ(目と口のセット)に反応したり、頭髪に反応したりするチャネルが出現しているのが興味深いところです。そしてこの複数の層のチャネルを、ハイパーコラム的にいくつか重ねあわせたものが、図右上になります。もっとも右の図では、顔の領域によく反応しています。これらは単に重ね合わせただけですが、セグメンテーションの手法を適用すれば、もっときれいに領域の検出が可能です。 

(データ作成サイト Christian S. Perone,"Convolutional hypercolumns in Python",http://blog.christianperone.com/2016/01/convolutional-hypercolumns-in-python/ ,2016)

ハイパーコラムを使った彩色

 以上がハイパーコラムの概要の説明でした。そして、この色情報の他に物体の認識や領域検出に使われるデータを含んだハイパーコラムを、特徴量として使用するのが、ハイパーコラムを使った自動彩色の基本コンセプトになります。つまりハイパーコラムのデータを特徴量として、任意の関数の万能近似器であるフィードフォワード型の多層ニューラルネットワークに入力して、そのニューラルネットワークに正解データとしてカラー画像を与え学習させるというコンセプトです。
 

f:id:eiji-kb:20161130054322p:plain

 a.カラー放送から白黒画像に変換したデータをCNNに入力
 b.ハイパーコラムのデータを特徴量として、c.カラーを学習するニューラルネットワークに入力
 c.カラーを学習するニューラルネットワークは、
  自身の出力が正解のd.カラー画像との誤差が小さくなるよう学習

 

f:id:eiji-kb:20161130054342p:plain

 訓練済みのネットワークに白黒画像を入力すると、カラー画像を出力
 

 さて、この手法により彩色は可能となります。しかし、この手法ではハイパーコラムのデータサイズが巨大になりますので、マシンのリソースによってはメモリ不足が発生するという問題があります。

残差エンコーダ

 Ryan Dahl氏は当初ハイパーコラムを使った彩色ネットワークを試していましたが、ILSVRC2015のクラス分類エントリで優勝したマイクロソフト研究所のResidual Network(ResNet)という、人間の認識精度を超えたとされる手法からひらめきを得て、残差エンコーダなる彩色ネットワークを発案しました。

 

 f:id:eiji-kb:20161123070635p:plain
引用(左):Kaiming He他,Deep Residual Learning for Image Recognition,https://arxiv.org/pdf/1512.03385v1.pdf 

 

 ResNetは、最大152もの層をもったネットワークです。通常、ネットワークは多層になると訓練時の誤差が増大し精度が上がらないことが知られています。そこでResNetでは、データの流れをショートカットしたブロックを導入することで、多層であっても高い精度での訓練ができるようにしました。ショートカットすることで、ショートカットされた中の層は、ショートカットされたデータとの残差を学習すればよいことになります。ResNetでは、上図のようなボトルネックブロックも提案されました。これは3層をショートカットする接続ですが、中間層で次元圧縮を行います。これはオートエンコーダと同様の考え方です。オートエンコーダは、入力層と出力層が同じ次元を持ち、入力層からのデータを中間層で次元圧縮して、出力層で復元するニューラルネットワークです。そして彩色ネットワークは、入力が白黒情報で、出力がそのカラー情報である、ほぼオートエンコーダのようなものと考えられます。そこで、Ryan Dahl氏はResNetの考えを取り入れて、以下のような構造の彩色ネットワーク、残差エンコーダを発想しました。これは、ハイパーコラムを使用した彩色ネットワークと比べ、省メモリ、かつ訓練の高速化と精度の向上を実現しています。


   f:id:eiji-kb:20161125223257p:plain

補足

 少し細かい補足ですので、興味のない方は飛ばしてください。上で説明してきた彩色ネットワークは、実際はカラー情報としてRGBではなく、別の色空間(YUVなど)を使用しています。今回作成したモデルでは、Lab色空間を使用しました。Lab色空間は、Lとaとbの3チャネルで色を表現します。

 

f:id:eiji-kb:20161125223753p:plain

先に説明した訓練と検証も正確には、下図のようになります。

 

f:id:eiji-kb:20161130071902p:plain

 

 もうひとつ補足しておきます。彩色のために、果たしてハイパーコラム各層の全データが必要なのか、不明なところがあります。情報は多ければ良いというものでなく、本来は彩色に必要なデータのみあればいいはずです。実際に実験したところ、以下のように残差エンコーダーからショートカットをなくし、彩色ネットワークへ入力するデータも最終層(赤部分)のみにしても、色の学習は可能でした。

 

    f:id:eiji-kb:20161125224434p:plain

 ただし、訓練速度は落ちました。訓練時の品質も良くはありませんでした。このことは最終的な訓練結果による精度を予測するものではありませんが、まったく筋が良いとは思えなかったため自分は簡単なテストで留めて以降は利用していません。

後編につづく:実験結果

 

 

(2015/12/5 分割・修正)

*1:正確には輝度

*2:Ryan Dahl, "Automatic Colorization", http://tinyclouds.org/colorize/, 2016

*3:Bharath Hariharan, Pablo Arbeláez, Ross Girshick, Jitendra Malik,"Hypercolumns for Object Segmentation and Fine-grained Localization",2015,https://arxiv.org/abs/1411.5752

*4:活性化関数適用後のデータ