machine learning at swift3
Post on 19-Jan-2017
250 Views
Preview:
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末より実施
顔や目の解析
輪郭抽出や合成
動画での顔認識 Qita投稿記事http://qiita.com/daisukenagata/items/88f41d
9f0fe862e97975
今回 顔認識から顔認証への試み
参考リンク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