テクノロジー

2016.9.14 2016.10.14

ディープラーニング(深層学習)でモザイク処理された人物画像から元の画像を再現する。

タグ:, , ,

srez_sample_output_top

急速に発展している人工知能の深層学習(ディープラーニング)を使って、モザイク写真から本来の顔を予測する技術が開発され、プログラムコードが公開されています。

コンピュータ囲碁プログラムの「AlphaGo」がプロの棋士に勝利したというニュースは記憶に新しいかと思います。

機械が最強の人間を打ち負かすには後10年は必要だろうと予想されていましたが、その予想を覆し人工知能を急速に発展させた手法がディープラーニングと呼ばれるものです。

ディープラーニングって何?

ディープラーニングは人間の脳神経(ニューラルネットワーク)が学習を重ねて入力された情報を理解し、特徴をとらえるといったプロセスを模倣した処理を行っています。

たとえばプログラムにこれが猫だという写真を大量に読み取らせ、学習から猫に反応するネットワーク(ニューロン)を作ります。すると別の猫画像を読み取らせた際にそれが猫であることを認識出来るようになります。

neko

これにより、これまで機械が扱いづらかった画像や音声といった情報を機械学習することにより認識できるようになりました。

この技術は車の自動運転する際の障害物センサー、スマートフォンの音声認識、医療の分野でも超音波、MRI、CTスキャン、レントゲン写真や、がんの発見といったものがあり、それらにはディープラーニングの技術が取り入れられています。

モザイク写真復元プログラム「srez」

モザイク写真復元プログラムは「srez」というもので、David Garcia氏がGitHubというサイトに公開しています。

参考元:GitHub

このプログラムをざっくり説明すると、あらかじめ下のような画像群を学習させておいて人間の顔を識別するネットワークを作ります。これを基に、モザイク状態の人物の画像から今まで学習したデータで足りない部分を補っていきます。

kao
読み取らせた顔画像は以下のサイトのものを使用しているようです。データセットより完全にランダムで抽出されたものを使用しているそうです。

学習用顔画像提供元:Large-scale CelebFaces Attributes (CelebA) Dataset

説明によると事前準備として「GeForce GTX 1080」のGPUを搭載したパソコンで、3時間ほどディープラーニングを行ったそうです。
(※GPUとは3Dグラフィックスの表示に必要な計算処理を行う半導体チップです。)

このディープラーニングですが、処理を行う時の計算量は膨大でかなり長い時間を必要とする為、並列処理で大量の演算を高速に行えるGPUがほぼ必須となります。これは対CPU比で10倍程度の演算パフォーマンスがあると言われています。そしてこれまで3Dグラフィックス(ゲームなど)の分野で使われることが多かったGPUですが、これからはディープラーニングによる需要が増えてくると言われています。

そしてこのプログラムは、TensorFlowというGoogleが無償で提供しているPython用の機械学習ライブラリを利用しています。Googleは他にもクラウド上の数十~数百のCPUやGPUを使用した「Cloud Machine Learning(Cloud ML)」というサービスも展開しているようです。

機械学習を行うために高価な機器を揃えなくても利用した分だけ対価を支払えばよいので、学習にかかるコストを低コストで抑えることができます。

復元画像の説明

srez_sample_output

画像の説明をします。

  • 1列目 元画像から16×16ドットのモザイク状態になった低解像の画像。
  • 2列目 第1列目の画像をバイキュービック法で64×64ドットに引き伸ばした画像。
  • 3列目 プログラム「srez」により画像超解像され出力された画像。
  • 4列目 何も処理を施していない元となる人物の顔画像。

参考画像の出力結果と元画像を見比べる「バイキュービック法」で引き延ばした顔画像がぼやけているのに対して、「srez」が予想して出力した顔画像はかなりシャープであり、その再現性の高さに驚かされました。

ただし、サンプル画像の顔が正面を向いていないもの、手が写っているもの、サングラスやメガネをかけているものなどは苦手なようで、画像が歪んでおかしな形になっているのが分かります。

最後に

ディープラーニングはアルゴリズムよりもデータの質と量(ビッグデータ)が重要と言われているようです。学習用のデータや学習時間などにより、さらに精度があがるかと思われます。

16×16ドットという少ない情報から足りない部分を機械が想像して人物を描くといった人間だけが行えていたような処理をやってのけることに、この新技術のすごさを実感しました。それと同時に、応用できる範囲が広く多くの可能性を秘めていると感じました。