免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

使用LabVIEW實(shí)現(xiàn)基于pytorch的DeepLabv3圖像語(yǔ)義分割

前言今天我們一起來(lái)看一下如何使用LabVIEW實(shí)現(xiàn)語(yǔ)義分割 。
一、什么是語(yǔ)義分割圖像語(yǔ)義分割(semantic segmentation),從字面意思上理解就是讓計(jì)算機(jī)根據(jù)圖像的語(yǔ)義來(lái)進(jìn)行分割,例如讓計(jì)算機(jī)在輸入下面左圖的情況下,能夠輸出右圖 。語(yǔ)義在語(yǔ)音識(shí)別中指的是語(yǔ)音的意思,在圖像領(lǐng)域,語(yǔ)義指的是圖像的內(nèi)容,對(duì)圖片意思的理解,比如下圖的語(yǔ)義就是一個(gè)人牽著四只羊;分割的意思是從像素的角度分割出圖片中的不同對(duì)象,對(duì)原圖中的每個(gè)像素都進(jìn)行標(biāo)注,比如下圖中淺黃色代表人,藍(lán)綠色代表羊 。語(yǔ)義分割任務(wù)就是將圖片中的不同類(lèi)別,用不同的顏色標(biāo)記出來(lái),每一個(gè)類(lèi)別使用一種顏色 。常用于醫(yī)學(xué)圖像,衛(wèi)星圖像,無(wú)人車(chē)駕駛,機(jī)器人等領(lǐng)域 。

使用LabVIEW實(shí)現(xiàn)基于pytorch的DeepLabv3圖像語(yǔ)義分割

文章插圖
  • 如何做到將像素點(diǎn)上色呢?
語(yǔ)義分割的輸出和圖像分類(lèi)網(wǎng)絡(luò)類(lèi)似,圖像分類(lèi)類(lèi)別數(shù)是一個(gè)一維的one hot 矩陣 。例如:三分類(lèi)的[0,1,0] 。語(yǔ)義分割任務(wù)最后的輸出特征圖是一個(gè)三維結(jié)構(gòu),大小與原圖類(lèi)似,其中通道數(shù)是類(lèi)別數(shù),每個(gè)通道所標(biāo)記的像素點(diǎn),是該類(lèi)別在圖像中的位置,最后通過(guò)argmax 取每個(gè)通道有用像素 合成一張圖像,用不同顏色表示其類(lèi)別位置 。語(yǔ)義分割任務(wù)其實(shí)也是分類(lèi)任務(wù)中的一種,他不過(guò)是對(duì)每一個(gè)像素點(diǎn)進(jìn)行細(xì)分,找到每一個(gè)像素點(diǎn)所述的類(lèi)別 。這就是語(yǔ)義分割任務(wù)啦~
使用LabVIEW實(shí)現(xiàn)基于pytorch的DeepLabv3圖像語(yǔ)義分割

文章插圖
二、什么是deeplabv3DeepLabv3是一種語(yǔ)義分割架構(gòu),它在DeepLabv2的基礎(chǔ)上進(jìn)行了一些修改 。為了處理在多個(gè)尺度上分割對(duì)象的問(wèn)題,設(shè)計(jì)了在級(jí)聯(lián)或并行中采用多孔卷積的模塊,通過(guò)采用多個(gè)多孔速率來(lái)捕獲多尺度上下文 。此外,來(lái)自 DeepLabv2 的 Atrous Spatial Pyramid Pooling模塊增加了編碼全局上下文的圖像級(jí)特征,并進(jìn)一步提高了性能 。
使用LabVIEW實(shí)現(xiàn)基于pytorch的DeepLabv3圖像語(yǔ)義分割

文章插圖
三、LabVIEW調(diào)用DeepLabv3實(shí)現(xiàn)圖像語(yǔ)義分割1、模型獲取及轉(zhuǎn)換
  • 安裝pytorch和torchvision
  • 獲取torchvision中的模型:deeplabv3_resnet101(我們獲取預(yù)訓(xùn)練好的模型):
original_model = models.segmentation.deeplabv3_resnet101(pretrained=True)
  • 轉(zhuǎn)onnx

使用LabVIEW實(shí)現(xiàn)基于pytorch的DeepLabv3圖像語(yǔ)義分割

文章插圖
使用LabVIEW實(shí)現(xiàn)基于pytorch的DeepLabv3圖像語(yǔ)義分割

文章插圖
1 def get_pytorch_onnx_model(original_model): 2# define the directory for further converted model save 3onnx_model_path = dirname 4# define the name of further converted model 5onnx_model_name = "deeplabv3_resnet101.onnx" 6 ? 7# create directory for further converted model 8os.makedirs(onnx_model_path, exist_ok=True) 9 ?10# get full path to the converted model11full_model_path = os.path.join(onnx_model_path, onnx_model_name)12 ?13# generate model input14generated_input = Variable(15torch.randn(1, 3, 448, 448)16)17 ?18# model export into ONNX format19torch.onnx.export(20original_model,21generated_input,22full_model_path,23verbose=True,24input_names=["input"],25output_names=["output",'aux'],26opset_version=1127)28 ?29return full_model_path完整獲取及模型轉(zhuǎn)換python代碼如下:
使用LabVIEW實(shí)現(xiàn)基于pytorch的DeepLabv3圖像語(yǔ)義分割

文章插圖
使用LabVIEW實(shí)現(xiàn)基于pytorch的DeepLabv3圖像語(yǔ)義分割

文章插圖
1 import os 2 import torch 3 import torch.onnx 4 from torch.autograd import Variable 5 from torchvision import models 6 import re 7 ? 8 dirname, filename = os.path.split(os.path.abspath(__file__)) 9 print(dirname)10 ?11 def get_pytorch_onnx_model(original_model):12# define the directory for further converted model save13onnx_model_path = dirname14# define the name of further converted model15onnx_model_name = "deeplabv3_resnet101.onnx"16 ?17# create directory for further converted model18os.makedirs(onnx_model_path, exist_ok=True)19 ?20# get full path to the converted model21full_model_path = os.path.join(onnx_model_path, onnx_model_name)22 ?23# generate model input24generated_input = Variable(25torch.randn(1, 3, 448, 448)26)27 ?28# model export into ONNX format29torch.onnx.export(30original_model,31generated_input,32full_model_path,33verbose=True,34input_names=["input"],35output_names=["output",'aux'],36opset_version=1137)38 ?39return full_model_path40 ?41 ?42 def main():43# initialize PyTorch ResNet-101 model44original_model = models.segmentation.deeplabv3_resnet101(pretrained=True)45 ?46# get the path to the converted into ONNX PyTorch model47full_model_path = get_pytorch_onnx_model(original_model)48print("PyTorch ResNet-101 model was successfully converted: ", full_model_path)49 ?50 ?51 if __name__ == "__main__":52main()

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀