自動塗り絵ができるPaintsChainer(ペインツチェイナー)をローカルで動かしてみた
IT技術
PaintsChainerとは?
「chainerのexampleコードを動かすのは飽きた…」
「もっと本格的なコードを動かしたい!」
そう思い、今回は、PaintsChainer(ペインツチェイナー)を動かしてみました。
PaintsChainerは、線画を与えると自動的に色を塗ってくれるウェブサービス。
2018年に文化庁メディア芸術祭エンターテインメント部門で優秀賞を受賞しています。
そんな凄いサービスのコードがGithubで公開されているなんて!
一部機能限定版ですが、コードがGithubで公開されていたので、ローカルで動かしてみたいと思います。
【PaintsChainer】
https://paintschainer.preferred.tech/index_ja.html
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
PaintsChainerをローカルで動かしてみた
さっそく検証環境を作って、ウェブ素材集の線画を与え、塗りを試してみました。
ウェブ公開版は、「たんぽぽ」「さつき」「かんな」と名付けられた塗り方が選べます。
Github版は1種類のみ。
塗り方は、ウェブ公開版の「たんぽぽ」と同じです。
淡い色使いで、デフォルトでもそこそこキレイに塗り分ける事ができました。
【環境構築】ChainerをCPUのみで動かす場合の設定方法(Windows)
では、最速で環境を構築していきたいと思います。
なお、今回は、ChainerをGPU(グラフィックボード上のCPU)を使わず、CPUのみで動かしてみます。
以下の構成で環境を作っていきます。
- anaconda
- python3.6
- opencv
- chainer
- git
Anacondaをインストール
Anacondaは、隔離されたPythonの環境を構築するのに便利な管理ソフトです。
Python3.7版とPython2.7版があります。
特に理由がない場合は、Python3.7版を選びましょう。
ちなみに、事前にpythonをインストールしておく必要はなく、Anacondaインストール時に、自動的にPythonがインストールされます。
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には、以下の制約があります。
- cupyは、Python3.6以降でないと動かない(Windowsの場合のみ)
- cupyは、グラフィックボードのcapabilityの値が3.0以上でないと動かない
Installation Guide — CuPy 6.2.0 documentation
特に、CUDAとcupyは、複数あるバージョンから、環境に適切なものを選ぶ必要があります。
「このコマンドが正解」というものはなく、環境に合わせて自分で選ばなければならないんですね。
GPUを使ってchainerを動かしたい方は、この辺りをしっかり理解しておく必要があります。
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.30Python 特集実装編※最新記事順Responder + Firestore でモダンかつサーバーレスなブログシステムを作ってみた!P...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪、名古屋の4拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit
おすすめ記事
immichを知ってほしい
2024.10.31