Slide 1

Slide 1 text

2018/08/08 1 Kaggle DFL コンペ:ビデオ映像に基づくプレーの確認 ◆ 概要 : ドイツのサッカーリーグによるコンペで, 9つのサッカーの試合を録画したデータをもとに, “3種類のプレイヤーの 行動を 行った時刻”と”種類”の両方 検出することを目標 Just Throwing!!!

Slide 2

Slide 2 text

2018/08/08 2 1位ソリューション: https://www.kaggle.com/competitions/dfl-bundesliga-data-shootout/discussion/359932 ◆ 入力:グレースケール 1024x1024の15 frame ➢ 理由: runtime制約。フレーム数は実験的に出した。 ➢ 入力直後に、bs*frames x channels x H x WにReshapeする。 ➢ 3Dconv前に、bs x frames x channels x H x Wに戻す。 ◆ Net構造 ➢ 概要:2.5D と 3D の組み合わせによって構築された 1 段階のアーキテクチャ ➢ Backbone:efficientnetv2_b0 or efficientnetv2_b1 ⚫ 理由:これより大きいモデルだとオーバーフィットした。 ➢ 最終レイヤーのみ3D convで実行 ⚫ 理由:高速化のため。 ◆ Loss:3target BCE ➢ hard labels in a small window around the actual event(ソフトで検証したけど、ハードの方が良かった) ◆ データ: ➢ 配られたモノでほぼ検討。SoccerNetを使うとちょっと良くなった。疑似ラベルをやってみたけどうまく行かなかった。 ◆ Augmentation ➢ Brightness, Contrast, cutout, rotate, transpose ,vFlitp, Hflip, Resize, mixup ◆ 実装 ➢ スレッド化をして高速化頑張った。 ◆ アルゴリズム ➢ 1 つのモデルで2 番目のフレームのみを予測し、最終的なソリューションは 2 つのモデルをフレームごとに交互にブレンド ➢ その後後処理を適用してFPの数を減らします 入力 (15,1,1024,102) Efficientnet b0 or b1 3d conv Training model architecture play challenge throwin

Slide 3

Slide 3 text

2018/08/08 3 2位:DFL - Bundesliga Data Shootout | Kaggle ◆ 詳細はページを見た方が良い ◆ 考え方の差分 ➢ 大枠は当初のうちらの考え方同じ。 ⚫ ボール検出⇒クロップ⇒分類 ➢ ただ、1つ1つの作りこみが全然レベルが違う

Slide 4

Slide 4 text

2018/08/08 4 反省:色々な問題により全然モデルが収束しなかった。。。 ◆ 反省大:モデルの作りが悪い、バックボーンの選定実験が少なかった ➢ おれ:Backbone => reshape => 1d gaussian ➢ 3位の人:backbone => deconv => 1d gaussian ◆ 反省大: Loss重み ➢ 俺:無し(imbalanced samplerで対応した) ➢ 3位の人:Focal loss + class weight ◆ 反省大:入出力 ➢ おれ:サッカーボールの位置をヒートマップで入れてた(これをするとかなり重くなってしまっていた。エラー処理のためにフィールドセグメンテーションも必要になっていたので。) ➢ 3位の人:画像だけ。 ◆ 反省中:時系列CNNを利用 ➢ 俺:2dCNNの入力をreshapeして入力(65frame x 3 x H,W => 195 x h x w)。1位の人と同じ感じではあった。 ➢ 3位の人:TSMモデルでレイヤー内でちゃんと実行 ◆ 反省中:事前学習でSoccerNet利用 ➢ 3位の人:ボール位置に対して事前学習 ◆ 反省小:複数モデル ➢ 3位の人:フレームの長さ、解像度の大きさで複数モデル作成しアンサンブル ◆ 反省小:学習設定 ➢ LR:ちょっと小さかったかも