丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預覽,將在時失效
人工智能學術 正文
發(fā)私信給xyhncepu
發(fā)送

0

2019 Kaggle Freesound 音頻標注挑戰(zhàn)賽結(jié)果出爐,這是一份排名前 2 %的解決方案!

本文作者: xyhncepu 編輯:幸麗娟 2019-07-03 10:32
導語:一步步教你怎么復現(xiàn)!

雷鋒網(wǎng) AI 科技評論按:日前,2019 年 Kaggle Freesound 音頻標注挑戰(zhàn)賽宣告完結(jié),比賽結(jié)果也終于出爐。參賽者之一 Eric BOUTEILLON 是全球無縫支付解決方案提供商銀捷尼科集團(Ingenico Group)的一位產(chǎn)品負責人,他提交的解決方案在本次比賽中進入前 2% 排名,取得了第 8 名的成績,日前,他將解決方案分享在了 Github 上,詳細地介紹了該方案的復現(xiàn)步驟。

本開源庫的出發(fā)點

本開源庫提供了一個用于創(chuàng)建高效音頻標注系統(tǒng)的半監(jiān)督預熱管道,以及面向作者命名為 SpecMix 的多標簽音頻標注的一種新的數(shù)據(jù)增強技術。

在提交給 2019 年 Kaggle freesound 音頻標注挑戰(zhàn)賽的音頻標注系統(tǒng)中,我們應用了這些新技術。該挑戰(zhàn)賽是聲學場景和事件檢測和分類挑戰(zhàn)(DCASE 2019)的第二項任務挑戰(zhàn),目標包括使用在少量可靠、手動標注的數(shù)據(jù)以及擁有大規(guī)模詞匯設置的多標簽音頻標注任務中的大量噪聲網(wǎng)絡音頻數(shù)據(jù)上訓練的機器學習技術,來為每一測試幀預測音頻標簽。

TL;DR – 給我代碼!

在挑戰(zhàn)賽的公共排行榜上,該解決方案通過 Jupyter notebooks 運行得到的 lwlrap 值為 0.738,也就是說在本次比賽中排名第 8。

你還可以在公開的 Kaggle 數(shù)據(jù)集中找到 CNN-model-1 和 VGG-16 訓練的權重結(jié)果。需要注意的是,因為配額原因,作者沒有使用  git-lfs 將這些權重結(jié)果存儲下來。

安裝

該挑戰(zhàn)賽要求參賽者在 Kaggle 內(nèi)核中執(zhí)行推理而不改變其配置。因此,參賽者在比賽期間使用與 Kaggle 內(nèi)核配置相同版本的 pytorch 和 fastai 來加載本地生成的 CNN 權重是非常重要的。因此,參賽者選擇使用 pytorch 1.0.1 和 fastai 1.0.51 非常重要。

安裝方法 1:使用原作者的方法

要獲得與我的本地系統(tǒng)相同的配置,需在 GNU Linux Ubuntu 18.04.2 LTS 上測試以下步驟:

1、克隆這個開源庫:

git clone https://github.com/ebouteillon/freesound-audio-tagging-2019.git

2、安裝 anaconda3:https://docs.anaconda.com/anaconda/install/

3、輸入 linux 終端:

conda create --name freesound --file spec-file.txt

現(xiàn)在你已經(jīng)準備好了!

注意:我的配置已經(jīng)安裝了 CUDA 10,所以你可能必須根據(jù)自己在 spec-file.txt 中的配置調(diào)整 pytorch 和 cudatoolkit 的版本。

安裝方法 2 :使用 conda 推薦的軟件包

這個方法不能保證獲得與作者相同的配置,因為 conda 可能會更新安裝包。

1、克隆這個開源庫:

git clone https://github.com/ebouteillon/freesound-audio-tagging-2019.git

2、安裝 anaconda3

3、輸入 linux 終端:

conda update conda

conda create -n freesound python=3.7 anaconda

conda activate freesound

conda install numpy pandas scipy scikit-learn matplotlib tqdm seaborn pytorch==1.0.1 torchvision cudatoolkit=10.0 fastai==1.0.51 -c pytorch -c fastai

conda uninstall --force jpeg libtiff -y

conda install -c conda-forge libjpeg-turbo

CC="cc -mavx2" pip install --no-cache-dir -U --force-reinstall --no-binary :all: --compile pillow-simd

conda install -c conda-forge librosa

注意:

  • 我的配置已經(jīng)安裝了 CUDA 10,所以你可能需要根據(jù)自己的配置調(diào)整 pytorch 和 cudatoolkit 的版本

  • 你獲得的提醒可能不一致,因為我們使用的是 libjpeg-turbo

硬件/軟件

在挑戰(zhàn)賽期間,我使用了如下硬件/軟件配置:

  • 英特爾酷睿 i7 4790k

  • 英偉達 RTX 2080 ti

  • 24 GB RAM

  • Ubuntu 18.04.2 LTS

  • 安裝的 python 軟件包的詳細列表,另外在 requirements.txt 和 spec-file.txt 中可以獲取 conda(非常必要)。

  • 英偉達驅(qū)動程序 418.67, CUDA 10.1, CuDNN 7.3.1

復現(xiàn)結(jié)果

1、從 Kaggle 下載數(shù)據(jù)集(https://www.kaggle.com/c/freesound-audio-tagging-2019/data

2、(選擇項)從 Kaggle 下載我的權重數(shù)據(jù)集(https://www.kaggle.com/ebouteillon/freesoundaudiotagging2019ebouteillonsolution

3、解壓 input 文件夾解壓數(shù)據(jù)集,使你的環(huán)境如下:

── code
│   ├── inference-kernel.ipynb
│   ├── training-cnn-model1.ipynb
│   └── training-vgg16.ipynb
├── images
│   ├── all_augmentations.png
│   └── model-explained.png
├── input
│   ├── test│   │   └── ...
│   ├── train_curated
│   │   └── ...
│   ├── train_noisy
│   │   └── ...
│   ├── sample_submission.csv
│   ├── train_curated.csv
│   ├── train_noisy.csv
│   └── keep.txt
├── LICENSE
├── README.md
├── requirements.txt
├── spec-file.txt
└── weights
   ├── cnn-model-1
   │   └── work
   │       ├── models
   │       │   └── keep.txt
   │       ├── stage-10_fold-0.pkl
   │       ├── ...
   │       └── stage-2_fold-9.pkl
   └── vgg16
       └── work
           ├── models
           │   └── keep.txt
           ├── stage-10_fold-0.pkl
           ├── ...
           └── stage-2_fold-9.pkl

3、輸入命令行:

conda activate freesound

jupyter notebook

打開網(wǎng)頁瀏覽器,然后選擇要執(zhí)行的內(nèi)容。推薦順序如下:

祝你愉快!

注意:

  • 首先運行 training-*.ipynb,訓練其中一個模型。?

  • 在 CNN 模型訓練中,將創(chuàng)建一個 work 文件夾和一個 PREPROCESSED 文件夾,你可能想要更改它們的位置:這與更新 work PREPROCESSED 變量一樣簡單。

  • 如果你想在本地設置中與推理筆記一同使用給定的(或你自己得到的)權重,只需更新 models_list 所指向的文件夾路徑。我保留了在本次挑戰(zhàn)賽中 Kaggle 內(nèi)核所使用的路徑。

  • 使用了  Kaggle 數(shù)據(jù)集和我的權重數(shù)據(jù)集的推理內(nèi)核可以直接在  Kaggle  上獲?。?/span>

    https://www.kaggle.com/ebouteillon/12th-public-lb-inference-kernel-using-fastai

解決方案概述

音頻數(shù)據(jù)預處理

首先對音頻片段進行前端和末端靜音(閾值為 60 dB)的裁剪,然后以 44.1 kHz 的采樣速率、連續(xù)幀之間樣本的 347 的躍點長度、2560 個 FFT 組件及 20 Hz - 22050 Hz 范圍內(nèi)的頻率將音頻片段轉(zhuǎn)換成 128 波段的梅爾頻譜(mel-spectrogram)。最后是預處理,包括對得到的圖像進行正則化(均值=0,方差=1)處理,并將其復制到 3 個通道中。

模型概述

在本節(jié)中,我們將所使用的神經(jīng)網(wǎng)絡架構描述為:

  • 版本 1 由表 1 中自定義 CNN「CNN-model-1」和批量歸一化的 VGG-16 組成。兩者都以同樣的方式接受訓練。

  • 版本 2 只包含我們自定義的 CNN「CNN-model-1」,定義見表 1。

  • 版本 3 用于評估判別的獎勵,該版本的模型與版本 2 相同。

2019 Kaggle Freesound 音頻標注挑戰(zhàn)賽結(jié)果出爐,這是一份排名前 2 %的解決方案!

表 1:CNN-model-1。BN 指批量歸一化(Batch Normalisation),ReLU 指線性整流函數(shù)(Rectified Linear Unit)

數(shù)據(jù)增強

利用小型訓練集的一種重要技術是使用數(shù)據(jù)增強來擴充該訓練集。為此,我們開發(fā)了一個名為 SpecMix 的新的數(shù)據(jù)增強方法。它是對 SpecAugment(見參考文獻 1)的擴展,靈感來源于 mixup(見參考文獻 2)。

SpecAugment 應用 3 種轉(zhuǎn)換來增強訓練樣本:時間規(guī)整、頻率掩蔽和時間掩蔽。

mixup 通過計算兩個樣本輸入與目標的加權平均值來創(chuàng)建虛擬訓練示例。

SpecMix

SpecMix 從 SpecAugment 的兩個最有效的轉(zhuǎn)換中受到啟發(fā),并對它們進行擴展以創(chuàng)建虛擬多標注訓練示例:

1、使用頻率替換(Frequency replacement)的方法,讓 f 連續(xù)的梅爾頻率通道 [f0, f0+f) 由另一個訓練樣本代替,后者其中的 f 首先從頻率掩膜參數(shù) F 的最小化值到最大化值的均勻分布中選取,而 f0 從 [0, ν?f) 中選取,v 表示梅爾頻率通道的數(shù)量。

2、使用時間替換(Time replacement)的方法,t 連續(xù)的時間步長 [t0, t0+t) 由另一個訓練樣本代替,后者期期中的 t 首先從 0 到時間掩膜參數(shù) T 的均勻分布中選取,而 t0 則從[0, τ?t) 中選取,τ 表示時間樣本的數(shù)量。

3、計算新訓練樣本的目標(Target)用作每個原始樣本的加權平均權重。每個原始樣本的權重與該樣本的像素數(shù)量成正比。我們在頻率替換和時間替換中所采用的替換樣本是相同的,這給了我們新的計算目標如下: 

2019 Kaggle Freesound 音頻標注挑戰(zhàn)賽結(jié)果出爐,這是一份排名前 2 %的解決方案!

2019 Kaggle Freesound 音頻標注挑戰(zhàn)賽結(jié)果出爐,這是一份排名前 2 %的解決方案!

圖 1:mixup, SpecAugment 及 SpecMix 對比

其他的數(shù)據(jù)增強

我們添加了其他的數(shù)據(jù)增強技術。

  • SpecMix 之前使用 mixup 這一數(shù)據(jù)增強方法,得到一個小的改進(lwlrap 增加了+0.001)。首先將 mixup 應用于當前的批量處理,從而生成新樣本,然后將 SpecMix 應用于這些新創(chuàng)建的樣本。最后,將 mixup 和 SpecMix 結(jié)合應用到四個樣本上,最終生成單個樣本。

  • 縮放和裁剪:在 1 到最大值 105 之間的隨機縮放,使用 75% 的概率,可以得到一小的改善(lwlrap 增加了+0.001)。

  • 亮度:使用 75% 的概率來控制隨機亮度和對比度的變化。

訓練---預熱管道

在訓練時,我們將隨機抽取的樣本梅爾頻譜中 128 個增強的片段提供給網(wǎng)絡批量,并使用 十折交叉驗證設置和 fastai 庫(見參考文獻 4)。

訓練分 4 個階段進行,每個階段生成一個模型用于以下 3 件事:

  • 為下一階段的模型訓練做 預熱

  • 幫助對噪聲因素進行半監(jiān)督選擇

  • 參與測試預測(模型 1 除外)

本次比賽很重要的一點是不允許使用外部數(shù)據(jù)或預先訓練的模型。因此,我們下面展示的是本次比賽中僅使用的策展和噪聲集:

  • 第 1 階段:僅使用噪聲集從零開始訓練模型(model1),然后在噪聲集(lwlrap1)上計算交叉驗證的 lwlrap。

  • 第 2 階段:僅在策展集上訓練模型(模型 2),但使用模型 1 作為預訓練模型。然后在噪聲集(lwlrap2)上計算交叉驗證的 lwlrap。

  • 第 3 階段:讓我們開始半監(jiān)督學習:我們的算法從噪聲集中選擇樣本,模型 1 和模型 2 對該噪聲集進行的分類(基本)正確。該算法避免樣本受噪聲的干擾,并使幾何平均值(lwlrap1,lwlrap2)大于或等于 0.5。每個文件和每個標注最多選擇 5 個樣本。然后在選定的噪聲樣本上訓練模型(模型 3),并使用模型 2 作為預訓練模型。然后在噪聲集(lwlrap3)上計算交叉驗證的 lwlrap。

  • 第 4 階段:讓我們繼續(xù)半監(jiān)督學習:我們的算法再次從模型 3 嚴格正確分類的噪聲集中選擇樣本。該算法避免樣本受噪聲的干擾,并使 lwlrap3 = 1。然后在選定的噪聲樣本上訓練模型(模型 4),并使用模型 3 作為預訓練模型。

  • 最后一個階段:模型 2、模型 3 和模型 4 對測試集的集成預測。

 

2019 Kaggle Freesound 音頻標注挑戰(zhàn)賽結(jié)果出爐,這是一份排名前 2 %的解決方案!

圖 2:預熱管道

推理

為了進行推理,我們將 128 個時間樣本(2 秒)窗口中的測試音頻片段進行分割,其中的窗口是重疊的。然后將這些樣本輸入到我們的模型,以獲得預測結(jié)果。將所有鏈接到音頻片段的預測結(jié)果進行平均,以獲得最終預測結(jié)果。

這次競賽對測試預測推斷存在很大的限制:必須通過 Kaggle 內(nèi)核進行提交,并且有時間限制。由于我們的解決方案需要 GPU,對于完全未見過的測試集的推斷需要在不到一個小時內(nèi)完成。

為了適應這個硬性約束條件,我們做了如下決定:

  • 對所有模型使用相同的預處理和輸入;

  • 將最終的集成限制為 2 個模型;

  • 限制窗口的重疊;

  • 組織者所提供的未見過的測試集是公開測試集的三倍多所以我們確保在 1000 秒之內(nèi)推斷出公開測試集,這樣的話,就應該讓內(nèi)核在大約為 3000 秒的時間內(nèi)推斷出未見過的測試集,并確保時間波動的范圍在 20% 上下。

結(jié)果

為了評估系統(tǒng)的性能,我們在表 2 中展示了結(jié)果。結(jié)果包括,系統(tǒng)在經(jīng)過十折交叉驗證過的噪聲集和策展集上的性能評估,以及在公共排行榜上進行公告的測試集預測的評估值,使用的度量標準是 lwlrap(標注權重與標注排序的平均精度)

Model
 lwlrap noisy
lwlrap curatedleaderboard
model1
0.65057
0.41096
N/A
model2
0.38142
0.86222
0.723
model3 
0.56716
0.87930 
0.724
model4 
0.57590
0.87718
0.724
ensemble
N/A
N/A0.733

 表 2:使用預熱管道對 CNN-model-1 進行實證分析的結(jié)果

在試驗過程中,預熱管道各階段均生成了具有良好預測性能的模型。如圖 3 所示,每個模型都在公共排行榜上排名第 25 位,能夠讓我們獲得銀牌。此外,這些預熱模型本身帶來了足夠的多樣性,因為它們預測值的簡單平均值(lwlrap 0.733)在公共排行榜上排名第 16 位。

最終排名第 8 名的預測結(jié)果是由版本 1 產(chǎn)生,這是 CNN-model-1 和 VGG-16 給出的預測平均值,它們都以相同的方式訓練。 

2019 Kaggle Freesound 音頻標注挑戰(zhàn)賽結(jié)果出爐,這是一份排名前 2 %的解決方案!

圖 3:排行榜

結(jié)論

本 git 開源庫提供了一個用于創(chuàng)建高效音頻標注系統(tǒng)的半監(jiān)督預熱管道,以及面向作者命名為 SpecMix 的多標簽音頻標注的一種新的數(shù)據(jù)增強技術。這些技術同時利用干凈的和有噪聲的數(shù)據(jù)集,并顯示出良好的效果。

上述這些結(jié)果是可復現(xiàn)的,它的需求描述、復現(xiàn)的步驟和源代碼都可以在 GitHub1 上獲得。源代碼是在開放源碼許可(MIT)下發(fā)布的。

致謝

感謝我 5 歲兒子,他的大力支持才使這些成績有了可能。當我看著排行榜時,他說:「爸爸,你是最棒的,你會成為最棒的?!?/p>

我也感謝整個 kaggle 社區(qū)分享知識、想法和代碼。特別感謝 daisuke 在比賽中提供了內(nèi)核程序,特別感謝 mhiro2 提供了簡單 CNN 模型,并對所有的比賽組織者提出感謝。

參考文獻

[1] Daniel S. Park, William Chan, Yu Zhang, Chung-Cheng Chiu, Barret Zoph, Ekin D. Cubuk, Quoc V. Le, "SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition", arXiv:1904.08779, 2019.

[2] Hongyi Zhang, Moustapha Cisse, Yann N. Dauphin, and David Lopez-Paz. "mixup: Beyondempirical risk minimization". arXiv preprint arXiv:1710.09412, 2017.

[3] Eduardo Fonseca, Manoj Plakal, Frederic Font, Daniel P. W. Ellis, and Xavier Serra. "Audio tagging with noisy labels and minimal supervision". Submitted to DCASE2019 Workshop, 2019. URL: https://arxiv.org/abs/1906.02975

[4] fastai, Howard, Jeremy and others, 2018, URL: https://github.com/fastai/fastai

via https://github.com/ebouteillon/freesound-audio-tagging-2019#kaggle-freesound-audio-tagging-2019-competition  雷鋒網(wǎng)雷鋒網(wǎng)

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

2019 Kaggle Freesound 音頻標注挑戰(zhàn)賽結(jié)果出爐,這是一份排名前 2 %的解決方案!

分享:
相關文章
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
立即設置 以后再說