練習題︱圖像分割與識別——UNet網路練習案例
U-Net是Kaggle比賽非常青睞的模型,簡單、高效、易懂,容易定製,可以從相對較小的訓練集中學習。來看幾個變形:
(1)Supervise.ly 公司。
在用 Faster-RCNN(基於 NasNet)定位 + UNet-like 架構的分割,來做他們數據眾包圖像分割方向的主動學習,當時沒有使用 Mask-RCNN,因為靠近物體邊緣的分割質量很低(終於!Supervise.ly 發布人像分割數據集啦(免費開源));
(2)Kaggle-衛星圖像分割與識別。
需要分割出:房屋和樓房;混雜的人工建築;道路;鐵路;樹木;農作物;河流;積水區;大型車輛;小轎車。在U-Net基礎上微調了一下。 而且針對不同的圖像類型,微調的地方不一樣,就會有不同的分割模型,最後融合。(Kaggle優勝者詳解:如何用深度學習實現衛星圖像分割與識別)
(3)廣東政務數據創新大賽—智能演算法賽 。
國土監察業務中須監管地上建築物的建、拆、改、擴,高解析度圖像和智能演算法以自動化完成工作。並且:八通道U-Net:直接輸出房屋變化,可應對高層建築傾斜問題;數據增強:增加模型泛化性,簡單有效;加權損失函數:增強對新增建築的檢測能力;模型融合:取長補短,結果更全。(參考:LiuDongjing/BuildingChangeDetector)
(4)Kaggle車輛邊界識別——TernausNet。
由VGG初始化權重 + U-Net網路,Kaggle Carvana Image Masking Challenge 第一名,使用的預訓練權重改進U-Net,提升圖像分割的效果。開源的代碼在ternaus/TernausNet
當然現在還有很多流行、好用的分割網路:谷歌的DeepLabv3+(DeepLab: Deep Labelling for
Semantic Image Segmentation)、Mask R-CNN、COCO-16 圖像分割冠軍的實例分割FCIS(msracver/FCIS) 等。
跟目標檢測需要準備的數據集不一樣,因為圖像分割是圖像中實體的整個輪廓,所以標註的內容就是物體的掩膜。有兩種標記方式:一種是提供單個物體的掩膜、一種是提供物體輪廓的標點。
一、U-Net網路練習題一: Kaggle - 2018 Data Science Bowl
因為Kaggle有該比賽,而且code寫的很簡單易懂,於是乎拿來玩一下。Keras U-Net starter - LB 0.277
與U-Net相關的開源項目與code很多,各種框架的版本都有:Tensorflow Unet、End-to-end baseline with U-net (keras)等等。
1.1 訓練集的構造
因為使用的是比賽數據,賽方已經很好地幫我們做好了前期數據整理的工作,所以目前來說可能很方便的製作訓練集、測試集然後跑模型。這裡下載得到的數據為提供圖像中單個物體的掩膜。其中,筆者認為最麻煩的就是標註集的構造(掩膜)。
原圖:
掩膜圖:
從掩膜列表可以到,比賽中是把每個細胞的掩膜都分開來了。
二、U-Net網路練習題二:氣球識別
在《如何使用Mask RCNN模型進行圖像實體分割?》一文中提到了用Mask-RCNN來做氣球分割,官網之中也有對應的代碼,本著練習的態度,那麼筆者就拿來這個數據集繼續練手,最麻煩的仍然是如何得到標註數據。MaskRCNN的開源code為Mask R-CNN - Inspect Balloon Training Data
由於很多內容是從Mask R-CNN之中挖過來的,筆者也沒細究,能用就行,所以會顯得很笨拙…
2.1 訓練集的準備
數據下載頁面:balloon_dataset.zip
該案例更為通用,因為比賽的訓練集是比賽方寫好的,一般實際訓練的時候,掩膜都是沒有給出的,而只是給出標記點,如:
最終效果貌似不太好,就不放圖了,哈哈哈,放張MaskRCNN來YY下~
TAG:素質雲筆記 |