chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

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

MATLAB ? 來源:djl ? 2019-09-12 11:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

建立

本示例創(chuàng)建了 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 數(shù)據(jù)集

從以下 URL 中下載 CamVid 數(shù)據(jù)集。

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

注意:數(shù)據(jù)下載時間取決于您的 Internet 連接情況。在下載完成之前,上面使用的命令會阻止訪問 MATLAB?;蛘撸梢允褂?Web 瀏覽器先將數(shù)據(jù)集下載到本地磁盤。要使用從 Web 中下載的文件,請將上述 outputFolder 變量更改為下載文件的位置。

加載 CamVid 圖像

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

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

顯示其中一個圖像。

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

加載 CamVid 像素標簽圖像

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

按照 SegNet 原創(chuàng)論文(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 個,請將原始數(shù)據(jù)集中的多個類組合在一起。例如,“Car” 是 “Car” 、 “SUVPickupTruck” 、 “Truck_Bus” 、 “Train” 和 “OtherMoving” 的組合。使用支持函數(shù) camvidPixelLabelIDs 返回已分組的標簽 ID,該函數(shù)會在本示例的末尾列出。

labelIDs = camvidPixelLabelIDs();

使用這些類和標簽 ID 創(chuàng)建 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);

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

分析數(shù)據(jù)集統(tǒng)計信息

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

tbl = countEachLabel(pxds)

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

按類可視化像素計數(shù)。

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

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

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

調整 CamVid 數(shù)據(jù)的大小

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

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

準備訓練集和測試集

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

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

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

numTrainingImages = numel(imdsTrain.Files)

numTrainingImages = 421

numTestingImages = numel(imdsTest.Files)

numTestingImages = 280

創(chuàng)建網絡

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

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

根據(jù)數(shù)據(jù)集中圖像的大小選擇圖像大小。根據(jù) CamVid 中的類選擇類的數(shù)量。

使用類權重平衡類

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

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 深度學習進行語義分割的方法詳解

選擇訓練選項

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

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

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

數(shù)據(jù)擴充

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

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

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

開始訓練

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

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

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

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

在圖像上測試網絡

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

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

顯示結果。

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

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

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

從視覺上看,道路、天空、建筑物等類的語義分割結果重疊情況良好。然而,行人和車輛等較小的對象則不那么準確??梢允褂媒徊媛?lián)合 (IoU) 指標(又稱 Jaccard 系數(shù))來測量每個類的重疊量。使用jaccard函數(shù)測量 IoU。

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

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

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

評估已訓練的網絡

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

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

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

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

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

metrics.DataSetMetrics

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

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

metrics.ClassMetrics

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

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

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

    關注

    14

    文章

    8280

    瀏覽量

    94952
  • 深度學習
    +關注

    關注

    73

    文章

    5599

    瀏覽量

    124426
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    穿孔機頂頭檢測儀 機器視覺深度學習

    LX01Z-DG626穿孔機頂頭檢測儀采用深度學習技術,能夠實現(xiàn)頂頭狀態(tài)的在線實時檢測,頂頭丟失報警,頂頭異常狀態(tài)報警等功能,響應迅速,異常狀態(tài)視頻回溯,檢測頂頭溫度,配備吹掃清潔系統(tǒng),維護周期長
    發(fā)表于 12-22 14:33

    【NPU實戰(zhàn)】在迅為RK3588上玩轉YOLOv8:目標檢測與語義分割一站式部署指南

    【NPU實戰(zhàn)】在迅為RK3588上玩轉YOLOv8:目標檢測與語義分割一站式部署指南
    的頭像 發(fā)表于 12-12 14:30 ?6168次閱讀
    【NPU實戰(zhàn)】在迅為RK3588上玩轉YOLOv8:目標檢測與<b class='flag-5'>語義</b><b class='flag-5'>分割</b>一站式部署指南

    如何深度學習機器視覺的應用場景

    深度學習視覺應用場景大全 工業(yè)制造領域 復雜缺陷檢測:處理傳統(tǒng)算法難以描述的非標準化缺陷模式 非標產品分類:對形狀、顏色、紋理多變的產品進行智能分類 外觀質量評估:基于學習的外觀質量標
    的頭像 發(fā)表于 11-27 10:19 ?231次閱讀

    微店關鍵詞搜索接口核心突破:動態(tài)權重算法與語義引擎的實戰(zhàn)落地

    本文詳解微店搜索接口從基礎匹配到智能推薦的技術進階路徑,涵蓋動態(tài)權重、語義理解與行為閉環(huán)三大創(chuàng)新,助力商家提升搜索轉化率、商品曝光與用戶留存,實現(xiàn)技術驅動的業(yè)績增長。
    的頭像 發(fā)表于 10-15 14:38 ?443次閱讀

    手機板 layout 走線跨分割問題

    學習layout時,都在說信號線不可跨分割,但是在工作中為了成本不能跨分割似乎也非絕對。 在后續(xù)工作中,跨分割的基礎都是相鄰層有一面完整的GND參考,跨
    發(fā)表于 09-16 14:56

    如何在機器視覺中部署深度學習神經網絡

    圖 1:基于深度學習的目標檢測可定位已訓練的目標類別,并通過矩形框(邊界框)對其進行標識。 在討論人工智能(AI)或深度學習時,經常會出現(xiàn)“
    的頭像 發(fā)表于 09-10 17:38 ?919次閱讀
    如何在機器視覺中部署<b class='flag-5'>深度</b><b class='flag-5'>學習</b>神經網絡

    深度學習對工業(yè)物聯(lián)網有哪些幫助

    、實施路徑三個維度展開分析: 一、深度學習如何突破工業(yè)物聯(lián)網的技術瓶頸? 1. 非結構化數(shù)據(jù)處理:解鎖“沉睡數(shù)據(jù)”價值 傳統(tǒng)困境 :工業(yè)物聯(lián)網中70%以上的數(shù)據(jù)為非結構化數(shù)據(jù)(如設備振動波形、紅外圖像、日志文本),傳統(tǒng)方法難以
    的頭像 發(fā)表于 08-20 14:56 ?1049次閱讀

    自動駕駛中Transformer大模型會取代深度學習嗎?

    [首發(fā)于智駕最前沿微信公眾號]近年來,隨著ChatGPT、Claude、文心一言等大語言模型在生成文本、對話交互等領域的驚艷表現(xiàn),“Transformer架構是否正在取代傳統(tǒng)深度學習”這一話題一直被
    的頭像 發(fā)表于 08-13 09:15 ?4206次閱讀
    自動駕駛中Transformer大模型會取代<b class='flag-5'>深度</b><b class='flag-5'>學習</b>嗎?

    ARM入門學習方法分享

    。 以下是一些入門學習方法的分享: 一、 理解基本概念:首先,了解ARM是什么以及它的基本概念是很重要的。ARM(Advanced RISC Machines)指的是一種精簡指令集計算機(RISC
    發(fā)表于 07-23 10:21

    北京迅為itop-3588開發(fā)板NPU例程測試deeplabv3 語義分割

    北京迅為itop-3588開發(fā)板NPU例程測試deeplabv3 語義分割
    的頭像 發(fā)表于 07-22 15:51 ?1009次閱讀
    北京迅為itop-3588開發(fā)板NPU例程測試deeplabv3 <b class='flag-5'>語義</b><b class='flag-5'>分割</b>

    大模型推理顯存和計算量估計方法研究

    方法。 一、引言 大模型推理是指在已知輸入數(shù)據(jù)的情況下,通過深度學習模型進行預測或分類的過程。然而,大模型的推理過程對顯存和計算資源的需求較高,這給實際應用帶來了以下挑戰(zhàn): 顯存不足:
    發(fā)表于 07-03 19:43

    【正點原子STM32MP257開發(fā)板試用】基于 DeepLab 模型的圖像分割

    是谷歌團隊提出的一種用于語義分割深度學習模型,屬于 DeepLab 系列模型的第三代版本。它在圖像語義
    發(fā)表于 06-21 21:11

    使用MATLAB進行無監(jiān)督學習

    無監(jiān)督學習是一種根據(jù)未標注數(shù)據(jù)進行推斷的機器學習方法。無監(jiān)督學習旨在識別數(shù)據(jù)中隱藏的模式和關系,無需任何監(jiān)督或關于結果的先驗知識。
    的頭像 發(fā)表于 05-16 14:48 ?1466次閱讀
    使用<b class='flag-5'>MATLAB</b><b class='flag-5'>進行</b>無監(jiān)督<b class='flag-5'>學習</b>

    嵌入式AI技術之深度學習:數(shù)據(jù)樣本預處理過程中使用合適的特征變換對深度學習的意義

    ? 作者:蘇勇Andrew 使用神經網絡實現(xiàn)機器學習,網絡的每個層都將對輸入的數(shù)據(jù)做一次抽象,多層神經網絡構成深度學習的框架,可以深度理解數(shù)據(jù)中所要表示的規(guī)律。從原理上看,使用
    的頭像 發(fā)表于 04-02 18:21 ?1530次閱讀

    labview調用yolo目標檢測、分割、分類、obb

    labview調用yolo目標檢測、分割、分類、obb、pose深度學習,支持CPU和GPU推理,32/64位labview均可使用。 (yolov5~yolov12)
    發(fā)表于 03-31 16:28