質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Q&A

解決済

1回答

809閲覧

顔認証を目的としたディープラーニングのための正解データの作り方

Chyoro

総合スコア15

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

0グッド

0クリップ

投稿2019/03/02 05:38

編集2019/03/04 12:03

■実現したいこと
顔認証を目的としたディープラーニングのための正解データの制作方法の確立。

■背景と概要
顔写真からイラスト風肖像画を生成するスマホアプリを作ろうとしています。
そのための顔認証の基礎研究として、まずは顔画像から、目、鼻、口、顔といった各顔パーツの形状の特徴を表すポイント(以下facialpoint)を数十箇所定義し、それらをに認識するニューラルネットーワークを組もうとしています。
この手の研究成果は既にいくつかあり、それらを参考に学習用素材の仕様、ニューラルネットワークの構成はおおよそ検討がつきました。
ニューラルネットワーク制作は、ソニーのneural_network_console(以下nnc)を使います。
ただ学習用データの制作方法がわかりません。

データとその制作方法のイメージは以下にまとめました。正解データの制作方法をご教示頂ければと存じます。

■データ
・学習用データ:モノクロ、bmpデータ※(nncは画像が扱えるのでこのまま使います)
・正解データ:学習用データに私が決定したfacialpointの座標が表記されたexcelデータ
※facialpointは、excelデータとして保持します。右目目尻、左目目尻、右鼻翼、左鼻翼・・・といった具合に位置毎に項目を設け、それらを列の項目、画像のファイル名を行としたfacialpointの座標として保持します。
(例)学習用データ
イメージ説明
(例)facialpoint指定
イメージ説明

■データ制作
・学習用データ:Photshopでグレースケールへの変換、リサイズを行います。
・正解データ:Jupyter notebook?(★この制作方法をお伺いしたいです。仕様は以下です)
・学習用データの指定と読み込み
・マウスクリックにてfacialpointを指定
・座標取得
・座標にナンバリングし(座標の項目を決定します。具体的な名称でなくナンバーをふろうと考えてます。)保存
・学習用データファイル名を行として保存
・学習用データファイル名を行、facialpointにふられたナンバーを列とするfacialpointの座標をcsv出力
・以下同じことを繰り返し、ひとつのexceシート上に選択したすべての顔画像のfacialpointの座標データを出力。

※ニューラルネットーワークの学習でPythonを覚えているところなので、できればPythonでやりたいです。
Jupyter notebookを使い、matplotlibのを使えば、実現出来るのではと予想しているのですが、書き方がわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/03/02 06:14 編集

Facialpoint とはなんでしょうか? あと文章がわかりづらいので、仕様書を作るつもりでもう少しやりたいことを整理してみてください。 例: 1. ~ する 2. ~ する 3. 以下のような CSV を出力する。 ``` CSV のサンプル例 ```
Chyoro

2019/03/04 12:06

質問まとめ直しました。ご確認いただければ幸いです。また不明な点などございましたらご指摘ください。
tiitoi

2019/03/04 15:01

修正ありがとうございます。 要件が明確になって、わかりやすくいいと思います。
guest

回答1

0

ベストアンサー

いくつか選択肢を書いておきました。
ちなみに facial point ではなく、facial landmark が一般的に使われてる用語のようです。

アノテーションツールを自作するには

・正解データ:Jupyter notebook?(★この制作方法をお伺いしたいです。仕様は以下です)

Jupyter Notebook は、コードや Markdown が書けるノートなので、GUI アプリケーションを作成するためのツールではないので、今回の目的には合わないと思います。

matplotlibのを使えば、実現出来るのではと予想しているのですが、書き方がわかりません。

matplotlib に付属している GUI Widgets はあくまでグラフ可視化ツールの補助なので、クリック点の座標を取得するぐらいならできますが、ラベルを付けたりするような複雑な GUI を作るのには向いていません。

python

1import matplotlib.pyplot as plt 2 3fig, ax = plt.subplots() 4 5ax.set_xlim([0, 10]) 6ax.set_ylim([0, 10]) 7 8def onclick(event): 9 print(event.xdata, event.ydata) 10 plt.plot(event.xdata, event.ydata, 'o', ms=5, color='b') 11 fig.canvas.draw() 12 13cid = fig.canvas.mpl_connect('button_press_event', onclick) 14plt.show()

もしそのようなラベル付けを行う GUI ツールを作りたいのであれば、Tkinter や PyQt5 といった GUI ライブラリを使う必要があります。

PythonのTkinterを使ってみる - Qiita
GUIとしてのPyQt5の使い方 - Qiita

自分は Qt しか使ったことがないのですが、広く使われていて実績があるライブラリであり、一般的な GUI アプリケーションならなんでも作れます。
もちろん、GUI アプリケーションを作った経験がないのであれば、学習コストはそれなりにかかるでしょう。

既存のアノテーションツールを使う

もう1つの選択肢として既存のアノテーションツールを使うという手もあります。
有名なものですと、dlib に付属している imglab というツールです。

以下のスライドに使い方が少し載っていました。
20160417dlibによる顔器官検出

既存の顔認識ライブラリを使う

顔検出、顔の特徴点検出、顔認証は同じく dlib を使った高精度のライブラリ face_recognition があるので、自作するのが目的ではなく、精度よく顔認証するのが目的であれば、そのままライブラリ使うだけでもいいかもしれません。

以下、試しに動かしてみたコードです。
顔から目、口など各パーツの特徴点が検出されています。

# pip install face_recognition でインストール可 import face_recognition import matplotlib.pyplot as plt img = plt.imread('test.jpg') # 顔の特徴点 facial landmarks を検出する。 face_landmarks = face_recognition.face_landmarks(img) # from pprint import pprint # pprint(face_landmarks[0].keys()) # 可視化する。 fig, ax = plt.subplots(figsize=(7, 7)) ax.imshow(img) ax.set_axis_off() for face in face_landmarks: for i, (name, points) in enumerate(face.items()): points = np.array(points) ax.scatter(points[:, 0], points[:, 1], s=20, label=name) ax.legend()

イメージ説明

投稿2019/03/04 15:00

tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chyoro

2019/03/05 11:55

丁寧なご返答、ありがとうございます。 Tkinter 、PyQt5どちらもよさげですね。作業効率の視点に立って、必要最低限のGUIの仕様についてもっと詰めてみます。 その上で、ご紹介のライブラリを吟味し、ふさわしい方を試してみたいと思います。具体的な疑問が発生したら、目的を明確化したうえで、改めてご質問させてください。 尚、facial landmarkについては、これらを結び描法として直接イラストに反映させようと考えてまして、配置バリエーションの考察の自由度を重んじ、ディープラーニングでやってみようと思ってます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問