ISIC2018比賽經驗分享

2021-08-28 11:14:54 字數 1580 閱讀 3470

2023年5月到7月28號,我們實驗室(我們實驗室的**,歡迎加入我們實驗室~)參與了由醫學影象頂級會議miccai組織的2018 isic**病理影象分割和分模擬賽(比賽**)。其中我和另外乙個同學是參與了分模擬賽,在最終的排行榜上取得了第三名的成績(這個比賽每只隊伍可以提交3個answer, 前三個answer是乙隻隊伍。下面的第五名以及後續的第六名都是我們提交的結果。和前兩名的差距個人感覺主要是在資料方面(╯﹏╰)。

這個比賽前期只給了訓練集,訓練集有10015張**病理影象,有七類。每一類的名稱和數量如下**所示

疾病名稱

影象數量

mel1113

nv6705

bcc514

akiec

327bkl

1099

df115

vasc

142此外,每一張都是600x450的尺寸三通道rgb影象。影象的label由乙個groundtruth的csv檔案提供。

1.由於只有訓練集和label,所以我們將訓練集進行five-fold交叉驗證。但是在整個測試idea過程中,由於實驗室可用gpu數量限制,我們只是在其中乙個劃分上進行test。而那個劃分正好是五個劃分中,不同模型都在上面準確率最低的乙個劃分。

2.整個比賽中我們使用的baseline模型有不同層數的resnet、densenet、senet、pnasnet等。整體來看,名次比我們差的隊伍通常只用了resnet或者densenet2333…事實證明乙個好的模型(說的就是senet, pnasnet)在這種比賽中會佔據極大的優勢。

首先我們閱讀了往年參加isic比賽,並且取得較好名次的arxiv文章。發現他們通常會使用color constancy(色彩恆常性)的幾種演算法來進行預處理,即將原始資料集的所有換成經過color constancy演算法處理過的。這個部分是由我們實驗室另外乙個同學實現的,我們主要是用他實現好的演算法處理過後的。

這個分模擬賽最重要的難點就是類別不均衡,比賽官方採用mean class accuracy來進行排名。這意味著當模型判斷不准乙個只是簡單把它認為它屬於數量最多的那一類,因為這樣雖然會使模型在整個測試集上準確率很高,但是在較少數量類上的準確率會很低,進而導致mean class accuracy(mca)很低。

通常在分類任務中解決類別不均衡的乙個方法就是修改loss function,pytorch可以很方便地修改loss function使其加上class weight。在我們的實驗中發現加入class weight是乙個非常有效的方法。

為了解決樣本不均衡,我們嘗試了其他很多種方法比如不使用class weight使用focal loss**位址來作為模型的loss function, 經過多個模型的測試發現相比class weight,focal loss可以使整個模型在不同epoch時模型在測試集的準確率波動較小,但是峰值比不過class weight的結果。

其次我們還嘗試了一些其他的idea,比如multiscale,將不同尺寸的送入網路進行分類,將**結果結合起來,這個會有一定的效果。

比賽 NOIP2018 旅行

發現 m 只有兩種取值,於是可做了 樹的直接貪心 圖的列舉環上的邊去掉,然後做樹的貪心,搜的時候剪一下枝吧 寫得有點亂 include define ui unsigned int define ll long long define db double define ld long double ...

比賽 HNOI2018 總結

一將功成萬骨枯,我就是給那些隊爺做基數的 看完題,暴力好打,然後就打 覺得第三題模型很好建啊,先看第三題吧 結果第三題是最。的 圖建出來,先看樹的情況,設dp試一下 結果一直只想著一維的dp,沒去想0 1狀態表示是否選取,於是老久都沒想出來 第一題一開始沒看到30分的狀壓,突然看到,然後就趕緊碼一下...

2018春招面經集合

一 路口 二面掛 一 一面20180309 http狀態碼及含義 http請求頭報文的結構 http和 的區別,在哪一層加密 js中的原型和原型鏈 js中prototype 和 proto 的區別js中函式呼叫的方法 說一下閉包,為什麼要用它,解決方法 jq中實現鏈式呼叫的方法 bootstrap實...