Loading
BLOG 開発者ブログ

2025年2月17日

【Apple Vision Pro】オブジェクトトラッキングのパラメータ調整

はじめに

こんにちは。
モバイルソリューショングループのyoshino.kです。

この記事では、Enterprise APIを利用した、オブジェクトトラッキングのパラメータ調整について解説します。
Enterprise APIの利用方法については、yamasaki.sさんの解説記事がありますのでご参照ください。
Apple Vision ProでEnterprise APIを利用できるようにしてみた

目次

  1. 概要
  2. 調整可能なパラメータ
  3. さいごに

概要

Enterprise APIにより、オブジェクトトラッキングの機能が大きく強化され、新しいパラメータが追加されました。
これらのパラメータを駆使することで、トラッキングの精度やパフォーマンスを細かく調整することが可能になっております。

調整可能なパラメータ

追加されたパラメータについて1つずつ解説します。

1. detectionRate(検出頻度)

detectionRateは、物体追跡の検出頻度を設定するパラメータです。
0~30のFloat値を設定し、1秒間に何回検出を行うか調整することができます。
このパラメータは、物体追跡の速度と精度のバランス調整のために使用されます。

高い検出頻度を設定した場合

物体追跡の更新頻度が増加し、物体の位置をリアルタイムで高精度に追跡することが可能になります。ただし、負荷が高くなるためパフォーマンスに影響を与える可能性があります。

低い検出頻度を設定した場合

物体の追跡頻度が低くなり、システムの負荷は軽くなりますが、物体の動きが滑らかでなくなることや、物体を見失いやすくなる可能性があります。

2. maximumTrackableInstances(最大追跡可能数)

maximumTrackableInstancesは、物体追跡を行う際に、同時に追跡できるオブジェクトの最大数を設定するパラメータです。
物体の数が多く、すべてをリアルタイムで追跡する必要がある場合には活用できそうです。
例えば、複数の車両、ロボット、機械、または複数の製品が同時に存在するシーンでは、インスタンス数の制限を設けることでパフォーマンスを最適化できます。

3. maximumInstancesPerReferenceObject(参照オブジェクトごとの最大追跡可能数)

maximumInstancesPerReferenceObjectは、1種類の参照オブジェクトに対して、同時に追跡できるオブジェクトの最大数を設定するパラメータです。
ここでの「参照オブジェクト」とは、追跡対象となる物体の3Dモデルデータです。これをARKitに登録して、物体追跡を行います。
例えば、参照オブジェクトとして「椅子」の3Dモデルデータを登録し、このパラメータに4を設定すると、「椅子」を最大4つまで追跡可能になります。
利用環境に沿って追跡必要な数を設定することで、パフォーマンスの最適化につながります。

maximumTrackableInstancesとの違い

maximumTrackableInstancesは、オブジェクトの種類に関わらずシステムが追跡可能なオブジェクトの最大数です。
maximumInstancesPerReferenceObjectは、特定の種類のオブジェクトに対する追跡可能なオブジェクトの最大数です。
そのためmaximumInstancesPerReferenceObjectは、「テーブル」は1つでいいが「椅子」は4つ追跡したい、というように特定のオブジェクトの追跡を制限する場合に利用すると効果的です。

パラメータ 役割
maximumInstancesPerReferenceObject 特定の参照オブジェクトに対して、同時にトラッキング可能な最大インスタンス数を設定 「テーブル」のオブジェクトを最大1個、「椅子」のオブジェクトを最大4個までトラッキング
maximumTrackableInstances 全体としてシステムがトラッキングするオブジェクトの最大数を設定 システム全体で最大5個のオブジェクトをトラッキング(「テーブル」と「椅子」の最大数は指定しない)

 

4. movingObjectTrackingRate(動的オブジェクトのトラッキング速度)

movingObjectTrackingRateは、移動するオブジェクトのトラッキング更新頻度を設定するパラメータです。
オブジェクトが動く速度やその変化にどれだけ速く追従するかを調整します。
detectionRateと同様で、0~30のFloat値を設定し、1秒間に何回更新を行うか調整することができます。
このパラメータを適切に設定することで、動きの速いオブジェクトにもスムーズに追従できるようになります。

5. stationaryObjectTrackingRate(静的オブジェクトのトラッキング速度)

stationaryObjectTrackingRateは、静止しているオブジェクトのトラッキング更新頻度を設定するパラメータです。
detectionRateと同様で、0~30のFloat値を設定し、1秒間に何回更新を行うか調整することができます。
動かないオブジェクトに対して、位置情報をの更新頻度を調整することで、リソースの効率化を図れます。

detectionRateとtrackingRateの違い

detectionRateは、シーンに新しく物体が現れた場合の検出頻度になり、検出した後はmovingObjectTrackingRateまたはstationaryObjectTrackingRateに基づいて更新を行います。

パラメータ 役割
detectionRate シーン内のオブジェクトをどれくらいの頻度で検出するかを設定 シーンに新しく現れたオブジェクトを素早く検出したい場合、高い値を設定
movingObjectTrackingRate 検出済みの動的オブジェクトの位置更新頻度を設定 移動する人物や物体を高精度で追跡したい場合、高い値を設定
stationaryObjectTrackingRate 検出済みの静的オブジェクトの位置更新頻度を設定 動かない家具や壁を高精度で追跡したい場合、高い値を設定

 

さいごに

今回は、Enterprise APIを利用した、オブジェクトトラッキングのパラメータ調整について解説しました。
快適なユーザ体験を実現するために、利用場面を明確にして、必要なところにリソースを割くように調整することが大切ですね。
ユーザの動きによって左右される場面もあると思うので、細かい調整は試行錯誤しながら最適化を目指す必要があると感じました。

yoshinokのブログ