0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何從13個(gè)Kaggle比賽中挑選出的最好的Kaggle kernel

新機(jī)器視覺 ? 來源:AI公園 ? 作者:Prince Canuma ? 2021-06-27 09:26 ? 次閱讀

導(dǎo)讀

覆蓋了模型相關(guān)的方方面面,從數(shù)據(jù)準(zhǔn)備到模型的推理,每個(gè)階段的方法和要點(diǎn),非常多的參考資料,足夠看一段時(shí)間了。

任何領(lǐng)域的成功都可以歸結(jié)為一套小規(guī)則和基本原則,當(dāng)它們結(jié)合在一起時(shí)會(huì)產(chǎn)生偉大的結(jié)果。機(jī)器學(xué)習(xí)和圖像分類也不例外,工程師們可以通過參加像Kaggle這樣的競(jìng)賽來展示最佳實(shí)踐。在這篇文章中,我將給你很多資源來學(xué)習(xí),聚焦于從13個(gè)Kaggle比賽中挑選出的最好的Kaggle kernel。

這些比賽是:

Intel Image Classification:https://www.kaggle.com/puneet6060/intel-image-classification

Recursion Cellular Image Classification:https://www.kaggle.com/c/recursion-cellular-image-classification

SIIM-ISIC Melanoma Classification:https://www.kaggle.com/c/siim-isic-melanoma-classification

APTOS 2019 Blindness Detection:https://www.kaggle.com/c/aptos2019-blindness-detection/notebooks

Diabetic Retinopathy Detection:https://www.kaggle.com/c/diabetic-retinopathy-detection

ML Project?—?Image Classification:https://www.kaggle.com/c/image-classification-fashion-mnist/notebooks

Cdiscount’s Image Classification Challenge:

https://www.kaggle.com/c/cdiscount-image-classification-challenge/notebooks

Plant seedlings classifications:

https://www.kaggle.com/c/plant-seedlings-classification/notebooks

Aesthetic Visual Analysis:

https://www.kaggle.com/c/aesthetic-visual-analysis/notebooks

我們會(huì)討論調(diào)試深度學(xué)習(xí)解決方案的三個(gè)主要方面:

數(shù)據(jù)

模型

損失函數(shù)

還有很多例子項(xiàng)目(和參考資料)供你參考。

數(shù)據(jù)

圖像預(yù)處理 + EDA

每一個(gè)機(jī)器學(xué)習(xí)/深度學(xué)習(xí)解決方案都從原始數(shù)據(jù)開始。在數(shù)據(jù)處理管道中有兩個(gè)基本步驟。第一步是探索性數(shù)據(jù)分析 (EDA)。它幫助我們分析整個(gè)數(shù)據(jù)集并總結(jié)它的主要特征,比如類分布、大小分布等等。通常使用可視化方法來顯示這種分析的結(jié)果。第二步是圖像預(yù)處理,目的是對(duì)原始圖像提高圖像數(shù)據(jù)(也稱為圖像特征)的質(zhì)量,通過抑制不必要的扭曲,縮放,增強(qiáng)重要的特征,使數(shù)據(jù)更適合模型并提高性能。你可以鉆研這些Kaggle筆記本,看看一些圖像預(yù)處理技術(shù):

Visualisation:

https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline#Building-a-baseline-model-

Dealing with Class imbalance:https://www.kaggle.com/rohandeysarkar/ultimate-image-classification-guide-2020

Fill missing values (labels, features and, etc.):https://www.kaggle.com/datafan07/analysis-of-melanoma-metadata-and-effnet-ensemble

Normalisation?:https://www.kaggle.com/vincee/intel-image-classification-cnn-keras

Pre-processing:

https://www.kaggle.com/ratthachat/aptos-eye-preprocessing-in-diabetic-retinopathy#3.A-Important-Update-on-Color-Version-of-Cropping-&-Ben‘s-Preprocessing

數(shù)據(jù)增強(qiáng)

數(shù)據(jù)增強(qiáng) 可以通過從現(xiàn)有的訓(xùn)練樣本中生成更多的訓(xùn)練數(shù)據(jù)來擴(kuò)展我們的數(shù)據(jù)集。通過大量的隨機(jī)轉(zhuǎn)換生成新的樣本,這些轉(zhuǎn)換不僅可以生成可信的圖像,而且還反映了真實(shí)的場(chǎng)景 —— 稍后將對(duì)此進(jìn)行詳細(xì)介紹。這種技術(shù)得到了廣泛的應(yīng)用,不僅僅是在訓(xùn)練模型的數(shù)據(jù)樣本太少的情況下。在這種情況下,模型開始記憶訓(xùn)練集,但無法泛化(在從未見過的數(shù)據(jù)上表現(xiàn)很差)。通常,當(dāng)一個(gè)模型在訓(xùn)練數(shù)據(jù)上表現(xiàn)很好,但在驗(yàn)證數(shù)據(jù)上表現(xiàn)很差時(shí),我們稱之為過擬合。為了解決這個(gè)問題,我們通常會(huì)嘗試獲取新數(shù)據(jù),如果沒有可用的新數(shù)據(jù),則可以使用數(shù)據(jù)增強(qiáng)。注:一般的經(jīng)驗(yàn)法則是始終使用數(shù)據(jù)增強(qiáng)技術(shù),因?yàn)樗兄谑刮覀兊哪P鸵娮R(shí)更多的變化并更好地泛化。即使我們有一個(gè)很大的數(shù)據(jù)集,也要使用數(shù)據(jù)增強(qiáng),但這是以較慢的訓(xùn)練速度為代價(jià)的,因?yàn)樵鰪?qiáng)是在線完成的(即在訓(xùn)練期間)。此外,對(duì)于每個(gè)任務(wù)或數(shù)據(jù)集,我們必須使用反映可能的現(xiàn)實(shí)場(chǎng)景的增強(qiáng)技術(shù)(例如,如果我們有一個(gè)貓/狗探測(cè)器,我們可以使用水平翻轉(zhuǎn)、剪裁、亮度和對(duì)比度,因?yàn)檫@些增強(qiáng)匹配不同的照片拍攝方式。這里是一些Kaggle比賽notebooks,你可以查看流行的數(shù)據(jù)增強(qiáng)技術(shù):

Horizontal Flip:

https://www.kaggle.com/datafan07/analysis-of-melanoma-metadata-and-effnet-ensemble

Random Rotate and Random Dihedral:https://www.kaggle.com/iafoss/pretrained-resnet34-with-rgby-0-460-public-lb

Hue, Saturation, Contrast, Brightness, Crop:https://www.kaggle.com/cdeotte/triple-stratified-kfold-with-tfrecords

Colour jitter:

https://www.kaggle.com/nroman/melanoma-pytorch-starter-efficientnet

模型

開發(fā)一個(gè)基線

在這里,我們使用一個(gè)非常簡(jiǎn)單的架構(gòu)創(chuàng)建一個(gè)基本的模型,沒有任何正則化或dropout層,看看我們是否能超過50%的準(zhǔn)確率基線。盡管我們不可能總能達(dá)到這個(gè)目標(biāo),但如果我們?cè)趪L試了多種合理的架構(gòu)后不能超過基線,那么輸入數(shù)據(jù)可能不包含模型進(jìn)行預(yù)測(cè)所需的信息。

用Jeremy Howard的名言:“你應(yīng)該能夠在15分鐘內(nèi)使用50%或更少的數(shù)據(jù)集快速測(cè)試你是否正在朝著一個(gè)有希望的方向前進(jìn),如果沒有,你必須重新考慮一切?!?/p>

開發(fā)一個(gè)足夠大可以過擬合的模型

一旦我們的基線模型有足夠的能力超過基線分?jǐn)?shù),我們就可以增加基線模型的能力,直到它在數(shù)據(jù)集上過擬合為止,然后我們就開始應(yīng)用正則化。我們可以通過以下方式增加模塊容量:

添加更多層

使用更好的結(jié)構(gòu)

更完善的訓(xùn)練流程

結(jié)構(gòu)

根據(jù)文獻(xiàn),以下架構(gòu)的改進(jìn)提高了模型的容量,但幾乎沒有改變計(jì)算復(fù)雜度。

Residual Networks

Wide Residual Networks

Inception

EfficientNet

Swish activation

Residual Attention Network

大多數(shù)時(shí)候,模型容量和精度是正相關(guān)的 —— 隨著容量的增加,精度也會(huì)增加,反之亦然。

訓(xùn)練過程

下面是一些你可以用來調(diào)整你的模型的訓(xùn)練過程,通過實(shí)例項(xiàng)目來看看它們是如何工作的:

Mixed-Precision Training

Large Batch-Size Training

Cross-Validation Set

Weight Initialization

Self-Supervised Training (Knowledge Distillation)

Learning Rate Scheduler

Learning Rate Warmup

Early Stopping

Differential Learning Rates

Ensemble

Transfer Learning

Fine-Tuning

超參數(shù)調(diào)試

參數(shù)不同,hyperparameters是由你在配置模型時(shí)指定的(即學(xué)習(xí)率、epoch的數(shù)量、hidden units的數(shù)量、batch size大小等)。你可以通過使用hyperparameter調(diào)優(yōu)庫,比如Scikit learn Grid Search,Keras Tuner來自動(dòng)化這個(gè)過程,而不是去手動(dòng)配置。這些庫會(huì)在你指定的范圍內(nèi)嘗試所有的hyperparameter組合,返回表現(xiàn)最好的模型。需要調(diào)優(yōu)的超參數(shù)越多,過程就越慢,因此最好選擇模型超參數(shù)的最小子集進(jìn)行調(diào)優(yōu)。并不是所有的模型超參數(shù)都同樣重要。一些超參數(shù)會(huì)對(duì)機(jī)器學(xué)習(xí)算法的行為產(chǎn)生巨大的影響,進(jìn)而影響其性能。你應(yīng)該小心地選擇那些對(duì)模型性能影響最大的參數(shù),并對(duì)它們進(jìn)行調(diào)優(yōu)以獲得最佳性能。

正則化

這種方法迫使模型學(xué)習(xí)有意義和具有泛化能力的數(shù)據(jù)表示,通過對(duì)記憶/過擬合和欠擬合進(jìn)行懲罰來實(shí)現(xiàn),使模型對(duì)于它沒見過的數(shù)據(jù)更魯棒。解決上述問題的一個(gè)簡(jiǎn)單方法是獲得更多的訓(xùn)練數(shù)據(jù),因?yàn)橐粋€(gè)模型訓(xùn)練的數(shù)據(jù)越多,自然就會(huì)泛化得越好。這里有一些技巧你可以試著減輕過擬合和欠擬合,項(xiàng)目如下:

Adding Dropout:https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline

Adding or changing the position of Batch Norm:https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline

Data augmentation:https://www.kaggle.com/cdeotte/triple-stratified-kfold-with-tfrecords

Mixup:https://arxiv.org/abs/1710.09412

Weight regularization:https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline

Gradient clipping:https://www.kaggle.com/allunia/protein-atlas-exploration-and-baseline

損失函數(shù)

損失函數(shù)也被稱為成本函數(shù)或目標(biāo)函數(shù),用于查找目標(biāo)輸出的模型之間的差異,并幫助模型最小化它們之間的距離。

這里是一些最流行的損失函數(shù),與項(xiàng)目實(shí)例,你會(huì)發(fā)現(xiàn)一些技巧,以提高你的模型的能力:

Label smoothing

Focal loss

SparseMax loss and Weighted cross-entropy

BCE loss, BCE with logits loss and Categorical cross-entropy loss

Additive Angular Margin Loss for Deep Face Recognition

評(píng)估 + 錯(cuò)誤分析

在這里,我們做消融研究,并分析我們的實(shí)驗(yàn)結(jié)果。我們確定了我們的模型的弱點(diǎn)和長(zhǎng)處,并確定了未來需要改進(jìn)的地方。在這個(gè)階段,你可以使用以下技術(shù),并在鏈接的示例中查看它們是如何實(shí)現(xiàn)的:

Tracking metrics and Confusion matrix:

https://www.kaggle.com/vincee/intel-image-classification-cnn-keras

Grad CAM:https://arxiv.org/pdf/1610.02391v1.pdf

Test Time Augmentation (TTA):

https://www.kaggle.com/iafoss/pretrained-resnet34-with-rgby-0-460-public-lb

有許多實(shí)驗(yàn)跟蹤和管理工具,采取最小設(shè)置為你自動(dòng)保存所有數(shù)據(jù),這使消融研究更容易。

最后

有許多方法來調(diào)整你的模型,并且新的想法總是會(huì)出現(xiàn)。深度學(xué)習(xí)是一個(gè)快速發(fā)展的領(lǐng)域,沒有什么靈丹妙藥。我們必須做很多實(shí)驗(yàn),足夠的試驗(yàn)和錯(cuò)誤會(huì)帶來突破。

英文原文:https://neptune.ai/blog/image-classification-tips-and-tricks-from-13-kaggle-competitions

—版權(quán)聲明—

來源丨AI公園 作者 | Prince Canuma 編譯 | ronghuaiyang

僅用于學(xué)術(shù)分享,版權(quán)屬于原作者。

若有侵權(quán),請(qǐng)聯(lián)系刪除或修改!

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • eda
    eda
    +關(guān)注

    關(guān)注

    71

    文章

    2654

    瀏覽量

    172174
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4237

    瀏覽量

    61969
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131846
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5422

    瀏覽量

    120593

原文標(biāo)題:圖像分類:來自Kaggle中13個(gè)項(xiàng)目的Tips和Tricks

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MOS管品牌之“巔峰對(duì)決”

    在電子世界的廣袤領(lǐng)域中,MOS管猶如一個(gè)個(gè)忠誠的衛(wèi)士,守護(hù)著電路的穩(wěn)定運(yùn)行。而當(dāng)我們探尋哪個(gè)品牌的MOS管最好時(shí),就如同在眾多英雄豪杰挑選出最耀眼的那顆星。首先,國際知名品牌英飛凌
    的頭像 發(fā)表于 08-30 12:34 ?163次閱讀
    MOS管品牌之“巔峰對(duì)決”

    工業(yè)生產(chǎn)中不可或缺的“操作利器”—RFID揀貨標(biāo)簽

    揀貨的發(fā)展過程是一個(gè)人工化到自動(dòng)化、智能化不斷演進(jìn)的過程!近年來,備受關(guān)注的“貨尋人”技術(shù)深受各企業(yè)的喜愛,能夠依據(jù)自身具體需求,在眾多揀選技術(shù)挑選出最佳匹配項(xiàng)。。那么,“貨到人”
    的頭像 發(fā)表于 07-15 15:50 ?188次閱讀
    工業(yè)生產(chǎn)中不可或缺的“操作利器”—RFID揀貨標(biāo)簽

    三星貼片電容挑選技巧是什么呢?

    其實(shí)關(guān)于三星貼片電容的挑選技巧首先要注意三星貼片電容的表面質(zhì)量以及功能,這是比較重要的兩個(gè)方面,一般情況下,建議企業(yè)用戶在挑選電容的時(shí)候,可以根據(jù)這兩個(gè)細(xì)節(jié)做
    的頭像 發(fā)表于 05-22 14:04 ?161次閱讀

    BP神經(jīng)網(wǎng)絡(luò)算法的基本流程

    訓(xùn)練經(jīng)過約50次左右迭代,在訓(xùn)練集上已經(jīng)能達(dá)到99%的正確率,在測(cè)試集上的正確率為90.03%,單純的BP神經(jīng)網(wǎng)絡(luò)能夠提升的空間不大了,但kaggle上已經(jīng)有人有卷積神經(jīng)網(wǎng)絡(luò)在測(cè)試集達(dá)到了99.3%的準(zhǔn)確率。
    發(fā)表于 03-20 09:58 ?1718次閱讀
    BP神經(jīng)網(wǎng)絡(luò)算法的基本流程

    NBA比賽收視率的背后是什么?

    在夏季季后賽之前,還有82場(chǎng)常規(guī)賽,那么賽程安排就是NBA的一個(gè)重要任務(wù)。30支球隊(duì)要進(jìn)行82場(chǎng)比賽,每支球隊(duì)市值都超過10億美元。僅電視轉(zhuǎn)播收入每年就超過20億美元,球迷和廣告商都希望他們的球隊(duì)
    的頭像 發(fā)表于 02-24 08:04 ?279次閱讀
    NBA<b class='flag-5'>比賽</b>收視率的背后是什么?

    【Rust AI】01. 使用Jupyter學(xué)習(xí)Rust

    ,例如根據(jù)乘客的特征預(yù)測(cè)乘客是否能夠幸存。這是一個(gè)適合數(shù)據(jù)分析和機(jī)器學(xué)習(xí)初學(xué)者的經(jīng)典數(shù)據(jù)集,廣泛用于 Kaggle 競(jìng)賽?!?/div>
    的頭像 發(fā)表于 01-14 11:16 ?1322次閱讀
    【Rust AI】01. 使用Jupyter學(xué)習(xí)Rust

    OpenCL多Kernel并行計(jì)算結(jié)果討論分析

    ]);` `}` `q.finish();` 只使用一組的一個(gè)Kernel,測(cè)試數(shù)據(jù)為512MB,Kernel的處理時(shí)間為52.4423ms,運(yùn)行總時(shí)間為516.355m
    發(fā)表于 12-31 21:31

    Kaggle知識(shí)點(diǎn):訓(xùn)練神經(jīng)網(wǎng)絡(luò)的7個(gè)技巧

    科學(xué)神經(jīng)網(wǎng)絡(luò)模型使用隨機(jī)梯度下降進(jìn)行訓(xùn)練,模型權(quán)重使用反向傳播算法進(jìn)行更新。通過訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型解決的優(yōu)化問題非常具有挑戰(zhàn)性,盡管這些算法在實(shí)踐中表現(xiàn)出色,但不能保證它們會(huì)及時(shí)收斂到一個(gè)良好的模型
    的頭像 發(fā)表于 12-30 08:27 ?545次閱讀
    <b class='flag-5'>Kaggle</b>知識(shí)點(diǎn):訓(xùn)練神經(jīng)網(wǎng)絡(luò)的7<b class='flag-5'>個(gè)</b>技巧

    kernel到android核心啟動(dòng)過程

    總結(jié)一個(gè)圖:kernel 到android核心啟動(dòng)過程 kernel鏡像執(zhí)行跳轉(zhuǎn)到start_kernel開始執(zhí)行,在rest_init會(huì)創(chuàng)建兩個(gè)
    的頭像 發(fā)表于 12-04 16:59 ?632次閱讀
    <b class='flag-5'>kernel</b>到android核心啟動(dòng)過程

    kernel的啟動(dòng)分為哪兩個(gè)階段

    kernel的啟動(dòng)主要分為兩個(gè)階段。 1、階段一 入口跳轉(zhuǎn)到start_kernel之前的階段。 對(duì)應(yīng)代碼arch/arm/kernel/
    的頭像 發(fā)表于 12-04 16:45 ?461次閱讀

    kernel日志寫入logd介紹

    kernel日志寫入logd介紹 通過logcat命令獲取kernel日志比較特殊,故作為一個(gè)例子進(jìn)行梳理。 2.3.1 整體流程 2.3.2 命令打印kernel日志 通過logca
    的頭像 發(fā)表于 11-23 17:11 ?484次閱讀
    <b class='flag-5'>kernel</b>日志寫入logd介紹

    立式磁棒電感廠家如何挑選

    12、如何挑選立式磁棒電感廠家.d
    發(fā)表于 11-20 09:33 ?0次下載

    時(shí)間序列分析的四個(gè)基本Python庫介紹

    在本文中,我們將介紹四個(gè)主要的Python庫——statmodels、tslearn、tssearch、 tsfresh ——每個(gè)庫都針對(duì)時(shí)間序列分析的不同方面進(jìn)行了定制。這些庫為預(yù)測(cè)到模式識(shí)別
    的頭像 發(fā)表于 11-03 10:17 ?659次閱讀
    時(shí)間序列分析的四<b class='flag-5'>個(gè)</b>基本Python庫介紹

    什么是 Jupyter Notebook

    等等。目前,數(shù)據(jù)挖掘領(lǐng)域中最熱門的比賽 Kaggle 里的資料都是 Jupyter 格式。對(duì)于機(jī)器學(xué)習(xí)新手來說,學(xué)會(huì)使用 Jupyter Notebook 非常重要。 什么是 Jupyter
    的頭像 發(fā)表于 10-16 11:15 ?3201次閱讀
    什么是 Jupyter Notebook

    瑞芯微RK3568|SDK開發(fā)之Kernel編譯

    本文介紹了如何使用Kernel手動(dòng)編譯1.1版本,并提供了詳細(xì)的編譯命令和過程。編譯過程包括進(jìn)入Kernel目錄、選擇默認(rèn)配置文件和編譯鏡像等步驟。
    的頭像 發(fā)表于 09-26 17:21 ?1250次閱讀
    瑞芯微RK3568|SDK開發(fā)之<b class='flag-5'>Kernel</b>編譯