(後編)マハリク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

「この世界の片隅に」 噂どおり凄かった(ネタバレなし)

これは凄い作品でした。観てから数日たつというのに、まだいろいろ思い出してしまいます。

戦争アニメは、結構観るのが辛かったりしますが、この作品はそれだけでなくて、ユーモアも、そして愛も救いもある作品でした。

   

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

       (C)こうの史代・双葉社/「この世界の片隅に」製作委員会  

 

ユーモアは特に女性のツボにはまるシーンがあるのが印象的でした。逆に男性寄りな視点のシーンもあり多様です。

いろいろと考えさせられながら見てしまう映画です。そのため、考え込んでついセリフを聞き逃しそうになりましたが、この作品は暗喩や伏線が多いとわかりますので、本当に絵も声も逃さないようにと大変でした。さりげないシーンにも、深い意味が込められていたりします。

そして、作品を通じて登場人物たちの人生や結末を追ってきた後で見るあのラストシーン。屈指のシーンです。あの瞬間のシーンには、自分もきゅっと心を掴まれてしまいました。

頭から離れないのは、いくつかの感情を同時に揺さぶられたからだと思います。かなしみやあたたかさといった普段同時に起きない感情たちが、さらに普遍的な愛という感情に包まれたという感じでしょうか。なんか陳腐な文章ですね。すみません。

福岡県では今のところ、博多のキャナルシティと北九州のチャチャタウンの、二ヶ所だけでの公開のようです。広がって欲しいですし、これだけの作品なので広がると思います。

個人的には早く円盤でじっくり観たいです。以下はトレーラーです。映画館で公開されたものと違う所がありますが、HDで観ると本当に細かいです。子供たちが縄跳びで遊んでいるとかします。

 

             (C)こうの史代・双葉社/「この世界の片隅に」製作委員会  

 

考証もすごいということで、100年先どころか、1000年後の人類も観る作品だと思いました。:_)

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:20161120233119j:plain

以前勤めていた所で、福岡から東京→大阪と日本二大都市に異動があり、いい経験ができたと感謝している。特に食べ物については勉強になった。何事も本場で食べると違うということだ。よく、漫画などでは東京の真っ黒のつゆのうどんがバカにされる。たしかにうどんには塩辛い。しかし、東京に異動して、あれは蕎麦を食べるためのつゆなのだとわかった。蕎麦と合う。蕎麦の香りに負けない。引き立つ。逆に関西以西の蕎麦は、たしかに上品だし、うまいといえばうまいのだが、どうもつゆが蕎麦に負けるというか、蕎麦と一緒に食べると、微妙に生臭さすら感じるようになった(ここでの蕎麦の話は、かけそばのような汁をはった蕎麦の話です。そして西でも蕎麦専門のお店とか、出雲そばとか、越前そばとかはうまい所はうまい)。というか、関西以西のつゆはうどんで食べた方がうまいのだ。うどんなら素直につゆと馴染む。そもそもうどん用のつゆだ。「うどん・そば」両方出す店も多いが、やっぱりうどん優位のところはうどんで食ったがうまい。リピートするのはうどんだ。やみつきになる。逆に蕎麦は東京の方がやみつきになる味だ。大阪に異動した後、東京出張の際は、駅そばですら楽しみにしていた。

あとつゆつながりで言えば、醤油の違いも勉強になった。福岡から東京に異動した後、社食で天ぷらを食べたが、九州でのノリで、天ぷらに醤油をドバッと掛けたところ、前に座った上司が、「あっ!」と声を出した。最初何のことがわからず食べ続けたが、天ぷらをあらかた食ったところでその声の意味を理解した。塩辛かった。でも東京の蕎麦のつゆはこの醤油でなければダメだろう。対して九州の醤油はよく甘いと言われる。九州で生まれ育ったので、九州の醤油が甘いものという感覚は全くなく、あくまで醤油はからいものの範疇だったが、東京と比較すれば明らかに甘いとわかった。ただし九州の甘い醤油は天ぷらによく合う。それは天丼のたれが甘いことを思い出して頂ければご理解いただけると思う。あとやはり九州の醤油でないと作れない料理というのがあって、がめ煮がそうだ。これは九州北部(主に福岡と、佐賀の一部らしい)で正月などハレの日に作られる料理だ。材料が多くて下ごしらえが大変なので特別な日に作られるのだと思う。Wikiを見ると、筑前煮はがめ煮の、九州地方以外での呼称とされているが、全く別の料理だと思っていた。がめ煮と比べると筑前煮はかなり上品で、京都あたりの家庭料理かと思い込んでいた。醤油の濃さが全然違う。もちろん筑前煮もうまいのだが、小鉢で食べれば十分だ。しかしがめ煮はやみつきになる味だ。正月に大量に作っても、みんなガンガン食べるし、もらって帰る人もいて、すぐに残り少なくなる。そして残ったやつを翌日に食べるのも、カレーと同じ原理でうまいのだ。使う鶏肉は骨付きがうまい。

今は九州にいるので九州の醤油も楽に手に入る。が、醤油は地産地消の傾向が強いので、一番好きな銘柄はその地元のスーパーに足を運んだりしないと買えなかったりする。あと、最近は健康にも気を使い始めたので、醤油の糖分が気になるようになった。意外と九州の醤油は、果糖ぶどう糖液糖を使っているものが多い。果糖ぶどう糖液糖はソフトドリンクとかによく入っているやつで、甘みが強く、コストも安いため使われているが、今はその健康への影響が取りざたされている。自分は健康に問題がないとされていれば人工甘味料でもかまわないのだが、そういった醤油は近くのスーパーには置いていない。そこで残る選択肢として、砂糖を使用している醤油を普段使いにしている。砂糖も健康に良いわけではないのだが、量の問題だし、果糖ぶどう糖液糖よりはましだろうと思った。そして意外なことに、砂糖を使っているものの方が果糖ぶどう糖液糖を使っているものより安かったりする。今使っているのは以下だが、200円ちょいだし、別の銘柄だと、税抜きで200円切っているのも見たことがある。

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

ちなみに、今使っているものの特級というのもあって、アマゾンでは評判もいいようだ。

この九州の醤油で食べる天ぷらで一番好きなのは、ちくわの天ぷらだ。チープだが、これがなかなかのライスキラーだ。ただ、天ぷらを作るのは油が大変なので、今回は半分に切ったものに小麦粉を付けて、シャローフライにしてみた。

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

ちょいとした酒のツマミにもいい。

 

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

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

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

痛みの始まり

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

強まる痛み

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

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

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

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

収まらない痛み

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

病院へ

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

薬で治療

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

経過(途中)

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

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

ストレッチは大事

VDT作業指針で、1時間作業したら、10〜15分の作業休息(別の作業をするなど)を取るという指針がある。いままで、現実にそんなことできるかと無視していたが、それは間違いだったと、痛い目にあってはじめて分かった。特にここ数年は椅子に座ってぶっ続けで作業することが多かったので、ずいぶんマズイことをしていたと反省した。仕事でパソコン使う人は、肩に負担を掛けることが多いと思います。みなさんもご注意ください。

 

 

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

macacon ディープラーニングで白黒動画をカラー化して楽しむOpenCVラッパー

 

f:id:eiji-kb:20160616165553j:plain

以前Youtubeにアップしていた自動彩色の動画に、外国人らしき人から動画作成のチュートリアルを作って欲しいとコメントが付きました。そこで、ラッパーを作成して公開しました。入力動画に対し彩色データを拡大して合わせる定番の処理をしていますので、元動画の解像感は保持されます。

 

自動彩色

自分の知る限り、ディープラーニングによる自動彩色で実行可能な学習済みモデルを公開したのは、Dahl氏が最初だと思います。
Automatic Colorization

そしてこのモデルを元に動画を作成したのがsamin氏で、氏はffmegを使用して動画を作成する方法を公開しています。
forward.py · GitHub
Dahl氏のモデルを使用した動画は、多くはこのsamin氏の方法を使用して作成されているようですね。

www.youtube.com

私も、白黒画像を用意してモデルに読み込ませる作業が退屈になってしまっため、同時期OpenCVを使って処理していました。OpenCVを使って動画を読み込み、Dahlモデルで彩色、動画出力までを一気に処理しますので、上のffmpegを使用した方法に比べ大幅に手間が減り高速に処理することができます。なお、ここでの動画作成ですが単にフレームごと彩色して動画出力しているだけです。難しい処理ではありません。


準備
実行確認環境

音声も後述のバッチで処理する場合

OpenCVのインストールがやや面倒ですが、その価値はあります。今回のラッパーの画像変換部分をOpenCVで処理したものとscikit-imageで処理したものとで速度を比較したところOpenCVの方が4倍ほど高速でした。(テスト動画でOpenCV版471.30sec、scikit-image版2143.16sec)

 

セットアップ

Dahl氏Automatic Colorization をダウンロードしてください。
http://tinyclouds.org/colorize/

 
次に以下のGitから、macacon.pyをmacacon.shをダウンロードして、上と同じフォルダに保存して下さい。

github.com

 

macacon.pyのスクリプトを以下に示します。

macacon python list

 

使い方

・基本的な使い方 (例:白黒動画ファイル名input_movie.mp4  出力ファイル名output_movie.mp4)

python macacon.py input_movie.mp4 output_movie.mp4

・オプション -mで オプションでモニタ画面を表示します。彩色作業中の様子を見たい場合に使用。

python macacon.py input_movie.mp4 output_movie.mp4 -m

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

 

・オプション -c 倍率 で、彩度の強調もできます。ただし不自然なのであまりお薦めしません。また元々色が良くついていないところは強調しても効果はありません。

python macacon.py input_movie.mp4 output_movie.mp4 -c 2.8

    youtu.be


音声の処理
macacon.pyは動画の彩色処理だけで、音声処理はしません。そのため音声は動画編集ソフトなどで処理してください。自分はほとんどAviUtlで処理しています。
また動画編集ソフト以外の処理方法として、ffmpegを用いて白黒動画の音声を彩色した動画に付加する方法を示しておきます。

ffmpeg -i input_movie.mp4 -acodec copy -map 0:1 soundtrack.m4a
ffmpeg -i output_movie.mp4 -i soundtrack.m4a -vcodec copy -acodec copy output_movie_color.mp4

 

 

動画の彩色と音声の処理をまとめて行うバッチ
上2つの処理をバッチ化したものです。 


・基本的な使い方(例:白黒動画のファイル名input_movie.mp4  出力ファイル名output_movie.mp4)

sh ./macacon.sh input_movie.mp4 output_movie.mp4

・オプション -mで オプションでモニタ画面を表示します。彩色作業中の様子を見たい場合に使用。

sh ./macacon.sh -m input_movie.mp4 output_movie.mp4

・-c 倍率 で、彩度の強調もできます。ただし不自然なのであまりお薦めしません。また元々色が良くついていないところには強調しても効果ありません。

sh ./macacon.sh -c 2.8 input_movie.mp4 output_movie.mp4

 


処理時間

テスト環境

以下は、動画1秒あたり彩色に必要な時間(秒)です。(解像度720x540の動画でテスト)

 

f:id:eiji-kb:20160709214703j:plain


GPUであれば元動画の3.5倍程度の時間で彩色しますので、2時間の映画を彩色するのに7時間くらい見ておけばよいです。寝る前にセットしておけば翌朝には出来ています。
CPUの場合は、13.5倍の時間がかかるので2時間の映画を彩色するには27時間ほど必要ということになります。日曜に見たいのなら金曜日の寝る前に仕込んでおく必要がありますね。

なお、-mオプションはそれほど負荷がかかりませんので、パソコンを別件で操作しながら彩色する際は利用することをお薦めします。見ているだけでも楽しいので。

 

サンプル
以下はmacaconラッパーを使って彩色した例です。
 
ローマの休日

   www.youtube.com

西部戦線異常なし

   www.youtube.com

1:40くらいから、俳優の演技がすごいですね。緑のこけが生えたりはしていますが。

 

蛇足ですが、元モデルの学習データにないようなものを彩色しようとしてもあまりぱっとしない結果になると思います。あるいは変な結果、たとえば白髪の日本人の頭が金髪のサッカー選手みたいになったりします。満足する結果を得たいのであれば、本来彩色したい対象に対する、十分な量の適切なデータセットで学習しておく必要があります。今回のモデルでは提供されていません。

またDahl氏のモデルは多様性(平均化)問題があります。例えばスポーツカーなど赤でも青でもあり得る(多様な色を持つ)対象データを学習した場合、その対象の色として、色空間上の赤と青の平均の値として学習してしまいます。この平均化の効果により、彩色の予測が灰色がかった低い彩度となってしまうとのことです。(引用Zhang, Richard, Phillip Isola, and Alexei A. Efros. "Colorful Image Colorization."arXiv preprint arXiv:1603.08511 (2016).

 

使用条件
・非商用
・もしカラー化した動画をアップしようとするなら、監督など製作者の意志(遺志)の確認と尊重を願います。

これは製作者がカラー化を望んでいなかった場合も多いためです。あるいは最新の技術を使って彩色するというのなら話は違ったのかもしれませんが、今となっては永遠にわからないことです。しかし個人で楽しむ分には問題ないと思います。もっとも、カラー化すれば白黒映画を見る取っ掛かりにはなりますが、不思議なことに一時間くらい続けて見ていると彩色のパターンにも慣れるのか、白黒でも構わないなと思えてきます。もしくは名作と言われるものは現代の並の映画よりはるかにおもしろいため、作品自体にのめり込み相対的に色のことがあまり気にならくなるためかもしれません。

休みの日に、ビールでも飲みながらゆっくり映画を見れたら幸せ…