Deeplabv3
Torchvision框架中在語義分割上支持的是Deeplabv3語義分割模型,而且支持不同的backbone替換,這些backbone替換包括MobileNetv3、ResNet50、ResNet101。其中MobileNetv3版本訓練數(shù)據(jù)集是COCO子集,類別跟Pascal VOC的20個類別保持一致。這里以它為例,演示一下從模型導出ONNX到推理的全過程。ONNX格式導出
首先需要把pytorch的模型導出為onnx格式版本,用下面的腳本就好啦:
model=tv.models.segmentation.deeplabv3_mobilenet_v3_large(pretrained=True)
dummy_input=torch.randn(1,3,320,320)
model.eval()
model(dummy_input)
im=torch.zeros(1,3,320,320).to("cpu")
torch.onnx.export(model,im,
"deeplabv3_mobilenet.onnx",
verbose=False,
opset_version=11,
training=torch.onnx.TrainingMode.EVAL,
do_constant_folding=True,
input_names=['input'],
output_names=['out','aux'],
dynamic_axes={'input':{0:'batch',2:'height',3:'width'}}
)
模型的輸入與輸出結(jié)構(gòu)如下:

推理測試
模型推理對圖像有個預處理,要求如下:
transform = torchvision.transforms.Compose([
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
意思是轉(zhuǎn)換為0~1之間的浮點數(shù),然后減去均值除以方差。
剩下部分的代碼就比較簡單,初始化onnx推理實例,然后完成推理,對結(jié)果完成解析,輸出推理結(jié)果,完整的代碼如下:
transform=torchvision.transforms.Compose([
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize(mean=[0.485,0.456,0.406],
std=[0.229,0.224,0.225])
])
sess_options=ort.SessionOptions()
#Belowisforoptimizingperformance
sess_options.intra_op_num_threads=24
#sess_options.execution_mode=ort.ExecutionMode.ORT_PARALLEL
sess_options.graph_optimization_level=ort.GraphOptimizationLevel.ORT_ENABLE_ALL
ort_session=ort.InferenceSession("deeplabv3_mobilenet.onnx",providers=['CUDAExecutionProvider'],sess_options=sess_options)
#src=cv.imread("D:/images/messi_player.jpg")
src=cv.imread("D:/images/master.jpg")
image=cv.cvtColor(src,cv.COLOR_BGR2RGB)
blob=transform(image)
c,h,w=blob.shape
input_x=blob.view(1,c,h,w)
defto_numpy(tensor):
returntensor.detach().cpu().numpy()iftensor.requires_gradelsetensor.cpu().numpy()
#computeONNXRuntimeoutputprediction
ort_inputs={ort_session.get_inputs()[0].name:to_numpy(input_x)}
ort_outs=ort_session.run(None,ort_inputs)
t1=ort_outs[0]
t2=ort_outs[1]
labels=np.argmax(np.squeeze(t1,0),axis=0)
print(labels.dtype,labels.shape)
red_map=np.zeros_like(labels).astype(np.uint8)
green_map=np.zeros_like(labels).astype(np.uint8)
blue_map=np.zeros_like(labels).astype(np.uint8)
forlabel_numinrange(0,len(label_color_map)):
index=labels==label_num
red_map[index]=np.array(label_color_map)[label_num,0]
green_map[index]=np.array(label_color_map)[label_num,1]
blue_map[index]=np.array(label_color_map)[label_num,2]
segmentation_map=np.stack([blue_map,green_map,red_map],axis=2)
cv.addWeighted(src,0.8,segmentation_map,0.2,0,src)
cv.imshow("deeplabv3",src)
cv.waitKey(0)
cv.destroyAllWindows()
運行結(jié)果如下:

審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1232瀏覽量
26073 -
pytorch
+關(guān)注
關(guān)注
2文章
813瀏覽量
14734
原文標題:輕松學Pytorch之Deeplabv3推理
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
大模型推理顯存和計算量估計方法研究
隨著人工智能技術(shù)的飛速發(fā)展,深度學習大模型在各個領(lǐng)域得到了廣泛應用。然而,大模型的推理過程對顯存和計算資源的需求較高,給實際應用帶來了挑戰(zhàn)。為了解決這一問題,本文將探討大模型推理顯存和計算量的估計
發(fā)表于 07-03 19:43
將Whisper大型v3 fp32模型轉(zhuǎn)換為較低精度后,推理時間增加,怎么解決?
將 openai/whisper-large-v3 FP32 模型轉(zhuǎn)換為 FP16、INT8 和 INT4。
推理所花費的時間比在 FP32 上花費的時間要多
發(fā)表于 06-24 06:23
AI功能(SC171開發(fā)套件V3)
AI功能(SC171開發(fā)套件V3)
序列
課程名稱
視頻課程時長
視頻課程鏈接
課件鏈接
工程源碼
1
圖像語義分割(deeplabv3)案例----基于SC171開發(fā)套件V3
7分44秒
發(fā)表于 04-16 18:48
有獎直播 | @4/8 輕松部署,強大擴展邊緣運算 AI 新世代
MemryX推出全新MemryXMX3AI推理加速卡,采用PCIeGen3M.2M-Key接口,提供高達20TOPS的強大算力,為工業(yè)計算機帶來即插即用的AI部署體驗。結(jié)合OrangePi5Plus
壁仞科技支持DeepSeek-V3滿血版訓練推理
DeepSeek在開源周開源了部分關(guān)鍵模塊的代碼及推理系統(tǒng)參考架構(gòu),再次引發(fā)行業(yè)震動,但目前尚未開源DeepSeek-V3 滿血版完整訓練代碼。壁仞科技憑借八大自主創(chuàng)新技術(shù),實現(xiàn)
OpenAI O3與DeepSeek R1:推理模型性能深度分析
OpenAI剛推出的O3和DeepSeek的R1代表了推理模型領(lǐng)域的重大進步。這兩種模型都因在各種基準測試中的出色表現(xiàn)而備受關(guān)注,引發(fā)了人們對人工智能的未來及其對各個行業(yè)的潛在影響的討論。據(jù)我們所知
操作指南:pytorch云服務器怎么設置?
設置PyTorch云服務器需選擇云平臺,創(chuàng)建合適的GPU實例,安裝操作系統(tǒng)、Python及Anaconda,創(chuàng)建虛擬環(huán)境,根據(jù)CUDA版本安裝PyTorch,配置環(huán)境變量,最后驗證安裝。過程中需考慮
OpenAI即將推出o3 mini推理AI模型
近日,OpenAI首席執(zhí)行官Sam Altman在社交媒體平臺X上發(fā)表了一篇引人關(guān)注的文章。在文章中,他透露了一個重要信息:OpenAI已經(jīng)成功完成了全新推理AI模型o3 mini版本的研發(fā)工作,并
OpenAI即將推出o3-mini,助力高級推理普及
-mini的推出預示著高級推理技術(shù)將更加易于獲取且價格更為親民。 據(jù)了解,o3-mini是OpenAI在人工智能領(lǐng)域的一次重要創(chuàng)新,旨在打破高級推理技術(shù)的壁壘,使其能夠更廣泛地應用于各個行業(yè)和領(lǐng)域。通過o
大模型訓練框架(五)之Accelerate
輕松切換不同的并行策略,同時它還支持混合精度訓練,可以進一步提升訓練效率。 1. 導入 Accelerate只需添加四行代碼,即可在任何分布式配置中運行相同的 PyTorch 代碼!讓大規(guī)模訓練和推理
OpenAI發(fā)布新一代推理模型o3及o3-mini
近日,OpenAI在為期12天的發(fā)布會上宣布了新一代推理模型o3及其精簡版o3-mini。這兩款模型被專門設計用于在回答問題之前進行更深入的思考,以期提高答案的準確性。 據(jù)悉,o3模型
利用Arm Kleidi技術(shù)實現(xiàn)PyTorch優(yōu)化
PyTorch 是一個廣泛應用的開源機器學習 (ML) 庫。近年來,Arm 與合作伙伴通力協(xié)作,持續(xù)改進 PyTorch 的推理性能。本文將詳細介紹如何利用 Arm Kleidi 技術(shù)提升 Arm

輕松學Pytorch之Deeplabv3推理
評論