<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          我的Kaggle第一金-Happywhale

          共 3204字,需瀏覽 7分鐘

           ·

          2022-05-16 00:04


          老肥今天和大家分享的是最近結(jié)束的Kaggle競(jìng)賽Happywhale - Whale and Dolphin Identification

          該競(jìng)賽為計(jì)算機(jī)視覺類型比賽,任務(wù)是識(shí)別鯨魚和海豚個(gè)體,評(píng)價(jià)指標(biāo)為MAP@5。在大佬隊(duì)友們的Carry下,我們隊(duì)最終位列第三,我也收獲了自己第一塊Kaggle金牌,下面就和大家一起分享一下我們團(tuán)隊(duì)本次比賽的方案。


          賽題描述

          本次比賽的數(shù)據(jù)包括來(lái)自28個(gè)不同研究機(jī)構(gòu)的30個(gè)不同物種的超過15,000個(gè)獨(dú)特的海洋哺乳動(dòng)物個(gè)體圖像。海洋研究人員已經(jīng)手動(dòng)識(shí)別并給出了個(gè)體標(biāo)注。對(duì)于每張圖像,我們的任務(wù)是預(yù)測(cè)個(gè)體 id(individual_id)。如果在測(cè)試數(shù)據(jù)中有些個(gè)體沒有在訓(xùn)練數(shù)據(jù)中觀察到,這些個(gè)體應(yīng)該被預(yù)測(cè)為新個(gè)體(new_individual)。

          賽題的評(píng)價(jià)指標(biāo)為MAP@5:


          解決方案

          我們整體通過“全身”、“魚鰭”兩條路徑進(jìn)行模型的訓(xùn)練和學(xué)習(xí),將兩條路徑學(xué)習(xí)得到圖像的Embedding進(jìn)行concat融合,最終計(jì)算Embedding之間的余弦相似度來(lái)獲得測(cè)試集的預(yù)測(cè)結(jié)果。

          首先是圖像預(yù)處理的部分,這一部分相當(dāng)關(guān)鍵,是本次比賽中重大的上分點(diǎn)之一。通過觀察數(shù)據(jù)集我們可以發(fā)現(xiàn)存在大量目標(biāo)占整個(gè)圖像比例較小的情況,我們需要提取圖像的顯著區(qū)域能有助于模型學(xué)習(xí),具體方案設(shè)計(jì)如下圖所示:

          1. 首先標(biāo)注5000余張?chǎng)L魚和海豚的身體圖片,使用yolov5訓(xùn)練顯著目標(biāo)檢測(cè), 每張圖片只檢測(cè)顯著目標(biāo), (參數(shù)設(shè)置mosaic=0, degrees=0, mixup=0)。

          2. 在訓(xùn)練集上推理, 將(num_box==0, num_box>1, score_box<0.4)的異常圖片重新標(biāo)注后重新訓(xùn)練檢測(cè)器。當(dāng)檢測(cè)到的魚身大于1個(gè)時(shí),通過相同類別的其他圖片進(jìn)行對(duì)比標(biāo)注

          3. 在測(cè)試集上推理, 對(duì)于(num_box>1, num_box==0)的圖片調(diào)整檢測(cè)器的score閾值和推理階段的分辨率(使用不同分辨率推理同一張圖), 異常圖片上會(huì)存在多個(gè)box, 再將box crop后與訓(xùn)練集特征進(jìn)行余弦度量, 如果距離大于0.5則選擇距離最近的box為該圖的顯著目標(biāo), 如果距離小于0.5選擇檢測(cè)得分較高的box。最終得到每一張圖片對(duì)應(yīng)一個(gè)box。

          在圖像顯著區(qū)域中我們還可以進(jìn)一步提取魚鰭區(qū)域來(lái)更進(jìn)一步的提升模型的性能,我們只使用包含魚鰭的圖像進(jìn)行訓(xùn)練并且推理包含魚鰭的圖像,當(dāng)圖像不包含魚鰭時(shí),我們使用全身圖像推理對(duì)測(cè)試集結(jié)果進(jìn)行填充。具體檢測(cè)的方法可以參照【1】這篇帖子。

          接下來(lái)是模型訓(xùn)練的部分,模型訓(xùn)練使用了在小模型例如efficientnetb5、小分辨率512 * 512上進(jìn)行Trick的調(diào)試選擇的方法以加快迭代速度,最終將系列Trick也就是漲分點(diǎn)使用到最終提交的大模型efficientnet_b7eca_nfnet_l2以及大分辨率768 * 768以及1024 * 1024上。

          在訓(xùn)練過程中,我們發(fā)現(xiàn)訓(xùn)練集的損失很低,同時(shí)驗(yàn)證機(jī)的損失要高很多。為了緩解過擬合的現(xiàn)象,我們從數(shù)據(jù)增強(qiáng)和特征空間的角度進(jìn)行優(yōu)化。

          1. 特征空間角度:backbone -> gempooling【2】 -> bnn-neck【3】 -> arcface(s=30, m=0.3) or adaface(m=0.3, h=0.333,s=30, t_alpha=0.01。由于arcface只度量余弦角度, 特征空間沒有進(jìn)行距離約束, 利用bnneck可以對(duì)特征空間進(jìn)行整形, 并且增加了特征區(qū)分的難度, 可以緩解過擬合問題(直接的表現(xiàn)便是漲點(diǎn))。至于adaface,在圖像質(zhì)量高的時(shí)候,讓損失函數(shù)更關(guān)注于hard samples,而當(dāng)圖像質(zhì)量低的時(shí)候,不再過度強(qiáng)調(diào)hard samples,同樣提升了性能。

          1. 數(shù)據(jù)增強(qiáng)角度:通過對(duì)數(shù)據(jù)集進(jìn)行分析,我們發(fā)現(xiàn)許多個(gè)體差異很大程度上依賴于紋理差異。因此,我們認(rèn)為銳化和灰度縮放可以使模型增加紋理的影響,減少對(duì)顏色的依賴。同時(shí)使用MixUp可以增加模型學(xué)習(xí)的難度,提升模型的泛化能力。

          魚鰭部分的訓(xùn)練和魚身部分的訓(xùn)練有所不同,未使用MixUp或是CutMix等混合增強(qiáng),采用的Head分別為arcface與curricularface,backbone為efficientnet_b7模型,分辨率大小為512 * 512,具體可以參考代碼【4】,魚身與魚鰭訓(xùn)練的Trick具有差異性,在魚身數(shù)據(jù)上work的在魚鰭上并不一定work,而兩者相結(jié)合則可以帶來(lái)較好的收益。

          在訓(xùn)練迭代的過程中,我們也使用了偽標(biāo)簽的技術(shù),該技術(shù)是本次競(jìng)賽的另一個(gè)重大上分點(diǎn)。生成偽標(biāo)簽的方法是使用不同的相似性閾值來(lái)生成測(cè)試集的預(yù)測(cè)結(jié)果,并將top1預(yù)測(cè)為new_id的樣本去除。同時(shí)由于偽標(biāo)簽集和驗(yàn)證集之間存在某個(gè)交集,我們計(jì)算偽標(biāo)簽集和驗(yàn)證集的相似度,并刪除具有高相似度得分的驗(yàn)證集的圖像,以確保離線得分與在線得分保持一致。


          step 1: 魚身的數(shù)據(jù)被用來(lái)訓(xùn)練模型。在進(jìn)行多模型集成后,在測(cè)試集上獲得具有較高閾值的偽標(biāo)簽。

          step 2: 我們進(jìn)一步使用step 1中的偽標(biāo)簽來(lái)輔助訓(xùn)練魚鰭模型,然后將魚鰭模型與魚身模型進(jìn)行集成,接著使用新的集成模型通過設(shè)置一個(gè)相對(duì)較低的閾值來(lái)獲得新的偽標(biāo)簽以進(jìn)行下一步迭代。

          最后是模型集成的部分,因?yàn)槲覀儗?shù)據(jù)分為十折進(jìn)行訓(xùn)練,當(dāng)使用兩個(gè)不同折的模型進(jìn)行集成時(shí)會(huì)出現(xiàn)標(biāo)簽泄露的問題(舉個(gè)簡(jiǎn)單例子,fold1的模型訓(xùn)練看見過 [0, 2, 3, 4, 5, 6, 7, 8, 9] 折的數(shù)據(jù)標(biāo)簽,其將1折的數(shù)據(jù)當(dāng)作驗(yàn)證集,而fold2的模型訓(xùn)練看見過 [0, 1, 3, 4, 5, 6, 7, 8, 9] 折的數(shù)據(jù)標(biāo)簽,當(dāng)fold1和fold2模型用于集成時(shí), 將fold1或是2來(lái)當(dāng)作驗(yàn)證集會(huì)發(fā)生泄露),而相同fold的模型之間集成則不會(huì)存在該問題(因?yàn)樗褂糜?xùn)練和驗(yàn)證數(shù)據(jù)之間沒有交叉),并且我們還可以通過貝葉斯優(yōu)化的方法對(duì)每個(gè)模型輸出Embdding進(jìn)行加權(quán)以獲得更高的線下驗(yàn)證分?jǐn)?shù)。

          那么如何對(duì)不同折之間的模型進(jìn)行集成呢,我們通過對(duì)不同折生成的提交文件中的推理結(jié)果進(jìn)行重新排序,通過對(duì)不同預(yù)測(cè)位置(top1-5)、不同fold的提交文件賦予不同的權(quán)值生成排序結(jié)果,具體可以參考【5】

          最后我們所采用的模型為魚身的b6、b7與nfnet_l2,魚鰭的兩個(gè)b7,將這些模型的同折的Embedding進(jìn)行加權(quán)拼接,將這些模型的[0、1、2、3]fold(十折中的前四折)生成的預(yù)測(cè)結(jié)果進(jìn)行重排得到最終的提交結(jié)果。

          不得不說(shuō),本次比賽收獲滿滿,感謝隊(duì)友之間的通力合作!他們也在國(guó)內(nèi)國(guó)外的社區(qū)上分享了方案【6、7、8】,大家也可以進(jìn)一步探索交流。

          參考資料

          1. https://www.kaggle.com/competitions/happy-whale-and-dolphin/discussion/310153
          2. https://arxiv.org/abs/1711.02512
          3. https://arxiv.org/abs/1903.07071
          4. https://www.kaggle.com/code/librauee/train-newpse-backfins-b7-512-curri-fold1
          5. https://www.kaggle.com/code/yamsam/simple-ensemble-of-public-best-kernels
            https://zhuanlan.zhihu.com/p/501387749
            https://www.kaggle.com/competitions/happy-whale-and-dolphin/discussion/319896
            https://www.kaggle.com/competitions/happy-whale-and-dolphin/discussion/319789


          ——END——

          覺得有用的話,就關(guān)注一下吧,感謝支持!







          瀏覽 78
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一级A片日B视频 | 影音先锋成人av电影 | 豆花网无码视频观看 | 天天干亚洲 | 黄色考逼视频免费观看网站www |