Closed shinmura0 closed 3 years ago
SpecAugment++の論文を読んだ。 https://arxiv.org/abs/2103.16858
SpecAugmentは音声にしか効果が表れなかったが、++になると 環境音でも効果ありそう。 (多分DCASE2018と19は環境音だと思う。)
論文の内容は、++になるとSpecAugmentとMixUpを上回るもの。 手法として3種類(ZM、MM、CM)を提案しているが、一番の おすすめはMMとのこと。
MMの原理は単純で、周波数の一部と時間の一部を他の音源のspecと 0.5ずつ混ぜるもの。音声以外にも効果があるのが納得できる仕組み。 ただ、specだけではなく、layerの出力を混ぜるとさらに効果が 出るようだが、実装が結構大変そう。
specだけ混ぜてもでもmixupとSpecAugmentを上回っているので、 お試しでspecだけ混ぜても良いかもしれない。(下の表のMMの{0})
効果があることが分かった。
PANNsに実装するのは苦労したが、予め混ぜる対象の音について、 mel-specをnumpy形式(私の場合はH250*W258)で保存しておいてランダムに 呼び出してpytorchに変換後、以下のように混ぜる。
これにより、PANNsでも動くし、結果的に混ぜる対象をsf.readしなくて 済むので高速に動くようになった。実装は以下。
https://www.kaggle.com/shinmurashinmura/bird2-ex46-train-rex150#Train-SED-model-with-only-weak-supervision
実装で、論文と違うところは以下のとおり。
SpecAugment++の論文を読んだ。 https://arxiv.org/abs/2103.16858
SpecAugmentは音声にしか効果が表れなかったが、++になると 環境音でも効果ありそう。 (多分DCASE2018と19は環境音だと思う。)
論文の内容は、++になるとSpecAugmentとMixUpを上回るもの。 手法として3種類(ZM、MM、CM)を提案しているが、一番の おすすめはMMとのこと。
MMの原理は単純で、周波数の一部と時間の一部を他の音源のspecと 0.5ずつ混ぜるもの。音声以外にも効果があるのが納得できる仕組み。 ただ、specだけではなく、layerの出力を混ぜるとさらに効果が 出るようだが、実装が結構大変そう。
specだけ混ぜてもでもmixupとSpecAugmentを上回っているので、 お試しでspecだけ混ぜても良いかもしれない。(下の表のMMの{0})