本稿では、ラズベリー・パイ4上で動作するアイリアSDKを利用します。アイリアSDK付属の活動認識モデルax_action_recognitionを用いて、人の動作をリアルタイムに認識する方法をご紹介します。
アイリアSDKは高性能なクロスプラットフォーム推論ライブラリで、ラズベリーパイでもNEON最適化などにより高速推論を実現しています。前回はラズベリー・パイ4にアイリアSDKをインストールできました。アイリアSDKには、数多くの学習済みモデルが登録されているので、それを使ってアイリアSDKを試してみます。
アイリアSDK用のモデルailia modelsも前回、ダウンロードしているので、それを利用することとします。
※本企画は雑誌『Interface』のWebサイトに掲載された記事を再編集したものです。
※本記事はアイリアの製品およびサービスを紹介するPR記事です。
活動認識モデルax_action_recognitionを動かしてみる
紹介するのは、ailia modelsに含まれる活動認識モデルax_action_recognition(GitHub: axinc-ai/ailia-models/action_recognition/ax_action_recognition)です。今回は付属サンプル動画とUBSカメラを使い、どの程度認識できるかを確認します。
1.サンプル動画を利用した認識
デモンストレーション用GIF動画「punch_03-12-09-21-27-876.gif」を使って、モデルがパンチと認識するかを検証します(リスト1)。
# 推論スクリプトがあるディレクトリへ移動
$ cd ailia-models/action_recognition/ax_action_recognition
# サンプルGIFで推論実行(軽量Poseモデル lw_human_pose を指定)
$ python3 ax_action_recognition.py \
–video punch_03-12-09-21-27-876.gif \
–arch lw_human_pose
(リスト1)サンプル動画を利用した認識
描画ウィンドウには動画に重ねて認識結果が表示され、リアルタイムで「punch」と認識されています(図1)。

Video is generated from dataset in https://github.com/felixchenfy/Realtime-Action-Recognition
Webカメラによるリアルタイム認識
Webカメラやラズベリーパイ・カメラモジュールPiCameraを接続して、リアルタイムで動作認識を行う場合は、(リスト2)のようにします。
# カメラ映像を入力ソースとして指定(0 はデバイスID)
$ python3 ax_action_recognition.py \
–video 0 \
–arch lw_human_pose
(リスト2)Webカメラによるリアルタイム認識
▲認識1…静止画
まず、骨格認識の精度を確認するため、AIで生成した「走っている男性」の画像を印刷してカメラに映してみました。静止画のため姿勢変化がなく、Standと判定されましたが、検出された骨格キーポイントは正しく並んでおり、Poseモジュールの精度を確認できました(図2)。

▲認識2…カメラを動かす
Webカメラを接続した状態で、カメラの向きや角度を動かして試してみたところ、リアルタイムで表示される認識ラベルが変化しました。これは骨格キーポイントの位置や形状が視野内で変化し、それに伴って動作分類器の判定が変化するからと考えられます。横に動かすと「walk」、縦に動かすと「jump]と判断しました(図3)。

ライブ・カメラ映像での活動認識
新宿歌舞伎町のライブ・カメラ映像を使って動作認識を試してみました。
多くの人々の動作がリアルタイムに「squat」(しゃがむ)と認識されました。これはライブカメラの設置角度や高さが、学習データの視点とずれていることが原因と考えられます。姿勢の違いや関節の見え方が大きく異なるため、分類器がsquatと誤認識しやすいようです(図4)。

使用されている主要API:ailia.PoseEstimator
今回のサンプル・プログラムで中核となるのは、recognize_from_video() 関数で使っているailia.PoseEstimatorクラスです(リスト3)。
# ======================
# Main functions
# ======================
def recognize_from_video():
;
# pose estimation
env_id = args.env_id
print(f’env_id: {env_id}’)
if args.arch==”lw_human_pose”:
pose = ailia.PoseEstimator(
MODEL_PATH, WEIGHT_PATH, env_id=env_id, algorithm=ALGORITHM
)
(リスト3)主要API:ailia.PoseEstimator
このposeには、画像から推論された人の骨格情報が格納されます。例えば、人物ごとに関節点(キー・ポイント)の座標データが保存され、これをもとに、さらに動作分類(活動認識)が行われます。なお、recognize_from_video() 関数やこのAPIの詳細な仕様については、公式のAPIドキュメントにも詳しく解説されています。関心のある方は、文献(1)を参照してください。
まとめ
本記事で検証したラズベリーパイ4Model B上での活動認識では、サンプルGIFを用いた場合、秒間2フレーム(2fps)という判定速度でした。この結果はエッジ・デバイスかつCPUのみという制約下では妥当ですが、リアルタイム用途や常時監視の運用には十分とは言えません。
一方で、動作認識の用途によっては、幾つかの工夫で実用に近づけることも可能です。
・フレーム間引き(入力動画のフレーム・レートを落とす)
・認識対象アクションの絞り込み(必要な活動のみ判定することでモデルや後処理を軽量化)
・入力画像の解像度調整やROI設定(興味領域のみ推論して負荷を下げる)
など、目的に応じた工夫を加えることで、現状の性能でも一定の用途には十分対応できると考えます。
【参考文献】
(1)ailia Python API document.2021, AXELL CORPORATION, ax Inc
https://axinc-ai.github.io/ailia-sdk/api/python/en/ailia.html#ailia.PoseEstimator
※ラズベリーパイはラズベリーパイ財団の商標です。その他会社名、各製品名は、一般に各社の商標または登録商標です。
氏森 充(うじもり・たかし)氏
約30年間、株式会社構造計画研究所にてIoT、ビッグデータ、機械学習、AI関連のシステム開発や実務応用に従事。退職後はLLM(大規模言語モデル)関連の情報収集や技術動向の調査・発信に注力し、雑誌『Interface』でもLLM技術に関する記事を執筆中。
コンピューター・サイエンス&テクノロジ専門誌『Interface』
CQ出版社が発行するコンピュータ技術専門の月刊誌です。1974年の創刊以来、組み込みシステム、ソフトウェア、AI、IoTなど、時代とともに進化するコンピュータ技術を幅広く紹介しています。理論だけでなく、実践的なプログラミングや実機製作の記事も豊富で、エンジニアから学生まで、コンピュータ技術を深く学びたい読者に支持されています。
https://interface.cqpub.co.jp/











