日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【天池赛事】零基础入门语义分割-地表建筑物识别 Task6:分割模型模型集成

發布時間:2024/10/8 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【天池赛事】零基础入门语义分割-地表建筑物识别 Task6:分割模型模型集成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【天池賽事】零基礎入門語義分割-地表建筑物識別

  • Task1:賽題理解與 baseline(3 天)
    – 學習主題:理解賽題內容解題流程
    – 學習內容:賽題理解、數據讀取、比賽 baseline 構建
    – 學習成果:比賽 baseline 提交

  • Task2:數據擴增方法(3 天)
    – 學習主題:語義分割任務中數據擴增方法
    – 學習內容:掌握語義分割任務中數據擴增方法的細節和使用
    – 學習成果:數據擴增方法的實踐

  • Task3:網絡模型結構發展(3 天)
    – 學習主題:掌握語義分割模型的發展脈絡
    – 學習內容: FCN、 Unet、 DeepLab、 SegNet、 PSPNet
    – 學習成果:多種網絡模型的搭建

  • Task4:評價函數與損失函數(3 天)
    – 學習主題:語義分割模型各種評價函數與損失函數
    – 學習內容: Dice、 IoU、 BCE、 Focal Loss、 Lovász-Softmax
    – 學習成果:評價/損失函數的實踐

  • Task5:模型訓練與驗證(3 天)
    – 學習主題:數據劃分方法
    – 學習內容:三種數據劃分方法、模型調參過程
    – 學習成果:數據劃分具體操作

  • Task6:分割模型模型集成(3 天)
    – 學習主題:語義分割模型集成方法
    – 學習內容: LookaHead、 SnapShot、 SWA、 TTA
    – 學習成果:模型集成思路

Task6:分割模型模型集成

  • 1 學習目標
  • 2 集成學習方法
  • 3 深度學習中的集成學習
    • 3.1 Dropout
    • 3.2 TTA
    • 3.3 Snapshot
  • 4 本章小節

在上一章我們學習了如何構建驗證集,如何訓練和驗證。本章作為本次賽題學習的最后一章,將會講解如何使用集成學習提高預測精度。

本章講解的知識點包括:集成學習方法、深度學習中的集成學習和結果后處理思路。

1 學習目標

  • 學習集成學習方法以及交叉驗證情況下的模型集成
  • 學會使用深度學習模型的集成學習

2 集成學習方法

在機器學習中的集成學習可以在一定程度上提高預測精度,常見的集成學習方法有Stacking、Bagging和Boosting,同時這些集成學習方法與具體驗證集劃分聯系緊密。

由于深度學習模型一般需要較長的訓練周期,如果硬件設備不允許建議選取留出法,如果需要追求精度可以使用交叉驗證的方法。

下面假設構建了10折交叉驗證,訓練得到10個語義分割模型。

那么在10個CNN模型可以使用如下方式進行集成:

  • 對預測的結果的概率值進行平均,然后解碼為具體字符;
  • 對預測的字符進行投票,得到最終字符;

3 深度學習中的集成學習

此外在深度學習中本身還有一些集成學習思路的做法,值得借鑒學習:

3.1 Dropout

Dropout可以作為訓練深度神經網絡的一種技巧。在每個訓練批次中,通過隨機讓一部分的節點停止工作。同時在預測的過程中讓所有的節點都起作用。


Dropout經常出現在CNN網絡中,可以有效的緩解模型過擬合的情況,也可以在預測時增加模型的精度。

3.2 TTA

測試集數據擴增(Test Time Augmentation,簡稱TTA)也是常用的集成學習技巧,數據擴增不僅可以在訓練時候用,而且可以同樣在預測時候進行數據擴增,對同一個樣本預測三次,然后對三次結果進行平均。

for idx, name in enumerate(tqdm_notebook(glob.glob('./test_mask/*.png')[:])):image = cv2.imread(name)image = trfm(image)with torch.no_grad():image = image.to(DEVICE)[None]score1 = model(image).cpu().numpy()score2 = model(torch.flip(image, [0, 3]))score2 = torch.flip(score2, [3, 0]).cpu().numpy()score3 = model(torch.flip(image, [0, 2]))score3 = torch.flip(score3, [2, 0]).cpu().numpy()score = (score1 + score2 + score3) / 3.0score_sigmoid = score[0].argmax(0) + 1

3.3 Snapshot

本章的開頭已經提到,假設我們訓練了10個CNN則可以將多個模型的預測結果進行平均。但是加入只訓練了一個CNN模型,如何做模型集成呢?

在論文Snapshot Ensembles中,作者提出使用cyclical learning rate進行訓練模型,并保存精度比較好的一些checkopint,最后將多個checkpoint進行模型集成。


由于在cyclical learning rate中學習率的變化有周期性變大和減少的行為,因此CNN模型很有可能在跳出局部最優進入另一個局部最優。在Snapshot論文中作者通過使用表明,此種方法可以在一定程度上提高模型精度,但需要更長的訓練時間。

4 本章小節

在本章中我們講解了深度學習模型做集成學習的各種方法,并以此次賽題為例講解了部分代碼。以下幾點需要同學們注意

  • 集成學習只能在一定程度上提高精度,并需要耗費較大的訓練時間,因此建議先使用提高單個模型的精度,再考慮集成學習過程;

  • 具體的集成學習方法需要與驗證集劃分方法結合,Dropout和TTA在所有場景有可以起作用。

  • 使用交叉驗證訓練模型,得到多個模型權重;

  • 學習Snapshot和TTA的具體用法;

總結

以上是生活随笔為你收集整理的【天池赛事】零基础入门语义分割-地表建筑物识别 Task6:分割模型模型集成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。