"BOKU"のITな日常

還暦越えの文系システムエンジニアの”BOKU”は新しいことが大好きです。

東京五輪でも使われるかも・・。体操の採点支援システムの仕掛けを調べる

スポーツとコンピュータシステムの話題です。

富士通さんが開発して、国際体操連盟に採用された「体操自動採点システム」にちょっと興味があって調べてみました。

f:id:arakan_no_boku:20191124221400p:plain

 

体操の採点基準は素人には絶対わからないと思う

 

久しぶりに体操競技を見てました。

すると、「なんで、この人の得点が、さっきの人より高いの?」みたいに、見た印象と実際の得点あわなくて、不思議に感じることが多々ありました。

もちろん。

今に始まったことではありませんし、自分は体操の素人ですから、個々の技の採点基準を知らなくて当然なんですけど、ちょっとモヤっとはします。

だから、たまに、体操の採点方法について説明されている以下のような記事を見つけると、予備知識を仕入れようと考えたりするのですが・・・。

www.nikkansports.com

読んでも「ムリ!」って思います。

例えば。

上体が前に倒れ、何とかこらえています。

これは足が止まって0・3点の減点。実はピタッと止まるより、小さく1歩踏み出した着地の方が0・1と減点幅は小さく、止めれば高得点ではなくなっています。

04年アテネ五輪団体決勝、「栄光の架橋」の実況で知られる冨田の前体重でこらえた着地も、いまの厳密な規則であれば減点されてしまいます。

 とか。

両足の間隔が広すぎてかかとがそろえられない。

これは0・1点の減点です。

少し前なら間隔の開きを足を少し浮かして調整し、かかとをそろえれば減点なしもあり得ましたが、いまは厳しく採点されます。

 などの説明を読んでも、「実際に演技を見て、こんなもんわかるか!」とギブアップするしかないです。 

 

フィギュアスケートみたいな情報があればいいのに・・

 

フィギュアスケートも昔はそんな感じでした。

素人目に上手に滑ったなあと思う選手の点が、2回くらい転んだ選手に負けてたりすると、それこそ「なんでやねん!」とモヤモヤしてました。

でも。

今はかなり改善されてます。

テレビで見ている分には、技の名前や難易度(基礎点)や出来栄え店なんかの技術点が少しの誤差で表示されるので、細かい技とかわからないのは相変わらずでも、わりあいストレスなく楽しめるようになってます。

なので、

体操もあんな感じにできたら良いのにな。

つい、そう思ってしまうわけです。

そんな折。

このプレスリリースが目に付きました。

pr.fujitsu.com

体操の採点支援システム・・。

おお。

これがあったら、フィギュアみたいな情報提供とかできるんじゃないの・・と。

 

どういう仕掛けで実現しているのだろう?

 

それだけの話なのですが、ここで自分の困った性分が頭をもたげます。

体操の自動採点か・・どうやってやるんだろう?

頭の中でシュミレーションしてみて、なんとなくのイメージはできますけど、考えれば考えるほど、複雑そうです。

なので。

どういう仕掛けになってるのかを、可能な範囲で調べてみました。

 

採点のための「技の辞書」作りの工夫とか

 

断片的な資料をみた感じでしかないですが、ざっとしたイメージとしては。

まず。

人体を「18関節骨格モデル」(人体モデル)で表現して、その間節間の確度なんかも数値化するのですね。

f:id:arakan_no_boku:20191128235456p:plain

そして。

その骨格モデルで表現した姿勢の時系列変化を学習させることで「技の辞書」を作り、さらに、「まっすぐ」とか「わずかにまがる」ような人間な感覚を、「角度Aが170度を超過、かつ、角度Bが170度を超過」みたいに、判定ポイントをデジタル化して、ルールベースを作ってやる。

あとは。

体操の演技姿勢中の関節部とかをセンサーでとらえて、人体モデルにおとして時系列にとらえて、「技の辞書」とつきあわせて技を識別して「Dスコア判定」し、かつ、同時に各関節の角度などの情報を元に、ルールベースの減点基準を参照して、姿勢や腕・脚のまがりなどを減点判定して「Eスコア」を出す。

最後に。

それらを集計して自動採点結果をだす。

とまあ、こんな感じらしいです。

ただ、簡単なわけはなく、さらに、色んな工夫が加えられてはいますが。

まず。

技の辞書なんかも、新しい技が追加された時に最小限のデータ追加で対応できないといけないので、例えば、各技に共通する動きである「基本運動」を特定し、それにもとづいて「基本技」を認識してから、採点対象となる技を判断する構成にしているとか。

あと。

体操の動きは特殊で単純に既存の骨格認識技術だけだと誤認識が多発するので、CNN系のDeeplearngで学習した予測モデルと、計測で求めた各座標群と人体モデルとの「尤度(もっともらしさを表す数値)が高くなるように最適化計算する方法(フィッティングと書かれてました)とを組み合わせたハイブリッド方式をとっているとか。

あと。

技の判定でも、体操は技が連続して繰り出されるので、骨格座標の時系列データから「技の切れ目」を認識して、各技の塊を分割して切り出せないといけないとか。

うーーん。

どれも、一筋縄ではいかなそうです。

 

マーカーなしで人体モデルをスキャンできる技術とか

 

さらに、凄いのが「マーカーなしに関節点を認識している」ということ。

つまり、モーションキャプチャーじゃない!のです。

モーションキャプチャーという技術はお馴染みです。

身体に30個くらいのマーカーをつけて、何台ものカメラでスキャンして骨格モデルを取得するってのは、テレビなんかでもよく見ます。

f:id:arakan_no_boku:20191129200203p:plain

モーションキャプチャ - Wikipedia

でも、それは使えない。

なぜなら、体操競技をする選手にマーカーなんかつけさせられませんし、演技をしているところを囲むみたいにカメラを配置するなんてできませんから。

だったら、どうやってるのか?

想像もつかなかったんですが、以下の記事で富士通さん自身が説明してくれてました。 

www.fujitsu.com

www.fujitsu.com

マーカーなしで、しかも、観客席レベルの遠くから撮影した映像から人体モデルをスキャンする技術を開発したとのことです。

f:id:arakan_no_boku:20191129200658p:plain

詳しいところは、上記のリンクの富士通さんの説明を見てもらえばよいのですが、素直にすごいです。

はい。

 

ものすごいスピードで展開する技をとらえる処理スピードとか

 

あと。

システム屋の性として、どうしても気になる点が一つ。

それは処理速度です。

たくさんの技が連続して繰り出される体操で、しかも、審判員が採点をするタイミング・・なので、ほぼリアルタイムに自動採点していかないといけないわけですから、かなり高速処理が求められます。

でも、人体モデルにフィッティングするのに最適化計算とかもしてるし、、高速で動いている体操選手の各局面・局面の姿勢を追いかける処理が、そんなに高速にできるってのがどうも腑に落ちないです。

自動採点というからには精度が求められるし、精度を求めるとスピードが犠牲になるというトレードオフは、どんな場合でも成り立ちますから。

そのへんどうなんだろうと思っていたら、以下のページでふれられてました。

www.fujitsu.com

こんな図がのっているのですが。

f:id:arakan_no_boku:20191129201614p:plain

なるほどねえ。

おおざっぱだけども速い(おそらくこちらがDeepLearningで学習した辞書を使った推論結果)と、正確だけども遅い(こちらが各点と人体モデルとの最適な一致点を計算で求めるやりかた)方式との「良いとこ取り」で、必要なパフォーマンスと精度の両方のバランスのとれた落としどころを見つけたというわけですね。

いやあ。

大変だったでしょうね。

こういう落としどころを見つけるって、結構、地味なトライ&エラーの繰り返しを根気よく繰り返すしかなかったりしますし。

でも。

考え方は、勉強になります。 

 

まとめです

 

最初、日経新聞でちらっと記事を見て、「体操の自動採点」という1点にひっかかって調べ始めたのですけど、なかなか面白かったです。

もちろん。

詳細な技術情報はシークレットなのが当然で、本当にアウトラインをちょこっとだけ、富士通の方が断片的に出してくださってるのを、読みつなげただけですが、それでも、相当に高度なことを、かつ、根気強くされたんだろうなっては、自分でもわかります。

かつ。

考え方の勉強になりましたし。

自分的には「よかった。よかった。」って感じです。

今回はこんなところで。

ではでは。