天池賽事 零基礎入門語義分割 地表建築物識別

2021-10-19 13:59:13 字數 3339 閱讀 8102

本次新人賽是 datawhale 與天池聯合發起的[零基礎入門系列賽事——零基礎入門語義分割之地表建築物識別]。

賽題以計算機視覺為背景,要求選手使用給定的航拍影象訓練模型並完成地表建築物識別任務。為更好的引導大家入門,我們為本賽題定製了學習方案和學習任務,具體包括語義分割的模型和具體的應用案例。在具體任務中我們將講解具體工具和使用和完成任務的過程。

本次賽事分為兩個階段,分別為正式賽及長期賽。

在正式賽後,本場比賽將長期開放,報名和參賽無時間限制。每天每位參賽選手可提交 3 次完成初賽打分;排行榜每小時更新,按照評測指標得分從高到低排序;排行榜將選擇歷史最優成績進行展示。

資料說明

評價函式

賽題使用dice coefficient來衡量選手結果與真實標籤的差異性,dice coefficient可以按畫素差異性來比較結果的差異性。dice coefficient的具體計算方式如下:

2 ∗∣

x∩y∣

∣x∣+

∣y

∣\over }

∣x∣+∣y

∣2∗∣

x∩y∣

​其中x是**結果,y為真實標籤的結果。當x與y完全相同時dice coefficient為1,排行榜使用所有測試集的平均dice coefficient來衡量,分數值越大越好。

filename

size

link

test_a.zip

314.49mb

test_a_samplesubmit.csv

46.39kb

train.zip

3.68gb

train_mask.csv.zip

97.52mb

q:使用預訓練模型出現視訊記憶體溢位問題

a:1. 減小模型訓練的batch size;2. 更換硬體條件【建議:先隨機從訓練集中抽取一些資料跑通baseline】。

q: baseline中transform.normalize裡的引數是官方建議的標準化引數嗎?

a:使用預訓練的模型時,輸入資料要與預訓練的資料做同樣的處理,即保持類似的分布,不同框架以及不同預訓練模型的引數不同,以pytorch為例,可參考文件:

q:如何安裝gdal、rasterio、tqdm等庫?

a:在jupyter notebook中使用!pip install some_package --user或者在terminal中使用pip install some_package --user命令。

注:

opencv(cv2)安裝命令:python -m pip install opencv-python

q:關於天池的常見問題,如資料掛載、第三方庫安裝、dsw操作等a:請參考天池的新手文件:

q:**執行有問題,或者環境配置完後但使用不了第三方庫

a:1. 重啟kernel或者python服務;2.若涉及到路徑,請檢視路徑是否包含中文【雖然python3對中文編碼進行了處理,但最好還是優先使用英文:)】;3. 重新建立新的虛擬環境,重新配置第三庫【防止原始環境的第三方庫版本不適合】。

q:天池儲存空間達到上限【免費空間為5g】,無法安裝庫或者解壓資料等操作

a:1.若條件允許,優先使用本地計算機操作;2.若本地條件不允許,可使用kaggle或colab;3.適合薅羊毛的平台:贈送8元點券,每邀請乙個好友贈送8元】和註冊後有100元的註冊券,可以免費用20+小時,邀請乙個好友送50】

q:賽題內容以及baseline的講解直播如何**?q:**output = model(image)['out']中的['out']能不能刪除

a:不能,baseline中的fcn模型有兩個輸出,只取out部分。

a:1. 天池解壓可能導致檔案損壞;2. 檢視檔案路徑是否正確。

q:如何切換相應環境的kernel?

a:分以下兩步:

conda install ipykernel #安裝外掛程式

python -m ipykernel install --name name #將環境新增到jyputer中(name是此環境顯示在jyputer中的名稱,可自定義)

```

q:資料擴充那裡有乙個resize成256*256有什麼特殊作用嗎?a:在fcn中對資料輸入的尺寸沒有要求,所以該大小可以自由調整,但是要對解析度和占用空間做個權衡。

q:幾個提公升模型精度的思路

a:1. 使用更強的資料增強方法;2. 模型調參,如學習率、影象尺寸等;3. 調整優化演算法、損失函式,考慮正則方法;4 . 更換更強模型,如unet、deeplab等;5. 考慮整合方法;6. ……

注:

注意樣本的分配,繪製學習曲線,基於模型的學習效果(是否過擬合、欠擬合)來確定合適的優化策略;

具體請參考本次學習的pdf教程以及datawhale往期的學習~

q:如何載入本地模型引數?a:兩種方法:

# 先初始化模型,再讀取模型引數(適用於檔案只儲存了引數)

model = themodelclass(

*args,

**kwargs)

model.load_state_dict(torch.load(path, map_location=device)

)#map_location為切換裝置

# 直接讀取模型(適用於檔案既儲存了模型結構以及引數)

model = torch.load(path, map_location=device)

a:可使用映象:

q:rle編碼shape要求必須是512麼?若將編碼引數shape改為128會導致識別率驟降麼?

a:1. shape不是必須為512的,但是編碼前和解碼後的影象尺寸要一樣(本題影象資料的尺寸為512*512,所以該引數設為512);2.rle只是編碼,不是降維,如果直接改shape,就相當於編碼內容錯誤,所得資訊不是影象的正確表達,自然識別率會驟降。所以在本題中,先編碼成512,之後隨便縮放。

Datawhale 零基礎入門CV賽事

本章將會講解卷積神經網路 convolutional neural network,cnn 的常見層,並從頭搭建乙個字元識別模型。學習cnn基礎和原理 使用pytorch框架構建cnn模型,並完成訓練 卷積神經網路 簡稱cnn 是一類特殊的人工神經網路,是深度學習中重要的乙個分支。cnn在很多領域都...

Datawhale 零基礎入門CV賽事

在機器學習模型 特別是深度學習模型 的訓練過程中,模型是非常容易過擬合的。深度學習模型在不斷的訓練過程中訓練誤差會逐漸降低,但測試誤差的走勢則不一定。在模型的訓練過程中,模型只能利用訓練資料來進行訓練,模型並不能接觸到測試集上的樣本。因此模型如果將訓練集學的過好,模型就會記住訓練樣本的細節,導致模型...

零基礎入門語義分割 Task2 資料擴增

顏色變換 kernel filters mixing random erasing opencv的資料擴增 albumentations資料擴增 pytorch 處理 顧名思義,資料擴增的原因是原始資料量不足,希望通過擴增達到 mnist 在 20 到20 之間沒問題 加大旋轉角可能會影響標籤 平移...