$30 off During Our Annual Pro Sale. View Details »

Data-centric視点で過去コンペを振り返る

Inoichan
November 08, 2023

 Data-centric視点で過去コンペを振り返る

第4回 Data-Centric AI勉強会 -コンペLT大会-の発表資料です。
少し古いですが、2020年に開かれたコンペ
イベントページ: https://dcai-jp.connpass.com/event/298953/

Inoichan

November 08, 2023
Tweet

More Decks by Inoichan

Other Decks in Programming

Transcript

  1. Data-centric視点で
    過去コンペを振り返る
    2023/11/08 いのいち

    View Slide

  2. 自己紹介
    ❖ Inoue Yuichi
    ❖ Turing Inc. Brain Research Team
    ❖ 京都大学 博士(薬学)
    ❖ Kaggle Competitions Grandmaster

    View Slide

  3. 今日紹介するコンペ
    - TReNDS
    - Graphem
    - Lyft Motion Prediction
    上位解法をお話するというよりは、Data-centric視点で面白そうだなと思った部
    分をピックアップして紹介しています!

    View Slide

  4. TReNDS
    ● 2020年に開催されたコンペ リンク
    ● Targetは5個の連続値
    ○ Age
    ○ domain1_1
    ○ domain1_2
    ○ domain2_1
    ○ domain2_2
    ● データは脳のMRIから抽出した特徴量
    ○ fMRI: 53次元の3D画像データ
    ○ fnc: static FNC correlation features
    ○ loading: sMRI SBM loadings
    ● Metrics:重み付きで正規化された
    MAE

    View Slide

  5. Table data
    ● 当時、RAPIDS(Open GPU Data Science | RAPIDS)がKaggleで使われるようになった時期で、
    KGMoN
    の人たちがいろいろNotebookを出していた。
    ● SVRが効くタイプのコンペでRAPIDSを使うことでとても高速に処理できた。
    ● RAPIDSのお披露目会みたいになってた。

    View Slide

  6. 3D data
    ● SeuTaoさんがDiscussionで上げてくれてい
    るくらいだった。
    ● コードもGithubにかなり丁寧に上げてくれて
    いたし、monaiという便利ライブラリも紹介し
    てくれていたので、やる気があれば誰でも取
    り組めた...はず。
    ● 単体では全くのメダル圏外

    View Slide

  7. Table data &3D data
    ● 全然ドメインの違うデータを混ぜることで大きく
    CV/LB/PBが向上した。
    ● ほとんどの人は最初3D dataは使っていなかっ
    た。

    View Slide

  8. たくさん3Dのモデルを作成
    他チームとの差分になりそうだったのでたくさんモデルを
    作った。当時、2080Tiを1枚だったのでfp16で学習したり
    してた(なんかうまくいってた)。
    ● いろんな構造のモデルを使用
    ● 3D-ResNets-PyTorch
    ● 実験を早く回すためにfloat16で学習
    ● 高解像度化

    View Slide

  9. もっと多様なモデルを作ってたOnoderaさんに完敗
    解法のリンク
    ● 3D dataのモデルも右脳モデルや左脳モデル、特定の
    軸で切ったり、ランダムクロップしたりと、見慣れない
    3D
    dataに対しても頭脳的な方法でデータをうまく拡張して
    いた。

    View Slide

  10. Bengali.AI Handwritten Grapheme Classification
    - 2020年に開催されたコンペ リンク
    - ベンガル語の部首分類
    - Inputは手書きGrapheme(単語)の画像
    - 3つの部首タイプでそれぞれ分類
    - Graphem root : 168 classes
    - Vowel diacritics : 11 classes
    - Consonant diacritics : 7 classes
    - 評価指標はRecall (2 : 1 : 1)

    View Slide

  11. Baseline model architecture
    ・工夫点はAugmentationの組み合わせだと思っていた!

    View Slide

  12. めっちゃシェイクダウン😇
    Public : 18位
    Private : 213位 (- 195位)

    View Slide

  13. 何がいけなかった...?
    Public / Privateには未知のGraphemeが含まれていた。
    訓練データには1295種類のGraphemeしかないが、実際にはもっとある。
    可能性的には168 x 11 x 7 = 12936種類のGraphemeが存在する。
    Graphem root Vowel diacritic Consonant diacritic
    実際
    訓練

    View Slide

  14. 起こりうる部首の組み合わせを学習していた
    ● 学習が進むに連れて訓練に含まれる
    Grapheme(実線、Seen)については精度が上がっていくが、訓練に存在
    しないGraphem(破線、Unseen)については学習を進めるとどんどん下がっていってる。
    Accuracy Loss
    0.6
    0.9
    訓練に存在しないGraphem

    View Slide

  15. 特にユニークだった1位の解法
    1. CycleGANを使ってInput画像をフォント調に変換し、
    Unseen
    Class Modelで予測
    2. 「Seen」の場合、Seen Class Modelで最終スコアを予測
    3. 「Unseen」の場合、Out of Distribution Detection Modelで
    Seen Graphemeかどうかを再計算
    4. 「Seen」の場合、Seen Class Modelで最終スコアを予測
    5. 「Unseen」の場合、Out of Distribution Detection Modelの
    予測値を最終スコアとする

    View Slide

  16. CycleGANで手書き文字を生成
    すべてのGraphemeのFont画像
    を作成し、学習させる
    Local CV
    Seen: 0.9377
    Unseen: 0.8804
    訓練にないGraphemに対してかなりの
    高い精度に達している。

    View Slide

  17. CycleGANで手書き文字を生成
    Font画像の生成
    各部首の要素の情報が
    入ったDataFrameが与えら
    れていた。
    “component”は足し算することでGraphemeを生成
    することができた。
    画像化する。
    168x11x7=12936個のGrapheme
    ができる。
    Kernel:
    Bengali Graphemes: Starter EDA+ Multi
    Output CNN
    Font 1 Font 2

    View Slide

  18. Lyft Motion Prediction for Autonomous Vehicles
    2020年に開催されたコンペ リンク
    Motion prediction用の大きいデータセットを作っ
    たのでそれでコンペしようぜ!
    https://arxiv.org/abs/2006.14480

    View Slide

  19. データセット
    l5kitという専用のLibraryを使用してデータをGenerateする。
    かなりたくさんのデータを生成することができる。
    Satellite Semantic

    View Slide

  20. データセット
    Ego: 自動運転車
    Agent: 自動運転車が認識した周囲の移動物体
    予測したいのはこのAgentの5秒後(50 frames)の軌跡
    TestのSceneの10秒目の画像が評価
    対象だった。

    View Slide

  21. Our approach (14th place)
    ● 予測軌跡の移動距離が小さいほど大きく削るように調節
    ○ 6m以下を50%削る
    ○ 3m以下を更に50%削る
    ○ 1.5m以下を更に50%削る
    ○ 0.75m以下を更に50%削る
    ● データ数は削る前の約53%
    ● 全体として6m以下・以上の割合が1:2になる
    これでおおよそデータ数が5,760,000くらいになる。
      1エポック 12時間くらい!

    View Slide

  22. Our approach (14th place)

    View Slide

  23. 11th place solution
    ● ResNet18
    ● Rastesr size (150, 150)
    ● Batch size: 512
    ● 408000 iterations
    Learning rateを下げながら学習を回し続けるとスコ
    アが良くなり続けた。
    データをたくさん生成できる課題だったので、そういう
    場合はデータ拡張よりも愚直に学習させるとしっかり
    精度が良くなる。
    (自動運転はこの性質が強いかも。)
    僕らのチーム

    View Slide

  24. まとめ
    ★ Kaggleは様々なコンペがあるので、データも面白いものが多い。
    ★ 「Data-centric」という視点で見ても、昔から興味深いコンペは多い
    ★ Kaggleのコンペ出たい。

    View Slide