本文へ移動Open Research Lab

人体運動モデルのデータ接続開発用のデータと、モデルを疑うための検査を分けるEnglish

Dataset一次資料に基づく設計model fitting未実施holdout未使用外部再現 0

曖昧な入力を止める接続契約の続きです。

データセットの結論

一つのdatasetを「一般人体モデルの正解」とは扱いません。最初のvertical sliceでは、役割を三つに分けます。

役割Dataset検査できること
開発と内部holdoutCarter et al. 2024AddBiomechanicsから配布motion captureとforce plateを伴う、参加者・速度・勾配をまたぐlocomotion
外部検証OpenCap laboratory validation別に収集されたraw sourceのwalking、squat、sit-to-stand、drop jumpの実験室計測へ移せるか
内部荷重のstress testKnee Grand Challenge将来のmodelがinstrumented implantで測った膝接触力との比較に耐えるか

AMASSはkinematicsの範囲確認だけに使い、force validationには使いません。HuMoDはEMGの診断用であり、一般化性能のbenchmarkにはしません。

何を調べたか

最初のlocomotion benchmarkで、開発用のdataとmodelを疑うためのdataを密かに使い回さないためには、どの公開datasetとholdout境界を選ぶべきか。

なぜ重要か

同じraw sourceを別の処理で作り直し、開発と検証に分けても、収集条件や処理上の仮定は共通です。それを外部検証と呼ばないため、容量の大きな取得、特徴量設計、model fittingより先にdatasetの役割を固定する必要があります。

方法

datasetの一次資料から、参加者、動作、計測modalities、license、targetがどれほど直接計測に近いかを比較しました。最初のquantity of interestは、force plateで実測した三次元ground reaction forceを体重で正規化した系列とcontact stateに限定しました。関節torqueはinverse dynamicsとmodel parameterに依存するため、最初のground truthにはしていません。

Carterの50 participant IDはsource表にあるsex labelごとに分け、各label内でage、participant IDの順に並べました。決定論的なmodulo-five ruleでdevelopment 30、validation 10、test 10へ割り当てました。各partitionの二つのsource label数は同じで、upstream testのP010はtestに残しています。

B3Dはsourceを読むadapter形式の一つに限定します。内部表現はNumPy配列と、座標、単位、frame、processing、missingness、provenanceの明示的metadataです。したがってNimble APIはHuman Modelの定義や学習の必須依存ではありません。公式readerとの一致確認はadapterの任意の再現性検査として残します。

結果

development、validation、testのIDを公開のmachine-readable manifestに固定しました。元のparticipant表はコピーせず、URL、size、SHA-256で参照します。既に取得済みだった1 MiBのZIP64 central-directory tailから、空でないCarter B3Dが610件あり、development participantのWith_Arm候補ではP008_split2が最小と確認しました。このB3D本体はまだ取得していません。

何が変わったか

次の必須gateをNimbleとprotobufのreader一致確認から、dataset選定とleakage防止へ変更しました。Subject40は接続契約の反例として残し、prediction benchmarkには使いません。開発内ではparticipant holdoutを使い、外部検証には別raw sourceを要求します。

何が失敗したか

model fittingもholdout評価も実施していないため、このEpisodeでmodelやdataset処理の失敗はありません。Nimble parityを次の必須gateにする案は退けました。検査できるのはreader間の一致であり、Human Modelの科学的な有用性ではないためです。

証拠の範囲

言えること: 公開sourceを別々の役割へ割り当てたこと、Carter participant splitが決定論的で内部整合していること、取得境界とleakage ruleを機械検査できること。

言えないこと: B3Dの数値抽出、trialの利用可能性、入力channelの妥当性、model学習、metric threshold、holdout性能、外部妥当性、内部荷重の正確さ、一般人体モデルの成立。

まだ分からないこと

  • P008_split2に、実測GRFを利用できるframeが十分あるか。
  • どのkinematics processing passがforce plateによる最適化から独立しているか。
  • 選んだB3D memberの正確なtrial condition、channel shape、座標、単位、missingness。
  • 数値threshold、resampling、event定義、最終的なbaseline実装。
  • 学習するmodelがheld-out participantで二つの単純baselineを上回るか。

この結論が崩れるとき

  • validationまたはtest participantがnormalization、fitting、feature選択、threshold選択へ影響する。
  • force plateで最適化したdynamics-pass featureを、同じtrialのforce target予測に使う。
  • 同じraw sourceの再処理を独立した外部検証として数える。
  • missingnessや性能を見た後にparticipantの割り当てを変える。
  • 複雑なmodelが、封印したparticipant単位metricでdevelopment平均波形とregularized linear modelを上回らない。

自分で確かめる

python scripts/reproduce.py --quick human-dataset

公開manifest、split出力、件数、hash、未実施境界を検査します。元datasetはdownloadせず、計測値を独立再現するものでもありません。

証拠とデータ

外部からの検証

  • 独立再現:0
  • 再現失敗:0
  • 公開後に確認されたbug:0
  • 未解決の批判:0

次の実験

P008_split2だけをrange downloadし、protobufとNumPyでtrial condition、timebase、channel shape、processing pass、利用可能なGRFの割合、座標、単位を確認します。限定調査でreader固有の曖昧さが見つからない限り、validation/test participantを読まず、model fittingをせず、Nimbleも導入しません。