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

          農(nóng)作物地塊范圍識別(圖像分割)

          共 4112字,需瀏覽 9分鐘

           ·

          2022-06-08 08:33


          來源:機器學習AI算法工程、知乎@Now more
          本文約5500字,建議閱讀15分鐘
          本文為你介紹 以薏仁米作物識別以及產(chǎn)量預測為比賽命題,及對對應獲獎的開發(fā)算法模型。

          農(nóng)作物的資產(chǎn)盤點與精準產(chǎn)量預測是實現(xiàn)農(nóng)業(yè)精細化管理的核心環(huán)節(jié)。當前,我國正處于傳統(tǒng)農(nóng)業(yè)向現(xiàn)代農(nóng)業(yè)的加速轉(zhuǎn)型期,伴隨著農(nóng)業(yè)的轉(zhuǎn)型升級,政府宏觀決策、社會各界對農(nóng)業(yè)數(shù)據(jù)的需求不斷增加,現(xiàn)有農(nóng)業(yè)統(tǒng)計信息的時效性與質(zhì)量,已不足以為市場各主體的有效決策提供科學依據(jù)。在農(nóng)作物資產(chǎn)盤點方面,傳統(tǒng)的人工實地調(diào)查的方式速度慢、勞動強度大,數(shù)據(jù)采集質(zhì)量受主觀因素影響大,統(tǒng)計數(shù)據(jù)有較大的滯后性,亟待探索研究更高效準確度更高的農(nóng)業(yè)調(diào)查統(tǒng)計技術。在產(chǎn)量預測方面,及時準確地獲取區(qū)域作物單產(chǎn)及其空間分布信息,對作物進行精準的產(chǎn)能預測,對于農(nóng)業(yè)生產(chǎn)安全預警、農(nóng)產(chǎn)品貿(mào)易流通,以及農(nóng)業(yè)產(chǎn)業(yè)結(jié)構(gòu)優(yōu)化具有重要意義。

          本次任務,我們選擇了具有獨特的地理環(huán)境、氣候條件以及人文特色的貴州省興仁市作為研究區(qū)域,聚焦當?shù)氐奶厣珒?yōu)勢產(chǎn)業(yè)和支柱產(chǎn)業(yè)——薏仁米產(chǎn)業(yè), 以薏仁米作物識別以及產(chǎn)量預測為比賽命題,要求選手開發(fā)算法模型,通過無人機航拍的地面影像,探索作物分類的精準算法,識別薏仁米、玉米、烤煙、人造建筑四大類型,提升作物識別的準確度,降低對人工實地勘察的依賴,提升農(nóng)業(yè)資產(chǎn)盤點效率,并結(jié)合產(chǎn)量標注數(shù)據(jù)預測當年的薏仁米產(chǎn)量,提升農(nóng)業(yè)精準管理能力。


          評估指標


          采用平均交并比(Mean Intersection over Union)作為評價標準,即求出每一類的 IOU 取平均值。IOU 指的是,真實標簽和預測結(jié)果的兩塊區(qū)域交集/并集。評估只考慮“烤煙”,“玉米”,“薏仁米”,“人造建筑”四種類型。針對每種作物所有的預測結(jié)果,統(tǒng)計每個類別的真實標簽和預測結(jié)果,根據(jù) Jaccard Index 計算 IOU,最后取平均。

          具體的,針對4種類型圖片分別計算 TP, FP, and FN;求和得到所有圖片的 TP, FP, and FN;根據(jù) Jaccard Index = TP/(TP+FP+FN),計算得到 IOU。最后對所有4個類別的 IOU 取平均,得到最后的 MIOU 作為評測結(jié)果。

          不同類別的標簽統(tǒng)計,背景類最多,人造建筑最少。



          和普通的語義分割任務相比,本次任務有著以下幾個特點:

          一是類間差異小,不同種類農(nóng)作物之間外觀差異小,
          二是物體尺度相差大,要分割的類別中農(nóng)作物與人造建筑兩個類別的尺度不同,
          三是標簽不是非常精細,標注存在著不少的噪聲。

          關注微信公眾號“數(shù)據(jù)派THU”,后臺回復“20220602”可獲取全部代碼。

          一、亞軍方案介紹


          1. 總體方案


          我們的方案總體流程如下,我們的方案將整個任務分成了兩個分支,一個分支進行農(nóng)作物耕地的分割,一個分支進行人造建筑物的分割,后面我們會介紹為什么將任務分成兩個分支。然后將兩個分支的預測結(jié)果求和得到最終的預測結(jié)果。


          2. 預處理


          裁剪


          我們這次的訓練數(shù)據(jù)是無人機航拍拼接得到的圖片,分辨率非常大,在復賽的訓練集中,最大的圖片尺寸有55128×49447,無法直接用于訓練,因此我們對原圖片進行了裁剪,將其裁剪成小塊作為訓練集,我們的裁剪方法為在原圖上滑動進行裁剪,右面是我們裁剪的示意圖,裁剪圖片的大小為1600×1600,步距為800,對于完全透明的地方直接略過,農(nóng)作物的訓練集我們在原圖上進行裁剪,對于人造建筑,我們將原圖的分辨率降低16倍后再進行裁剪。


          數(shù)據(jù)增強


          數(shù)據(jù)增強就是使用了一些常規(guī)的數(shù)據(jù)增強方法,旋轉(zhuǎn)、顏色抖動、翻轉(zhuǎn)、resize等,還加入了隨機的模糊操作。

          3. 農(nóng)作物分割


          農(nóng)作物分割分類四個類別,3類農(nóng)作物和一類背景。使用的是PSPNet的網(wǎng)絡。



          替換了backbone,最終使用3×3 resnet101,PPM輸出的feature map經(jīng)多次上采樣回原分辨率。

          在初賽的時候一直使用的是unet的結(jié)構(gòu),發(fā)現(xiàn)結(jié)果不是很好,結(jié)果不太平滑,經(jīng)常有很多孔洞之類的,后續(xù)更換了PSPNet大為改善,推測可能是由于Unet的一些較低級的特征對于分割幫助不大并且unet缺乏global context的信息,context的信息在這個數(shù)據(jù)集中很重要。

          模型這里也可以考慮換成deeplab v3+,結(jié)果應該會有一點提升,決賽的幾個隊伍中,很多都是使用的deeplab v3+,deeplab的ASPP同樣有融合context信息的作用。

          4. 建筑物分割


          為什么將建筑物單獨分割,主要是考慮到建筑物與農(nóng)作物兩個目標尺度相差太多,普通的多尺度方法也無法解決,我們訓練使用的是512×512大小的圖像,導致經(jīng)常圖像中只含有建筑物的一部分,缺乏足夠的信息對建筑物進行判別。

          下圖中可以看出,圖中右面在訓練集的標簽上是屬于建筑物的一部分,可是跟左邊的水泥路十分相似。


          解決方法是將建筑物單獨使用一個網(wǎng)絡進行分割,并且訓練集降低分辨率,最終嘗試將原圖降低16倍分辨率作為建筑物的訓練集。

          如下圖,單獨分割后顯著地降低了建筑的錯誤。


          網(wǎng)絡使用的是HRNet,HRNet一直保持的高分辨率feature map對于建筑物的邊界細節(jié)預測較準確。


          5. 訓練細節(jié)


          訓練使用多分類交叉熵損失函數(shù),不同類別根據(jù)數(shù)據(jù)量添加類別權重。

          由于訓練集中標簽有噪聲,如下:



          導致在訓練后期,某些batch的loss值顯著的大于正常值,將這些batch可視化,很多是屬于label標記錯誤,這些batch對于網(wǎng)絡收斂有很大影響,所以設定閾值,讓其不回傳或者減小這些batch的learning rate。

          但是注意這里其實這些batch顯著大的有一些是一些hard example,比如外觀和農(nóng)作物非常相似的背景或者種植的比較稀疏的農(nóng)作物,大概在這些batch中hard example和label noise半對半,但是沒有想到什么比較好的方法來區(qū)分這兩者,所以采用減小學習率的方法。后續(xù)可以考慮尋找一些方法或者特征來對label noise和hard example進行區(qū)分。

          6. 半監(jiān)督


          使用模型對沒有標簽的A榜測試集預測生成偽標簽,然后加入訓練集,對網(wǎng)絡進行重新訓練,對結(jié)果提升較大。

          半監(jiān)督方法應該算是比賽中比較常用的方法,在比賽中也是在A榜的最后一次提交中才使用了半監(jiān)督的方法,單模型結(jié)果達到了0.788,是除了建筑物單獨分割以外提升最大的trick了,對于置信度等參數(shù)也沒有機會進行進一步的嘗試,感覺半監(jiān)督還有潛力可以挖掘。

          感覺半監(jiān)督方法在這個數(shù)據(jù)集中尤為適合,對于原因也不太明確。

          這里看到過一個說法:“半監(jiān)督帶來的提升不只是數(shù)據(jù)量帶來的提升,而是對于那些數(shù)據(jù)難以精確標注的場合,”結(jié)合這次比賽的數(shù)據(jù),雖然是語義分割的比賽,但是label并不是像素級精度的,標注的時候應該使用的是多邊形的標注,所以對于邊界的標注很不精細,并且對于農(nóng)田其實也很難找到一個很明確的邊界來標記,感覺可能符合難以精細標注這個描述,但是對于這個說法并沒有找到相關的論文,哪位大佬如果有更好的解釋或者相關的論文推薦,希望不吝賜教。

          7. 預測


          預測時同樣在原圖裁剪進行預測,使用U-net中的overlap策略,沒有使用其他測試增強的方法,輸入藍色框內(nèi)圖片,最終只取黃色框內(nèi)結(jié)果作為最終結(jié)果,放棄周圍邊緣預測結(jié)果。


          8. 最終結(jié)果



          二、冠軍整體方案


          1. 數(shù)據(jù)預處理


          滑窗裁剪


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

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

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

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


          數(shù)據(jù)增強


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

          2. 模型選擇


          模型上我們隊伍沒有做很多的嘗試,下表整理了天池、Kaggle一些分割任務中大家常用的方案。初賽嘗試過PSPNet、U-Net等方案,但沒有調(diào)出比較好的分數(shù),復賽都是基于DeeplabV3+(決賽5個隊伍里有4個用了DeeplabV3plus)backbone為Xception-65、ResNet-101、DenseNet-121。從復賽A榜分數(shù)提交情況,DenseNet-121 backbone 分數(shù)略高于另外兩個,但顯存占用太大以及訓練時間太長,在后來的方案里就舍棄了。

          本次賽題數(shù)據(jù)場景為大面積農(nóng)田預測,直接用deeplabV3plus高層特征上采樣就有不錯的效果,結(jié)合了底層特征預測反而變得零散。決賽算法復現(xiàn)時,使用了兩個Xception-65和一個ResNet-101投票,投票的每個模型用不同的數(shù)據(jù)訓練,增加模型差異。


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


          三、漲分點


          1. 膨脹預測


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

          原因分析:網(wǎng)絡卷積計算時,為了維持分辨率進行了大量zero-padding,導致網(wǎng)絡對圖像邊界預測不準。


          圖3-1 方格效應:邊緣預測不準,拼接痕跡明顯


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

          具體實現(xiàn):

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


          圖3-2 膨脹預測示圖


          2. 測試增強


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


          3. snapshot ensemble


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


          圖3-3 snapshot ensemble


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

          4. 后處理


          訓練數(shù)據(jù)中,對于農(nóng)田中出現(xiàn)的碎石、樹木,比賽數(shù)據(jù)提供的標注仍是農(nóng)田。但推理階段,模型是可以正常預測這些碎石、樹木的情況的,因此部分預測結(jié)果中出現(xiàn)了較多孔洞。

          針對本次賽題數(shù)據(jù)場景為大面積農(nóng)田預測,通過簡單的填充孔洞、去除小連通域等后處理,可以去除一些不合理的預測結(jié)果。


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


          5. 邊緣平滑


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

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


          圖3-5 軟標簽分類實驗特征可視化


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

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

          • 圖像邊緣:卷積時零填充太多,信息缺少,難以正確分類(參考3.1的方格效應)
          • 不同類間交界處:
            • 標注錯誤,類間交界難以界定,訓練時可能梯度不穩(wěn)定
            • 類間交界的點,往往只相差幾個像素偏移,對網(wǎng)絡來說輸入信息高度相似,但訓練時label 卻不同,也是訓練過程的不穩(wěn)定因素。


          圖3-6 Easy sample、hard sample 示例


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


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


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


          圖3-8 過渡帶標簽平滑


          6. 偽標簽


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


          圖3-9 山地碎石帶預測零碎


          在模型分數(shù)已經(jīng)較高的情況下可以嘗試偽標簽進行半監(jiān)督訓練,我們在A榜mIoU-79.4時開始制作偽標簽,具體實施是:

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

          偽標簽方法提分顯著,但對A榜數(shù)據(jù)過擬合的風險極大。即使不用偽標簽,我們的方案在A榜也和第二名拉開了較大差距。在更換B榜前,我們同時準備了用偽標簽和不用偽標簽的兩套模型。

          四、總結(jié)


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

          編輯:黃繼彥




          瀏覽 56
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  91香蕉网站在线下载 | 国产99久久九九精品无码免费 | 青春草免费视频日韩 | 人操人人操 | 亚州高清免费播放 |