アイコン

佐藤さとる

梶研 [ST-GCN動いただけ]

2024年06月18日

thumbnail

ST-GCN動いただけ

出席率

  • 3年セミナー:??%

スケジュール

短期的な予定

  • mocopi と お料理センシング
    • シーンとランドマークを決める(~2月上旬)
    • SVM で動作判別する
    • 機械学習を深める
    • お料理センシング
      • お料理でどんな動作があるかを知る
      • レシピを決める
      • 関節を3次元座標に変換する
      • 関節を2次元座標に変換する
      • ST-GCN を大体理解
      • ST-GCN で動作推定
      • 伊達巻きで動作推定する
      • レシピ(手順書)を元に動作推定を補う
    • 論文書く
    • 発表
  • BookWorm
    • Pasori と デスクトップアプリを接続する(技術検証)
    • nfc読み込み機能 & 画面を作る
    • API と連携させる
    • 管理者画面を作る

長期的な予定

  • 6月 精度は置いておき、動作認識を完成させる
  • 7月 リファクターと精度を向上させる
  • 8月 仕上げ
  • 9月 論文書き始め
  • 10月末 論文提出
  • 12月 WiNF当日

目的

料理中の動作を mocopi を使ってセンシングする。
このデータから最終的に位置推定を行う。

  • 一定の区間でどの動作をしているかを当てる (クラス分類)
  • 料理の手順を元にシーン検知を補正する
    • 例) 焼く動作 → 卵割る動作 はおかしい
  • 位置とシーンを相補的に補正する
    • 例) 冷蔵庫の前で焼く動作 はおかしい

目標

12月頃の WiNF に出たい
(10月末 論文完成)

進捗報告

エラー

ValueError: not enough values to unpack (expected 4, got 3)
4次元が欲しいのに3次元になってるよ

先週より近づいた

ValueError: not enough values to unpack (expected 4, got 2)
4次元が欲しいのに2次元になってるよ

データの形を出力: torch.Size([64, 27, 3])
サンプルのデータの形 torch.Size([64, 3, 80, 25])

サンプルのデータの構造

torch.Size([64, 3, 80, 25])

(3, 80, 25)
(次元数, フレーム数, 関節数)

64 は何者 → バッチサイズ

1BATCH_SIZE = 64 2data_loader['train'] = DataLoader(dataset=Feeder(...), batch_size=BATCH_SIZE)

特に改変していないのでそもそもの入力の形が間違えている可能性

サンプルの入力データ(npy)の形

(2000, 3, 80, 25)
(200, 3, 80, 25)

実際の入力データ(npy)の形

(21871, 27, 3)
(7248, 27, 3)

なんか次元が一つ足りない

(2000, 3, 80, 25)
(データ数, 次元数(座標), ???, 関節数)

学習データ数が2000(10クラス×200データ), 評価データ数が200(10クラス×20データ)あります.
(200, 3, 80, 25)

つまり、1動作ごとに配列なってた

(ラベル付けと動作の分割が簡単にできるアプリ欲しい)

データを取り直す

  • 後から1動作ごとに分割しやすいようにする
    • 5秒に1回的な
  • 訓練用: 各動作(5つ) x 20 ずつ用意
  • 訓練用: 各動作(5つ) x 5 ずつ用意

(何回伊達巻を作ればいいのだろうか)

その他細々修正

100 epoch 文動かす

# Epoch: 1 | Loss: 0.0337 | Accuracy: 19.7917
# Epoch: 2 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 3 | Loss: 0.0337 | Accuracy: 19.7917
# Epoch: 4 | Loss: 0.0337 | Accuracy: 19.7917
# Epoch: 5 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 6 | Loss: 0.0337 | Accuracy: 19.7917
# Epoch: 7 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 8 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 9 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 10 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 11 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 12 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 13 | Loss: 0.0335 | Accuracy: 19.7917
# Epoch: 14 | Loss: 0.0336 | Accuracy: 19.7917
# Epoch: 15 | Loss: 0.0335 | Accuracy: 19.7917
# Epoch: 16 | Loss: 0.0335 | Accuracy: 19.7917
# Epoch: 17 | Loss: 0.0335 | Accuracy: 19.7917
# Epoch: 18 | Loss: 0.0335 | Accuracy: 19.7917
# Epoch: 19 | Loss: 0.0335 | Accuracy: 19.7917
# Epoch: 20 | Loss: 0.0335 | Accuracy: 19.7917
# Epoch: 21 | Loss: 0.0335 | Accuracy: 17.7083
# Epoch: 22 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 23 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 24 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 25 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 26 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 27 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 28 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 29 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 30 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 31 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 32 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 33 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 34 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 35 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 36 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 37 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 38 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 39 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 40 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 41 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 42 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 43 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 44 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 45 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 46 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 47 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 48 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 49 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 50 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 51 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 52 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 53 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 54 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 55 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 56 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 57 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 58 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 59 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 60 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 61 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 62 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 63 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 64 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 65 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 66 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 67 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 68 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 69 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 70 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 71 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 72 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 73 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 74 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 75 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 76 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 77 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 78 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 79 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 80 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 81 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 82 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 83 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 84 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 85 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 86 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 87 | Loss: 0.0336 | Accuracy: 22.9167
# Epoch: 88 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 89 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 90 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 91 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 92 | Loss: 0.0336 | Accuracy: 22.9167
# Epoch: 93 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 94 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 95 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 96 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 97 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 98 | Loss: 0.0335 | Accuracy: 22.9167
# Epoch: 99 | Loss: 0.0334 | Accuracy: 22.9167
# Epoch: 100 | Loss: 0.0334 | Accuracy: 22.9167
image.png (27.0 kB)

全て 体を捻る 判定になった...

↓理想
image.png (32.1 kB)

問題点

  • データの分割が適当すぎた
    • 5秒区切りで分割 → 後半2秒は動作がない
  • データがたりない
    • お料理で24個以上求められても辛い...
  • そもそも骨格がミスってる可能性

データの分割が適当すぎた

window_size を小さくしてみた


# Test Accuracy: 24.000[%]

Use CUDA: False
# Epoch: 1 | Loss: 0.0325 | Accuracy: 19.0000
# Epoch: 2 | Loss: 0.0324 | Accuracy: 19.0000
# Epoch: 3 | Loss: 0.0324 | Accuracy: 19.0000
# Epoch: 4 | Loss: 0.0324 | Accuracy: 19.0000
# Epoch: 5 | Loss: 0.0324 | Accuracy: 19.0000
# Epoch: 6 | Loss: 0.0324 | Accuracy: 19.0000
# Epoch: 7 | Loss: 0.0323 | Accuracy: 19.0000
# Epoch: 8 | Loss: 0.0323 | Accuracy: 19.0000
# Epoch: 9 | Loss: 0.0323 | Accuracy: 19.0000
# Epoch: 10 | Loss: 0.0323 | Accuracy: 19.0000
# Epoch: 11 | Loss: 0.0322 | Accuracy: 19.0000
# Epoch: 12 | Loss: 0.0322 | Accuracy: 19.0000
# Epoch: 13 | Loss: 0.0322 | Accuracy: 19.0000
# Epoch: 14 | Loss: 0.0321 | Accuracy: 19.0000
# Epoch: 15 | Loss: 0.0321 | Accuracy: 19.0000
# Epoch: 16 | Loss: 0.0321 | Accuracy: 19.0000
# Epoch: 17 | Loss: 0.0321 | Accuracy: 24.0000
# Epoch: 18 | Loss: 0.0321 | Accuracy: 24.0000
# Epoch: 19 | Loss: 0.0321 | Accuracy: 24.0000
# Epoch: 20 | Loss: 0.0321 | Accuracy: 24.0000
# Epoch: 21 | Loss: 0.0320 | Accuracy: 24.0000
# Epoch: 22 | Loss: 0.0319 | Accuracy: 24.0000
# Epoch: 23 | Loss: 0.0320 | Accuracy: 24.0000
# Epoch: 24 | Loss: 0.0320 | Accuracy: 24.0000
# Epoch: 25 | Loss: 0.0319 | Accuracy: 24.0000
...
# Epoch: 97 | Loss: 0.0317 | Accuracy: 24.0000
# Epoch: 98 | Loss: 0.0319 | Accuracy: 24.0000
# Epoch: 99 | Loss: 0.0317 | Accuracy: 24.0000
# Epoch: 100 | Loss: 0.0317 | Accuracy: 24.0000
image.png (27.0 kB)

変わらず

そもそも骨格がミスってる可能性

gif で出せることを知ったので出してみた.

※ 体を曲げる運動
animation.gif (348.7 kB)

おかしい...
一度修正したがライブラリに変更した時点で紛れ込んだ可能性

進路関係

余談

コロナつらかった

IMG_6940.jpg (2.5 MB)

PC を触れない辛さを実感した