主頁 >  其他 > 2020年AI競賽獲獎方案復盤系列(二) 遙感語意分割競賽trick-2020華為云人工智能大賽

2020年AI競賽獲獎方案復盤系列(二) 遙感語意分割競賽trick-2020華為云人工智能大賽

2021-02-26 10:42:04 其他

前言

這是去年博主參加的一個語意分割競賽,最終取得了top3%(13/377),這是博主第一次參加遙感影像語意分割競賽,借著這次機會博主開始了語意分割的學習旅程,比起最終名次,博主更在意的是在這個程序中能學到什么,在上次復盤了違法廣告目標檢測競賽之后,博主充分意識到了復盤的重要性,因此迫不及待地對這次遙感分割競賽進行復盤,

沒看過之前違法廣告的目標檢測競賽復盤的朋友可以也關注下檢測賽,因為是2020年的競賽里面很多的model和trick都是最新的,也涉及很多cvpr2020的論文,下面是傳送門:

違法廣告目標檢測賽傳送門

回到本篇文章,這次遙感分割賽主要是根據高清遙感衛星影響圖來對各種道路進行分割,這些道路有的是“通天大道”,有的是“羊腸小道”,充滿了細節部分,最終博主團隊的模型是0.833,冠軍是0.841,所以相差不是很多,博主認為主要的難點是如何平衡模型既看到大的整體大的目標,又看到非常微小的小路,博主復盤的時候感覺自己在沖刺階段的思路出現了問題,我當時有三種思路,都是基于訓練好大模型(對于大的道路分割效果優秀)的基礎上通過finetune迫使模型學習細節,第一種是通過使用Focal loss/OHEM做finetune去強迫模型去學習細節;第二種是通過微小的學習率和batchsize去finetune迫使模型關注每張圖片的細節;第三種是在多尺度的輸入上進行finetune,

事實證明這三種finetune的思路都不是那么的work,也導致博主最后遺憾的以微弱劣勢沒能沖進top10,

現在如果重新再來我可能更多會考慮:

  1. FPN/BiFPN
  2. 再在remain high resoluton上做一些嘗試,比如deformable convoluton之類的,
  3. 使用多個大model蒸餾小model,這些大model會被設定成有的關注細節有點會更關注整體,
  4. 一種基于OCRNet和large kernel matters論文博主發現的漲點技巧,我最后會提到,

另一個難點是這場比賽對于模型的推理時間和顯存占用非常的約束,我沒有具體去測驗flops,但是ensmble大引數量的模型是幾乎不可能的,后來又傳出TTA會被扣分,所以我們也沒用TTA(太老實了),但是同樣也讓我認識到了要多關注模型的輕量化,關注inference time/flops才有實用的價值,

好了,以上的博主的一些murmur,下面我們還是重點來看我們能從前排大佬里吸到多少歐氣吧!

在開始學習之前,請沒參加過這場大賽的朋友先瀏覽下大賽的賽題:

2020華為人工智能大賽傳送門

在這里插入圖片描述

第八名(吸到1點歐氣)

1.LinkNet (loss:dice+bce 1:1)

選手采用了LinkNet34(backbone是Resnet34),linknet我之前關注的較少,但是聽說這次好幾個前排都用了,說明這個網路效果還是不錯的,如果把backbone進一步的提升比如senet或者res2net之類的應該這個選手還能提升,

在做競賽的時候backbone還是要多試一下比較保險,我們這次是deeplabv3+/unet兩個支線,大把精力都花在了魔改和EDA上面,再比如后面一個kaggle競賽中,基于vision transformer的模型在分類上霸榜了,在kaggle 小麥檢測中yolov5也完成了霸榜(雖然后來被禁用了),所以針對不同的資料集,最佳的baseline也是完全不一樣的,反思這點,我覺得應該至少熟悉準備4-5個比較靠譜的baseline才能有效地避免一開始就輸在起跑線,對于分割賽很顯然unet/deeplabv3+/hrnet+ocr/linknet/senet+fpn之類的都應該出現在list上,

說到這里突然想到前幾天和一個kaggler聊天,他說他們團隊都是專人負責model設計的,也有人專門復雜augmentation,也有人負責train等等,這種團隊分配明顯是更合理的,我們團隊都是端到端的搞,每人負責一個路線,在前期為了多學知識這種思路是可取的,但是后面應該還是更好的分配人力,這些和技術無關了,只是我們的一點反思,

LinkNet的架構非常簡單,比Unet還簡單,主要focus在flops和推理速度上,致力于實時的語意分割,它有一個變種D-linknet,值得學習,尤其是這個論文就是base在遙感道路分割上的,附上論文的傳送門:

D-LinkNet :LinkNet with Pretrained Encoder and Dilated Convolution for High Resolution Sate

D-linknet知乎推薦文章

D-linknet是專門為了遙感道路分割設計出來的網路,在論文里主要提到了這類問題的三大難點:

  1. 遙感影像具備高解析度,道路有些會跨度極大,需要很大的感受野,覆寫全圖,
  2. 部分道路很細長狹小,需要保留精準的定位資訊才能恢復這類細小道路,
  3. 道路具備自然連通性,
    回想這個比賽中,我們也是基本focus在了這些問題上,分別用了空洞卷積/可變形卷積來適配感受野,嘗試了膨脹腐蝕和去除孔洞的后處理來保障連通性,但是對于問題二細小道路的定位做的不好,

D-linknet使用的空洞卷積在模型的中間,使用的是串聯的方式疊加感受野,同時maintain resoution,空洞卷積無論是串聯還是并聯都能表現出很好的性能,

D-linknet的架構如下圖:
在這里插入圖片描述
D-linknet的空洞卷積疊加沒有使用圖森組論文中提到的HDC設計,而是1,2,4,8,16這樣疊加,可能會導致棋盤效應,影響分割精度,

HDC可以參考下面這個知乎分析:

關于空洞卷積的HDC

同時大家仔細看這個圖,中間的部分很像unet的bridge結構,一定程度上能夠指導我們如何設計unet的bridge結構,我在部分比賽中發現unet的bridge結構也是會對最終的結果產生很大的影響,在這里它是dilation的堆疊+skip connection,值得注意的是它的原圖是1024的輸入,解析度還是蠻高的,所以才使用32倍下采樣,如果輸入圖片是512或者更小,32倍下采樣丟失的位置資訊就比較難恢復了,

最終的輸出這組選手使用了8倍的TTA,也是說明了linknet系列的輕量化,

第七名(吸到1點歐氣)

在這里插入圖片描述
先放個架構設計圖,是四模融合,也足以說明deeplabv3+是比較輕量的,值得學習的部分是OCRnet的使用算是新的技術,

1.OCRNet

OCRnet的和核心思想是在構建背景關系資訊時顯式地增強了來自于同一類物體的像素的貢獻,是從語意分割的本質思考得來的思路,

微軟亞研院分析了當前語意分割model的三個最大問題:

  1. 多層下采樣導致的定位資訊丟失,
  2. 像素級特征的感受野不夠,且物體具有多尺度,
  3. 邊界錯誤,邊界的feature的表達能力比較低,很多語意分割的錯誤都來自于邊界,

從而針對性的提出了:

  1. HRnet:用于maintain high resolution
  2. OCRnet:用于增強像素背景關系語意資訊
  3. SegFix:用于解決邊界錯誤的問題,

下圖是OCRnet的架構:
在這里插入圖片描述
HRnet/ OCRNet的這部分我打算專門寫一個原始碼決議系列,在這里就不贅述了,

第六名(吸到1點歐氣)

1.模型選擇

使用了HRnet+OCR,關于為什么使用這個模型的思路較好,這里直接收錄選手的思路:

低分辨的特征包含豐富的語意資訊,但由于下采樣操作,導致它丟失了部分位置資訊,而高解析度的特征相反,它的語意資訊相對較少,但位置資訊保留較多,定位相對準確,有利于檢測小目標,由于道路大多都是長且窄的形狀,就要求模型必須定位準確,也就是說道路的檢測依賴于高解析度的特征,現有的大多數網路都是由高解析度特征下采樣到低解析度特征,再從低解析度特征中恢復高解析度特征,但是丟失的位置資訊不能完全恢復,而HRNet在整個階段都保持高解析度的特征,有利于道路的檢測,此外,HRNet的不同分支產生不同解析度的特征,這些特征之間互動獲取資訊,最后得到包含多尺度資訊的高解析度特征,因此選擇HRNet作為我們backbone,此外,我們認為道路分割不依賴于非常高級的語意資訊,因此就不需要非常深的網路,而且在訓練資料量有限的情況下,大網路有龐大的引數量,會有過擬合的風險,因此我們選擇的是HRNet系列中的小模型:HRNet18,分割頭選擇OCR注意力模塊,利用目標背景關系增強特征表示,整個網路結構小,訓練速度和推理速度都較快,在實驗中,發現HRNet18在速度和精度上都優于hrnet32、hrnet48和deeplabv3+(resnest50),

這里能學到的就是從問題中選擇模型的一種思路(至于信不信的哈哈哈…),
HRnet/ OCRNet的這部分我打算專門寫一個原始碼決議系列,在這里就不贅述了,

2.loss的設計

這里學習到的也是loss設計的思路:

在這里插入圖片描述
交叉熵損失的問題在于無法解決前景和背景之間的資料不均衡問題,在比賽結束的階段,大部分的model都能比較好的預測出主體的道路部分,但是會存在細小的道路還有困難的樣本識別不好,選手為了解決以上的問題對于邊緣附近的pixel進行了損失加權,然后使用了OHEM對于簡單樣本進行了過濾,最后的loss是lovasz+bce,lovasz是IOU的可導替代形式,可以優化IOU,在部分比賽中有良好效果,

在這里插入圖片描述
參考上圖,選手對于邊緣進行了提取,對于邊緣的ce loss進行了增加,然后對loss進行了閾值設定,小于閾值的部分被看作簡單樣本不參與反向傳播,最后使用了bce+lovasz softmax,

3.指數滑動平均(EMA)

沒用過,暫時保留,回來一定補上,

第五名(吸到一口華子)

1.一些小點

  1. RandomGridShuffle:把影像裁成四個塊,然后打亂順序,一個不是很常見的augmentation,
  2. BCE Loss+余弦模擬退火做訓練,找到最佳模型后用Lovasz Hinge Loss + StepLR 做微調(也是Lovasz的作者推薦的使用方式),微調的時候使用了線性啟動,
  3. FPN/Unet + EfficientNetB5

第四名(吸到2點歐氣)

首先作者分享了原始碼,掌聲~~

原始碼傳送門

1.前景背景不平衡

選手通過計算,得到前景和背景的像素占比約為12.2%和87.8%,像素類別極度不平衡,故我們在loss中加入權重(3: 1),以減輕類別不平衡帶來的影響,
說明加權這種方法雖然簡單,但是不一定弱,在解決不平衡的問題也要測驗這個笨辦法,

2.忽略邊緣預測

感覺是個騷操作,沒有詳細說明,回來看看原始碼一定補上,

第三名(吸到一桿大煙槍)

1.一些小點

  1. unet+efficientnetB5
  2. lovasz+focal loss
  3. Radam+LookAhead 優化器 + 余弦模擬退火
  4. 多尺度訓練,不同batch間圖片尺寸進行調整,
  5. 膨脹預測

以上都是較為常見的技巧,說明用好了也能拿前三,

第一名(吸到1點歐氣)

首先,開源了代碼,掌聲鼓勵,傳送門如下:

比賽原始碼傳送門

1.方案設計

編碼模塊選用ImageNet預訓練的ResNeXt200網路,在E-D架構的基礎上,提出一種通道注意力增強的特征自適應融合方法,并設計基于梯度的邊緣約束模塊,在增強空間細節和語意特征的同時,提高道路邊緣的特征回應,實作多尺度道路準確提取,架構如下:
在這里插入圖片描述
這個架構的特點:

  1. 輸入是四通道,加了一個通道是Sobel算子算出來的梯度資訊,這樣保證邊緣的提取更為準確,
  2. backbone選擇了非常深的Resnext200,可以提取到更深的語意資訊,說明有了梯度資訊的輸入,可以使用較深的網路而還能獲得良好的定位資訊的恢復,
  3. 中間的結構有點像D-linknet,只是串聯的空洞卷積變成了ASPP結構,
  4. 上采樣融合之后加了CAF,類似channel維度的注意力機制,我在多個比賽中也發現上采樣融合之后是比較好的加入注意力的位置,可以理解為channel concat之后需要通道注意力平衡各通道權重的重要性,
  5. ECM這條路線是一個類似FPN的結構,可以彌補定位的資訊,

我在這個比賽結束后,就征得選手的同意,復現了這個網路并且在kaggle的另一場比賽中去校驗,可惜的是在病理分割上表現不佳,可能是這個設計思路更適合依賴邊緣精度的遙感道路分割,

總結

寫完前十名的方案復盤后,我發現并沒有我想象的或者說之前參加目標檢測比賽的招數層出不窮,雖然也是八仙過海,各顯神通,但是整體來說沒有特別亮點的地方,

在這個榜單中HRnet+OCRnet也算是占據了半壁江山,說明確實泛化性也是不錯的,我后面打算做一期原始碼的分析,好好整理一下這兩個框架,或許再加上Segfix一起吧,

在這次復盤中,識訓最大的也不是這些trick,而是如何在比賽中進行思路上調整,一切都要回歸到資料中,EDA的探索,發現了什么問題再對癥下藥,而不是亂做一起,魔改到底,

比如發現了小目標識別不行:就要考慮多尺度訓練、FPN、增大resolution…
比如發現了邊緣識別不行:就要考慮增加邊緣loss、增加梯度資訊
比如發現了某類識別不行:就要考慮是不是資料平衡問題?是不是要單獨對這個類進行離線資料增強?又或者是這個類不需要很深的語意特征從而考慮maintain resolution?
比如發現了資料不平衡:就要考慮資料增強、loss加權、在線重采樣、focal loss、或者是之前目標檢測文章提到的留一半?
比如發現了整體效果都不行:就要考慮是不是類別語意資訊很差,考慮用OCRnet? 做更多的feature間的融合?等等,


你們想象吧,我先休息去了…

[本篇完]

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/263760.html

標籤:AI

上一篇:文本資料增強方法

下一篇:【動手擼深度學習】細粒辨花 一文實踐清華博士Densenet

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more