MonitorDog Web SDK v1.0.16アップデート:Pose追跡とカメラエラー処理を改善
このドキュメントは、MonitorDog Web SDK v1.0.16を基準に作成されたアップデートノートです。
MediaPipe Pose追跡を追加し、検知結果をユーザー中心のフィールドに整理しました。また、カメラを開けない原因をより具体的に確認できるよう、エラー処理を改善しました。
アップデートの主な内容
Web SDK v1.0.16の変更事項
• Pose追跡を追加: MediaPipe Poseを活用してユーザー追跡を補完し、検知の安定性を高めました。
• 検知結果APIを改善: ユーザーの有無と人数をpersonDetected、personCountで提供します。
• カメラエラーを細分化: カメラ使用中、デバイスなし、権限拒否などの起動失敗原因を具体的なエラーコードで通知します。
• Runtimeを安定化: 無効なvideo frame処理、初期モデル準備区間、MediaPipe assetパス、実行fallbackを改善しました。
詳細な変更事項
1. MediaPipe Poseユーザー追跡を追加
既存の顔・スマートフォン検知にMediaPipe Pose追跡を追加しました。顔が一時的に鮮明に見えない場合でも、姿勢の追跡状態を利用してユーザーの存在をより安定して判断できます。
Poseの詳細な状態はposeTrackingで確認できます。bounding boxとlandmark座標も提供され、一般的な画面ブロックロジックではなく、検知状態の確認や問題調査のためのデバッグ用途に利用できます。
2. ユーザー中心の検知結果API
onDetect結果のユーザー関連フィールドを次のように変更しました。
| 以前のフィールド | v1.0.16のフィールド |
|---|---|
faceDetected | personDetected |
faceCount | personCount |
一般的なユーザーの有無と人数の判定には、personDetectedとpersonCountを使用してください。顔検知の詳細情報が必要な場合は、これまでどおりfaceDetectionsで確認できます。
onDetect: (result) => {
if (!result.personDetected) {
showWarning("ユーザーが見えません。");
}
if (result.personCount >= 2) {
blockScreen("複数のユーザーが検知されました。");
}
};
v1.0.15でfaceDetectedまたはfaceCountを使用していた連携コードは、v1.0.16に合わせてpersonDetectedとpersonCountに変更してください。
3. カメラ起動エラーの案内を改善
カメラ起動失敗をMonitorDogSdkErrorとして渡し、状況に応じたエラーコードを提供します。他のアプリケーションやブラウザタブがカメラを使用している可能性がある場合も、個別のコードで処理できます。
CAMERA_PERMISSION_DENIEDCAMERA_NOT_FOUNDCAMERA_IN_USECAMERA_CONSTRAINT_FAILEDCAMERA_REQUEST_TIMEOUTCAMERA_UNSUPPORTEDCAMERA_READ_FAILED
元のブラウザエラーはcauseで確認できます。
import { MonitorDogSdkError } from "@monitordog/detector";
onError: (error) => {
if (error instanceof MonitorDogSdkError) {
console.error(error.code, error.message, error.cause);
}
};
アップデート方法
npmを使用するプロジェクトではpackageを更新してください。
npm install @monitordog/detector@1.0.16
static zipを使用する環境では、v1.0.16 zipのmonitordog/フォルダー全体を再デプロイしてください。このバージョンからassets/mediapipe/配下にPose modelとWebAssembly runtimeが含まれるため、既存のUMD scriptだけを置き換えると正常に動作しない場合があります。
static assetをサーバーから直接提供する場合、.task拡張子をapplication/octet-stream MIMEタイプで提供する必要があります。
アップデートチェックリスト
-
faceDetectedをpersonDetectedに変更しましたか? -
faceCountをpersonCountに変更しましたか? - static zipを使用する場合、
monitordog/フォルダー全体を置き換えましたか? - staticサーバーで
.taskMIMEタイプを提供していますか? -
onErrorで細分化されたカメラエラーコードを処理していますか?