<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>

          2019天池縣域農(nóng)業(yè)大腦AI挑戰(zhàn)賽冠軍方案分享

          共 4966字,需瀏覽 10分鐘

           ·

          2020-12-13 09:44

          【GiantPandaCV導(dǎo)語(yǔ)】本科畢業(yè)暑假到研究生開(kāi)學(xué)的空檔期,心血來(lái)潮地想找個(gè)比賽試水。本文是筆者在比賽過(guò)程中關(guān)于賽題的一些記錄和思考,賽后整理總結(jié),希望對(duì)有也有興趣參加數(shù)據(jù)競(jìng)賽的學(xué)弟學(xué)妹能有所幫助。由于筆者第一次接觸圖像分割任務(wù),知識(shí)水平有限,如有理解錯(cuò)誤的地方歡迎指正,感激不盡。

          比賽主頁(yè):

          2019 年縣域農(nóng)業(yè)大腦AI挑戰(zhàn)賽-天池大賽-阿里云天池: https://tianchi.aliyun.com/competition/entrance/231717/introduction

          相關(guān)代碼:

          github: https://github.com/lin-honghui/tianchi_CountyAgriculturalBrain_top1

          線上demo:

          天池7號(hào)館: https://tianchi.aliyun.com/museum7/?spm=5176.14046517.J_9711814210.24.330d3178iIJT5o#/newprodetail?productId=4

          0. 團(tuán)隊(duì)信息

          • 團(tuán)隊(duì)名稱:沖鴨!大黃
          • 團(tuán)隊(duì)成員:施江瑋、黃欽建、林宏輝(now_more: https://tianchi.aliyun.com/home/science/scienceDetail?userId=1095279428856)

          1. 賽題分析

          賽題任務(wù): 通過(guò)無(wú)人機(jī)航拍的地面影像,探索農(nóng)作物分割的算法,降低對(duì)人工實(shí)地勘察的依賴,提升農(nóng)業(yè)資產(chǎn)盤(pán)點(diǎn)效率。具體分割類別為薏仁米、玉米、烤煙、人造建筑(復(fù)賽新增),其余所有目標(biāo)歸為背景類;

          賽題數(shù)據(jù): 初賽與復(fù)賽提供的是同一片區(qū)域不同時(shí)期的無(wú)人機(jī)航拍影像,初賽數(shù)據(jù)大多為農(nóng)作物生長(zhǎng)的早期,特征不明顯,分割難度較大;復(fù)賽數(shù)據(jù)農(nóng)作物長(zhǎng)勢(shì)良好,并在初賽賽題基礎(chǔ)上增加了“建筑”類別;

          圖1-1 復(fù)賽訓(xùn)練集數(shù)據(jù)可視化,其中藍(lán)色區(qū)域?yàn)榭緹煟G色為玉米,紅色為薏仁米,黑色為建筑


          評(píng)估指標(biāo): mIoU

          難點(diǎn)分析: 類別不平衡、類間相似性、農(nóng)作物新地形場(chǎng)景泛化、標(biāo)注噪聲

          2. 整體方案

          2.1 數(shù)據(jù)預(yù)處理

          2.1.1 滑窗裁剪

          比賽提供的原始數(shù)據(jù)為分辨率幾萬(wàn)的PNG大圖,需對(duì)原始數(shù)據(jù)預(yù)處理,本次比賽中我們采取的是滑窗切割的策略,主要從以下三個(gè)方面考量:

          • 類別平衡: 過(guò)濾掉mask無(wú)效占比大于7/8的區(qū)域,在背景類別比例小于1/3時(shí)減小滑窗步長(zhǎng),增大采樣率;
          • patch: 實(shí)驗(yàn)中沒(méi)有觀察到patch對(duì)模型性能有顯著影響,最后采取策略同時(shí)保留1024和512兩種滑窗大小,分別用來(lái)訓(xùn)練不同的模型,提高模型的差異度,有利于后期模型集成;
          • 速度: 決賽時(shí)算法復(fù)現(xiàn)時(shí)間也是一定的成績(jī)考量,建議使用gdal庫(kù),很適合處理遙感大圖的場(chǎng)景。本地比賽中我們直接多進(jìn)程加速opencv,patch為1024時(shí),單張圖5~6min可以切完;

          最終采取的切割策略如下:

          • 策略一: 以1024x1024的窗口大小,步長(zhǎng)900滑窗,當(dāng)窗口中mask無(wú)效區(qū)域比例大于7/8則跳過(guò),當(dāng)滑動(dòng)窗口中背景類比例小于1/3時(shí),增加采樣率,減小步長(zhǎng)為512;
          • 策略二: 以1024x1024的窗口大小,步長(zhǎng)512滑窗,當(dāng)滑動(dòng)窗口中無(wú)效mask比例大于1/3則跳過(guò)。

          2.2.2 數(shù)據(jù)增強(qiáng)

          數(shù)據(jù)增強(qiáng)只做了常規(guī)的數(shù)據(jù)增強(qiáng),如:RandomHorizontalFlip、RandomVerticalFlip、ColorJitter等。由于數(shù)據(jù)采集場(chǎng)景是無(wú)人機(jī)在固定高度采集,所以目標(biāo)尺度較為統(tǒng)一,沒(méi)有嘗試scale的數(shù)據(jù)增強(qiáng)。

          2.2 模型選擇

          模型上我們隊(duì)伍沒(méi)有做很多的嘗試,下表整理了天池、Kaggle一些分割任務(wù)中大家常用的方案。初賽嘗試過(guò)PSPNet、U-Net等方案,但沒(méi)有調(diào)出比較好的分?jǐn)?shù),復(fù)賽都是基于DeeplabV3+(決賽5個(gè)隊(duì)伍里有4個(gè)用了DeeplabV3plus)backbone為Xception-65、ResNet-101、DenseNet-121。從復(fù)賽A榜分?jǐn)?shù)提交情況,DenseNet-121 backbone 分?jǐn)?shù)略高于另外兩個(gè),但顯存占用太大以及訓(xùn)練時(shí)間太長(zhǎng),在后來(lái)的方案里就舍棄了。本次賽題數(shù)據(jù)場(chǎng)景為大面積農(nóng)田預(yù)測(cè),直接用deeplabV3plus高層特征上采樣就有不錯(cuò)的效果,結(jié)合了底層特征預(yù)測(cè)反而變得零散。決賽算法復(fù)現(xiàn)時(shí),使用了兩個(gè)Xception-65和一個(gè)ResNet-101投票,投票的每個(gè)模型用不同的數(shù)據(jù)訓(xùn)練,增加模型差異。

          圖2-1 DeeplabV3+ 網(wǎng)絡(luò)框圖
          圖2-2 模型集成框圖

          3. 漲分點(diǎn)

          3.1 膨脹預(yù)測(cè)

          方格效應(yīng):比賽測(cè)試集提供圖像分辨率較大,無(wú)法整圖輸入網(wǎng)絡(luò)。如果直接無(wú)交疊滑窗預(yù)測(cè)拼接,得到的預(yù)測(cè)結(jié)果拼接痕跡明顯。

          原因分析:網(wǎng)絡(luò)卷積計(jì)算時(shí),為了維持分辨率進(jìn)行了大量zero-padding,導(dǎo)致網(wǎng)絡(luò)對(duì)圖像邊界預(yù)測(cè)不準(zhǔn)。

          圖3-1 方格效應(yīng):邊緣預(yù)測(cè)不準(zhǔn),拼接痕跡明顯

          膨脹預(yù)測(cè):采用交疊滑窗策略(滑窗步長(zhǎng)<滑窗窗口大小),預(yù)測(cè)時(shí),只保留預(yù)測(cè)結(jié)果的中心區(qū)域,舍棄預(yù)測(cè)不準(zhǔn)的圖像邊緣。

          具體實(shí)現(xiàn)

          1. 填充1 (黃色部分) : 填充右下邊界至滑窗預(yù)測(cè)窗口大小的整數(shù)倍,方便整除切割;
          2. 填充2(藍(lán)色部分) : 填充1/2滑窗步長(zhǎng)大小的外邊框(考慮邊緣數(shù)據(jù)的膨脹預(yù)測(cè));
          3. 以1024x1024為滑窗,512為步長(zhǎng),每次預(yù)測(cè)只保留滑窗中心512x512的預(yù)測(cè)結(jié)果(可以調(diào)整更大的步長(zhǎng),或保留更大的中心區(qū)域,提高效率)。
          圖3-2 膨脹預(yù)測(cè)示圖

          3.2 測(cè)試增強(qiáng)

          測(cè)試時(shí),通過(guò)對(duì)圖像水平翻轉(zhuǎn),垂直翻轉(zhuǎn),水平垂直翻轉(zhuǎn)等多次預(yù)測(cè),再對(duì)預(yù)測(cè)結(jié)果取平均可以提高精度,但相對(duì)的,推理時(shí)間也會(huì)大幅度升高。

          with?torch.no_grad():
          ????for?(image,pos_list)?in?tqdm(dataloader):
          ????????#?forward?-->?predict
          ????????image?=?image.cuda(device)?#?復(fù)制image到model所在device上
          ????????predict_1?=?model(image)
          ????????
          ????????#?水平翻轉(zhuǎn)
          ????????predict_2?=?model(torch.flip(image,[-1]))
          ????????predict_2?=?torch.flip(predict_2,[-1])
          ????????#?垂直翻轉(zhuǎn)
          ????????predict_3?=?model(torch.flip(image,[-2]))
          ????????predict_3?=?torch.flip(predict_3,[-2])
          ????????#?水平垂直翻轉(zhuǎn)
          ????????predict_4?=?model(torch.flip(image,[-1,-2]))
          ????????predict_4?=?torch.flip(predict_4,[-1,-2])
          ????????
          ????????predict_list?=?predict_1?+?predict_2?+?predict_3?+?predict_4???
          ????????predict_list?=?torch.argmax(predict_list.cpu(),1).byte().numpy()?#?n?x?h?x?w

          3.3 snapshot ensemble

          snapshot ensemble 是一個(gè)簡(jiǎn)單通用的提分trick,通過(guò)余弦周期退火的學(xué)習(xí)率調(diào)整策略,保存多個(gè)收斂到局部最小值的模型,通過(guò)模型自融合提升模型效果。詳細(xì)的實(shí)驗(yàn)和實(shí)現(xiàn)可以看黃高老師ICLR 2017的這篇論文。

          圖3-3 snapshot ensemble

          snapshot ensemble 另一個(gè)作用是作新方案的驗(yàn)證。深度學(xué)習(xí)訓(xùn)練的結(jié)果具有一定的隨機(jī)性,但比賽中提交次數(shù)有限,無(wú)法通過(guò)多次提交來(lái)驗(yàn)證實(shí)驗(yàn)結(jié)果。在做新方案改進(jìn)驗(yàn)證時(shí),有時(shí)難以確定線上分?jǐn)?shù)的小幅度提升是來(lái)自于隨機(jī)性,還是改進(jìn)方案really work。在比賽提交次數(shù)有限的情況下,snapshot ensemble不失為一個(gè)更加穩(wěn)定新方案驗(yàn)證的方法

          3.4 后處理

          本次賽題數(shù)據(jù)場(chǎng)景為大面積農(nóng)田,通過(guò)簡(jiǎn)單的填充孔洞和去除小連通域,去除一些不合理的預(yù)測(cè)結(jié)果。

          圖3-4 后處理:填充空洞、去小連通域

          3.5 邊緣平滑

          邊緣平滑想法受Hinton大神關(guān)于的知識(shí)蒸餾和When does label smoothing help?的工作啟發(fā),從實(shí)驗(yàn)看標(biāo)簽平滑訓(xùn)練的模型更加穩(wěn)定和泛化能力更強(qiáng)。

          在知識(shí)蒸餾中,用teacher模型輸出的soft target訓(xùn)練的student模型,比直接用硬標(biāo)簽(onehot)訓(xùn)練的模型具有更強(qiáng)的泛化能力。我對(duì)這部分提升理解是:軟標(biāo)簽更加合理反映樣本的真實(shí)分布情況,硬標(biāo)簽只有全概率和0概率,太過(guò)絕對(duì)。知識(shí)蒸餾時(shí)teacher模型實(shí)現(xiàn)了easy sample 和 hard sample 的“分揀”(soft-target),對(duì)hard sample輸出較低的置信度,對(duì)easy sample 輸出較高的置信度,使得student模型學(xué)到了更加豐富的信息

          圖3-5 軟標(biāo)簽分類實(shí)驗(yàn)特征可視化

          圖3-5截取自When does label smoothing help?,第一行至第四行分別為CIFAR10、CIFAR100、ImageNet(Course)、ImageNet(fine) 的數(shù)據(jù)集上訓(xùn)練的網(wǎng)絡(luò)倒數(shù)第二層輸出可視化,其中第一列為硬標(biāo)簽訓(xùn)練的訓(xùn)練集可視化,第二列為硬標(biāo)簽訓(xùn)練的測(cè)試集可視化,第三列為軟標(biāo)簽訓(xùn)練的訓(xùn)練集可視化,第四列為軟標(biāo)簽訓(xùn)練的測(cè)試集可視化,可以看出軟標(biāo)簽訓(xùn)練的模型類內(nèi)更加凝聚,更加可分。

          我們重新思考3.1中方格效應(yīng),在圖像分割任務(wù)中,每個(gè)像素的分類結(jié)果很大程度依賴于周圍像素,圖像中不同像素預(yù)測(cè)的難易程度是不同的。分割區(qū)別于分類,即使不通過(guò)teacher模型,我們也可以發(fā)掘部分樣本中的hard sample。本次比賽中我們主要考慮了以下兩類數(shù)據(jù):

          • 圖像邊緣: 卷積時(shí)零填充太多,信息缺少,難以正確分類(參考3.1的方格效應(yīng))
          • 不同類間交界處:
            • 標(biāo)注錯(cuò)誤,類間交界難以界定,訓(xùn)練時(shí)可能梯度不穩(wěn)定
            • 類間交界的點(diǎn),往往只相差幾個(gè)像素偏移,對(duì)網(wǎng)絡(luò)來(lái)說(shuō)輸入信息高度相似,但訓(xùn)練時(shí)label 卻不同,也是訓(xùn)練過(guò)程的不穩(wěn)定因素。
          圖3-6 Easy sample、hard sample 示例

          為驗(yàn)證這一想法,我們分別對(duì)模型預(yù)測(cè)結(jié)果及置信度進(jìn)行可視化。圖3-7中,從上到下分別為測(cè)試集原圖、模型預(yù)測(cè)結(jié)果可視化、模型預(yù)測(cè)置信度可視化(為更好可視化邊類間緣置信度低,這里用了膨脹預(yù)測(cè),將置信度p<0.8可視化為黑色,p>=0.8可視化為白色)。可以明顯看出,對(duì)于圖像邊緣數(shù)據(jù),信息缺失網(wǎng)絡(luò)難以作出正確分類。對(duì)于不同類別交界,由于訓(xùn)練過(guò)程梯度不穩(wěn)定,網(wǎng)絡(luò)對(duì)這部分?jǐn)?shù)據(jù)的分類置信度較低。

          圖3-7 上圖從上到下分別為測(cè)試數(shù)據(jù),不加膨脹預(yù)測(cè)的模型預(yù)測(cè)結(jié)果,模型對(duì)每個(gè)像素點(diǎn)的預(yù)測(cè)置信度可視化圖(將置信度p小于0.8可視化為黑色,p大于等于0.8可視化為白色)

          我們采取的方式是在圖像邊緣和類間交界設(shè)置過(guò)渡帶,過(guò)渡帶內(nèi)的像素視為 hard sample作標(biāo)簽平滑處理,平滑的程度取決于訓(xùn)練時(shí)每個(gè)batch中 hard sample (下圖黑色過(guò)渡帶區(qū)域)像素占總輸入像素的比例。而過(guò)渡帶w的大小為一個(gè)超參數(shù),在本次比賽中我們?nèi)=11。

          圖3-8 過(guò)渡帶標(biāo)簽平滑

          3.6 偽標(biāo)簽

          地形泛化問(wèn)題也是本次賽題數(shù)據(jù)一個(gè)難點(diǎn),訓(xùn)練集中數(shù)據(jù)大多為平原,對(duì)測(cè)試集數(shù)據(jù)中山地、碎石帶、森林等泛化效果較差。我們采用半監(jiān)督的方式提高模型對(duì)新地形泛化能力。

          圖3-9 山地碎石帶預(yù)測(cè)零碎

          在模型分?jǐn)?shù)已經(jīng)較高的情況下可以嘗試偽標(biāo)簽進(jìn)行半監(jiān)督訓(xùn)練,我們?cè)贏榜mIoU-79.4時(shí)開(kāi)始制作偽標(biāo)簽,具體實(shí)施是:

          1. 利用在測(cè)試集表現(xiàn)最好的融合模型結(jié)果作偽標(biāo)簽,用多組不同置信度閾值過(guò)濾數(shù)據(jù),結(jié)合訓(xùn)練集訓(xùn)練模型;
          2. 選取多個(gè)snapshot的方法對(duì)模型進(jìn)行自融合提高模型的泛化能力;
          3. 集成2中的預(yù)測(cè)結(jié)果,更新偽標(biāo)簽,重復(fù)步驟1~3。

          偽標(biāo)簽方法提分顯著,但對(duì)A榜數(shù)據(jù)過(guò)擬合的風(fēng)險(xiǎn)極大。即使不用偽標(biāo)簽,我們的方案在A榜也和第二名拉開(kāi)了較大差距。在更換B榜前,我們同時(shí)準(zhǔn)備了用偽標(biāo)簽和不用偽標(biāo)簽的兩套模型。

          4 總結(jié)

          1. 膨脹預(yù)測(cè)消除邊緣預(yù)測(cè)不準(zhǔn)問(wèn)題;
          2. 使用測(cè)試增強(qiáng)、消除空洞和小連通域等后處理提高精度;
          3. 使用snapshot模型自融合、標(biāo)簽平滑、偽標(biāo)簽等方法提高模型穩(wěn)定性和對(duì)新地形泛化能力;

          比賽成績(jī):

          頒獎(jiǎng)儀式




          有對(duì)文章相關(guān)的問(wèn)題,或者想要加入交流群,歡迎添加BBuf微信:

          二維碼

          為了方便讀者獲取資料以及我們公眾號(hào)的作者發(fā)布一些Github工程的更新,我們成立了一個(gè)QQ群,二維碼如下,感興趣可以加入。

          公眾號(hào)QQ交流群


          瀏覽 51
          點(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>
                  亚洲精品国产精品国自产曰本 | 亚洲天堂在线观看网站 | 亚洲丁香| AAA国产欧美日产无码免费网站 | 国精产品一区二区三区男男 |