Deeplabv3
Torchvision框架中在语义分割上支持的是Deeplabv3语义分割模型,而且支持不同的backbone替换,这些backbone替换包括MobileNetv3、ResNet50、ResNet101。其中MobileNetv3版本训练数据集是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'}}
)
模型的输入与输出结构如下:

推理测试
模型推理对图像有个预处理,要求如下:
transform = torchvision.transforms.Compose([
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
意思是转换为0~1之间的浮点数,然后减去均值除以方差。
剩下部分的代码就比较简单,初始化onnx推理实例,然后完成推理,对结果完成解析,输出推理结果,完整的代码如下:
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()
运行结果如下:

审核编辑 :李倩
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据集
+关注
关注
4文章
1240浏览量
26262 -
pytorch
+关注
关注
2文章
813浏览量
14930
原文标题:轻松学Pytorch之Deeplabv3推理
文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
PyTorch 中RuntimeError分析
://download.pytorch.org/whl/cu118
方案3:使用替代上采样模式
如果你的任务允许,可以将 mode=\'nearest\' 替换为其他已支持 BFloat16 的模式,例如 mode
发表于 03-06 06:02
AI功能(SC171开发套件V2-FAS)
AI功能(SC171开发套件V2-FAS)
序列
课程名称
视频课程时长
视频课程链接
课件链接
工程源码
1
图像语义分割(deeplabv3)案例----基于SC171开发套件V2-FAS
15
发表于 02-11 14:33
Pytorch 与 Visionfive2 兼容吗?
Pytorch 与 Visionfive2 兼容吗?
$ pip3 install torch torchvision torchaudio --index-url https
发表于 02-06 08:28
商汤开源SenseNova-MARS:突破多模态搜索推理天花板
今日,商汤正式开源多模态自主推理模型 SenseNova-MARS(8B/32B 双版本),其在多模态搜索与推理的核心基准测试中以 69.74 分超越Gemini-3-Pro(69.06 分
曦望发布新一代推理GPU芯片,单位Token推理成本降低90%
电子发烧友网报道 1月27日,国产GPU厂商曦望(Sunrise)重磅发布新一代推理GPU芯片——启望S3。这是曦望在近一年累计完成约30亿元战略融资后的首次集中公开亮相。2025年,曦望芯片交付量
今日看点:消息称 AMD、高通考虑导入 SOCAMM 内存;曦望发布新一代推理GPU芯片启望S3
曦望发布新一代推理GPU芯片启望S3 近日,浙江杭州GPU创企曦望(Sunrise)发布新一代推理GPU芯片启望S3,并推出面向大模型推理的
发表于 01-28 11:09
•1361次阅读
LLM推理模型是如何推理的?
这篇文章《(How)DoReasoningModelsReason?》对当前大型推理模型(LRM)进行了深刻的剖析,超越了表面的性能宣传,直指其技术本质和核心局限。以下是基于原文的详细技术原理、关键
AI功能(SC171开发套件V3)2026版
分割(deeplabv3)案例----基于SC171开发套件V3
8分02秒
https://t.elecfans.com/v/28529.html
*附件:文档:图像语义分割(deeplabv3
发表于 01-15 11:18
NVIDIA TensorRT LLM 1.0推理框架正式上线
TensorRT LLM 作为 NVIDIA 为大规模 LLM 推理打造的推理框架,核心目标是突破 NVIDIA 平台上的推理性能瓶颈。为实现这一目标,其构建了多维度的核心实现路径:一方面,针对需
信而泰×DeepSeek:AI推理引擎驱动网络智能诊断迈向 “自愈”时代
故障)”的自动化推理链条。3.预测性防御:智能基线洞察,防患于未然l 基于先进的时序分解算法,为每个关键业务终端/链路动态构建多维性能基线(吞吐量、时延、丢包率)。l 主动预警潜在风险,如带宽瓶颈
发表于 07-16 15:29
大模型推理显存和计算量估计方法研究
随着人工智能技术的飞速发展,深度学习大模型在各个领域得到了广泛应用。然而,大模型的推理过程对显存和计算资源的需求较高,给实际应用带来了挑战。为了解决这一问题,本文将探讨大模型推理显存和计算量的估计
发表于 07-03 19:43
将Whisper大型v3 fp32模型转换为较低精度后,推理时间增加,怎么解决?
将 openai/whisper-large-v3 FP32 模型转换为 FP16、INT8 和 INT4。
推理所花费的时间比在 FP32 上花费的时间要多
发表于 06-24 06:23
【正点原子STM32MP257开发板试用】基于 DeepLab 模型的图像分割
cv2.imshow(\'DeepLabV3 分割结果\', blended)
# 按Q键退出
if cv2.waitKey(1) & 0xFF == ord(\'q\'):
break
发表于 06-21 21:11
轻松学Pytorch之Deeplabv3推理
评论