iOS11から使えるようになったVisionフレームワークというのを使うとものすごく簡単に顔認識が可能です。裏ではCoreMLが使われているということで機械学習ベースの顔認識のようです。
ちょっと動かしてみようと思ったときに最適なサンプルアプリケーションをGitHubで見つけましたので紹介しておきます。おかげで同じようなことを実施するアプリを作るときの参考になりました。
それがこちらです。
昨日UIImageのところでちょろっと触れた件でもあります。
このリポジトリをcloneして手元で動かせばすぐに試すことができます。
重要なのはこちらのファイル↓です。
FaceLandmarksDetection/FaceLandmarksDetector.swift
↑このファイルで定義されているクラスが、画像を受け取って顔認識にかけ認識結果を書き込んだ画像にして呼び出し元に返す、という処理をしています。この手の処理は座標合わせが往々にして面倒なのですが、ちゃんと考慮してくれているので変にハマらなくて済みます。
余談ですが元々3D系の仕事をしてたので計算できないわけじゃないけど、あまり得意ではない(直感的に理解できない)のでできれば避けたいのです。
というわけで顔認識をやりたい場合はこういったサンプルコードから習得していくのも良いんじゃないかなと思いました。
認識にはVNDetectFaceLandmarksRequest
というクラスを使うので、GitHub上でこのクラスを検索すると他の例も見つかりそう。