• トップ
  • ブログ一覧
  • 自動塗り絵ができるPaintsChainer(ペインツチェイナー)をローカルで動かしてみた
  • 自動塗り絵ができるPaintsChainer(ペインツチェイナー)をローカルで動かしてみた

    広告メディア事業部広告メディア事業部
    2019.08.08

    IT技術

    PaintsChainerとは?

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

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

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

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

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

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

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

    【PaintsChainer】
    https://paintschainer.preferred.tech/index_ja.html

    こちらの記事もオススメ!

    featureImg2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...

    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コマンドで適当なフォルダを作ります。

    1mkdir git_local
    2cd git_local

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

    1git cloen https://github.com/pfnet/PaintsChainer

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

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

    PaintsChainer Pre-Trained models

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

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

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

    1python server.py -g -1

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

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

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

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

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

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

    1File "C:\Users\xxxxxx\Anaconda3\envs\python37\lib\cgi.py", line 220, in p
    2arse_multipart
    3headers['Content-Length'] = pdict['CONTENT-LENGTH']
    4KeyError: 'CONTENT-LENGTH'

    調べてみたところ、このエラーは、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を動かしたい方は、この辺りをしっかり理解しておく必要があります。

    こちらの記事もオススメ!

    featureImg2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...

    featureImg2020.07.30Python 特集実装編※最新記事順Responder + Firestore でモダンかつサーバーレスなブログシステムを作ってみた!P...

    広告メディア事業部

    広告メディア事業部

    おすすめ記事