原理講解-項目實戰<->基於語義分割實現斑馬線道路劃分

2021-02-08 騰訊網

精選文章,第一時間送達

好久沒有更新語義分割系列的文章了,但是大家放心,我會持續更新的,話不多說,這期就講解基於MobileNet的SegNet語義分割實現斑馬線的劃分~

還沒有看過的fans,可以先看一下哦~

前言:

語義分割基礎模型結構圖如下,也就是Convolutional Enconder-Decoder的結構,也就是卷積層編碼Enconder與解碼Deconder的過程。

編碼Encoder的過程就是對我們Input的圖片通過特徵提取網絡不斷進行特徵提取,這個過程中圖片的長和寬不斷的進行壓縮,通道也會變得越來越大。

解碼Decoder的過程就是對特徵提取網絡最終提取到的特徵層進行長和寬的不斷的放大,放大到和原圖差不多的尺寸。

然後再對每一個像素點進行分類,最終我們得到每個像素點所屬的類是什麼, 如下圖所示:

總結:輸入圖片—>編碼Enconder(特徵提取網絡提取特徵)—> Deconder(將提取到的特徵放大)—>對像素點進行分類。

SegNet語義分割模型

模型實現流程圖:

在結構圖中,輸入一張圖片在Enconder中進行卷積特徵提取到f4層時(圖片的寬和高壓縮了4次之後的特徵層),我們對該特徵層進行Deconder處理。

Deconder主要是對提取到的f4有效特徵層進行上採樣Upsampling2D進行3次上採樣(圖片的寬高放大)處理,最後我們得到一個具有一定寬w和高h的通道數為filter=n_classes的特徵層,最後一個卷積Conv2D, filter設置為n_classes是因為filter代表的是每個像素點所屬的種類的類別總數。

總結:首先利用主幹特徵提取網絡MobileNet(下採樣)提取圖像的特徵,得到5個不同大小的有效的特徵層,然後Segnet對特徵層解碼(一系列的上採樣upSampling2D),利用softmax函數對每個像素點進行分類,最後保存整個模型。

MobileNet模型原理講解:

訓練自己的語義分割模型

使用主幹特徵提取網絡為MobileNet的SegNet語義分割模型實現劃分斑馬線。

數據集:斑馬線數據集

訓練圖片:

訓練標籤:

單獨拿圖片4.jpg的標籤,我們可以看到4.jpg對應的標籤4.png像素值僅由000和111組成,原圖斑馬線部分對應的標籤像素值為111,而其它部分的像素值為000,分別對應RGB三通道。

對於語義分割數據集來講,它的標籤的每一個像素點的值就代表了它所屬的種類,在本項目中分兩類:背景和斑馬線,背景區域所對應的像素值為000,而斑馬線區域對應的像素值為111。

如果是多分類,那麼還會存在222、333這樣的RGB值的像素點,像素點的不同像素值代表該像素點屬於不同的類別。

項目結構

dataset2裡面的jpg文件夾存放的是我們數據集中對應的原圖,而png文件夾存放的是我們原圖所對應的標籤,而train.txt裡面存儲的原圖和其標籤的對應關係。

模型代碼實現流程:

主幹特徵提取網絡MobileNet:提取圖片特徵,獲取5個不同大小的有效的特徵層,詳情請見 mobilenet.py 文件。

SegNet解碼網絡,對特徵層進行解碼(一系列的上採樣upSampling2D),詳情請見segnet.py。

最後利用softmax函數對每個像素點進行分類,最後保存整個模型。

模型訓練

訓練50個epoch,訓練文件詳情見train.py,訓練後保存訓練權重。

使用到的損失函數是交叉熵損失函數,y_true代表真實標籤,y_pred代表的是預測標籤,實際上就是比較預測的標籤和真實標籤的像素值(代表類別)之間的交叉熵,優化器使用的是Adam。

訓練結果:

模型預測:

四、代碼下載和環境設置

環境

python==3.6

tensorflow-gpu==1.13.1

keras==2.1.5

相關焦點

  • 原理講解-項目實戰<->基於語義分割實現斑馬線道路劃分_騰訊新聞
    精選文章,第一時間送達 好久沒有更新語義分割系列的文章了,但是大家放心,我會持續更新的,話不多說,這期就講解基於MobileNet的SegNet語義分割實現斑馬線的劃分~ 還沒有看過的fans,可以先看一下哦~
  • 用於半監督語義分割的基於掩碼的數據增強
    所提議的方法能夠控制增強數據的複雜性,同時嘗試實現語義正確,並解決複雜性和正確性之間的權衡。提出的ComplexMix方法在一個標準的語義分割數據集上進行了評估,並與其他最先進的技術進行了比較。實驗結果表明,作者的方法在標準數據集的語義圖像分割方面優於最先進的方法。本文提出的方法屬於對無監督混合樣本進行一致性預測的範疇。
  • 圖像語義分割入門:FCN/U-Net網絡解析
    語義分割即是對圖像中每一個像素點進行分類,確定每個點的類別(如屬於背景、人或車等),從而進行區域劃分。目前,語義分割已經被廣泛應用於自動駕駛、無人機落點判定等場景中。《美團機器學習實踐》_美團算法團隊.pdf《深度學習入門:基於Python的理論與實現》高清中文PDF+源碼特徵提取與圖像處理(第二版).pdfpython就業班學習視頻,從入門到實戰項目2019最新《PyTorch
  • 基於深度學習的語義分割技術講解
    由於所有的像素都要考慮到,因此語義圖像分割任務也被視為是稠密預測的一種。在此,要區別一下實例分割(具體可參考著名的MaskRCNN模型),實例分割常常與目標檢測系統相互結合,用於檢測和分割場景中同一對象的多個實例。基於深度學習的語義分割方法:用卷積神經網絡分類(全卷積網絡),與普通網絡不同的是,分類層是卷積層,普通網絡為全連接層。
  • 基於深度學習的語義分割綜述
    同時提供每月大咖直播分享、真實項目需求對接、乾貨資訊匯總,行業技術交流。文獻中已經開發了許多圖像分割算法,從最早的方法,如閾值化、基於直方圖的方法、區域劃分、k-均值聚類、分水嶺,到更先進的算法,如活動輪廓、基於Graph的分割、馬爾可夫隨機場和稀疏方法。然而,在過去的幾年裡,深度學習網絡已經產生了新一代的圖像分割模型,其性能得到了顯著的提高——通常在流行的基準上達到了最高的準確率——這導致了許多人認為是該領域的範式轉變。
  • 2019 語義分割指南
    DeepLab: 基於深度卷積網絡,空洞卷積和全連接CRFs的圖像語義分割(TPAMI, 2017)這篇文章對基於深度學習的語義分割工作的貢獻如下:提出將上採樣濾波器用於密集預測任務。基於空洞可分離卷積編解碼器的圖像語義分割(ECCV, 2018)本文的方法「DeepLabv3+」,在無需對PASCAL VOC 2012和Cityscapes數據集進行任何後期處理的情況下,測試集性能分別達到89.0%和82.1%。該模型是DeepLabv3的擴展,通過添加一個簡單的解碼器模塊來細化分割結果。
  • 圖像語義分割
    圖像語義分割是計算機視覺中十分重要的領域。圖像語義分割的實現目前在圖像分割領域比較成功的算法,有很大一部分都來自於同一個先驅:Long等人提出的Fully Convolutional Network(FCN),或者叫全卷積網絡。
  • Pytorch深度學習實戰教程(二):UNet語義分割網絡
    如果不了解語義分割原理以及開發環境的搭建,請看該系列教程的上一篇文章《Pytorch深度學習實戰教程(一):語義分割基礎與環境搭建》。PS:文中出現的所有代碼,均可在我的github上下載,歡迎Follow、Star:點擊查看在語義分割領域,基於深度學習的語義分割算法開山之作是FCN(Fully Convolutional Networks for Semantic Segmentation),而UNet是遵循FCN的原理,並進行了相應的改進,使其適應小樣本的簡單分割問題。
  • 一文讀懂語義分割與實例分割
    圖像分割技術是目前預測圖像領域最熱門的一項技術,原因在於上述許多計算機視覺任務都需要對圖像進行智能分割,以充分理解圖像中的內容,使各個圖像部分之間的分析更加容易。本文會著重介紹語義分割和實例分割的應用以及原理。
  • 語義分割領域開山之作:Google提出用神經網絡搜索實現語義分割
    Google 儼然已是圖像語義分割領域的高產霸主,Liang-Chieh 從 Deeplabv1- Deeplabv3+ 持續發力,還是 MobileNetV2 共同作者,如今在 NAS 領域開發處女地:基於 NAS 的語義分割模型,性能超過之前的基於 MobileNetV2 的 Network Backbone。2.
  • 語義分割雙料冠軍!微軟 OCRNet化解語義分割上下文信息缺失難題|ECCV 2020
    針對語義分割中如何構建上下文信息,微軟亞洲研究院和中科院計算所的研究員們提出了一種新的物體上下文信息——在構建上下文信息時顯式地增強了來自於同一類物體的像素的貢獻,這種新的上下文信息從語義分割的定義出發,符合第一性原理思維,在2019年7月和2020年1月的 Cityscapes leaderboard 提交結果中都取得了語義分割任務第一名的成績。
  • Deeplab語義分割的發展
    「經典圖像分割方法—基於深度學習的語義分割—Deeplab及其變形」在計算機視覺中,簡單的圖像分割是將數字圖像分為多個段(像素集)的過程。圖像分割是一個長期存在的計算機視覺問題。但是,語義分割是在像素級別「理解」圖像的圖像分割技術。換句話說,語義分割是將每個像素分析和分類為多個類別(標籤)。
  • ECCV 2020 | OCRNet化解語義分割上下文信息缺失難題
    針對語義分割中如何構建上下文信息,微軟亞洲研究院和中科院計算所的研究員們提出了一種新的物體上下文信息——在構建上下文信息時顯式地增強了來自於同一類物體的像素的貢獻,這種新的上下文信息從語義分割的定義出發,符合第一性原理思維,在2019年7月和2020年1月的 Cityscapes leaderboard 提交結果中都取得了語義分割任務第一名的成績。
  • 語義分割概念及應用介紹
    比如自動駕駛汽車已經逐漸成為可能,但在整個深度學習過程,需要算法識別和學習作為原始數據提供的圖像,在這一過程中,應用到了語義分割技術。下面讓我們來看看語義分割的需求是如何演變的。早期,計算機視覺的初始應用需求只是識別基本元素,例如邊緣(線和曲線)或漸變。然而,僅僅通過全像素語義分割的創造來理解像素級的圖像,它將屬於同一目標的圖像部分聚集在一起,從而擴展了語義分割的應用場景。
  • 魚與熊掌可以兼得:何愷明等人一統語義分割與實例分割
    但是,本文作者提出了一種簡單、靈活的高效架構,在兩種任務中都能利用單個網絡取得很高的準確率,這個網絡可以同時生成基於區域的輸出(實例分割)和像素密集的輸出(語義分割)。(b)在 Mask R-CNN 中,作者在 FPN 上利用基於區域的分支進行實例分割。(c)同時,作者在同樣的 FPN 特徵上添加了輕量級密集預測分支用於語義分割。利用 FPN 進行的 Mask RCNN 簡單擴展使其對兩個任務來說都是快速、準確的基線。
  • 基於深度學習方法的圖像分割
    Image Segmentation(圖像分割)網絡結構比較FCNImage Segmentation(圖像分割)族譜按分割目的劃分普通分割將不同分屬不同物體的像素區域分開。 如前景與後景分割開,狗的區域與貓的區域與背景分割開。
  • Pytorch深度學習實戰教程:UNet語義分割網絡
    在語義分割領域,基於深度學習的語義分割算法開山之作是FCN(Fully Convolutional Networks for Semantic Segmentation),而UNet是遵循FCN的原理,並進行了相應的改進,使其適應小樣本的簡單分割問題。
  • Pytorch深度學習實戰教程(一):語義分割基礎與環境搭建
    二、語義分割語義分割(semantic segmentation) : 就是按照「語義」給圖像上目標類別中的每一點打一個標籤,使得不同種類的東西在圖像上被區分開來。可以理解成像素級別的分類任務,直白點,就是對每個像素點進行分類。簡而言之,我們的目標是給定一幅RGB彩色圖像(高x寬x3)或一幅灰度圖像(高x寬x1),輸出一個分割圖譜,其中包括每個像素的類別標註(高x寬x1)。
  • 實時語義分割算法大盤點
    在許多領域,如機器人和自動駕駛汽車,語義圖像分割是至關重要的,因為它提供了必要的上下文,以採取行動,基於對場景的理解在像素級。【10】ESPNet:擴展卷積的高效空間金字塔語義分割《ESPNet: Efficient Spatial Pyramid of Dilated Convolutions for Semantic Segmentation》連結:https://arxiv.org/pdf/1803.06815.pdf原理:ESP Module基於卷積分解原理,將標準卷積分解為兩個步驟
  • 實戰 | 基於SegNet和U-Net的遙感圖像語義分割
    本文由Madcola授權轉載,禁止二次轉載原文地址:https://www.cnblogs.com/skyfsm/p/8330882.html上兩個月參加了個比賽,做的是對遙感高清圖像做語義分割,美其名曰「天空之眼」。