<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 圖像分類(lèi):來(lái)自13個(gè)Kaggle項目的經(jīng)驗總結

圖像分類(lèi):來(lái)自13個(gè)Kaggle項目的經(jīng)驗總結

發(fā)布人:數據派THU 時(shí)間:2023-04-24 來(lái)源:工程師 發(fā)布文章

任何領(lǐng)域的成功都可以歸結為一套小規則和基本原則,當它們結合在一起時(shí)會(huì )產(chǎn)生偉大的結果。


機器學(xué)習和圖像分類(lèi)也不例外,工程師們可以通過(guò)參加像Kaggle這樣的競賽來(lái)展示最佳實(shí)踐。


在這篇文章中,我將給你很多資源來(lái)學(xué)習,聚焦于從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ì )討論調試深度學(xué)習解決方案的三個(gè)主要方面:


  • 數據

  • 模型

  • 損失函數


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


數據


  • 圖像預處理 + EDA


圖片


每一個(gè)機器學(xué)習/深度學(xué)習解決方案都從原始數據開(kāi)始。在數據處理管道中有兩個(gè)基本步驟。


第一步是探索性數據分析 (EDA)。它幫助我們分析整個(gè)數據集并總結它的主要特征,比如類(lèi)分布、大小分布等等。通常使用可視化方法來(lái)顯示這種分析的結果。


第二步是圖像預處理,目的是對原始圖像提高圖像數據(也稱(chēng)為圖像特征)的質(zhì)量,通過(guò)抑制不必要的扭曲,縮放,增強重要的特征,使數據更適合模型并提高性能。


你可以鉆研這些Kaggle筆記本,看看一些圖像預處理技術(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


  • 數據增強


圖片


數據增強可以通過(guò)從現有的訓練樣本中生成更多的訓練數據來(lái)擴展我們的數據集。通過(guò)大量的隨機轉換生成新的樣本,這些轉換不僅可以生成可信的圖像,而且還反映了真實(shí)的場(chǎng)景 —— 稍后將對此進(jìn)行詳細介紹。


這種技術(shù)得到了廣泛的應用,不僅僅是在訓練模型的數據樣本太少的情況下。在這種情況下,模型開(kāi)始記憶訓練集,但無(wú)法泛化(在從未見(jiàn)過(guò)的數據上表現很差)。


通常,當一個(gè)模型在訓練數據上表現很好,但在驗證數據上表現很差時(shí),我們稱(chēng)之為過(guò)擬合。為了解決這個(gè)問(wèn)題,我們通常會(huì )嘗試獲取新數據,如果沒(méi)有可用的新數據,則可以使用數據增強。


注:一般的經(jīng)驗法則是始終使用數據增強技術(shù),因為它有助于使我們的模型見(jiàn)識更多的變化并更好地泛化。即使我們有一個(gè)很大的數據集,也要使用數據增強,但這是以較慢的訓練速度為代價(jià)的,因為增強是在線(xiàn)完成的(即在訓練期間)。


此外,對于每個(gè)任務(wù)或數據集,我們必須使用反映可能的現實(shí)場(chǎng)景的增強技術(shù)(例如,如果我們有一個(gè)貓/狗探測器,我們可以使用水平翻轉、剪裁、亮度和對比度,因為這些增強匹配不同的照片拍攝方式。


這里是一些Kaggle比賽notebooks,你可以查看流行的數據增強技術(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


模型


圖片


  • 開(kāi)發(fā)一個(gè)基線(xiàn)


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


用Jeremy Howard的名言:


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


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


一旦我們的基線(xiàn)模型有足夠的能力超過(guò)基線(xiàn)分數,我們就可以增加基線(xiàn)模型的能力,直到它在數據集上過(guò)擬合為止,然后我們就開(kāi)始應用正則化。我們可以通過(guò)以下方式增加模塊容量:


  • 添加更多層

  • 使用更好的結構

  • 更完善的訓練流程


結構


根據文獻,以下架構的改進(jìn)提高了模型的容量,但幾乎沒(méi)有改變計算復雜度。


  • Residual Networks

  • Wide Residual Networks

  • Inception

  • EfficientNet

  • Swish activation

  • Residual Attention Network


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


訓練過(guò)程


下面是一些你可以用來(lái)調整你的模型的訓練過(guò)程,通過(guò)實(shí)例項目來(lái)看看它們是如何工作的:


  • 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


超參數調試


圖片


與參數不同,hyperparameters是由你在配置模型時(shí)指定的(即學(xué)習率、epoch的數量、hidden units的數量、batch size大小等)。


你可以通過(guò)使用hyperparameter調優(yōu)庫,比如Scikit learn Grid Search,Keras Tuner來(lái)自動(dòng)化這個(gè)過(guò)程,而不是去手動(dòng)配置。這些庫會(huì )在你指定的范圍內嘗試所有的hyperparameter組合,返回表現最好的模型。


需要調優(yōu)的超參數越多,過(guò)程就越慢,因此最好選擇模型超參數的最小子集進(jìn)行調優(yōu)。


并不是所有的模型超參數都同樣重要。一些超參數會(huì )對機器學(xué)習算法的行為產(chǎn)生巨大的影響,進(jìn)而影響其性能。你應該小心地選擇那些對模型性能影響最大的參數,并對它們進(jìn)行調優(yōu)以獲得最佳性能。


正則化


這種方法迫使模型學(xué)習有意義和具有泛化能力的數據表示,通過(guò)對記憶/過(guò)擬合和欠擬合進(jìn)行懲罰來(lái)實(shí)現,使模型對于它沒(méi)見(jiàn)過(guò)的數據更魯棒。


解決上述問(wèn)題的一個(gè)簡(jiǎn)單方法是獲得更多的訓練數據,因為一個(gè)模型訓練的數據越多,自然就會(huì )泛化得越好。


這里有一些技巧你可以試著(zhù)減輕過(guò)擬合和欠擬合,項目如下:


  • 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


損失函數


圖片


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


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


  • 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


  • 評估 + 錯誤分析


圖片


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


  • 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í)驗跟蹤和管理工具,采取最小設置為你自動(dòng)保存所有數據,這使消融研究更容易。


最后


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


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>