Cornell Birdcall Identification コンペのリポジトリ
result
directory tree
Kaggle-Cornell-Birdcall-Identification
├── README.md
├── data <---- gitで管理するデータ
├── data_ignore <---- .gitignoreに記述されているディレクトリ(モデルとか、特徴量とか、データセットとか)
├── nb <---- jupyter lab で作業したノートブック
├── nb_download <---- ダウンロードした公開されているkagglenb
└── src <---- .ipynb 以外のコード
## Pipeline
- 実行例
```bash
python3 pipeline.py --globals.balanced=1 --globals.comment=test
python3 show_result.py -d 0
--shm-size=5G
gantt
title timeline
dateFormat YYYY-MM-DD
section Official
Competetion: a1, 2020-06-08, 2020-09-15
Entry deadline: a3, 2020-09-07, 2020-09-08
Team Merger deadline: a4, 2020-09-07, 2020-09-08
Final submission deadline: a2, 2020-09-14, 2020-09-15
section Score
Join!:2020-07-25, 2020-07-26
0.002(591/601): 2020-07-31, 2020-08-01
0.544(): 2020-08-02, 2020-08-03
0.560(506/805): 2020-08-14, 2020-08-15
0.562(457/1022): 2020-08-22, 2020-08-23
0.567(419/1150): 2020-08-30, 2020-08-31
Name | Detail | Ref |
---|---|---|
SpectrogramDataset | 5秒のSpectrogramを取得する。audiofileが5秒より短い場合、足りない部分に0 paddingする。5秒より長いものはランダムに5秒の部分を抽出する。 | 公開ノートブック(tawaraさん) |
SpectrogramEventRmsDataset | (バグ有り)SpectrogramDataset(SD)を改良。SDでは、鳥の鳴き声が入っていない部分を抽出する可能性があったのでそれを回避するために作った。librosa_rmsを使用し、バックグラウンドに比べてrmsが大きい値を取る時evet(birdcall)とした。 | nb012 |
SpectrogramEventRmsDatasetV2 | SpectrogramEventRmsDatasetにバグがあった(nb015)のでfix。 | nb015 |
SpectrogramEventRmsDatasetV3 | SpectorgramEventRmsDatasetV2を高速化。(nb017で作ったデータフレームを使用) | nb018 |
SpectrogramEventRmsDatasetV4 | 1sec 専用Dataset。V3で煩わしかった境界問題に対処した。 | nb021 |
PANNsDatasetMod | PANNs用。とはいえSpectrogramDatasetとほとんど同じ。スペクトログラムは計算せずに、signalをPANNsに渡すようになってる。 | nb024 |
PANNsDatasetEventRmsDataset | PANNs用。nb017_event_rmsを使用してevent部分で学習している。 | nb025 |
SpectrogramEventRandomDataset | nb034のeventデータを使う。event部分だけだと、小さな鳥の鳴き声が学習に入らない可能性があるため、event+random_cropを行なう。ratioパラメータがあり、足すeventの大きさを変えられる。 | nb043 |
Name | Detail | Ref |
---|---|---|
nb017_event_rms | liborsaのrmsを使用。ラウドネスを見ていると思えばいい。 | nb017 |
nb034_event_intensity_500to16000hz | 500~16000HzのスペクトルのIntensityをが大きいところをevent部分としている。 | nb034 |
Name | shape (feat only) | size(MB) | Detail |
---|---|---|---|
nb004_librosa_mfcc.csv | (21,375, 11) | 2.0 | librosaのmfcc(2~12)。audiofile1つにつき1ベクトル。srを揃えてないので周波数空間の大きさに差が有り問題がありそう。srを16kHzとかにそろえたほうがいいと思う。 |
nb007_librosa_mfcc02.csv | (4,779,859, 11) | 436.1 | nb004の特徴量の拡張。audiofile内のn_feat/m_audio/1_bird。nb004の特徴量よりかなりデータ数が多い。 |
nb008_librosa_basic | (4,779,859, 12) | 482.7 | ['rms', 'centroid', 'sc_1', 'sc_2', 'sc_3', 'sc_4', 'sc_5', 'sc_6', 'sb', 'sf', 'sr', 'zcr']。nb004と同じくsrを揃えていない問題がある。 |
nb010_librosa_rms.csv | (4779859, 3) | 144 | event部分だけ抽出する際のthresholdとして使う。 |
No. | Status | Name | Detail | Date | Url |
---|---|---|---|---|---|
01 | Done | 音響イベントと音響シーンの分析 | 日本語記事。まず最初に読むとよい。 | 2018 | url |
02 | Doing | PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition | アライさんがSEDの説明ノートブックで参照していた論文 | 201912 | url |
03 | Done | Recognizing Birds from Sound - The 2018 BirdCLEF Baseline System | 鳥の鳴き声を検出するコンペ?のベースライン。nocall除去についての方法が書かれていた。さらに、nocall部分をノイズとして加えたaugmentationがかなり効いたみたい。鳴き声は0.5~12kHzに集中するらしい。 | 201804 | url |
04 | Todo | ResNeSt: Split-Attention Networks | ResNeSTの原論文 | 202004 | url |
05 | Done | Weakly Labelled AudioSet Tagging with Attention Neural Networks | DCASEについての論文。弱ラベルのタスクについて。 | 2019 | url |
06 | Done | Robust Audio Event Recognition with 1-Max Pooling Convolutional Neural Networks | 音響イベント検知についての論文。1-Max Poolingについて。 | 201604 | url |
07 | Done | Adaptive pooling operators for weakly labeled sound event detection | 弱ラベルの音響イベント検知についての論文。 | 201804 | url |
08 | Done | Guided Learning Convolution System for DCASE 2019 Task 4 | DCASE TASK4(SED)の論文。CNNについて。 | 201909 | url |
09 | Done | Learning Sound Event Classifiers from Web Audio with Noisy Labels | ノイズが入ったラベルについて。 | 201901 | url |
10 | Done | SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition | SpecAugmentの原論文。 | 201904 | url |
11 | Done | SPECMIX: A SIMPLE DATA AUGMENTATION AND WARM-UP PIPELINETO LEVERAGE CLEAN AND NOISY SET FOR EFFICIENT AUDIO TAGGING | SpecMixの原論文。SpecAugmentに影響を受けている。 | 2019 | url |
12 | Done | Large-ScaleBird SoundClassificationusing Convolutional Neural Networks | 鳥の鳴き声をDLで検知する論文。nocall部分を除去する方法が知りたくて読む。 | 2017 | url |
13 | Done | Audio Based Bird Species Identification usingDeep Learning Techniques | 鳥の鳴き声をDLで検知する論文。テクニックがいろいろ載ってるっぽい。nocall部分を除去する方法が知りたくて読む。 | 2016 | url |
14 | Done | GENERAL-PURPOSE TAGGING OF FREESOUND AUDIO WITH AUDIOSET LABELS:TASK DESCRIPTION, DATASET, AND BASELINE | freesound audio tagging compのベースライン論文。とくに有用な情報はなかった。 | 2018 | url |
15 | Todo | [DL輪読会] Residual Attention Network for Image Classification | 日本語のスライド。Resnet+Attensionについて | 201709 | url |
Status | Name | Detail | Date | Url |
---|---|---|---|---|
Done | Freesound 7th place solution | アライさんたちのチームの解法。Strength Adaptive CropとCustom CNNが良さそう。 | 2019 | url |
Done | kaggle Freesound Audio Tagging 2019 4th place solution | freesound audio tagging 2019 4th solution。日本語資料。オレの誕生日に発表してるから良い資料のはず。signal base, image base 両方取り入れている。 | 20190713 | url |
Overview(DeepL)
窓の外で鳥のさえずりが聞こえてきませんか?世界には1万種以上の鳥が生息しており、手つかずの熱帯雨林から郊外、さらには都市部まで、ほぼすべての環境に生息しています。鳥は自然の中で重要な役割を果たしています。鳥は食物連鎖の上位に位置し、下層で発生している変化を統合します。そのため、鳥は生息地の質の低下や環境汚染の指標として優れています。しかし、鳥は目で見るよりも耳で聞く方が簡単なことが多い。適切な音の検出と分類があれば、研究者は鳥の個体数の変化に基づいて、その地域の生活の質に関する要因を自動的に直感的に把握することができます。
自然の音風景を長期間にわたって連続的に記録することで、鳥類を広範囲に監視するプロジェクトがすでに多く進行中である。しかし、多くの生物や非生物はノイズを発生させるため、これらのデータセットの分析は、多くの場合、専門家が手作業で行っています。このような分析は非常に時間がかかり、結果も不完全なものになりがちです。データサイエンスが助けになるかもしれないので、研究者たちはAIモデルを訓練するために、鳥類の集音録音の大規模なクラウドソースのデータベースに目を向けている。しかし残念なことに、トレーニングデータ(個々の鳥の短い録音)と、モニタリングアプリケーションで使用されるサウンドスケープ録音(複数の種が同時に鳴いていることが多い長い録音)の間には、領域的なミスマッチがあります。これが、現在使用されているAIモデルの性能が低い理由の一つです。
これらの広範で情報量の多いサウンドアーカイブの可能性を最大限に引き出すためには、研究者は、データ駆動型の保存を支援するために、可能な限り多くの情報を確実に抽出する優れた機械リスナーが必要です。
コーネル大学鳥類学研究所の保全生物音響センター(CCB)の使命は、自然界の音を収集し、解釈することです。CCB は革新的な保全技術を開発し、世界中の野生生物や生息地の保全に貢献しています。CCBはデータサイエンスのコミュニティと協力して、その使命をさらに高め、サウンドスケープ分析の精度を向上させたいと考えています。
このコンテストでは、サウンドスケープの録音物に含まれる多種多様な鳥の発声を特定します。録音が複雑なため、ラベルが弱いものが含まれています。人為的な音(例:飛行機の空飛ぶ音)やその他の鳥や非鳥の鳴き声(例:シマリスの鳴き声)が背景にあり、ラベル付けされた特定の鳥の種が前景にあるかもしれません。複雑なサウンドスケープの録音を分析するための効果的な検出器と分類器を構築するために、あなたの新しいアイデアを持ってきてください!
成功すれば、あなたの研究は、研究者が生息地の質の変化、汚染のレベル、修復作業の効果をよりよく理解するのに役立ちます。信頼性の高い機械リスナーはまた、保全活動家が世界中でより多くの録音ユニットを展開することを可能にし、まだ不可能な規模でのデータ駆動型の保全を可能にします。最終的な保全の成果は、鳥類や人間を含む多くの生物の生活の質を大きく向上させる可能性があります。
data(deepL)
隠されたtest_audioディレクトリには、MP3形式の約150の録音が含まれています。これらの録音はノートパソコンのメモリには同時に収まりません。録音は北米の3つの離れた場所で行われました。サイト1と2は5秒単位でラベル付けされており、予測値と一致する必要がありますが、ラベル付けプロセスに時間がかかるため、サイト3のファイルはファイルレベルでのみラベル付けされています。そのため、サイト3はテストセットの行数が比較的少なく、より低い時間分解能の予測が必要です。 別のデータソースからの2つのサウンドスケープの例も、サウンドスケープがどのようにラベル付けされているかと、隠しデータセットのフォルダ構造を説明するために提供されています。2つの例の音声ファイルはBLKFR-10-CPL_20190611_093000.pt540.mp3とORANGE-7-CAP_20190606_093000.pt623.mp3です。これらのサウンドスケープは、カリフォルニア科学アカデミー鳥類哺乳類学科のJack Dumbacher氏のご厚意により提供されました。
notebook: nb001 example: https://www.xeno-canto.org/134874
name | Explanation |
---|---|
rating | 録音の質を表す(A,B,C,D,Eの5段階) |
playback_sed | ... |
ebird_code | 名前。nunique=264 |
channels | チャンネル数。2種類('1 (mono)', '2 (stereo)') |
date | 録音日。yyyy-mm-ddで記述されている。<-- すべてそうなってるかは確認していない。 |
pitch | 'Not specified', 'both', 'increasing', 'level', 'decreasing'の5種類。nb001でそれぞれの音を聞いてみた。(log20200730), 正直何を表しているかわからん。 |
duration | audioファイルの再生時間。単位はseconds。 |
filename | そのままの意味。filenameにかぶりはなし(nb001)。 |
speed | Not specified, level, both, accelerating, decelerating の5種類。音を聞いたけど何が違うのか全然わからん。 |
species | 264種類。今回のクラス数と一緒だな。ebird_codeと一対一? |
number_of_notes | サイト見たけど、何の数かわからん。['Not specified', '1-3', '4-6', '7-20', '>20']の5種類 |
title | \ |
secondary_labels | メインの鳥の鳴き声以外のラベル。 |
bird_seen | 集音時に鳥を見たかどうか。 |
sci_name | 学名? |
location | 集音場所 |
latitude | 緯度 |
sampling_late | サンプリングレート |
type | song, call, fightなどある |
elevation | 標高。'1400 m' みたいな感じで入ってるが、string型。'? m' もある。 |
descriptin | audiofileにかかれているメタデータ。 |
bitrate_o_mp3 | stringで'128000 (bps)'のように格納されているが、8個だけNaNになっている(nb001) |
file_type | 4種類。それぞれの個数はmp3=21367, wav=6, mp2=1, aac=1となっている。 |
volume | 'Not specified', 'both', 'increasing', 'level', 'decreasing'の5種類。またこの指標出た。意味がわからん。 |
background | 背景音。xeno-cantにも記述されている。secondaly_labelsとどう違うのだろうか。 |
xc_id | filenameにある、XCと拡張子を除いた部分。例(XC134874.mp3 の134874がそれに当たる。重複なく各要素はユニーク。) |
url | xeno-cant へのリンクURL |
country | 集音した国 |
author | 集音者 |
primary_label | ebird_code は primary_labelの略っぽい。例: Empidonax alnorum_Alder Flycatcher --> aldfly |
longitude | 経度 |
length | 'Not specified', '0-3(s)', '6-10(s)', '>10(s)', '3-6(s)' が要素にある。'Not specified' がダントツで多い。 |
time | 集音開始時刻。朝が多め。 |
recordist | 調べてみたら(nb001)、authorとrecordistは完全に一致してた。 |
license | 4種類あった。あまり有用な情報ではないだろう。 |
not filter | filter |
---|---|
![]() |
![]() |
![]() |
![]() |
train.csv
train.csv | train.csvに記載のurl先 |
---|---|
![]() |
![]() |
xeno-cantoのレーティングの目安 A: Loud and Clear B: Clear, but bird a bit distant, or some interference with other sound sources C: Moderately clear, or quite some interference D: Faint recording, or much interference E: Barely audible
nb001
pub-kaggle-nbを見ながらどうやってサブするのかを見た。
test_audio
このノートブックではチェック用のデータ・セットが配られている。
libros.load() の引数にres_typeというものがある。リサンプルのタイプだ。res_type=’kaiser_fast’で早くすることもできる。
durationのminに0秒があるな
kagglenb_02_sub
外部データ・セット(726424_1262046_bundle_archive.zip)をダウンロード
nb004
nb005
nb006
nb007
kagglenb_02_nocall_only
このSample Submission File(公式) 見る感じ、複数の鳥が鳴いていればそれを予測するということか。
今後使いそうなNNの初手
nb008
nb006
nb004で作成した特徴量を使ってrfcモデルを作成する。
feat: nb004_librosa_mfcc
model: rfc
cv: 5-fold
kagglenb_04_sub
nb006のモデルを1つだけ使ってsubしてみた
result
timeoutになった場合でもsucseedになる可能性がある?
カエル先生のことほんとに見習わないといけない
これまでのところ、私のモデルは潜在的な二次ラベルのためにすべての0を出力するようにしています。私は一次二次ラベルを明確に分離していないので、各サンプルに対して264次元の1ホットベクトルを提供し、一次二次ラベルに対応する位置に1を配置します。サンプルが二次ラベルを持たない場合は、一次ラベルに対応する位置を除いてすべての要素が0であるベクトルを作成します。
カエル先生がそれぞれどのような戦略をとればいいかアドバイスしてくれてる。
mono_to_color は画像ごとに行っているけど大丈夫かな...
nb009
pytorch でCNNつくってるノートブック(https://www.kaggle.com/radek1/esp-starter-pack-from-training-to-submission)
評価指標について説明されてるディスカッション
かえる先生がvalidationについて言及しているディスカッション
kagglenb05(www.kaggle.com/fkubota/kagglenb05-from-nb010)
nb011
nb012
kagglenb06(https://www.kaggle.com/fkubota/kagglenb06-from-nb010-test-5times-predict?scriptVersionId=40707630)
nb013
kagglenb07(nb)
nb014
nb015
silent = ~any(event_mask)
が意図しない動作だったことが原因のようだ。nb016
project01(nb013がおかしい理由を追求する。nb016は、nb013のコピーで検証用。)
model.fc = nn.Linear(in_features=513, out_features=len(BIRD_CODE))
が原因。in_features=512
が正しい。nb016
nb017
rms = self.df_rms.query('filename == @basename').librosa_rms.values
nb018
nb019
nb010 より良くなってる!! | nb019(SED) | nb010 |
---|---|---|
![]() |
![]() |
memo
SpectrogramEventRmsDatasetV4 を作成。1sec で動かせるようにする。 1secモデルを作成する(debugモードで、50epochすぐ回るようにする(train_pathを減らせばいい)。early stopping を実装。) kernelで動作確認する nocall データセット作成する
kagglenb08
nb020
nb021
nb022
memo
kagglenb09
kagglenb10
kagglenb11
kagglenb12
nb023
hard label を作成する
nb017で作成したevnt_rms データフレームを使用する。
train wav それぞれに5secのラベルを付与する
wavファイルの数(birdごと)
最大100(100が多い)
最小9
result
失敗に終わった
以下3つの例で説明する
--> 失敗例
--> 灰色の部分の音を聞くと鳴き声が含まれている
--> 成功例
--> これは、非常にうまく言っている例
--> 失敗例
--> 1つ前の例と非常に類似していてうまくいっているようにも見える。
--> しかし実際には灰色領域にも小さいが鳥の鳴き声が聞こえている。
event_rms データフレームのまとめ。
actual \ predict | call | nocall |
---|---|---|
call | high | high |
nocall | low | low |
表でまとめてみた。
event_rmsデータフレームがcall(event)と判断したものが、実際にcallである場合は非常に多かった。(これまでの使い方に問題はなかった)
今回の試みは、nocall部分を抽出することであったがこれに失敗した。
event_rmsデータフレームが、nocallだと判断した部分には、多くのcallが含まれていた。
音響イベントと音響シーンの違い曖昧だったから、このPDF読んでよかった。
nb024
nb025
kagglenb13
kagglenb14
nb026
nb027
memo
kagglenb14
kagglenb15
issue#93をやる
nb028
nb026のbatch_size を変えて、tawaraさんと同じ状況にしてみるだけ。
tawaraさんのノートブックを真似してみただけ。
result
学習はうまくいっているように見える
birdcall-checkが結構違う...
prediction のコードが間違っているのかを確認するために以下の手順を踏んだ
tawara さんが学習したモデルをダウンロード
nb028のprediction loop にダウンロードしたモデルを使ってみる
result
---> tawaraさんの公開ノートブックの結果と同じものが出力された。
---> ということは、学習のコードに問題があることになる...
memo
nb029
nb030
nb029を改良
SpectrogramDataset を SpectrogramEventRmsDatasetに変更した
result
birdcall-checkのpredictはtawaraさんのpredictとやっぱちょっと違う。
まだ何か違うのかな...
nb031
nb032
tawara | nb029 | nb030 |
---|---|---|
![]() |
![]() |
![]() |
kagglenb17
ヒントクダサーイって言ってるdiscussion。少しの工夫で、0.675出たよって人がいるな...
SEDがなんでいいの?って質問してるdiscussion。アライさんが返信していて、なんか参考になりそうな予感。
freesound コンペの7th solution。アライさんたちのチームのソリューション。
もう一度、tarawaさんの、training notebookを見てみた。コメントとかを重点的に。
重要 url: tawaraさんのノートブックでのschedulerの更新位置がおかしかったことが報告されている。
nb033 <---- :::::::::::::::::::: 転回点 :::::::::::::::::::::::::
nb034
example1 | example2 |
---|---|
![]() |
![]() |
nb035
kagglenb18
kagglenb19
nb036
nb037
nb038
kagglenb20
kagglenb21
nb039
kaggglenb21の結果が悪いことの考察
mono_to_color
の正規化に問題があると指摘しているディスカッション。
午前中はdiscussionを死ぬほど眺めていた。
kagglenb22
nb040
kagglenb23
kaggnenb24
kagglenb25_fork_tawara_nocall
ここまでのsite3 predictionについてmindmapでまとめた。
これ読んだほうがよさそう: https://www.kaggle.com/c/birdsong-recognition/discussion/160222#895234
今日もパイプライン作っていく
hydraが解決している問題を紹介した記事を見つけた。すごくいい。
今日でパイプライン完成させる!!
augmentationについてのディスカッション: どれが効いたのかを議論している。
度々出てくるpytorchのエラーは、このissueで対応している。
pipelineのベータ版完成
pipelineにResNeStを追加
hydra 18-50-44
hydra 21-47-32
hydra 19-56-52
root4kaidoさんのトライ
nb042
昨日回した、hydra 19-56-52だけど、foldsを0, 1にしたはずなのに、うまくhydraに反映されてなかった。
hydra 00-37-59
hydra 08-18-23
run | val_loss | f1_macro | fold |
---|---|---|---|
2020-09-06/19-56-52/try0 | 0.009203 | 0.634128 | 0 |
2020-09-07/08-18-23/try0 | 0.009492 | 0.609316 | 1 |
---> 結構fold依存ありますねー
kagglenb26
kagglenb27
nb043
hydra 19-34-xx
imbaranced に対処
EventRandomDataset (from nb042) を追加
try0
ratio = 0.5
try1
ratio = 0.1
nb044
hydra 22-20-54
kagglenb28(baseline- LB: 0.563, f1_macro: 0.634)
kagglenb29(baseline- LB: 0.563, f1_macro: 0.634)
nb045
hydra 23-17-08
root4kaido さんと現状をまとめた
朝はアイデア出しした--> root4kaidoさんに提示して方向性の決定
hydra 05-22-33
hydra 05-29-29
5sec未満のデータの割合: 5.249 %
hydra 22-57-25(baseline: 0.634128)
hydra 23-39-25(baseline: 0.634128)
kagglenb30(baseline- LB: 0.563, f1_macro: 0.634)
kagglenb31(baseline LB: 0.563, f1_macro: 0.634)
hydra 16-53-33(baseline f1_macro: 0.634128)
新しいアイデア: 5secのスペクトログラムにマスクをかける。
kagglenb33
nb046
kagglenb32
kagglenb34
kagglenb35
nb047
kagglenb36
nb048
stride mask inference を評価したい
評価するフレームワークの作成
データを4種類に分けた
nocall dataset
site3
1bird
some birds
result
threshold, mask_num にかなり敏感
nb049
./../data/external_dataset/ff1010bird_selection/wav_32000/
nb050
score = 0.544*nocall*nocall_reduction + ((1-0.544)*(1-some_bird_ratio))*_1bird + ((1-0.544)*some_bird_ratio)*some_bird
(各モデルのLB_score - 各モデルのスコア)**2
の総和が最も小さくなるように最適化。---> この解析だと、mask_num=2, threshold=0.8が良いみたい。予想では、0.573のスコアが出るみたい。本当かよ。
kagglenb37
nb051
---> 再現あまりできてない...
nb052
kagglenb38
kagglenb39
kagglenb40
kagglenb41
Rank(prv(pub)) | Detail | URL |
---|---|---|
1(7) | ソリューションの大部分はアライさんのSEDがもとになってる。外部データは使わず、4パターンの水増し(Pink noise, gaussian noise, gaussian snr, Gain)を使った。←gainて意味あんの??。モデルはdensenetに変更。lossは改造したもの?よくわからん。ensembleはvoting。4票以上入ればその鳥が存在するとしたようだ。ここのモデルはそれほどスコアがよくなかったがアンサンブルでスコアブーストした。 | url |
2(3) | publicでアライさんとずっと競ってた人。コントリビュータなのにすごいと思ってた。spectrogramを保存していた。ハンドラベリングしまくった。現実の世界では、距離が遠いと高周波数帯が減衰するので、0.5の確率で減衰させた。255番目のクラスとして、nocallを入れたがあまりスコアが上がらなかった。大きなネットワークは小さなネットワークより僅かに悪くなった。疑似ラベルはスコアを下げる方向になった。 | url |
3(4) | ソリューションには、データの拡張、モデリング、後処理という3つの主要な側面がある。水増しはtrainとtestデータの性質の違いを埋める重要な役割がある。S/N比0.5でgauussianノイズ入れる。バックグラウンドノイズもいれる(鳥が鳴いていないデータ。ソースはいろいろ。)。modified mixupをつかった(よくわかってない)。ランダムクロップの代わりにoofの予測確率を使った。←これいいな。外部データを使用した方がいい。信頼できるvalidationは持っていなかった。validationのときはファイルの最初の5secを用いた。後処理については、こちら。 | url |
4(6) | xeno-cantの外部拡張データセットを使った。スペクトログラムの差分(delta)が効いたみたい。secondary_labelを学習に使った。validationにはいくつかのスコアを用いている(discussion見て)。earlystoppingには、mAPを使ったようだ。EfficientNets (B3, B4, B5)を使った。data augmentationはめっちゃ効いた。バックグラウンドノイズデータセットを作成した。exsample test audioには、低周波数が含まれてなかったのでカットした。 | url |
5(5) | ドメインシフトとclipwise to framewiseの遷移にうまく対処したかった。snrおよびnocallの分布に関して、ターゲットの分布にできるだけ近い検証/テストセットが必要だった。validationセットでは、nocallの比率を変化させたセットを用意した。nocallを新しいクラスとしてみたが機能しなかった。trust LB。トランジットの問題?あるので、水増しはあまり効かないが多くの時間を費やしてしまった。<---でも最終サブには水増しいれてるらしい。Clipwise-->Framewiseについて。5sec cropの時、secondary labelとnocallの扱いが難しい。これには、label のsmoothingが効いた。clipwise to framewiseの話がおもしろい。これはディスカッションで見たほうがいい。 | url |
著者 | Ref |
---|---|
trtd | url |
ymicky06 | url |
fkubota | url |
enu_kuro | url |
nino_pira | url |
arai | url |