machine learning at swift3

Post on 19-Jan-2017

250 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Machine learning at Swift 3バレンタインデー1ヶ月前から始める Swift×MT Data API

in日本マイクロソフト社

Machine learning 機械学習

Machine learning とは

データ分析、統計学との関連が深く、データが生成した潜在的機構を捉え、

識別したパターンを用いて、新たな予測を行います。

今回の取り組み顔認識システムをIOSで実証する。

iosで機械学習を利用する

Pythonを活用する

iosでPythonを使用するには、C++で活用するmm.FileからPythonを呼び、人

工知能の生成を実施する必要がある。

C++をSwiftで使えるようにする。

これまでの流れ

コンピュータービジョンライブラリー

openCV

openCVを学んだ歩み2016/10末より実施

顔や目の解析

輪郭抽出や合成

今回 顔認識から顔認証への試み

参考リンクhttp://d.hatena.ne.jp/shu223/20150518/1431901401

こちらのヒントでライブラリー内のframeworkを変更する処理が必要です。

http://qiita.com/dandelion1124/items/c250449c99775f096475

情報がIOSではなく、C++を調べ上げないと、実装できない貴重な情報ですので、具体的な

全体像は割愛させて頂きます。

少しだけならhttp://www.slideshare.net/DaisukeNagata1

実装手順

Mat関数を仕様cv::Mat mat;

UIImageToMat(correctImage, mat);

画像を取得して、2闘値化を実施

cv::normalize(gray_img1, gray_img1, 0,255,cv::NORM_MINMAX);

白黒にすること

特徴量の抽出 cv::Ptr<cv::Feature2D> extractor = cv::AKAZE::create();

非線形拡散によって、スケール空間で画像を展開する限り、重要な画像の詳細を保持し、ノイズを除去する非線形スケール空間の特徴を検出して記述することができます。 我々は、非線形拡散の最も単純な

ケースの1つである可変コンダクタンス拡散を使用する。 非線形スケール空間は、任意のステップサイズに対して安定で並列化可能な加算演

算子分割(AOS)方式によって効率的に構築されます。

マッチングアルゴリズムBrueForceを使用

します。

openCVのMat関数を使用して、UIImageよりMat関数に変換、

アルゴリズムのマッチング処理を実施

特徴量の抽出して、UIを表示する処理をします。

iosでC++を使う場合は、ブリッジ処理で、クラスメソッドを使えば、実施できます。

今回のサンプルアプリケーションも数値やUIImageなどは、C++側で出力をしたものを受

け取っている仕様です。

OpenCV機能仕様

OpenCV機能実装数値は特徴量を数値でC++から呼び出しています。

動画も、静止画も対応できます

課題

顔の認識ではなく、特徴が似ていると、認識してしまいます。(右が顔認識をしないと特徴点の選出をしないように実施して対応しました)

課題

顔認認証を実装するには、顔認識の前に、顔認識しやすいように、背景を加工する。顔の部分だけ取得処理が必要になります。

ヒントリンク(webカメラ)http://littlewing.hatenablog.com/entry/2015/04/07/221856

そもそも顔認識は、機械学習でどうやって認識しているのか?

機械学習では、学習ファイルというものを生成して、そのファイルから判断させて、

結果を導き出している。

Pythonに戻ります。

Pythonで何を?

C++でもあるようですが、TensorFlowというライブラリーがあり、

これは機械学習で人工知能を学習する環境が整っています。

次なる作業

Pythonでオリジナルな学習ファイルを

生成するため、Pyhtonを覚える。

Swiftで人工知能の力を召喚するためにC++を使い、Pythonも使えるように

する。

top related