LoginSignup
30
37

More than 1 year has passed since last update.

頭一つ抜けたARアプリを作りたい人向け!画像処理ライブラリまとめ

Last updated at Posted at 2021-03-08

頭一つ抜けたARアプリの例

この記事のライブラリを使えば↓みたいに「人の姿勢ごとに処理をする」など他とは違うARアプリを作れるようになれるかも...!?

Videotogif.gif

概要

この記事はARKitやARCoreのような既存のARSDKでは満足できない人たちのために、ARアプリに利用できる画像処理ライブラリを紹介していきます。

開発環境

Windows 10 Pro
Mac OS Big Sur 11.2
iPhone XR
Google Pixel 4a

ライブラリ一覧

1.VisionFramework
2.MediaPipe
3.coreML
4.iOSの深度推定
5.Androidの深度推定
6.arfoundation

1. VisionFramework

頭抜けポイント 

iOSアプリに組み込むのがめちゃくちゃ簡単!

ファイル名

できること

  • 顔認識(face tracking)
    • 目、鼻、口、頬の輪郭など検出可能
  • 手認識(hand tracking)
  • 上半身検出
  • 姿勢推定(body tracking)
  • 姿勢ごとの分類(action classifier)
  • 文字の検知
  • バーコードの検知
  • 矩形の検知

説明

iOS向けの画像系機械学習フレームワークです。機械学習の知識を持っていない人でも簡単に画像処理をすることができます。
特にiosでのハンドトラッキングはvision frameworkに追加されるまで、後述するMediaPipe経由でしか実装できなかったので嬉しい機能です!

分析結果の座標は2次元座標(x.y)なので、何か表示するときはUIKitを使うことになると思います。
この時注意するのは座標の原点が異なることです。
vision frameworkは左下、UIkitは左上になります。

また、arkitとの併用も一応可能ですが処理が重くなることがあります。(ハンドトラッキングなど)

2. MediaPipe

頭抜けポイント 

クロスプラットフォームでAndroid,iOS,webブラウザで動かすことができる!

スクリーンショット 2021-03-05 11.38.50.png

web版デモサイト

できること

  • フェイストラッキング(face tracking)
    • 目、鼻、口、頬の輪郭など検出可能
  • フェイスメッシュ(face mesh)
    • 468のランドマークを取得できるそうです。
    • 顔のランドマークの数は1番多いのかな?
  • 上半身検出
    • 顔(468)・手(21)・体(33)の合計543のランドマークを取得します。
  • 虹彩検出
  • ハンドトラッキング(hand tracking)
  • 姿勢推定(body tracking)
  • 髪検出(Hair Segmentation)
  • 物体検出(Object Detection)
  • 3次元物体検出(Objectron)

説明

mediapipeは動画に対して推論を実行するMLパイプラインを作るフレームワークです。
Googleが作っているのでAndroid向けのソリューションが多いですね。

ですがクロスプラットフォームなのでiOSやweb,Unityなどでも使えます。
web版はpcのブラウザだと十分なfpsですが、モバイル端末のブラウザだと十分にfpsがでないです。

3. coreML(createML)

頭抜けポイント 

独自の分類器を作ることができる!

ファイル名

できること

  • 画像識別
  • オブジェクト検出
  • スタイル変換
  • アクション識別
  • アクティビティ識別
  • 音声識別

説明

coreMLは機械学習の知識のないアプリケーションエンジニア向けのiOS機械学習フレームワークです。
vision frameworkとの違いは、画像処理だけではなく音声認識やApple Watchを使ったアクティビティ識別などができます。

また、これらは全てcreateMLで独自の分類器を作ることができます!
Xcodeを入れるだけで環境構築が完了で、ほぼドラッグ&ドロップだけで学習ができます。(めちゃくちゃ簡単)
冒頭で紹介した自分のストレッチアプリもcoreML,createMLのアクション識別から独自の類器を作成しました。

自分がcoreMLとcreateMLについて使い方を詳しく紹介している記事があるので良かったら一緒に見てください!
swift初心者がAction Classifierを使いこなすまでにやったこと(サンプル付き)

4. iOSの深度推定

頭抜けポイント 

Lidarを使えば高精度でスキャンできる!

ファイル名

できること

  • 撮影済み画像からの深度推定
  • 撮影済み動画からの深度推定
  • リアルタイムでの深度推定
  • 2次元の画像から3次元点群の生成
  • 人と背景の分離(Portrait Effects Matte)
    • Zoomのバーチャル背景のようなやつです

iOSの深度取得の種類

  • 2つ(もしくは3つ)の背面カメラから視差での推定
  • 前面にあるTrueDepthカメラでの取得
    • face idなどで使われています
  • 背面にあるLidarでの取得
    • iPhone12ProMaxなどの一部iPhone,iPadのみ

説明

深度推定とは赤外線センサーや機械学習を使い画像の奥行きを推定することです。
BOOTHで販売しているこの本がとてもわかりやすかったです!
Depth in Depth - iOSデプス詳解

5. Android の深度推定

頭抜けポイント 

スマホのセンサーのみで震度情報を取得するからARCore1.18も対応しているなら機種なんでも扱える!

ファイル名

できること

  • 撮影済み画像からの深度推定
  • 撮影済み動画からの深度推定
  • リアルタイムでの深度推定
    • 基本的にはARCoreと使うようです
  • 人と背景の分離(iOSのPortrait Effects Matteに似ている)

説明

depth apiと言うもので専用の機器などを取り付けなくても深度推定ができます。
震度センサーがあればより高精度な震度情報を取得できるようになります。
サンプルapkがGoogle Play Storeで配布されているので試してみてください!
配布サイト

さいごに

頭一つ抜けたARアプリは思いついたでしょうか?
個人的には導入と学習が簡単なvision frameworkがおすすめです。

プチ宣伝

ひびきんぐ(@hibiking3456789)といいます!
仕事と趣味の両方でXR三昧の日々を送ってます。

私たちDENDOH Inc.ではARを用いた購買体験や、3Dクリエイター向けのサービスを開発しています。
一緒に働きたい方、学生でインターンしたい方をエンジニアに限らず募集しています!
興味のある方はひびきんぐのDMまでお声掛けください!

30
37
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
37