612. BirdCLEF 2024 | birdclef-2024
感谢比赛主办方今年举办的 BirdClef 与往年相比有所不同。提供的数据使我们得以探索一些SFDA(无源域适应)方法。我最终想实现 SFDA,如Google Research 博客中所述,但未能实现。
需要使用公开排行榜分数作为交叉验证。情况不太理想,但本地交叉验证得分相当高,且测试数据存在明显的域迁移。
使用 XCM 数据集以及 BirdClef 2021、2022、2023 进行预训练。
使用 BirdClef 2024 数据进行训练,训练和增强方式参考Kaggle Notebook。
最高公开/私有分数:0.66 / 0.63
所采用的方法概述于《UNSUPERVISED DOMAIN ADAPTATION FOR SPEECH RECOGNITION VIA UNCERTAINTY DRIVEN SELF‑TRAINING》。
mean(cosine) - std(cosine) 的未标注帧(文件+起始时间)。该步骤选出了约 21K 帧用于未标注数据。preds = []
preds1=train_fold(True)
preds.append(preds1)
for i in range(8):
set_seed(i)
preds2=train_fold(False)
preds.append(preds2)
predsa=np.stack([preds],axis=3)
diffs = []
for i in range(predsa.shape[1]):
p0 = predsa[0,i][:,0]
darr = []
for j in range(1,9):
pp = predsa[j,i][:,0]
d = cosine(p0,pp)
darr.append(d)
diffs.append(darr)
diffs = np.array(diffs)
soundscape_meta_df['cosine'] = diffs.sum(axis=1)
soundscape_meta_df['preds'] = [ p for p in predsa[0]]
eca_nfnet_l0 和 effnet_b0 的模型。错失机会,我本想组建另外两个模型的 ensemble,但受排行榜驱动,只选择了得分最高的 ensemble。
阅读讨论后,我应该使用 OpenVINO 来创建更好的 ensemble……我使用的是 PyTorch 脚本,只能使用两个模型。