在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

MATLAB ? 來源:djl ? 2019-09-12 11:30 ? 次閱讀

這篇文章展示了一個具體的文檔示例,演示如何使用深度學習和 Computer Vision System Toolbox 訓練語義分割網絡

語義分割網絡對圖像中的每個像素進行分類,從而生成按類分割的圖像。語義分割的應用包括用于自動駕駛的道路分割和醫學診斷中的癌細胞分割。

如需了解更多文檔示例和詳細信息,建議查閱技術文檔:https://cn.mathworks.com/help

為了說明訓練過程,本示例將訓練 SegNet,一種用于圖像語義分割的卷積神經網絡 (CNN)。用于語義分割的其他類型網絡包括全卷積網絡 (FCN) 和 U-Net。以下所示訓練過程也可應用于這些網絡。

本示例使用來自劍橋大學的CamVid 數據集展開訓練。此數據集是包含駕駛時所獲得的街道級視圖的圖像集合。該數據集為 32 種語義類提供了像素級標簽,包括車輛、行人和道路。

建立

本示例創建了 SegNet 網絡,其權重從 VGG-16 網絡初始化。要獲取 VGG-16,請安裝Neural Network Toolbox Model for VGG-16 Network:

安裝完成后,運行以下代碼以驗證是否安裝正確。

vgg16();

此外,請下載預訓練版 SegNet。預訓練模型可支持您運行整個示例,而無需等待訓練完成。

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

強烈建議采用計算能力為 3.0 或更高級別,支持 CUDA 的 NVIDIA GPU 來運行本示例。使用 GPU 需要 Parallel Computing Toolbox。

下載 CamVid 數據集

從以下 URL 中下載 CamVid 數據集。

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

注意:數據下載時間取決于您的 Internet 連接情況。在下載完成之前,上面使用的命令會阻止訪問 MATLAB。或者,您可以使用 Web 瀏覽器先將數據集下載到本地磁盤。要使用從 Web 中下載的文件,請將上述 outputFolder 變量更改為下載文件的位置。

加載 CamVid 圖像

用于加載 CamVid 圖像。借助 imageDatastore,可以高效地加載磁盤上的大量圖像數據。

imgDir = fullfile(outputFolder,'images','701_StillsRaw_full');imds = imageDatastore(imgDir);

顯示其中一個圖像。

I = readimage(imds,1);I = histeq(I);imshow(I)

加載 CamVid 像素標簽圖像

使用imageDatastore加載 CamVid 像素標簽圖像。pixelLabelDatastore 將像素標簽數據和標簽 ID 封裝到類名映射中。

按照 SegNet 原創論文(Badrinarayanan、Vijay、Alex Kendall 和 Roberto Cipolla:《SegNet:用于圖像分割的一種深度卷積編碼器-解碼器架構》(SegNet: A Deep Convolutional Encoder-Decoder Architecture for ImageSegmentation)。arXiv 預印本:1511.00561,201)中采用的步驟進行操作,將 CamVid 中的 32 個原始類分組為 11 個類。指定這些類。

classes = [ "Sky" "Building" "Pole" "Road" "Pavement" "Tree" "SignSymbol" "Fence" "Car" "Pedestrian" "Bicyclist" ];

要將 32 個類減少為 11 個,請將原始數據集中的多個類組合在一起。例如,“Car” 是 “Car” 、 “SUVPickupTruck” 、 “Truck_Bus” 、 “Train” 和 “OtherMoving” 的組合。使用支持函數 camvidPixelLabelIDs 返回已分組的標簽 ID,該函數會在本示例的末尾列出。

labelIDs = camvidPixelLabelIDs();

使用這些類和標簽 ID 創建 pixelLabelDatastore。

labelDir = fullfile(outputFolder,'labels');pxds = pixelLabelDatastore(labelDir,classes,labelIDs);

讀取并在一幅圖像上疊加顯示像素標簽圖像。

C = readimage(pxds,1);cmap = camvidColorMap;B = labeloverlay(I,C,'ColorMap',cmap);imshow(B)pixelLabelColorbar(cmap,classes);

沒有顏色疊加的區域沒有像素標簽,在訓練期間不會使用這些區域。

分析數據集統計信息

要查看 CamVid 數據集中類標簽的分布情況,請使用countEachLabel。此函數會按類標簽計算像素數。

tbl = countEachLabel(pxds)

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

按類可視化像素計數。

frequency = tbl.PixelCount/sum(tbl.PixelCount);bar(1:numel(classes),frequency)xticks(1:numel(classes)) xticklabels(tbl.Name)xtickangle(45)ylabel('Frequency')

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

理想情況下,所有類都有相同數量的觀察結果。但是,CamVid 中的這些類比例失衡,這是街道場景汽車數據集中的常見問題。由于天空、建筑物和道路覆蓋了圖像中的更多區域,因此相比行人和騎自行車者像素,這些場景擁有更多的天空、建筑物和道路像素。如果處理不當,這種失衡可能影響學習過程,因為學習過程偏向主導類。在本示例中,您稍后將使用類權重來處理此問題。

調整 CamVid 數據的大小

CamVid 數據集中的圖像大小為 720 x 960。要減少訓練時間和內存使用量,請將圖像和像素標記圖像的大小調整為 360 x 480。resizeCamVidImages 和 resizeCamVidPixelLabels 是本示例末尾所列出的支持函數。

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

準備訓練集和測試集

使用數據集中 60% 的圖像訓練 SegNet。其余圖像用于測試。以下代碼會將圖像和像素標記數據隨機分成訓練集和測試集。

[imdsTrain,imdsTest,pxdsTrain,pxdsTest] = partitionCamVidData(imds,pxds);

60/40 拆分會生產以下數量的訓練圖像和測試圖像:

numTrainingImages = numel(imdsTrain.Files)

numTrainingImages = 421

numTestingImages = numel(imdsTest.Files)

numTestingImages = 280

創建網絡

使用segnetLayers創建利用 VGG-16 權重初始化的 SegNet 網絡。segnetLayers 會自動執行傳輸 VGG-16 中的權重所需的網絡操作,并添加語義分割所需其他網絡層。

imageSize = [360 480 3];numClasses = numel(classes);lgraph = segnetLayers(imageSize,numClasses,'vgg16');

根據數據集中圖像的大小選擇圖像大小。根據 CamVid 中的類選擇類的數量。

使用類權重平衡類

如前所示,CamVid 中的這些類比例失衡。要改進訓練情況,可以使用類權重來平衡這些類。使用之前通過countEachLayer計算的像素標簽計數,并計算中值頻率類權重。

imageFreq = tbl.PixelCount ./ tbl.ImagePixelCount;classWeights = median(imageFreq) ./ imageFreq

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

使用pixelClassificationLayer指定類權重。

pxLayer = pixelClassificationLayer('Name','labels','ClassNames',tbl.Name,'ClassWeights',classWeights)

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

通過刪除當前 pixelClassificationLayer 并添加新層,使用新的 pixelClassificationLayer 更新 SegNet 網絡。當前 pixelClassificationLayer 名為“pixelLabels”。使用removeLayers刪除該層,使用addLayers添加新層,然后使用connectLayers將新層連接到網絡的其余部分。

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

選擇訓練選項

用于訓練的優化算法是引入動量的隨機梯度下降 (SGDM) 算法。使用trainingOptions指定用于 SGDM 的超參數。

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

大小為 4 的 minimatch 用于減少訓練時的內存使用量。您可以根據系統中的 GPU 內存量增加或減少此值。

數據擴充

在訓練期間使用數據擴充向網絡提供更多示例,以便提高網絡的準確性。此處,隨機左/右反射以及 +/- 10 像素的隨機 X/Y 平移用于數據擴充。用于指定這些數據擴充參數

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

imageDataAugmenter 支持其他幾種類型的數據擴充。選擇它們需要經驗分析,并且這是另一個層次的超參數調整。

開始訓練

使用pixelLabelImageDatastore組合訓練數據和數據擴充選擇。pixelLabelImageDatastore 會讀取批量訓練數據,應用數據擴充,并將已擴充的數據發送至訓練算法。

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

如果 doTraining 標志為 true,則會開始訓練。否則,會加載預訓練網絡。注意:NVIDIA Titan X 上的訓練大約需要 5 個小時,根據您的 GPU 硬件具體情況,可能會需要更長的時間。

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

在圖像上測試網絡

作為快速完整性檢查,將在測試圖像上運行已訓練的網絡。

I = read(imdsTest);C = semanticseg(I, net);

顯示結果。

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

將 C 中的結果與 pxdsTest 中的預期真值進行比較。綠色和洋紅色區域突出顯示了分割結果與預期真值不同的區域。

expectedResult = read(pxdsTest);actual = uint8(C);expected = uint8(expectedResult);imshowpair(actual, expected)

從視覺上看,道路、天空、建筑物等類的語義分割結果重疊情況良好。然而,行人和車輛等較小的對象則不那么準確。可以使用交叉聯合 (IoU) 指標(又稱 Jaccard 系數)來測量每個類的重疊量。使用jaccard函數測量 IoU。

iou = jaccard(C, expectedResult);table(classes,iou)

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

IoU 指標可確認視覺效果。道路、天空和建筑物類具有較高的 IoU 分數,而行人和車輛等類的分數較低。其他常見的分割指標包括Dice 系數和Boundary-F1輪廓匹配分數。

評估已訓練的網絡

要測量多個測試圖像的準確性,請在整個測試集中運行semanticseg。

pxdsResults = semanticseg(imdsTest,net,'MiniBatchSize',4,'WriteLocation',tempdir,'Verbose',false);

semanticseg 會將測試集的結果作為 pixelLabelDatastore 對象返回。imdsTest 中每個測試圖像的實際像素標簽數據會在“WriteLocation”參數指定的位置寫入磁盤。使用evaluateSemanticSegmentation測量測試集結果的語義分割指標。

metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTest,'Verbose',false);

evaluateSemanticSegmentation返回整個數據集、各個類以及每個測試圖像的各種指標。要查看數據集級別指標,請檢查 metrics.DataSetMetrics。

metrics.DataSetMetrics

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

數據集指標可提供網絡性能的高級概述。要查看每個類對整體性能的影響,請使用 metrics.ClassMetrics 檢查每個類的指標。

metrics.ClassMetrics

關于如何使用MATLAB 深度學習進行語義分割的方法詳解

盡管數據集整體性能非常高,但類指標顯示,諸如 Pedestrian、Bicyclist 和 Car 等代表性不足的類分割效果不如Road、Sky 和 Building 等類。附加數據多一些代表性不足類樣本可能會提升分割效果。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 網絡
    +關注

    關注

    14

    文章

    7589

    瀏覽量

    89028
  • 深度學習
    +關注

    關注

    73

    文章

    5511

    瀏覽量

    121355
收藏 人收藏

    評論

    相關推薦

    Pytorch深度學習訓練的方法

    掌握這 17 種方法,用最省力的方式,加速你的 Pytorch 深度學習訓練。
    的頭像 發表于 10-28 14:05 ?238次閱讀
    Pytorch<b class='flag-5'>深度</b><b class='flag-5'>學習</b>訓練的<b class='flag-5'>方法</b>

    AI大模型與深度學習的關系

    AI大模型與深度學習之間存在著密不可分的關系,它們互為促進,相輔相成。以下是對兩者關系的介紹: 一、深度學習是AI大模型的基礎 技術支撐 :深度
    的頭像 發表于 10-23 15:25 ?1047次閱讀

    語義分割25種損失函數綜述和展望

    語義圖像分割,即將圖像中的每個像素分類到特定的類別中,是許多視覺理解系統中的重要組成部分。作為評估統計模型性能的主要標準,損失函數對于塑造基于深度學習
    的頭像 發表于 10-22 08:04 ?734次閱讀
    <b class='flag-5'>語義</b><b class='flag-5'>分割</b>25種損失函數綜述和展望

    圖像語義分割的實用性是什么

    什么是圖像語義分割 圖像語義分割是一種將圖像中的所有像素點按照其語義類別進行分類的任務。與傳統
    的頭像 發表于 07-17 09:56 ?484次閱讀

    圖像分割語義分割的區別與聯系

    圖像分割語義分割是計算機視覺領域中兩個重要的概念,它們在圖像處理和分析中發揮著關鍵作用。 1. 圖像分割簡介 圖像分割是將圖像劃分為多個區
    的頭像 發表于 07-17 09:55 ?1099次閱讀

    利用Matlab函數實現深度學習算法

    Matlab中實現深度學習算法是一個復雜但強大的過程,可以應用于各種領域,如圖像識別、自然語言處理、時間序列預測等。這里,我將概述一個基本的流程,包括環境設置、數據準備、模型設計、訓練過程、以及測試和評估,并提供一個基于
    的頭像 發表于 07-14 14:21 ?2395次閱讀

    基于Python的深度學習人臉識別方法

    基于Python的深度學習人臉識別方法是一個涉及多個技術領域的復雜話題,包括計算機視覺、深度學習、以及圖像處理等。在這里,我將概述一個基本的
    的頭像 發表于 07-14 11:52 ?1302次閱讀

    機器學習中的數據分割方法

    在機器學習中,數據分割是一項至關重要的任務,它直接影響到模型的訓練效果、泛化能力以及最終的性能評估。本文將從多個方面詳細探討機器學習中數據分割方法
    的頭像 發表于 07-10 16:10 ?2030次閱讀

    深度學習中的時間序列分類方法

    的發展,基于深度學習的TSC方法逐漸展現出其強大的自動特征提取和分類能力。本文將從多個角度對深度學習在時間序列分類中的應用
    的頭像 發表于 07-09 15:54 ?1079次閱讀

    圖像分割語義分割中的CNN模型綜述

    圖像分割語義分割是計算機視覺領域的重要任務,旨在將圖像劃分為多個具有特定語義含義的區域或對象。卷積神經網絡(CNN)作為深度
    的頭像 發表于 07-09 11:51 ?1069次閱讀

    深度學習中的無監督學習方法綜述

    深度學習作為機器學習領域的一個重要分支,近年來在多個領域取得了顯著的成果,特別是在圖像識別、語音識別、自然語言處理等領域。然而,深度學習模型
    的頭像 發表于 07-09 10:50 ?854次閱讀

    機器人視覺技術中圖像分割方法有哪些

    和分析。本文將詳細介紹圖像分割的各種方法,包括傳統的圖像處理方法和基于深度學習方法。 閾值
    的頭像 發表于 07-04 11:34 ?1093次閱讀

    深度學習的模型優化與調試方法

    深度學習模型在訓練過程中,往往會遇到各種問題和挑戰,如過擬合、欠擬合、梯度消失或爆炸等。因此,對深度學習模型進行優化與調試是確保其性能優越的
    的頭像 發表于 07-01 11:41 ?915次閱讀

    深度學習與傳統機器學習的對比

    在人工智能的浪潮中,機器學習深度學習無疑是兩大核心驅動力。它們各自以其獨特的方式推動著技術的進步,為眾多領域帶來了革命性的變化。然而,盡管它們都屬于機器學習的范疇,但
    的頭像 發表于 07-01 11:40 ?1479次閱讀

    深度解析深度學習下的語義SLAM

    隨著深度學習技術的興起,計算機視覺的許多傳統領域都取得了突破性進展,例如目標的檢測、識別和分類等領域。近年來,研究人員開始在視覺SLAM算法中引入深度學習技術,使得
    發表于 04-23 17:18 ?1343次閱讀
    <b class='flag-5'>深度</b>解析<b class='flag-5'>深度</b><b class='flag-5'>學習</b>下的<b class='flag-5'>語義</b>SLAM
    主站蜘蛛池模板: 黄色网址网站在线观看| 看亚洲a级一级毛片| 国产性做久久久久久| 人人射人人爽| 日韩亚射吧| 黄色永久免费| 轻点太大了好深好爽h文| 在线天堂中文有限公司| 中文字幕亚洲一区二区三区| 国产在视频线精品视频2021| 国产福利99| 狠狠干夜夜草| 欧美黄色成人| 国产成人综合亚洲怡春院| 91大神免费视频| 美女扒开尿口让男人桶| 中国胖女人一级毛片aaaaa| 亚洲色图综合在线| 一区二区免费播放| 狠狠乱| 亚洲六月丁香六月婷婷花| 一区二区三区四区在线观看视频 | 4hc44四虎www视频| 最新大黄网站免费| 色精品视频| 欧美xxxx性疯狂bbbb| 国内一区二区| 色色色色色网| 如色网| 日韩高清一级| 日本理论在线| 国产三级播放| 广东毛片| 97伊人| 91网视频在线观看| 久久国产午夜精品理论篇小说| 免费看国产片| 狠狠插天天干| 欧美日本视频一区| 三级理论在线播放大全| 成人精品一区二区三区电影|