AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる -

HOME  >  AIが抜けのある画像を自動補完?!SIGGRAPH論文の画像補完プログラムをやってみた

公開日:2018.11.08 

AIが抜けのある画像を自動補完?!SIGGRAPH論文の画像補完プログラムをやってみた

カテゴリー: AI(人工知能)の作り方

こんにちは、AI研究所、駆け出し研究員のリョウタです。

今回は、下記Gigazine社からの記事にある早稲田大学研究員の方が開発した画像補完プログラムを試してみました。
AIによって、こんな画像の抜け部分を補完してくれます。皆様もぜひ試してください!

画像保管プログラム

引用元:『画像を塗りつぶした部分に一瞬で自然な画像を補完する技術を早稲田大学の研究者が開発 – GIGAZINE』
http://gigazine.net/news/20170501-globally-locally-consistent-image-completion

画像の一部分を白や灰色といった単色で塗りつぶした部分に自然な画像を保管してくれるというプログラムになっており、今回はDockerコンテナ上でこちらを実践してみたいと思います。

※1.早稲田大学論文は以下のURLからご覧になれます。
『ディープネットワークによるシーンの大域的かつ局所的な整合性を考慮した画像補完』
http://hi.cs.waseda.ac.jp/~iizuka/projects/completion/ja/

※2.本プログラムの学習済みモデル等のファイルは以下のGithubリポジトリにございます。
https://github.com/satoshiiizuka/siggraph2017_inpainting

※3.今回の検証に関して以下のサイトのやり方を参考とさせていただきました。
『SIGGRAPH論文の画像補完を試してみたら、やはりすごかった』
https://ja.takp.me/posts/great-image-completion-siggraph-paper/

※4.本検証の実行環境は以下の環境で実施しております。
OS:Windows10
CPU:Inter(R) Core(TM) i5-4300U CPU @ 1.90GHz 2.50GHz
メモリ:8.00GB
メモリは最低8GB以上の環境が望ましいです。
またCLIとして「Docker Quickstart Terminal」を使用しておりますが、コマンドが通らない場合はコマンドプロンプトに置き換えて実施すると上手くいく可能性がございますので適宜ご検討ください。

① 環境を構築

まず下地となるDocker環境を構築していきます。以下のサイトからDocker Toolboxをインストールしご自身のPC上で展開してください。
https://docs.docker.com/toolbox/

※Docker Toolboxのインストール方法に関しましては以下のURLが分かりやすいです。
https://qiita.com/osuo/items/99a2b7413ce75f8217be

インストールするとDocker Quickstart Terminal、Kitematic、VirtualBoxの三つがインストールされるかと思います。
今回使用するのはその中の「Docker Quickstart Terminal」、「VirtualBox」を使用します。

続いて、インストールしたVirtualBox内のメモリを変更します。インストールしたVirutalBoxをダブルクリックします。

VirutalBox

ウィンドウが出現したら「設定」、「システム」の順にクリック、メモリの項目にある下記のバーを「4096MB」に設定し「OK」を押しウィンドウを閉じます。

VirutalBox-設定

続いて「Docker Quickstart Terminal」をダブルクリックして起動、しばらくコンソールが動くので待ち以下のようにクジラのイメージが出現すれば起動完了です。

Docker Quickstart Terminal-起動完了

三つ目に以下のgithubからファイル一式をダウンロードします。
https://github.com/satoshiiizuka/siggraph2017_inpainting

右上にある緑色の「Clone or download」→「Download ZIP」の順に選択しダウンローされたzipファイルを解凍し、解凍したファイルをDockerが置いてあるユーザディレクトリ配下に移動させておきます。
例:「C:\Users\user」

最後に以下のURLをWebブラウザから入力し「completionnet_places2.t7」をインストールし、githubから落としたファイルを置いたディレクトリに移動します。
http://hi.cs.waseda.ac.jp/~iizuka/data/completionnet_places2.t7

② Dockerイメージをpull

Dockerを正常にインストールできましたら以下のコマンドを入力します。

$ docker pull takp/torch-opencv:latest

こちらは以下のURLにて事前にOpenCV含む必要になるイメージを作成されたものとなります。ダウンロードに時間がかかるので待ちます。

③ 論文コードをクローン

続いて論文のコードをクローンします。下記のgit cloneコマンドにてコードをクローンしてください。

$ git clone git@github.com:satoshiiizuka/siggraph2017_inpainting.git

※上記で実施できない場合は以下で試してみてください。

$ git clone https://github.com/satoshiiizuka/siggraph2017_inpainting.git

正常にcloneが出来ましたらcdコマンドより以下のディレクトリに移動します。

$ cd siggraph2017_inpainting

④ Dockerイメージを実行

「siggraph2017_inpainting」のディレクトリに移動したら以下のコマンドを打ちPullしてきたDockerイメージがあることを確認してください(「takp/torch-opencv 」というイメージがあればOKです)

$ docker images
takp/torch-opencv    latest     76a6895xxxxx        9 hours ago         4.61GB

イメージがあることを確認したら以下のdocker runコマンドを入力し実行します。

$ docker run -it -v pwd:/mount takp/torch-opencv  /bin/bash

「# root@<コンテナIDの文字数列>:」のユーザとして遷移出来たらDockerコンテナの起動に成功です。

⑤ Dockerコンテナにコピー

⑤ 続いて、ユーザディレクトリにある「download_model.sh」などをDockerコンテナ(mountディレクトリ)にコピーします。
「exit」コマンドでコンテナからログアウトし、以下のコマンドをファイルごとに入力していきます。

docker cp my.cnf <コンテナID>:/etc/my.cnf

※以下コマンド例となります。コンテナIDはDockerコンテナを起動するたびに変更されるので適宜コピーして入力してください。

docker cp download_model.sh d65dcd8881e9:/mount/
docker cp example.png d65dcd8881e9:/mount/
docker cp example_mask.png d65dcd8881e9:/mount/
docker cp inpaint.lua d65dcd8881e9:/mount/
docker cp LICENSE d65dcd8881e9:/mount/
docker cp README.md d65dcd8881e9:/mount/
docker cp teaser.png d65dcd8881e9:/mount/
docker cp utils.lua d65dcd8881e9:/mount/
docker cp completionnet_places2.t7 d65dcd8881e9:/mount/

⑥ ツールを実行

ファイルのコピーが完了しましたら再度Docker runコマンドにてコンテナを起動し以下のmountディレクトリに移動

$ cd /mount

bashコマンドより以下シェルスクリプトを実行します。

$ bash download_model.sh

続いて以下のコマンドを入力し、プログラムを実行します。

$ th inpaint.lua --input example.png --mask example_mask.png

イメージとしては、

元画像

この元画像に、

マスク

このマスク画像を被せて処理を行います。

以下のログが現れ最後の「Done.」が出ればOKです。

{
  gpu : false
  mask : "example_mask.png"
  input : "example.png"
  nopostproc : false
  maxdim : 500
}
Loding model...
Inpainting...   
Performing post-processing...   
libdc1394 error: Failed to initialize libdc1394
Done.   

Done.が出たら、docker cpコマンドコンテナにあるorg.pngをローカルに移します。
例:docker cp a855cf53a9cd:/mount/out.png C:¥users¥user¥siggraph2017_inpainting

このような画像が出力されマスクされた人の部分が補完されています。

補完された画像

以上が今回のプログラムの検証です。
最初にも記載しましたが、Dockerのコンソールで上手くいかない場合はコマンドプロンプトなど標準のコンソールで試してみると上手くいく可能性があります。
また処理含むメモリの消費量が膨大なので、検証用のPCなどある程度リソースが確保された端末での実施を推奨します。

ご覧いただきありがとうございました!

タグ:


参考になったら「いいね!」と「シェア」をお願いします!!

このエントリーをはてなブックマークに追加
AI(人工知能)セミナー開催中
AI(人工知能)入門セミナー AI(人工知能)入門セミナー IoT入門セミナー

AI入門ブログの中の人

AI研究所 研究スタッフ
通称:マサミ
アメリカ・サンフランシスコにある情報メディアの専門学校を卒業。大手金融会社での事務経験を経て、2016年9月よりAI研究所に入所。見習い研究員として、AI技術を日々勉強中。

Facebookページ