fbpx
  1. HOME
  2. ブログ
  3. IT技術
  4. 自動塗り絵ができるPaintsChainer(ペインツチェイナー)をローカルで動かしてみた

自動塗り絵ができるPaintsChainer(ペインツチェイナー)をローカルで動かしてみた

PaintsChainerとは?

「chainerのexampleコードを動かすのは飽きた…」

「もっと本格的なコードを動かしたい!」

そう思い、今回は、PaintsChainer(ペインツチェイナー)を動かしてみました。

PaintsChainerは、線画を与えると自動的に色を塗ってくれるウェブサービス

2018年に文化庁メディア芸術祭エンターテインメント部門で優秀賞を受賞しています。

そんな凄いサービスのコードがGithubで公開されているなんて!

一部機能限定版ですが、コードがGithubで公開されていたので、ローカルで動かしてみたいと思います。

PaintsChainer -線画自動着色サービス-

PaintsChainerをローカルで動かしてみた

さっそく検証環境を作って、ウェブ素材集の線画を与え、塗りを試してみました。

ウェブ公開版は、「たんぽぽ」「さつき」「かんな」と名付けられた塗り方が選べます。

Github版は1種類のみ。

塗り方は、ウェブ公開版の「たんぽぽ」と同じです。

淡い色使いで、デフォルトでもそこそこキレイに塗り分ける事ができました。

【環境構築】ChainerをCPUのみで動かす場合の設定方法(Windows)

では、最速で環境を構築していきたいと思います。

なお、今回は、ChainerをGPU(グラフィックボード上のCPU)を使わず、CPUのみで動かしてみます。

以下の構成で環境を作っていきます。

  1. anaconda
  2. python3.6
  3. opencv
  4. chainer
  5. git

Anacondaをインストール

Anacondaは、隔離されたPythonの環境を構築するのに便利な管理ソフトです。

Python3.7版Python2.7版があります。

特に理由がない場合は、Python3.7版を選びましょう。

ちなみに、事前にpythonをインストールしておく必要はなく、Anacondaインストール時に、自動的にPythonがインストールされます。

Anaconda 公式サイト ダウンロードページ

Python3.6ベースの仮想環境を作る

Anacondaで、仮想環境を「Create」します。

Pythonのバージョンは、3.6を指定します。

なぜ、最新の3.7ではなくて3.6かというと、3.7で環境を作ったら実行時にエラーになったからです。

詳細は後ほど説明します。

ちなみに、Anacondaは、気軽に環境をいくつも作れるので、試行錯誤で行き当たりばったりでモジュールを入れまくっても安心です。

git,opencv,chainerをインストール

Anacondaがインストール済みなら、残りのモジュールはAnacondaのGUIからインストールできます。

Anacondaで作成した環境を選択します。

Anacondaの右画面で、目的のモジュールを検索し、インストールします。

以下の3つを検索し、インストールしてください。

git
github上のコードを管理するためのツール。今回は、githubに公開されているコードをローカルにダウンロードするために使います。

opencv
高速に画像認識や画像処理するためのモジュールです。

chainer
ディープラーニングのフレームワークの一つで、比較的インストール要件のハードルが低いです。

PaintsChainerのコードをGitHubからダウンロード

Anacondaから、ターミナルを開きます。

ターミナルから、mkdirコマンドで適当なフォルダを作ります。

ターミナルから、git cloneコマンドを実行して、コードをダウンロードします。

学習済みモデルをダウンロード

学習済みモデルを以下のURLからダウンロードします。

PaintsChainer Pre-Trained models

「unet_128_standard」「unet_512_standard」をダウンロードして、ローカルリポジトリPaintsChainer\models 以下にファイルをコピーします。

PaintsChainerをパソコンのローカルで実行する

anacondaのターミナルから、以下を実行します。

-g -1  というオプションは、gpu(グラフィックボード上のCPU)を使わないという設定です。

ブラウザのURL欄に、localhost:8000と入力して、画面を開きます。

Python3.7では、PaintsChainerが動かない

PaintsChainerは、opencvとchainerのインストールだけで動作します。

ただし、Python3.7だと動かなかったんですね。

画像をアップロードすると、なぜか、以下のエラーとなりました。

調べてみたところ、このエラーは、python3.7で固有のものでした。

今回は、python3.6を使うことで回避しました。

python公式サイトによると、まもなくパッチがリリースされるようです。

課題 34226: cgi.parse_multipart() requires undocumented CONTENT-LENGTH in Python 3.7 – Python tracker

ChainerがGPUで動かない…原因は?

PaintsChainerは、CPUのみでも、特に大きな苦労もなくサクサク動きました。

しかし、ChainerでGPUを使って動かそうとすると、途端に難易度が上がります。

NVIDIAのCUDA(GPUを制御するライブラリ)Cupy(pythonからCUDAを操作するためのモジュール)という、この2つの扱いがとても難しいです。

グラフィックボードの型番、グラフィックドライバーのバージョンによってインストールモジュールが違うのです。

ネットで情報を集めてその通りに実行しても、環境によって対応方法が違うため、なかなか問題解決ができない事も出てくるかと思います。

Release Notes :: CUDA Toolkit Documentation

また、cupyには、以下の制約があります。

  1. cupyは、Python3.6以降でないと動かない(Windowsの場合のみ)
  2. cupyは、グラフィックボードのcapabilityの値が3.0以上でないと動かない

Installation Guide — CuPy 6.2.0 documentation

特に、CUDAとcupyは、複数あるバージョンから、環境に適切なものを選ぶ必要があります。

「このコマンドが正解」というものはなく、環境に合わせて自分で選ばなければならないんですね。

GPUを使ってchainerを動かしたい方は、この辺りをしっかり理解しておく必要があります。

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事