個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。DeepLearningマンガの顔パーツ検出を試みているが、マンガの顔画像と検出点がセットになった教師データを大量に入手することができない。自分で入力したデータで検出精度の実験を行って、ディープラーニングを使うことで、単一のコミックの画像であればかなりの精度で検出できることが検証できた。他のコミックに対する汎化能力は低い。ニューラルネットワークの構成をシンプルなものにしているので、教師データは少なくてすむはずなので、一つのコミックあたりの画像数を少なめにして、できるだけ多くのコミックの画像の検出点を手入力していくのが一つのアプローチだと思っている。深いネットワーク構成で学習させることで、検出の精度を高めることができるはずだ。そのためには、より多くの教師データが必要になる。そこで、写真の顔器官検出の教師データが流用できないかと考えている。300-Wのデータセットが入手可能である。写真を線画化することでマンガの教師データとして使用できるかもしれない。やってみなと分からないが、とりあえず線画化を行ってみた。写真の線画化は、PhotoShopなどの画像処理ソフトに機能があるが、バッチ処理を行いたいためPythonで扱えるライブラリがないか探してみた。OpenCVに線画化そのものの機能はないようだが、OpenCVで演算をしてやることで線画化ができるようだ。www.mathgram.xyz元はPaintsChainerの作者のコメント欄に記載されていた方法のようだ。元をたどれば、画像編集ソフトを使って行われていたテクニック(参考)のようだ。同じ方法で試してみた。一部の線は強調されているが、はっきり線画化して欲しい顔が全体的にうっすらしている。口は歯だけ線がはっきりして口の輪郭が分かりにくい。これでは教師データとして使えなさそうである。ガンマ補正ガンマ補正を掛けて明るくしてから線画化した後、逆のガンマ補正をして元に戻してみる。線画化は白領域を膨張(近傍の最大値をとる処理)させて元画像との差をとっているので、線画化前に白っぽくすることで線がくっきりする。ガンマ補正はこちらのページを参考にした。contour2)変換後画像(ガンマ値=2.0→0.5)全体的に線がくっきりして、口の輪郭もはっきりするようになった。これでも、灰色で濃淡があるため、完全に線画にはなっていない。ガンマ値2.0と0.5のガンマ補正をグラフにすると以下のようになる。階調化するため、ガンマ値を極端に大きくしてみた。変換後画像(ガンマ値=100.0→0.01)濃淡は減っているが、線になってほしくない箇所が線になってしまった。これならガンマ値=2.0の方がよさそうである。今度は別の方法で薄い灰色の部分なくすために、コントラスト調整を行ってみる。ガンマ値2.0でガンマ補正してから線画化した画像を、ガンマ値0.25で濃い目の線にした後、コントラスト調整で薄い部分を白に、線の部分を黒に近づける。線が強調され、薄い灰色がなくなっている。線画に近づいた気がする。コントラスト調整のルックアップテーブルをグラフ化すると以下のようになる。ガンマ値とコントラスト調整のパラメータは、画像によって最適な値が異なる。他の画像で試すと別の値に調整しないとダメかもしれない。コントラスト調整のみガンマ補正を掛けずに、コントラスト調整のみして線画化してみる。contour4)先にコントラスト調整をするとうまくいかないようだ。写真の自然な線画化は難しい。使えるかわからないが、この線画化した画像を教師データに使用して試してみようと思う。Zeroの論文についてです。»プロフィールid:TadaoYamaokaスマホアプリ開発とディープラーニングを使った将棋ソフトの開発を行っています。)はてなブログをはじめよう!TadaoYamaokaさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。