【Streamlit×MediaPipe】スティックピクチャをWebで描画

未分類

前回の記事(記事URL:http://ktr-project.net/?p=109)では、肩関節が最大外転位になった際のスナップショットを描画するようなwebアプリをpythonで作成しました。しかしながら、動作というのは開始から終了までの一連の流れから変化を見たいケースもあると考えています。


そこで今回の記事では前回の記事のwebアプリで生成されるMediaPipeから出力したCSV(ピクセル座標形式)をもとに左右上肢のスティックピクチャを開始から終了まで連続で描画できるStreamlitアプリを作成しました!

具体的なwebアプリのフローとしては下記のような流れとなっています。

CSVアップロード ➡ 肩の動きを解析 ➡ 図に出力 ➡ ZIPダウンロード、まで一気に出力することが可能です。


✅ このアプリでできること

  • MediaPipeで得たCSVから左右の上肢のスティックピクチャを描画
  • 最大肩外転角・最大肩挙上角を自動で計算
  • 10フレームごとの連続スティック描画で動作の流れを可視化
  • 左右の上肢それぞれの結果図(PNG)をZIPファイルでまとめて一括ダウンロード可能なため、左右どちらの上肢運動にも対応することが可能です。

✅ アプリ画面イメージ

webアプリのURLはこちらになります(アプリURL: https://makestickpic10sec-vkndemhkazs4hb9e9hawd9.streamlit.app/)。

こちらのリンクにアクセスするとアプリが立ち上がります。以前の記事のウェブアプリで生成されたcsvファイルをwebアプリ上にアップロードしてもらえると自動で読み込んで画像生成が行われますその後にダウンロードのボタンが出てくるため、そちらをクリックしてもらえるとアプリで生成された結果をpngファイルでダウンロードすることができます。


✅ 使用している主なパッケージ

こちらのウェブアプリは下記のパッケージを使っています。注意したいのはこちらのパッケージのリストにはありませんが、対応しているcsvのデータ形式は骨格推定パッケージのmediapipeに準拠しています。

要素使用技術
WebUIStreamlit
可視化matplotlib
データ形式CSV
言語Python
データ処理numpy / pandas

✅ なんでこのアプリを作ったか

MediaPipeを用いた動作解析では、CSV出力はできても図での比較や記録がしづらいという課題がありました。いわゆる数字の時系列データとしては出力することはできたけれども、そこからどうしてよいかわからないケースというのが多くあります。

また上肢の動作分析の観点からいくと、従来の観察による質的な評価から数値定量化を行うという点において動作の特徴の理解という点では大きなアドバンテージがあると考えています。

今回はその課題を解決するために:

  • GUI不要・コードなしでも使える
  • 1クリックで左右の動作を比較可能
  • 描画結果を研究やレポートにそのまま使える

といったコンセプトで、Streamlitベースの軽量アプリとして構築しました。


✅ 応用のヒント

  • 時系列グラフと組み合わせることで、動作リズムの評価も可能
  • 動作の差分可視化にも使えます
  • Streamlitを使っているので、スマホやiPadからでも動作確認OK!

KTR個人としてこれは役に立つと思っているポイントしては、上肢の動作解析でよく使われている評価バッテリー(Simple Test for Evaluating Hand Function(STEF)、Manual Function Test)みたいなな得点や動作遂行の有無や遂行時間で機能評価する検査にさらなる視点を付け加えることができる点にあると考えています。

意外とSTEFをみてみると、重量や物品の移動方向などよく考えられているなーと最近感じるところです。

✅ まとめ

今回のwebアプリのフローと特徴は下記の内容となっています。

項目内容
入力pose_output.csv(MediaPipe生成)
出力PNG×2枚(左右上肢)+ ZIP化
角度算出最大肩関節外転角、その時の肩峰挙上角度
追加要素10フレーム毎の連続描画で動作時系列変化を描画

✅ お問い合わせ

「自分の動作をこの形式で解析したい!」
「別の部位にも応用したい!」
など、お気軽に X(@KTR_Project)までどうぞ!

コメント

タイトルとURLをコピーしました