machine learning at swift3
TRANSCRIPT
![Page 1: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/1.jpg)
Machine learning at Swift 3バレンタインデー1ヶ月前から始める Swift×MT Data API
in日本マイクロソフト社
![Page 2: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/2.jpg)
Machine learning 機械学習
![Page 3: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/3.jpg)
Machine learning とは
データ分析、統計学との関連が深く、データが生成した潜在的機構を捉え、
識別したパターンを用いて、新たな予測を行います。
![Page 4: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/4.jpg)
今回の取り組み顔認識システムをIOSで実証する。
![Page 5: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/5.jpg)
iosで機械学習を利用する
![Page 6: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/6.jpg)
Pythonを活用する
![Page 7: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/7.jpg)
iosでPythonを使用するには、C++で活用するmm.FileからPythonを呼び、人
工知能の生成を実施する必要がある。
![Page 8: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/8.jpg)
C++をSwiftで使えるようにする。
![Page 9: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/9.jpg)
これまでの流れ
![Page 10: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/10.jpg)
![Page 11: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/11.jpg)
コンピュータービジョンライブラリー
openCV
![Page 12: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/12.jpg)
openCVを学んだ歩み2016/10末より実施
![Page 13: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/13.jpg)
顔や目の解析
![Page 14: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/14.jpg)
輪郭抽出や合成
![Page 15: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/15.jpg)
動画での顔認識 Qita投稿記事http://qiita.com/daisukenagata/items/88f41d
9f0fe862e97975
![Page 16: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/16.jpg)
今回 顔認識から顔認証への試み
![Page 17: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/17.jpg)
参考リンクhttp://d.hatena.ne.jp/shu223/20150518/1431901401
こちらのヒントでライブラリー内のframeworkを変更する処理が必要です。
http://qiita.com/dandelion1124/items/c250449c99775f096475
![Page 18: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/18.jpg)
情報がIOSではなく、C++を調べ上げないと、実装できない貴重な情報ですので、具体的な
全体像は割愛させて頂きます。
少しだけならhttp://www.slideshare.net/DaisukeNagata1
![Page 19: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/19.jpg)
実装手順
![Page 20: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/20.jpg)
Mat関数を仕様cv::Mat mat;
UIImageToMat(correctImage, mat);
![Page 21: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/21.jpg)
画像を取得して、2闘値化を実施
cv::normalize(gray_img1, gray_img1, 0,255,cv::NORM_MINMAX);
白黒にすること
![Page 22: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/22.jpg)
特徴量の抽出 cv::Ptr<cv::Feature2D> extractor = cv::AKAZE::create();
![Page 23: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/23.jpg)
非線形拡散によって、スケール空間で画像を展開する限り、重要な画像の詳細を保持し、ノイズを除去する非線形スケール空間の特徴を検出して記述することができます。 我々は、非線形拡散の最も単純な
ケースの1つである可変コンダクタンス拡散を使用する。 非線形スケール空間は、任意のステップサイズに対して安定で並列化可能な加算演
算子分割(AOS)方式によって効率的に構築されます。
![Page 24: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/24.jpg)
マッチングアルゴリズムBrueForceを使用
します。
![Page 25: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/25.jpg)
openCVのMat関数を使用して、UIImageよりMat関数に変換、
アルゴリズムのマッチング処理を実施
![Page 26: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/26.jpg)
特徴量の抽出して、UIを表示する処理をします。
![Page 27: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/27.jpg)
iosでC++を使う場合は、ブリッジ処理で、クラスメソッドを使えば、実施できます。
今回のサンプルアプリケーションも数値やUIImageなどは、C++側で出力をしたものを受
け取っている仕様です。
![Page 28: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/28.jpg)
OpenCV機能仕様
![Page 29: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/29.jpg)
OpenCV機能実装数値は特徴量を数値でC++から呼び出しています。
動画も、静止画も対応できます
![Page 30: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/30.jpg)
課題
顔の認識ではなく、特徴が似ていると、認識してしまいます。(右が顔認識をしないと特徴点の選出をしないように実施して対応しました)
![Page 31: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/31.jpg)
課題
顔認認証を実装するには、顔認識の前に、顔認識しやすいように、背景を加工する。顔の部分だけ取得処理が必要になります。
ヒントリンク(webカメラ)http://littlewing.hatenablog.com/entry/2015/04/07/221856
![Page 32: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/32.jpg)
そもそも顔認識は、機械学習でどうやって認識しているのか?
![Page 33: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/33.jpg)
機械学習では、学習ファイルというものを生成して、そのファイルから判断させて、
結果を導き出している。
![Page 34: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/34.jpg)
Pythonに戻ります。
![Page 35: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/35.jpg)
Pythonで何を?
![Page 36: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/36.jpg)
C++でもあるようですが、TensorFlowというライブラリーがあり、
これは機械学習で人工知能を学習する環境が整っています。
![Page 37: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/37.jpg)
次なる作業
![Page 38: Machine learning at swift3](https://reader030.vdocuments.mx/reader030/viewer/2022020410/588067c21a28ab0b098b6b2f/html5/thumbnails/38.jpg)
Pythonでオリジナルな学習ファイルを
生成するため、Pyhtonを覚える。
Swiftで人工知能の力を召喚するためにC++を使い、Pythonも使えるように
する。