不寫一行代碼就能玩轉 Kaggle 競賽?
整理 | Jane
出品 | AI科技大本營(ID:rgznai100)
今天,我們要給大家介紹的這個工具特別推薦給以往只能仰望別人的,缺乏競賽技能和經驗的朋友,你不需要寫一行代碼就可以參與 Kaggle 競賽,甚至連安裝環境都免了。是不是很神奇?下面我們一起 get 一下這個「真香」的工具!
參賽項目,Freesound Audio Tagging 2019
Kaggel 的競賽項目 Freesound Audio Tagging 2019,同時也是 DCASE 2019 挑戰賽的任務之一(Task 2),今天不對這個競賽做過多介紹,感興趣的朋友們可以通過我們下面給出的鏈接訪問。
Freesound Audio Tagging 2019 是由 Freesound(MTG — Universitat Pompeu Fabra)和 Google 機器感知組舉辦的,數據通過 Freesound Annotator 收集,比賽參考論文:
(1)《Audio tagging with noisy labels and minimal supervision》
https://arxiv.org/pdf/1906.02975.pdf
(2)《FREESOUND DATASETS: A PLATFORM FOR THE CREATION OF OPEN AUDIO DATASETS》
https://ismir2017.smcnus.org/wp-content/uploads/2017/10/161_Paper.pdf
隨著 AI 技術的不斷發展與落地,有越來越多的平台和工具可供大家使用,這些平台針對不同領域、不同層次的開發者和學習者,只要你想學就有辦法。但問題是,對於剛入門,沒有多少經驗,對 TensorFlow、PyTorch 等工具和框架也不熟悉的人,能參加這樣的競賽嗎?
不會寫代碼,也不會 TensorFlow、PyTorch,怎麼訓練模型?
Peltarion 平台 你值得擁有,訓練你的模型只需 5 步!
Peltarion 是怎樣的一個平台?它部署在雲端,在平台上你只需要簡單的「拖拉拽」就可以從0到1完成一個 AI 模型的創建到部署。平台給初始者提供了免費使用50 小時、共有 50 GB 的 GPU 存儲容量。
AI科技大本營也註冊了一個賬號,準備利用一下免費資源把模型跑起來。註冊賬號很簡單,先用一個郵箱在平台上註冊賬號,然後在郵箱中完成驗證,最後設置一個密碼——done。接下來就可以開始進入「正餐」環節,為了能讓大家使用該平台, 原作者和 Kaggle 競賽聯合起來,讓大家可以邊學邊用。
具體步驟示例0、獲取數據集
模型預訓練中要使用的數據集是 FSDKaggle 2019,已經在 Peltarion 平台經過預處理,所以音頻文件經過轉化,與 index.csv 一起保存為 Numpy 文件格式,所以,大家直接下載 dataset.zip 即可。
https://www.kaggle.com/carlthome/preprocess-freesound-data-to-train-with-peltarion/output
1、Project:一鍵創建
直接 New 一鍵即可建立一個新 project,可以保存為「project v1」。
2、數據集:Upload 或者 Import
新建的 project v1 在左側就可以看到,點擊 Datasets → New dataset 就可以上傳數據集。然後選擇剛剛下載的數據集,等待上傳,最後命名保存為「Audio」。
默認 80% 的數據集作為訓練集,其餘 20% 用於測試集。在頂部的 New feature set 進行捆綁,除 fname 外所有的功能,保存為「Lable」。右上角保存 version 後,就可以進一步建模了。
3、Modeling:一鍵創建深度學習項目
New Experiment 後進入 Modeling 界面,你可以在右側看到「Build」和「Settings」兩個工具選項幫助進行編譯模型。在這個示例中,訓練的是如下圖所示的聲譜圖,以完成圖片分類任務。
在該任務中,我們可以選擇 CNN 網路模型,比如 ResNetv2 large 50。(右側 Build-Snippets 中,有一些不同任務的模型可供選擇。)
接下來幾個步驟中,我們就在右側欄中設定模型的關鍵配置:
(1)在 Blocks 中添加 Input,Feature 選擇為 fname;
(2)添加 Batch normalization,勾選 Trainable;
(3)添加 Reshape,設置 Target Shape 為(256,256,1);
(4)在 Snippets 中添加 ResNetv2 large 50;
(5)單擊並刪除 ResNetv2 large 50 頂部「Input」 模塊;
(6)將 BN 塊連接到 ResNetv2 large 50 上
(7)更改 Dense 塊 中 Activation 為 ReLU,ReLU 經常在模型中被選為激活函數;
(8)在 Target 塊 之前再添加一個 Dense 塊,節點設置為 80,激活 sigmoid;
(9)將 Target塊 的 Feature 改為 Lable,Loss 為 Binary crossentropy;
(10)跳轉到 Settings 選項卡,配置模型的步長、epoch、優化器等;Batch 設為 28,適合 GPU 內存、epoch 設為 30,模型足以收斂、Optimizer 選為 Adam,這是一個很常用的標準優化器;
(11)上面的配置都完成後,點擊 RUN 就可以讓模型跑起來了。
4、Evaluating
模型訓練後,我們還需要對模型進行評估,在 Evaluating 界面,可以看到模型訓練的實時數據,我們關注的指標是 Precision 和 Recall。模型訓練完成後,可以直接下載,如果訓練了多個模型,記得下載模型精度最高的。
5、提交模型
首先,進入競賽頁面。點擊 New Kernel 連接到 Notebook,將下載的模型 H5 文件作為數據集添加。溫馨提示:要使用正確的 H5 文件路徑,添加下面這行代碼到 Kaggle notebook 中運行,此處注意保存路徑,後面會用到。
!find ../input-name "*.h5"
下面這段代碼可以直接複製-粘貼到 Kaggle notebook 中;將模型變數路徑更改為前面保存的路徑,最後點擊 Commit,完成。
import numpy as np
import pandas as pd
import librosa as lr
import tensorflow as tf
from tqdm import tqdm
model = tf.keras.models.load_model("../input/freesound-audio-tagging-2019-model/resnet50.h5", compile=False) ##Change
df = pd.read_csv("../input/freesound-audio-tagging-2019/sample_submission.csv", index_col="fname") ##Change
def preprocess(wavfile):
# Load roughly 8 seconds of audio.
samples = 512*256 - 1
samplerate = 16000
waveform = lr.load(wavfile, samplerate, duration=samples/samplerate)[0]
# Loop too short audio clips.
if len(waveform) < samples:
waveform = np.pad(waveform, (0, samples - len(waveform)), mode="wrap")
# Convert audio to log-mel spectrogram.
spectrogram = lr.feature.melspectrogram(waveform, samplerate, n_mels=256)
spectrogram = lr.power_to_db(spectrogram)
spectrogram = spectrogram.astype(np.float32)
return spectrogram
for fname, scores in tqdm(df.iterrows, total=len(df), desc="Predicting"):
spectrogram = preprocess("../input/freesound-audio-tagging-2019/test/" + fname)
scores = model.predict_on_batch(spectrogram[None, ...])[0]
df.loc[fname] = scores
df.to_csv("submission.csv")
競賽地址:
https://www.kaggle.com/c/freesound-audio-tagging-2019
通過上面的示例,大家也發現了,訓練模型的每一個步驟都在平台上內置好了,大家只需要托拉拽,勾勾選選的操作就可以訓練你的模型了,另外還有一些免費的 GPU 資源、內存使用。對於代碼不會寫,框架不會寫的你們來說簡直不要太好用!筆者的模型要準備跑起來了,你們的呢?
原文參考:
https://towardsdatascience.com/how-to-participate-in-a-kaggle-competition-with-zero-code-f017918d2f08
【END】
※小米崔寶秋:小米 AIoT 深度擁抱開源
※華為將發布鯤鵬 920 晶元數據;三星 S10 自燃;Mageia 7 正式發布 | 極客頭條
TAG:CSDN |