pose-monitor - 「ジャン・カンカン」は、悪い座っている姿勢を監視し、音声プロンプトを行う携帯電話のAIアプリです

(“让爷康康”是一款手机 AI 应用程序,可以监测不良坐姿并进行语音提示)

Created at: 2022-10-27 14:19:21
Language: Jupyter Notebook
License: Apache-2.0

ポーゼモンは、彼の健康を作る

Application Icon

Androidプラットフォーム用の携帯電話アプリケーションである「ジャン・カンカン」は、悪い座っている姿勢をリアルタイムで監視し、音声プロンプトを提供します。 このプロジェクトは、主にTensorflow Liteの公式例である姿勢推定の実装に基づいています。 このアプリは、ネットワークを使用する必要はありません、すべてのAI機能は、携帯電話でローカルに動作し、外部サーバーにビデオ画像を転送する必要はありません、唯一の姿勢画像を取得するためにカメラのアクセス許可が必要です。 ビデオイントロは、bilibiliまたはYouTubeをクリックすることができます。

ファイル構造

├───android
│   ├───app
│   │   └───src
│   └───gradle
├───doc_images
├───main
│   └───pose_data
│       └───train
│           ├───forwardhead
│           └───standard

プロジェクトの 2 つの主要なフォルダは、 です。 以下には、モバイルアプリに関連するすべてのコードが含まれており、フォルダの下には、ネットワークトレーニングデータを分類し、トレーニングプロセスを記録したファイルがあり、トレーニングデータはディレクトリの下に格納され、プロジェクトボリュームを合理化するために、使用される2つのサンプル画像のみがアップロードされます。 分類モデルをトレーニングする必要がある場合は、上記の指示に従って 2 つのフォルダを入力できます。 フォルダの下には、このドキュメントで使用されるサンプル画像があり、プロジェクト コードは含みません。

android/
main/
android/
main/
pose_classification.ipynb
main/pose_data/train/
pose_classification.ipynb
pose_classification.ipynb
main/pose_data/train/
main/pose_data/test/
doc_images/

Android Studio でプログラムをコンパイルして実行します

このプロジェクトの Android プロジェクト セクションは apk インストール パッケージにコンパイルされており、プロジェクト発行ページで直接インストールをダウンロードしてテストできます。 テストをさらに開発するには、Android Studio で Android エンジニアリング ファイルをコンパイルできます。

準備作業

  • Android Studio を必要とする Android Studio のコンパイルは、ダウンロードとインストールの指示に従って公式サイトにアクセスできます。

  • アンドロイド携帯電話を準備する必要があります。

プログラムをコンパイルします

  • このプロジェクトを複製するか、圧縮パッケージとしてプロジェクト ファイルをダウンロードして解凍します。

    git clone

  • Android Studio を開き、最初のインターフェイス選択でプロジェクトの Android プロジェクト フォルダを開きます。

    Welcome
    Open an existing Android Studio project

  • Android プロジェクト ファイルは、このプロジェクトのフォルダの下にあります。 Android Studio のプロンプト ウィンドウでフォルダを選択します。 プロジェクトを開くと、ソフトウェアは Gradle の同期を求めるメッセージを表示し、同期が完了するまで同意し、待機することがあります。

    android/

  • 開発者モードの電話機をUSBケーブルでPCに接続し、具体的な接続方法は公式チュートリアルを参照してください。 プログラムの上部にあるツールバーの右側に電話のモデルが正しく表示されている場合は、デバイスの接続が成功しました。

  • Android Studio を初めてインストールする場合は、一連の開発ツールもインストールする必要があります。 ソフトウェアインターフェイスの右上にある緑色の三角形のボタンをクリックして、プログラムを直接実行します。 インストールが必要なツールがある場合は、プロンプトが表示され、プロンプトに従ってインストールされます。

    Run 'app'

モデルの紹介

このプロジェクトは、追加のダウンロードを必要とせずに、既にこのプロジェクトに含まれている 2 つのニューラル ネットワーク モデル ファイルを必要とします。 最初のMoveNet Thunderニューラルネットワークモデルのフォーマットは、詳細については、公式モデルファイルのリンクをクリックすることができます。 MoveNet は、Thunder と Lightning の 2 つのバージョンで Google が発表した軽量の人体姿勢推定モデルです。 Thunder バージョンは低速ですが、精度は高く、このプロジェクトは Thunder バージョンを使用しています。 このバージョンは、2 つのデータ形式に分かれています。 モデルは汎用 GPU でのみ実行でき、モデルは汎用 GPU 上またはクアルコム の Hexagon DSP デジタル信号プロセッサ上で実行できます で実行します。 Hexagon プロセッサで実行すると、AI プログラムはより高速で省電力になり、AI モデルをモバイル展開するときに Hexagon プロセッサを優先することをお勧めします。 Google は、Tensor G2 の最新モデルである Google Tensor プロセッサを自社開発で導入しており、Tensor プロセッサの AI アクセラレーション ユニットを呼び出す方法は不明であり、デバイスのテスト確認後にドキュメントが更新されます。

int8
float16
int8
float16
int8

独自の分類ネットワークをトレーニングします

17 Keypoints detected by MoveNet

MoveNet Thunder に加えて、このプロジェクトでは、MoveNet が出力する姿勢情報 (人体の 17 のキー ポイントの座標) を単純なフル接続ネットワークを使用して分類し、画面内の人物が "標準着座姿勢"、"反二郎脚"、"首の前のキャメルバック" のどの状態にあるかを判断します。 この分類ネットワークの概要とトレーニング プロセスの実際のデモについては、Tensorflow Lite の Jupyter Notebook チュートリアル、またはこのプロジェクトで変更およびコメントされたバージョンを参照してください 。 本プロジェクトでは、「標準座位」、「二郎脚」、「首前傾こぶ」の3つの姿勢を分類するため、各姿勢について約300枚をトレーニングセット(合計876枚)として採取し、各姿勢について約30枚をテストセット(計74枚)として採取した。 トレーニングセットとテストセットは、異なる人物の主題であり、トレーニング中にモデルのオーバーフィットの問題をタイムリーに発見します。 トレーニング データは、パスの下、3 つのフォルダ、およびテスト データの下に格納する必要があります。 このプロジェクトのトレーニング分類ネットワーク用の Jupyter Notebook は、生データをトレーニング パケットに自動的に変換し、その過程で各写真の MoveNet 検出結果を生成し、各写真を 3 つのポーズのいずれかにマークし、すべての情報を格納し、ラベル情報を記録するテキスト ファイルを生成します。 Notebook でトレーニングが完了すると、ルートの下にウェイト ファイルが自動的に生成され、Android Studio プロジェクトにインポートされ、このプロジェクトの使用が置き換えられます。

main/pose_data/train/
standard
crossleg
forwardhead
main/pose_data/test/
main/pose_data/train_data.csv
main/pose_data/test_data.csv
main/pose_data/pose_labels.txt
main/pose_data/
.tflite
android\app\src\main\assets\classifier.tflite

効果を実行します

スマートフォンを PC に接続すると、Android Studio はプロジェクトをコンパイルし、アプリを電話にインストールできます。 アプリを開き、カメラの使用を承認すると、アプリは人間の座り方を監視し、リアルタイムの検出結果に基づいて音声プロンプトを表示できます。 プログラムの表示インターフェイスは、主に上、中、下の3つの部分に分かれており、上部にはAIが現在の姿勢を判断し、中央はカメラライブ画面、下部は情報表示インターフェイスであり、ここで「コンピューティングデバイス」列は、CPU、GPUまたはNNAPI(Hexagon AIアクセラレータ)を使用して計算することができ、NNAPIは最速であり、最も省電力です。 プログラムの誤検出を避けるために、アプリは Precision (精度) を向上させるために一連の判断ロジックを追加します。 連続した30フレームで不健康な着座位置が発生すると、プログラムは警告状態になり、次の30フレーム画面が不健康な着座姿勢と判定された場合、プログラムは音声プロンプトを発します。 効果は、次のようになります。

ありがとう

このプロジェクトは、Tensorflow Lite Pose Estimation サンプル プロジェクトに基づくもので、TensorflowJupyter Notebook などのオープン ソース フレームワーク、オープンソース開発ツールなしでは機能できません。 オープンソースコミュニティへの貢献のためにプログラムワーカーに感謝します!

  • [2022.11.06] フロントカメラのサポートに参加@zhengbangbo感謝します。 (注:フロントカメラは上半身のみを記録すると「二郎脚」の姿勢認識が不安定になる可能性がありますが、今後は上半身姿勢判断の開発をサポートできます。 )