システム概要
本プラットフォームは、YOLO セグメンテーション技術を基盤とした視覚支援ツールであり、視覚障がい者の移動支援を目的として設計されています。画像や動画内の道路構造、特に点字ブロックや横断歩道をリアルタイムで検出・分割し、周囲環境の認識を補助します。
当初は AI 搭載スマートグラスの核心モジュールとして開発されましたが、現在は独立したイメージとして提供されており、開発者や研究者が技術を拡張・利用できるようになっています。
主要機能仕様
経路検出機能
システムは専用に訓練された YOLO セグメンテーションモデルを内蔵しており、以下の道路标记を高精度で識別します。
| 検出クラス | 対象物 | 実用価値 |
|---|---|---|
| blind_path | 黄色い点字ブロック | 視覚障がい者の歩行指引、安全経路からの逸脱防止 |
| road_crossing | 横断歩道 | 渡り場の識別、安全な道路横断の確保 |
マルチモデルアーキテクチャ
柔軟なモデル管理構造を採用し、用途に応じて 3 つの専用モデルを用意しています。
デフォルトモデル:経路分割モデル(yolo-seg.pt)
- 点字ブロックと横断歩道の認識精度を最適化
- 複雑な道路環境下でも高い准确率を維持
- 実運用に必要なリアルタイム処理速度を達成
モデル切替設定
設定パラメータの理解
使用する学習済みモデルを決定する最重要パラメータは、/opt/aiglasses/app.py 内に定義されています。このパスを変更することで、機能モードを容易に切り替えることが可能です。
モデル設定詳細
以下の設定例では、変数名を TARGET_MODEL_URI として定義し、辞書構造で管理する例を示します。
経路分割モード(初期設定)
# 推論設定モジュール
MODEL_CONFIG = {
"active": True,
"TARGET_MODEL_URI": "/root/ai-models/archifancy/AIGlasses_for_navigation/yolo-seg.pt"
}
これはシステムの標準モードであり、点字ブロックおよび横断歩道の検出に特化し、精度が最適化されています。
信号機検出モード
# 信号機認識用設定
MODEL_CONFIG = {
"active": True,
"TARGET_MODEL_URI": "/root/ai-models/archifancy/AIGlasses_for_navigation/trafficlight.pt"
}
このモードでは、7 種類の交通信号状態を識別可能です。
- 緑色通行 (go) および赤色停止 (stop)
- 各種カウントダウン状態 (countdown_go, countdown_stop, countdown_blank)
- 横断信号 (crossing) および無信号状態 (blank)
商品認識モード
# 商品識別用設定
MODEL_CONFIG = {
"active": True,
"TARGET_MODEL_URI": "/root/ai-models/archifancy/AIGlasses_for_navigation/shoppingbest5.pt"
}
一般的な商品の識別用に訓練されており、現在は特定の飲料品の認識に対応しています。購物支援シナリオに適しています。
切替手順
モデルの切り替えは以下の手順で実行します。
- 設定ファイルの編集:vim または nano を使用し、app.py を開きます。
vim /opt/aiglasses/app.py - パラメータの修正:
TARGET_MODEL_URIの行を見つけ、現在の設定をコメントアウトし、使用したいモデルパスのコメントを解除します。 - 保存と再起動:変更を保存し、サービスを再起動して設定を反映させます。
Supervisor によるプロセス管理
Supervisor の役割
Supervisor はプロセス管理ツールであり、AI サービスが安定して稼働し続けることを保証します。サービスが予期せず停止した場合でも、自動的に再起動を行い、システムの高可用性を維持します。
管理コマンド集
効率化管理のため、シェル関数としてコマンドをラップすることを推奨します。
サービス状態の確認
check_service_status() {
supervisorctl status aiglasses
}
# 実行
check_service_status
このコマンドにより、サービスの稼働状況や実行時間などの情報が表示されます。
サービスの再起動
restart_ai_service() {
supervisorctl restart aiglasses
}
# 実行
restart_ai_service
設定変更やモデル切替後は、このコマンドを使用してサービスを再起動し、変更を有効化する必要があります。
リアルタイムログの監視
tail -f /root/workspace/aiglasses.log
ログを確認することで、サービスの動作状況を把握し、発生した問題の診断が可能になります。
運用ベストプラクティス
実際の運用では、以下のフローに従うことを推奨します。
- 変更前の状態確認:まず現在のサービス状態を確認し、正常稼働であることを保証します。
- 設定文件的バックアップ:修改前に app.py をバックアップし、設定ミスによる障害を防ぎます。
- 変更後の検証:サービス再起動後に再度状態をチェックし、変更が生效していることを確認します。
- ログ監視:ログ出力に注目し、エラー情報がないかを確認します。
利用ガイド
システムへのアクセス
システムは Web インターフェースを通じてサービスを提供します。アクセス URL 形式は以下の通りです。
https://gpu-{实例 ID}-7860.web.gpu.csdn.net/
{实例 ID} を実際のインスタンス番号に置き換えてアクセスします。
画像分割操作
画像処理は最も頻繁に使用される機能です。
- インターフェース上の「画像分割」タブをクリックします。
- 点字ブロックや横断歩道を含む画像を選択またはドラッグしてアップロードします。
- 「分割開始」ボタンをクリックします。
- システムが自動的に処理を行い、右側に分割結果を表示します。
利用コツ:
- 光量が十分で、背景が比較的単純な画像を選択すると効果が高まります。
- 画像内で点字ブロックや横断歩道が十分な割合を占めるようにします。
- 複雑なシーンでは撮影角度を調整する必要がある場合があります。
動画分割操作
動画処理は批量分析やデモシナリオに適しています。
- 「動画分割」タブに切り替えます。
- 処理が必要な動画ファイルをアップロードします(最初は短編動画でテストすることを推奨)。
- 処理開始をクリックすると、システムがフレームごとに分析を行います。
- 処理完了後、注釈付き動画をダウンロード可能です。
注意事項:
- 動画処理時間は動画の長さに比例します。
- 最初は 10〜30 秒の短編動画で効果テストを行うことを推奨します。
- 動画の鮮明度が十分であることを保証します。ぼやけた動画は認識精度に影響します。
硬件要件と最適化
最低硬件構成
| 硬件コンポーネント | 最低要件 | 推奨構成 |
|---|---|---|
| GPU 显存 | 4GB | 8GB 以上 |
| GPU モデル | CUDA 対応显卡 | RTX 3060 以上 |
| システム内存 | 8GB | 16GB |
| 存储空間 | 20GB 可用空間 | 50GB 可用空間 |
パフォーマンス最適化
低構成デバイス向け:
- 処理画像の解像度を低下させる。
- 利用可能な場合、较小的モデルファイルを使用する。
- 不要なバックグラウンドプロセスを停止する。
高負荷シナリオ向け:
- GPU 显存を増設し、同時に多くのタスクを処理可能にする。
- SSD ハードディスクを使用し、モデル加载速度を加速する。
- ネットワーク環境を最適化し、安定した接続を確保する。
トラブルシューティング
検出に関する問題
問題:画像アップロード後、対象が検出されない
- 確認事項:画像内に点字ブロックまたは横断歩道が含まれているか確認する。
- 角度調整:異なる撮影角度の画像を試す。
- 光量条件:画像の光量が十分で、露出過多または暗すぎないことを保証する。
問題:検出結果が不正確
- モデル選択:正しいモデル(経路分割モデル)を使用しているか確認する。
- 画像品質:画像がぼやけていないか、または干渉要素が多すぎないかチェックする。
- モデル更新:必要に応じて、更新バージョンのモデルを取得する。
サービス稼働問題
問題:サービスが正常に起動しない
# エラー情報の確認
supervisorctl tail aiglasses stderr
# 設定の再読み込み
supervisorctl reread
supervisorctl update
問題:Web インターフェースにアクセスできない
- インスタンスが正常に稼働しているか確認する。
- アクセス URL 内のインスタンス ID が正しいか確認する。
- ネットワーク接続が正常かチェックする。
モデル切替問題
問題:モデル切替後にサービスエラーが発生
- モデルファイルパスが正しいか確認する。
- モデルファイルが存在し、完全であることをチェックする。
- ログファイル内の具体的なエラー情報を参照する。
問題:複数のモデルを同時に使用:システムは現在、複数のモデルを同時に使用することをサポートしていません。実際のニーズに応じて、異なる TARGET_MODEL_URI 設定を切り替える必要があります。