Help us understand the problem. What is going on with this article?

深層学習を用いた欠損画像補完論文サンプルの動作確認

More than 1 year has passed since last update.

目的

深層学習を用いた欠損画像の補完に関する論文("Image Inpainting for Irregular Holes Using Partial Convolutions", https://arxiv.org/abs/1804.07723)の動作確認の方法を以下に示します。

sample_results.png (4.3 MB)

具体的には Github に公開されている上記論文の実装サンプルのレポジトリ( https://github.com/chuangtc/PConv-Keras )の Jupyter Notebook である Step3 - UNet Architecture.ipynb というソースコードを Google Colaboratory 上で動作させる手順 を示します。

環境

基本的に Google Colaboratory 上に用意されている下記の深層学習およびGPU環境にて動作確認をしました。Google Colaboratory を利用するメリットとしては下記2点です。

  • メリット

    1. 深層学習&GPU環境構築の手間が不要
    2. GPU環境が12時間限定で無料で利用可能)
  • 動作環境(Google Colaboratory )

    • ソフトウェア
      • Python 3.6
      • Keras 2.2.0
      • Tensorflow 1.8
    • ハードウェア
      • -memory description: System memory physical id: 0 size: 12GiB
      • -cpu product: Intel(R) Xeon(R) CPU @ 2.30GHz vendor: Intel Corp. physical id: 1 bus info: cpu@0 width: 64 bits
      • -display description: 3D controller product: GK210GL [Tesla K80]

手順

1. Google Colaboratory ログイン

Google Colaboratory を開いて、Colaboratory にログインします。

Colaboratory 画面左上のファイル > ノートブックをアップロード を選択し、別途ローカルにダウンロードした Step3 - UNet Architecture.ipynb というソースコードをアップロードします。

2018-10-29_181751.png (77.7 kB)

2. GPU 利用設定

Colaboratory 画面上のランタイム > ランタイムのタイプを変更を選択します。

2018-10-29_183504.png (27.5 kB)

ノートブックの設定 > ハードウェア アクセラレータを "GPU" に設定し、OK を押します。

2018-10-29_183535.png (10.8 kB)

3. Google Drive にライブラリのアップロード

Colaboratory からファイルアクセスするために画像補完論文の実装レポジトリ( https://github.com/chuangtc/PConv-Keras )のライブラリ等一式を Google Drive にアップロードします。

libs フォルダが画像補完ライブラリ、data フォルダが画像データ等が格納されています。

2018-10-29_182048.png (27.3 kB)

4. Jupyter Notebook の追記修正および実行

1.でアップロードした Jupyter Notebook Step3 - UNet Architecture.ipynb の最初に下記を追記します。

追記理由としては Colaboratory から Google Drive 上に置いたライブラリ、画像データへのアクセスのためです。

Step3-UNetArchitecture.ipynb冒頭へ以下を追記
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
!cp -f ~/.gdfuse/default/config config
!sed -i -e "s/^root_folder=$/root_folder=17MgrYRO39sXs16fqU5V1qgyUI17KEW2l/" config

!mkdir -p drive
!google-drive-ocamlfuse -config ./config -cc drive

追記例:
2018-10-29_182609.png (41.2 kB)

追記後、Shift + Enter にて Step3 - UNet Architecture.ipynb の1セル目の計算を実行します。

そのまま、2セル目も同様に実行し、3セル目のソースコードを下記2行を追記・修正します。

追記・修正行
img = cv2.imread('drive/data/sample_image.jpg')
img = cv2.resize(img, (256, 256)) / 255

それ以外はそのまま上から順に実行していくと、最後のセルにてオリジナルと画像補完画像の結果を比較した図が得られます。

サンプルの動作確認結果画面:
2018-10-29_183406.png (836.5 kB)

注目すべきポイントとしては上記の計算時間で、620 sec とあり、およそ 10分程度で学習および推論の計算が実施されています。こちら GPU を利用しない場合は 約3時間程度かかるため、GPU 利用することでおよそ 18倍程度の高速化がなされているということが分かります

5. 実行結果

上記の実行結果データについては下記よりアクセスできます(計算実行済みのもの)。

実行結果
https://colab.research.google.com/drive/1C1J_j7uFaQa7Mm_mM8pm4Yay_XQSpW4p

knyrc
じゆうに
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした