事例概要
本プロジェクトは RK3588 Android スマートグラスを対象とし、クラウド認識サービスに依存せず、端末内で正面、左側面、右側面の顔を検出します。SDK は Camera2 のリアルタイムフレームまたはローカル画像を受け取り、顔矩形、5点ランドマーク、向き、yaw、信頼度、短時間追跡 ID、処理時間を返します。納品物は Core AAR、Face AAR、Camera2 Demo、統合資料です。
本事例の範囲は顔検出と姿勢方向推定であり、本人識別ではありません。氏名・社員番号、人顔データベース、1:1照合、1:N検索、なりすまし検知、年齢・性別・感情分析は含みません。
プロジェクト背景
対象は arm64-v8a の RK3588 Android スマートグラスです。カメラプレビュー内の人物位置を取得し、タップ選択、部分拡大、後続の業務操作に利用する必要がありました。処理は端末側でオフライン実行し、既存 Android アプリへ統合できることが条件でした。
入力は Camera2 YUV_420_888、NV21、RGBA_8888、ローカル静止画です。カメラフレームレートと推論投入頻度の差、画像バッファの寿命、回転・ミラー、YUV stride、モデル座標からプレビュー座標への変換も実装対象です。
納品範囲
| 項目 | 内容 |
|---|---|
| Android SDK | Core AAR と Face AAR |
| Demo | Camera2 リアルタイム顔検出 Demo APK |
| API | 同期検出と非同期検出 |
| 入力 | YUV_420_888、NV21、RGBA_8888、ローカル画像 |
| 出力 | 顔矩形、信頼度、5点ランドマーク、正面/左/右、yaw、trackId、1回の処理時間 |
| 資料 | 統合ガイド、サンプルコード、障害切り分け、リリースノート、SHA-256一覧 |
| 実行方式 | RK3588 Android 端末内のオフライン処理 |
技術構成
処理経路は、Camera2 または静止画 → 画像形式・方向処理 → OpenCV YuNet 検出 → 5点ランドマークの幾何解析 → 正面/左側面/右側面判定 → 短時間追跡 → 結果コールバックと画面重畳です。
納品ベースラインは OpenCV 4.10.0 と YuNet CPU 検出器です。リアルタイム処理では入力を 320×320、静止画の標準検出では 640×640 にします。3方向は同じ検出器と SDK API を使用し、方向はランドマークの幾何関係から推定します。
Demo は100 msごとに1回、約10回/秒の検出要求を投入します。各 SDK インスタンスは未完了の非同期要求を1件だけ保持し、アプリ所有の DirectBuffer に Y/U/V を保存します。Camera2 は acquireLatestImage() で古いフレームを飛ばし、遅延の累積を抑えます。
主要問題と修正
一部の画像はデスクトップで検出できる一方、Android Demo では結果が0件になる事象がありました。モデル、入力、モバイル出力を比較し、OpenCV Java の結果行列の読み取りに原因を特定しました。
FaceDetectorYN.detect() は1チャンネルの N×15 行列を返します。元の Android コードは各行の15値を完全に取得しておらず、有効結果が長さ検査で破棄されていました。修正では列数とチャンネル数に基づき行全体を読み取り、回転、色変換、横長画像のクロップ回避、AAR整合性検査も追加しました。
回帰範囲は正面、側面、顔なし、静止画、Camera2 の経路まで拡張し、モデル、前処理、結果デコード、画面座標変換の問題を切り分けました。
技術検証
次のデータは 2026-07-29 の納品記録に基づき、Eye Algo Face SDK 0.4.5 fix5、RK3588 Android arm64-v8a に適用されます。指定ビルド、API、短時間経路の動作を示しますが、量産精度、長期安定性、量産性能を示すものではありません。
| 確認項目 | 結果 |
|---|---|
| SDK、Core、Face 単体テスト | 157/157 合格 |
| 独立 Demo 単体テスト | 13/13 合格 |
| Python 顔ツールテスト | 143/143 合格 |
| Android Lint | 0 Error、19 Warning |
| APK/AAR ビルド | 合格 |
| RK3588 インストール、起動、権限 | 合格 |
| Camera2 10秒経路 | submit/callback 79/79、dropped 0 |
| 短時間エラースキャン | クラッシュ、カメラ、権限、ネイティブライブラリエラーなし |
技術サンプルには正面、左右対称の側面、顔なし負例を含みます。この小規模回帰は検出、方向出力、画面経路の確認用であり、Precision、Recall、F1、姿勢別精度の根拠には使用しません。
プロジェクト結果
- 正面、左側面、右側面の検出を1つの Android SDK API に統合しました。
- Camera2 フレームとローカル画像で共通の結果構造を使用します。
- 端末内処理により、原動画のクラウド送信を減らせます。ネットワークがなくても顔位置と方向を取得できます。
- 顔矩形と5点ランドマークを人物選択、短時間追跡、部分拡大、後段処理の入力に利用できます。
- 実行可能 Demo、AAR、統合手順、障害切り分け、ハッシュ一覧を含みます。
適用場面
- スマートグラス視野内の人物検出と対象矩形選択。
- 複数人物画面でのタップ選択と部分拡大。
- 端末側の正面・左側面・右側面方向表示。
- オフラインアルバムまたは現場撮影画像の顔領域取得。
- 後続の本人識別、なりすまし検知、行動分析用の顔切り出し。これら後続機能は今回の範囲外です。
受入範囲と制限
現在の成果物は顧客テスト・技術統合用で、製品署名版ではありません。本番前に顧客の署名材料を使用し、固定した実受入データでアノテーション規則、Precision、Recall、F1、姿勢別混同行列、許容しきい値を確認する必要があります。
極端な側面、遮蔽、強い反射、暗所、小さい顔、画面の再撮影では、未検出または方向誤判定が残る可能性があります。1枚の処理時間を平均値、P95、安定フレームレート、長時間性能へ外挿できません。未完了の8時間連続試験は合格扱いにしていません。
よくある質問
SDK はネットワーク接続が必要ですか。
検出処理は RK3588 Android 端末内で動作し、クラウド認識には依存しません。アプリの通信要否は顧客側の業務機能によります。
本人識別を含みますか。
含みません。顔位置、5点ランドマーク、正面/左/右方向のみで、氏名、顔データベース、1:1、1:N照合は提供しません。
既存 Android アプリへどう統合しますか。
Core AAR と Face AAR が同期・非同期 API を提供します。Camera2 Demo、入力形式、バッファ寿命、サンプルコード、障害切り分け資料を同梱します。
完了した RK3588 検証は何ですか。
インストール、起動、権限、静止画サンプル、Camera2 10秒経路を確認しました。正式精度、製品署名、8時間安定性は別の受入項目です。
別の RK3588 端末でそのまま使用できますか。
API と統合方法は再利用できますが、カメラ仕様、Android 版、向き、stride、メモリ、温度、負荷が異なるため、対象端末でビルド、機能、性能、安定性を再検証します。

Online
Phone
WeChat
Top