はてなエンジニアアドベントカレンダー2023 1日目の記事です。
アドベントカレンダー初日は id:yutailang0119 が担当します。
猫と生活しています
誕生日を迎えた 30回目 - がんばってなんか書く の引っ越しに合わせて、猫がやってきました。
オスの茶虎 "ビビ" です。
今回は、WWDC 23でVisionフレームワークに追加されたAnimal Body Poseの検証を、ビビに手伝ってもらいます。
Animal Body Pose
Detecting animal body poses with Vision | Apple Developer Documentation のサンプルアプリを使って撮影します。
実行環境は、iPad mini (6th generation) iPadOS 17.1.1です。
スクリーンショットでの紹介ですが、サンプルアプリではVideoのインプットを、リアルタイムに検出します。
公開されているサンプルで、おもしろい写真が撮れることがわかりました。
VNDetectAnimalBodyPoseRequest
Animal Body Poseには、ポーズ検出を行うVNDetectAnimalBodyPoseRequest を使います。
関節をはじめとする25のジョイントを検出できます。
現在は、猫と犬をサポートしています。
より詳しくは、WWDC23のビデオを参照してください。
ちなみに、人間に対してはVNDetectHumanBodyPoseRequestを使用します。
Detecting Human Body Poses in Images | Apple Developer Documentation
VNRecognizeAnimalsRequest
VNDetectAnimalBodyPoseRequest
は2023年OSがサポートするAPIですが、以前のOSでも使用できるAPIがあります。
Visionフレームワークには、VNRecognizeAnimalsRequestがあり、動物の特定ができます。
サンプルアプリを変更して、猫自身の特定も行ってみました。
boundingBox
の扱いには難があります*1が、I/Oの処理はVNDetectAnimalBodyPoseRequest
と同様です。
VNImageRequestHandler.perform(_:)には、複数のVNRequestを実行可能なので、VNDetectAnimalBodyPoseRequest
とVNRecognizeAnimalsRequest
を同時に処理できます。
さいごに
画像処理やMLに踏み込む必要なく、Visionフレームワークを活用すると、猫自体の検出とポーズ検出を行なうことができました。
猫のポーズに合わせて写真を撮るアプリなら、簡単に作れそうです。
Apple Vision Proのために、Visionフレームワークの練習に励んでいきましょう!
明日のはてなエンジニアアドベントカレンダー2023担当は id:pokutuna です!
ビビへのファンレターもお待ちしています!!!
おまけ
オフショット集