Upgrade to Pro — share decks privately, control downloads, hide ads and more …

なぜ俺は銀メダルなのか 25th solutionから⾦メダルへとの差分考える「BirdCLE...

Avatar for Ryushi Ryushi
June 22, 2025
520

なぜ俺は銀メダルなのか 25th solutionから⾦メダルへとの差分考える「BirdCLEF2025振り返り」

Avatar for Ryushi

Ryushi

June 22, 2025
Tweet

Transcript

  1. NAME Works Kaggle achievement Ryushi データサイエンティスト Kaggle Competitons Master (2

    gold medals) HMS - Harmful Brain Activity Classification | Gold medal UM - Game-Playing Strength of MCTS Variants | Gold medal BirdCLEF2025+ | Silver medal(25th)
  2. sed 背景 近年の上位解法とSED 2023年以降の上位解法におけるSEDの使⽤ 1 2 3 4 5 6

    7 2023年 2024年 2025年 SED modelは上位において”⼀般的”な⼿法である ◯ △ ◯ ◯ △ △ ◯ ◯ ◯ ◯ ◯ ◯ ◯ ◯ ◯ ◯ ◯ : 解法に明記あり △ : 解法に明記なし Rank ◯ △ ◯ △ △
  3. SEDの実装 https://www.kaggle.com/code/hidehisaarai1213/introduction-to-sound-event-detection SEDの実装としてよく引⽤されるコードを2つ紹介する sed 背景 “HIDEHISA ARAI”⽒が 「Cornell Birdcall Identification」で公開してくれたnotebook

    公開は2020年だが、未だによく引⽤される https://github.com/LIHANG-HONG/birdclef2023-2nd-place-solution “RIHANPIGGY”⽒が 「BirdCLEF 2023」の2位解法として公開してくれたcode 解法の引⽤としてよく⾒かける
  4. kaggle コンペタスク理解 solution Audioデータは3種類。 test_soundscapesのAudioデータを5s毎に予測する。 0~N秒 : bird A 0~5秒

    : bird A 5~10秒 : bird B 55~60秒 : birdA … unlabeled_soundscapes/ test_soundscapes/ train_audio/ 0~M秒 :unknown 個別の⿃・両⽣類・哺乳類・昆⾍の短い録⾳ クリップが格納されたディレクトリ テスト⽤サウンドスケープと同じ地域 で取得された未ラベルのAudioを収め たディレクトリ notebookを提出すると約700件の1分間 のAudioファイルが配置され、スコア リングに使⽤されるディレクトリ。 予測は5s毎に⾏う 概要
  5. solution 概要 25th solution 全体概観 Train audio Past competiton audio

    Train(1st.) 1st single model Train soundscape (unlabeled data) Pseudo labeling Train(2nd.) 2nd single model Ryushi 2g Ryushi 2g s1_exp435 Ensemble s1_exp378 s1_exp269 bc119 bc118 bc112 0.863 / 0.864 0.865 / 0.871 0.857 / 0.866 0.863 / 0.889 unknown unknown s2_exp348 s2_exp294 bc132 bc111 0.901 / 0.899 0.898 / 0.902 0.896 / 0.896 0.894 / 0.894 ens020 0.908 / 0.910 (Pub./Pri.) (Pub./Pri.)
  6. solution Ryushi Solution (Ryushi part) preprocessing training inference onnx post

    processing parametor tuning sed model (freq.) augmentation human voice
  7. solution Ryushi Solution (Ryushi part) onnx post processing parametor tuning

    sed model (freq.) augmentation human voice preprocessing training inference
  8. solution Ryushi training :SED model Freq⽅向のsedでスコアが劇的に改善 freq⽅向に集約していたmodelをtime⽅向に集約することで、 Freq⽅向の特徴(Attention)が残りスコアが劇的に改善した Public score:

    0.875 0.898 上位はあまり⾔及していないuniqueな点であった。 ※もちろんsolutionに書いていないだけという可能性は多分に考えうる
  9. solution Ryushi training :Augmentation 使⽤したaug Mixup(1st stage P=0.8, 2nd stage

    P=0.5) XYMasking Background noise 少数サンプルのup sampling KAERURURU⽒の実装を参考にした (HTTPS://WWW.KAGGLE.COM/CODE/KAERUNANTOKA/BIRDCLEF2022-USE-2ND-LABEL-F0) Rihanpiggy⽒の公開データセットから追加した (https://www.kaggle.com/datasets/honglihang/background-noise) 2024年3rdのCPMP⽒のnotebook を参照した (https://github.com/jfpuget/birdclef-2024)
  10. solution Ryushi training :param tuning パラメータに敏感すぎる n_fftは⼤きめ2048が良い Image sizeも(昨年⽐) ⼤きめが良い

    Backboneもparamが多いものが良い Epoch数を5変えるだけでスコアが⼤きく変わる 昨年は224✗224もあったが今年は更に⼤きいサイズを要求された Efficient netもおおきめのv2_sなどが効いていた。終盤のdiscussionでも同じ傾向で議論が⾏われていた checkpoint soupを⽤いて対策を⾏った。(次スライド参照) このあたりのtuningをsubすることでしかできなかったのが⾟い 周波数分解能が強く出るようなパラメータが今年は有効
  11. solution Ryushi training :param tuning(checkpoint soup) Epoch数でscoreが⼤きく変わる問題に対処するために 後半 ! "

    epochのCheckpointに対して、 Checkpoint soupを使⽤ Epoch:1 Epoch:2 Epoch:N Epoch:N-1 Epoch:𝟐 𝟑 𝑵 ・・・ ・・・ スコアが(ある程度)安定
  12. solution Ryushi Solution (Ryushi part) onnx post processing parametor tuning

    sed model (freq.) augmentation human voice preprocessing training inference
  13. solution Ryushi inference Post processing: 予測ラベルの平滑化 各5秒クリップの予測を、直前の 2 クリップおよび直後の 2

    クリップと少しずつ混ぜ合わせる形で平滑化 カーネル [0.1, 0.2, 0.4, 0.2, 0.1] を⽤いた畳み込みで予測値をスムージング ONNX: 短い推論時間に適応させる ONNXを⽤いて推論を⾼速化する。 上位にはopenvinoを⽤いた解法も存在
  14. reflection 反省 多段階学習 : 1st place 3rd stageを実装したが、publicが⼤幅悪化したのですぐ撤退 1,2,5,6,7,10位は何かしらの多段階学習の記述あり Our

    Gold bc111-1 0.894 0.894 0.874 0.892 bc114-1 結果的にPrivateでは微悪だったが、Publicにfitしにいく このコンペ中の⼼理状態ではこのアイディアを詰めれなかった public private 2nd stage: 3rd stage:
  15. reflection 反省 多段階学習: 1st place solution Pseudo labelingを複数回⾏うことでスコア向上 ノイズを含む学習データを複数回反復学習する⽅法を知って いたので、4回の反復学習を⾏い、各段階で擬似ラベルの検出

    ⼒を調整しながらLBの結果を検証し、⼀貫してLBの向上を 実現しました。 しかし、この⾃⼰学習の魔法は5回⽬の擬似ラベル反復で機能 しなくなりました。これ以上の改善は⾒られなかったため、 新たな反復学習を試みることは中⽌しました。
  16. reflection 反省 多段階学習: 1st place solution うまく多段化pseudo labelingを⾏う⼯夫 多段階pseudo labelingをそのまま使うと、イテレーションを重

    ねるごとに疑似ラベルのノイズが増⼤し、有効な学習信号が埋 もれてしまう。 各クラスの予測確率をべき乗変換(右図は1.82)することで、 もともと⾼い確率のサンプルは相対的に維持され、中程度以下 の確率(ノイズ寄り)はさらに⼩さく抑えられる。
  17. reflection 反省 多段階学習: 5th place solution 蒸留を⽤いてラベルの信頼度を上げていく 1st stage ”train_audio”を5foldで学習する

    2nd stage “train_audio”には、たくさんの⿃が鳴いている。これは 本来鳴いているにもかかわらず⾒落としているラベルが あるのではないか? 3rd stage “train_soundscapes” も⾃⼰蒸留に追加し学習 ⾃⼰蒸留を複数回繰り返すことで,ノイズは抑えつつ ラベルを段階的に追加
  18. reflection 反省 少数サンプル対策 2024年7thの解法から着想を得て、少数サンプルの別学習を実施 少数ラベルに対して独⾃の対策をしている解法が散⾒ Our Gold exp231 0.842 0.851

    0.839 0.854 exp231_minority008 public private Privateにはある程度効果があった模様 数実験したが、publicで向上が⾒られなかったので撤退した
  19. reflection 反省 少数サンプル対策 : 12th place solution Backboneを凍結し、headのみ少数クラスを再学習 input まず全クラスで事前訓練したbackboneを凍結し、これらの少数クラスでSEDヘッドのみを訓練

    Backbone All species HEAD Minority species HEAD Freeze prediction Backbone共有のため推論速度にほとんど影響なし かつ Public / Private 両⽅の LB スコアが向上
  20. reflection 参考 Validationはやはりむずかった 2nd place solution いくつかの検証(バリデーション)戦略をしていた。 それらの戦略の核⼼には、「主要ラベル(primary_label)による 層化抽出」があります。その後、サンプル数の少ない種 (undersampled

    species)をどう扱うかを考えました。 試した⽅法 1. 各フォールドに最低1サンプルを追加(軽微なリーケージ許容) 2. 1を適⽤しつつ、追加サンプルを対応トレーニングから除外 3. undersampled speciesを全てトレーニングに集約し、バリデー ションから除外 実際に使ったのは… 「⽅法1」と「⽅法3」を組み合わせ。 ⼤幅にモデルを改善した後は両者とも⼤きく伸びましたが、 AUC で1%程度の微調整レベルでは、ほとんど相関が⾒られない。
  21. reference 本資料のコンペページ BirdCLEF+ 2025 https://www.kaggle.com/code/hidehisaarai1213/introduction-to-sound-event-detection Introduction to Sound Event Detection

    https://github.com/LIHANG-HONG/birdclef2023-2nd-place-solution birdclef2023-2nd-place-solution https://www.kaggle.com/competitions/birdclef-2025 “HIDEHISA ARAI”⽒が「Cornell Birdcall Identification」で公開してくれたnotebook “RIHANPIGGY”⽒が「BirdCLEF 2023」の2位解法として公開してくれたnotebook https://www.kaggle.com/c/rfcx-species-audio-detection/discussion/211007 How to use SED “SHINMURA0”⽒によるSEDの使い⽅discussion
  22. reference 「BirdCLEF+ 2025」の1位解法 1st Place Solution: Multi-Iterative Noisy Student Is

    All You Need https://www.kaggle.com/competitions/birdclef-2025/discussion/583699 2nd Place. Journey Down the Rabbit Hole of Pseudo Labels https://www.kaggle.com/competitions/birdclef-2025/discussion/583312 5th place solution: Self-Distillation is All You Need https://www.kaggle.com/competitions/birdclef-2025/discussion/583577 「BirdCLEF+ 2025」の2位解法 「BirdCLEF+ 2025」の5位解法 https://www.kaggle.com/competitions/birdclef-2025/discussion/583592 12th place solution 「BirdCLEF+ 2025」の12位解法