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

鳥蛙コンペ - Team Exodia

yuki
February 26, 2021

鳥蛙コンペ - Team Exodia

鳥蛙コンペ33rd place solution

yuki

February 26, 2021
Tweet

More Decks by yuki

Other Decks in Research

Transcript

  1. コンペ概要 3 ◎ 音声ファイル内に含まれる24種の鳥と蛙の鳴き声を当てるMultiLabel分類 ◎ 音声ファイルはすべて60秒 ◎ Clip単位の分類 ◎ 鳴き声の周波数、時間は学習データに含まれている

    ◎ 評価指標はlabel-weighted label-ranking average precision(LWLRAP) ◎ 学習データは2種類提供されている ◦ 鳴き声を自動で検出して ◉ 専門家レビューによって正しいと判断されたもの -> train_tp.csv(1132ファイル) ◉ 専門家レビューによって間違っていると判断されたもの -> train_fp.csv ✓自動検出できなかった鳴き声のラベルは欠損してしまうことがポイント
  2. 提出モデル 5 ◎ 提出モデルはSEDモデル3つ、not SEDモデル4つから成る7モデルのアンサンブル (PublicLB:0.927/PrivateLB:0.934) # model CV PublicLB

    PrivateLB 1 SED EfficientNet-B3 0.845 0.919 0.927 2 SED EfficientNet-B3 0.838 0.916 0.925 3 SED EfficientNet-B3 0.835 0.912 0.922 4 not SED ResNeSt50 0.863 0.893 0.908 5 not SED ResNeSt50 0.851 0.891 0.897 6 not SED Densnet121 0.806 0.886 0.894 7 not SED Densnet121 0.823 0.885 0.892 主にこれらついてお話します アンサンブルは加重平均ですが、OOF予測値がほとんど参考にならなかったので、 精度の低いモデルほどweightが低くなるように調整
  3. Model 6 ◎ PANNsアーキテクチャーのSEDモデル (shinmuraさんのディスカッションがベース) • Feature Extractor : EfficientNet-B3

    • Loss Function : BCELoss • Optimizer : SGD • Scheduler : CosineAnnealingLR • LR : 0.15 • CV : 4Fold multilabel-stratifiedkfold • Data Augmentation : denoise • train_fp、soudtype_idは使ってない waveform input Log-melspectrogram croped melspectrogram clipwise output framewise output output Data Augmentation Convert melspectrogram crop PANNs base SED (EfficientNet-B3) aggregate ✓ 学習率は0.15より下げると精度が落ちる(epoch数増やしてもダメ) ➢ 学習率は高いほうが良いと言っているnotebook有り ✓ Data Augmentationはいろいろ試したがほとんど効かなかった。Todaさんが 紹介されていたDenoiseをData Augmentationとして使うと効いた (0.912->0.919) ✓ ValidationデータにOverfitしないように5Fold CVではなく4Fold CVにした (どのくらい効果があったかは不明)
  4. 学習データ/検証・テストデータ 7 学習データ 検証・テストデータ Target ・ ・ ・ ・ ・

    ・ 60/9秒のwindowを半分ずつスライドさせながらcrop。1Clipあたり17枚の画像 が作成される。1Clip予測するのに17画像予測する必要がある。 (testと同じように評価するためにvalidationも17画像予測していたが、 missing labelのことを考えると、targetが存在する画像のみで評価したほうがよ かったかも。) train_tpのラベルが含まれるように60/9秒でrandom crop。周波数方向は切り 取らない。 60/2秒~60/20秒を実験したが60/9秒、60/10秒あたりが精度良かった。 17images 60 9 Sec. 256*1001pixel missing labelsへの対処をしていないのにもかかわらずそこそこ(?)の精度が出せたのは 60/9秒という秒数が鳴き声の情報を損なわず、ラベルが欠損している鳴き声が混入しづらい いい感じの秒数となったことが要因?( 60/6秒でcropした人が多い印象) 38位の人も60/6秒より、60/12秒のほうが良かったと言ってる。
  5. Didn't work 9 •Araiさんのnotebookで紹介されているAugmentationの他、mixup、 random brightness 、SpecAugment など、いろいろ試したがことごとく効かなかった(not SEDモデルではいくつか効くものもあった) Data

    Augmentation •そもそもmissing labelsへの対処をしておらず、Pseudo label自体の信頼性が低かったことが原因? Pseudo labeling(test/train、soft label/hard label) •Class3の精度が目立って低くかったため、Class3を2値分類で当てる専用モデル作成を試みたがうまくいかず Class3専用モデル •予測値に閾値を設けて閾値以上の値の和を求める(多く鳴いているもをより評価するイメージ) •各Classに係数をかけるような後処理。OOFが最大化するような係数を求めていたが、そもそもOOFが信頼できるもの ではなく、よい係数を求めることができなかった Post Process
  6. 反省 10 ◎ なんといってもmissing labelsへの対処を何もしていないこと。チーム内でもmissing labelに関 する議論はほとんどしていない。 ◦ データがどう作られたかよく考えなければいけなかった(よく言われているやつ) ◎

    見落としているディスカッションがあった ◦ 主催者の論文が存在することをソリューションを読んで知った ◦ (英語が苦手なのでディスカッション読むの結構しんどい) コンペ序盤から5人チームで参加したことはよかった! いつもは数か月も続かないモチベーションもなんとか保つことができた。 わからないことは教えてくれるし、間違いも指摘してくれるし最高。