2020 CCF BDCI 遙感影像地塊分割冠軍競賽方案 & 語義分割trick整理

2021-03-01 極市平臺
來源丨https://zhuanlan.zhihu.com/p/346862877

本文是作者參加CCF BDCI獲得冠軍的比賽經驗總結以及語義分割trick的整理。作者的比賽方案最大的特點是將連通性問題轉換為二分類問題解決,結果優異,傳統圖像形態學後處理仍然可靠。且無須針對性設計loss和module,分類器可用多種小模型,實際環境下並行處理也更快。 >>加入極市CV技術交流群,走在計算機視覺的最前沿

賽題分析

賽題分析

這次比賽也是第一次正式參加的比賽,地塊分割本質上也是個語義分割的問題,之前沒搞過,花了比較多的時間對網上的trick進行了整理學習,見最後附錄整理的資料。初賽並不困難,主要考慮7類結果的平均IOU,複賽加入了對水體和道路類的連通性評判指標。最終的方案以較大的優勢在A榜和B榜取得了第一名的成績。

數據分析

數據分析

統計數據集中各類面積佔比餅狀圖如上圖所示,可以發現數據集中存在類別不均衡現象,建築、道路和草地類較少,而其他類較多。進一步的統計,可以得知只有分別約7%/10%/13%的圖片滿足建築/道路/草地面積佔比大於1%。數據存在極度類別不均衡現象,常規的方法不適於訓練。

baseline分析

結合baseline結果可以發現,儘管建築類數據較少,但由於其地貌容易辨識,分類結果較準確;而道路和草地類則因為與其他類存在相似性,但訓練數據不足,結果較差。因此,提升模型分類能力(MIOU)的關鍵是解決類別不均衡問題,尤其是道路類和草地類。

思路介紹整體思路

整體思路

要解決這些問題,直接的方式是使用針對IOU設計的損失函數進行re-weighting(如Lovasz-Softmax Loss、 Focal Loss等),但訓練較慢,結果收斂不穩定。其次是可以針對特殊類設計模塊,但結構複雜且周期長。最終我們借鑑了Adaboost的思想,用不同概率分布的訓練數據訓練一系列弱分類器,並通過投票融合得到強分類器。這裡之所以用類似,是因為與Adaboost不同,我們這裡的數據並不是每輪增加錯誤樣本權重,弱分類器的**「弱」**也是指特殊類別上弱,融合權重根據準確率與連通性需求人為規定。

數據處理

數據處理

為了獲取不同的訓練數據,我們設計了不同數據處理方案:(1) 劃分道路草地類正負樣本(負樣本指不包含該類的樣本),多階段逐步增加負樣本比例(借鑑Bengio的curriculum learning的思想由簡單到複雜訓練,結果更好收斂);(2) 在原數據的基礎上,對道路草地類樣本re-sampling,為了避免過擬合,對重採樣數據進行多種數據增強(水平翻轉+垂直翻轉+放縮為0.75/0.875/1.125/1.25倍),與re-weighting相比,簡單直接效果好;(3) 針對建築/道路/水體類轉換處理得到二分類訓練數據(同樣進行數據增強並加入隨機旋轉90/180/270度),訓練特殊的二分類器,加強模型對特殊類別的前景後景區分能力。在數據增強時,我們還進行了閾值篩選,僅對面積佔比較大的圖像進行相應處理,直覺上這些數據對訓練更友好。

值得注意的是,上圖中預測效果對比可以發現,多分類模型只能識別筆直的道路,部分彎曲的道路難以識別,而二分類模型可以很好地識別彎曲的道路,並且連通性也更好,這也是我們複賽的主要思路(很長一段時間內都比第二名高3-5個點)。

模型訓練

模型訓練

有了這些數據,我們訓練了一系列以HRNet和OCRNet為backbone的模型。並且我們探索了SE、CBAM、scSE等attention module,最後是採用了提升效果最多的SE attention。由於比賽經驗生疏,當時訓了些許大模型,然而融合後提升微薄,實際上模型差異越大後續融合結果一般更好。實際環境下,若考慮計算開銷,也許訓練UNet等諸多小模型融合,效果更好,速度更快。

模型預測

模型預測

在測試時,我們進行了多種數據增強,包括尺度放縮、水平/垂直翻轉、90度倍數旋轉(實際上,原圖+水平翻轉+垂直翻轉+180度旋轉足矣,更多的TTA提升效果很小)。得到這些預測後,我們不是進行softmax分數求和的軟投票,而是逐像素少數服從多數的硬投票,並且用二分類預測逐優先級覆蓋多分類預測,人為地規定了道路>水體>建築>其他的優先級。這裡我們利用多進程+numpy矩陣運算,大大減小了投票花費的時間。

連通性後處理

連通性後處理

最後我們使用形態學處理進一步提高了連通性,首先是用閉運算連接斷裂處以及中值濾波去除毛刺;其次用面積和長度篩選閾值孤立像素團,用左邊像素類別進行替換去除;第三是設計了骨架連通性增強方案,提取出某類的骨架,並適當地膨脹腐蝕,保證連通的同時不會過度超出原始預測區域;最後是設計了一個動態優先級算法,動態地進行不同類別的覆蓋(主要考慮水體與道路類覆蓋優先級)。

結果對比

原圖(左),單模型預測(中),多模型預測(右)

最終的結果輸出如上圖右所示,可以看到最終的預測圖更加平滑,類別噪點大大減少,並且保證了道路和水體較好的連通性。這裡融合的結果更多考慮了連通性,因而可能存在「誤判」的結果,實際環境下可考慮準確性和連通性的權衡,調整閾值和權值。

總結

方案最大的特點是將連通性問題轉換為二分類問題解決,結果出奇地好,傳統圖像形態學後處理仍然可靠。無須針對性設計loss和module,分類器可用多種小模型,實際環境下並行處理也更快。來了新的類別,大可以訓練二分類器簡單投票,數十個迭代即可得到較強的分類器。

整場比賽打下來挺累的,日常翹課熬夜debug,所幸最後結果尚可。答辯時也認識了不少比賽老手,感慨自己經驗尚淺,無論是在學術上還是工程上,都有很大的進步空間,繼續努力吧~

最後,有各種比賽、論文合作意願的小夥伴可私戳,帶帶弟弟,thx~~

附錄-語義分割trick整理

基於SegNet和U-Net的遙感圖像語義分割(https://zhuanlan.zhihu.com/p/58521469)

數據增強:原圖與label圖旋轉90度的整數倍(90/180/270),原圖和label圖沿y軸旋轉,原圖做模糊操作,原圖做光照調整操作,原圖加噪聲(高斯/椒鹽)轉為二分類:對每一分類訓練二分類模型,對預測圖進行按優先級疊加

語義分割訓練與優化技巧(https://niecongchong.github.io/2019/08/20/%E8%AF%AD%E4%B9%89%E5%88%86%E5%89%B2%E8%AE%AD%E7%BB%83%E4%B8%8E%E4%BC%98%E5%8C%96%E6%8A%80%E5%B7%A7/)

幾何變換:水平翻轉(遙感還可以垂直翻轉)、平移、隨機裁剪和縮放(比例需要研究)、旋轉紋理增強:亮度和對比度、色調飽和度對比度HSV、運動模糊、顏色抖動、限制對比度的自適應直方圖均衡化

Airbus Ship Detection 衛星圖像分割檢測(https://zhuanlan.zhihu.com/p/48381892)

TTA單圖多測,單圖多scale投票:https://zhuanlan.zhihu.com/p/131539596

Kaggle 氣胸識別分割比賽新手銅牌總結及冠軍分案(https://zhuanlan.zhihu.com/p/89838787)

聯合損失函數:BCE+Dice+Focal loss

Kaggle冠軍告訴你,如何從衛星圖像分割及識別比賽中勝出?(https://zhuanlan.zhihu.com/p/26663913)

Kaggle優勝者詳解:如何用深度學習實現衛星圖像分割與識別(https://zhuanlan.zhihu.com/p/26377387)

對數據先歸一化為具有零均值和單位方差,之後進行數據增強過採樣在測試的時候滑動窗口拼接(256可否借鑑小窗口滑動拼接?),TTA平均輸出後處理簡單使用擴展和腐蝕操作,去除小於給定閾值的物體和小孔

ECCV 2020 大規模實例分割挑戰賽(LVIS Challenge)冠軍方案(https://zhuanlan.zhihu.com/p/224851085)

Repeat Factor Sampling 樣本採樣技術(應該類似於重採樣保證樣本均衡)分類器平衡,在表示學習部分結束後,凍結網絡的 backbone,使用Balanced GroupSoftmax進行分類器平衡(目標檢測長尾效應中使用)

Kaggle TGS 鹽體分割任務第五名解決方案:kaglge硬核高中生玩家,模型集成策略太高級了看不懂(https://zhuanlan.zhihu.com/p/47412338)

在Lovasz loss中我們使用了elu+1而不是默認的relu

Kaggle圖像分割比賽中的損失函數及keras實現:介紹了BCE、weighted BCE、Dice和Lovasz loss(https://zhuanlan.zhihu.com/p/80716099)

數據增強repo,注意裡面做分割的demo ipynb:https://github.com/albumentations-team/albumentations

【圖像後處理】python實現全連接CRFs後處理,CRF+填孔後處理(https://zhuanlan.zhihu.com/p/64854535)代碼參考:https://github.com/Gurupradeep/FCN-for-Semantic-Segmentation、https://github.com/1044197988/Semantic-segmentation-of-remote-sensing-images等

推薦閱讀


添加極市小助手微信(ID : cvmart2),備註:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳),即可申請加入極市目標檢測/圖像分割/工業檢測/人臉/醫學影像/3D/SLAM/自動駕駛/超解析度/姿態估計/ReID/GAN/圖像增強/OCR/視頻理解等技術交流群:每月大咖直播分享、真實項目需求對接、求職內推、算法競賽、乾貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發者互動交流~覺得有用麻煩給個在看啦~  

相關焦點

  • GitHub:語義分割最全資料集錦
    本文將分享的內容是:語義分割(Semantic Segmentation)。值得提一下,按近一年頂會上的語義分割方向的論文來看,弱監督+語義分割、域自適應+語義分割方向的論文越來越多了。感興趣的同學可以看一下:ECCV 2020 語義分割論文大盤點(38篇論文)註:文末附語義分割微信交流群,歡迎加入學習awesome-semantic-segmentation項目作者:mrgloomStar數量:7100https
  • 極速破解NeurIPS 2020挑戰賽冠軍難題!百度AI遙感技術勇摘桂冠
    作為一門實用、先進的空間探測技術,遙感技術在城鄉建設、災害應急、環境監測等場景下一直發揮著重要作用。隨著與日俱增的海量遙感影像數據,遙感數據的解譯開始尋求AI技術的賦能,遙感智能解譯成為行業突破方向。12月6日-12日,神經信息處理系統大會NeurIPS 2020於線上舉行,競賽任務要求參賽者使用已建立的多目標跟蹤準確性指標來跟蹤建築物的建設進度,從而直接評估城市化程度。
  • 語義分割雙料冠軍!微軟 OCRNet化解語義分割上下文信息缺失難題|ECCV 2020
    針對語義分割中如何構建上下文信息,微軟亞洲研究院和中科院計算所的研究員們提出了一種新的物體上下文信息——在構建上下文信息時顯式地增強了來自於同一類物體的像素的貢獻,這種新的上下文信息從語義分割的定義出發,符合第一性原理思維,在2019年7月和2020年1月的 Cityscapes leaderboard 提交結果中都取得了語義分割任務第一名的成績。
  • 一文讀懂語義分割與實例分割
    而基於深度學習的圖像分割技術則是利用卷積神經網絡,來理解圖像中的每個像素所代表的真實世界物體,這在以前是難以想像的。基於深度學習的圖像分割技術主要分為兩類:語義分割及實例分割。語義分割和實例分割的區別又是什麼?
  • 實戰 | 基於SegNet和U-Net的遙感圖像語義分割
    本文由Madcola授權轉載,禁止二次轉載原文地址:https://www.cnblogs.com/skyfsm/p/8330882.html上兩個月參加了個比賽,做的是對遙感高清圖像做語義分割,美其名曰「天空之眼」。
  • 語義分割該如何走下去?
    首先感謝各位做語義分割的同學對ADE20K資料庫的厚愛,準確度節節攀升。https://groups.csail.mit.edu/vision/datasets/ADE20K/我還依稀記得當年我跟@趙行 兩人在Stata的黑屋子裡揣摩如何從所有1000多個標定出的物體列表中選取出做語義分割的物體。
  • 語義分割概念及應用介紹
    比如自動駕駛汽車已經逐漸成為可能,但在整個深度學習過程,需要算法識別和學習作為原始數據提供的圖像,在這一過程中,應用到了語義分割技術。下面讓我們來看看語義分割的需求是如何演變的。早期,計算機視覺的初始應用需求只是識別基本元素,例如邊緣(線和曲線)或漸變。然而,僅僅通過全像素語義分割的創造來理解像素級的圖像,它將屬於同一目標的圖像部分聚集在一起,從而擴展了語義分割的應用場景。
  • 圖像語義分割
    圖像語義分割是計算機視覺中十分重要的領域。上圖為語義分割的一個實例,其目標是預測出圖像中每一個像素的類標籤。圖像語義分割是圖像處理和計算機視覺技術中關於圖像理解的重要的一環。語義分割對圖像中的每一個像素點進行分類,確定每個點的類別(如屬於背景、邊緣或身體等)需要和實例分割區分開來。語義分割沒有分離同一類的實例;它關心的只是每個像素的類別,如果輸入對象中有兩個相同類別的對象,則分割本身不會將它們區分為單獨的對象。
  • Deeplab語義分割的發展
    「經典圖像分割方法—基於深度學習的語義分割—Deeplab及其變形」在計算機視覺中,簡單的圖像分割是將數字圖像分為多個段(像素集)的過程。圖像分割是一個長期存在的計算機視覺問題。但是,語義分割是在像素級別「理解」圖像的圖像分割技術。換句話說,語義分割是將每個像素分析和分類為多個類別(標籤)。
  • 【圖解AI】什麼是語義分割、實例分割、全景分割
    3、語義分割(semantic segmentation)對圖像中的每個像素打上類別標籤,如下圖,把圖像分為人(紅色)、樹木(深綠)、草地(淺綠)、天空 4、實例分割(instance segmentation)目標檢測和語義分割的結合,在圖像中將目標檢測出來(目標檢測),然後對每個像素打上標籤(
  • ECCV 2020 論文大盤點-語義分割篇
    最近我們在總結ECCV 2020 的論文,分割類論文總計 93 篇,語義分割幾乎佔據半壁江山
  • 入門 | 一文了解什麼是語義分割及常用的語義分割方法有哪些
    我們已經開始發展自動駕駛汽車和智慧機器人,這些都需要深入理解周圍環境,因此精確分割實體變得越來越重要。什麼是語義分割?語義分割是計算機視覺中的基本任務,在語義分割中我們需要將視覺輸入分為不同的語義可解釋類別,「語義的可解釋性」即分類類別在真實世界中是有意義的。
  • 入門| 一文了解什麼是語義分割及常用的語義分割方法有哪些
    我們已經開始發展自動駕駛汽車和智慧機器人,這些都需要深入理解周圍環境,因此精確分割實體變得越來越重要。什麼是語義分割?語義分割是計算機視覺中的基本任務,在語義分割中我們需要將視覺輸入分為不同的語義可解釋類別,「語義的可解釋性」即分類類別在真實世界中是有意義的。
  • 直播預告 | ICCV Oral:語義分割中的自注意力機制和低秩重建
    月25日)晚8:00點,「大講堂」第128講邀請到了北京大學計算機應用技術碩士李夏來分享,本場主題為「語義分割中的自注意力機制和低秩重建」上一期我們主要聚焦通用醫學影像三維預訓練模型「Models Genesis」,這次我們來講講語義分割,本次分享依舊對AI研習社成員免費開放。
  • 論文推薦| 季順平:遙感影像建築物提取的卷積神經元網絡與開源數據...
    這種自我學習特徵的能力超越並逐漸替代了傳統的人工經驗設計特徵的方法;特別地,為本文關注的建築物自動提取提供了一種更具自動化和穩健性的解決方案。  結合建築物的目標檢測和語義分割,可實現完整的實例分割。實例分割是指不但在對象級別發現單個建築物實體(以包容盒的形式),而且能夠在包容盒內部通過語義分割準確識別建築物的前景像素。最新的Mask R-CNN[37]實現了單體目標檢測的同時,進行包容盒內目標的語義分割,並且達到了很高的精度。
  • 重磅推薦:基於深度學習的免費影像語義分割軟體,綠視率、天空比,不再是問題
    關注城市數據人微信公眾號  數據資訊、數據分享、數據技能
  • 用於半監督語義分割的基於掩碼的數據增強
    所提議的方法能夠控制增強數據的複雜性,同時嘗試實現語義正確,並解決複雜性和正確性之間的權衡。提出的ComplexMix方法在一個標準的語義分割數據集上進行了評估,並與其他最先進的技術進行了比較。實驗結果表明,作者的方法在標準數據集的語義圖像分割方面優於最先進的方法。本文提出的方法屬於對無監督混合樣本進行一致性預測的範疇。
  • 魚與熊掌可以兼得:何愷明等人一統語義分割與實例分割
    ,它結合語義和實例分割的優勢構建更強大的方案。近年來,語義分割快速發展,這項任務是為每個像素分配一個類別標籤。在最近的實例分割中,機器的任務是檢測和分割每個目標實例。用於語義分割的全卷積網絡(FCN)[39] 和實例分割的 Mask R-CNN[23] 等簡單而強大的基線方法也促成了這些進展。
  • 使用多尺度注意力進行語義分割
    關注公眾號後後臺回復「多尺度語義分割」,下載打包好的論文和代碼。有一項重要的技術,通常用於自動駕駛、醫學成像,甚至縮放虛擬背景:「語義分割。NVIDIA Research正在研究語義分割,因為它是一項廣泛適用的技術。我們還相信,改進語義分割的技術也可能有助於改進許多其他密集預測任務,如光流預測(預測物體的運動),圖像超解析度,等等。
  • MMSegmentation:標準統一的語義分割框架
    語義分割作為計算機視覺中一項基礎任務,同時在自動駕駛/視頻編輯等領域中有重要的應用,因此一直受到學術界和工業界的廣泛關注。在近幾年的會議中,語義分割的論文層出不窮,但是市面上一直缺乏一款能夠相對公平比較各種方法的框架。為了方便研究員和工程師們,OpenMMLab開源了一套基於 PyTorch 實現的標準統一的語義分割框架:MMSegmentation。