nnunetv2系列:使用onnx模型参数利用onnxruntime推理

news2024/9/26 3:30:13

nnunetv2系列:使用onnx模型参数利用onnxruntime推理

首先感谢https://blog.csdn.net/chen_niansan/article/details/142328247作者分享的示例,这里在此基础上进行修改和增加了将预测结果转换到方便人查看的掩码图。

import os
import numpy as np
from cv2 import (
    imread,
    imwrite,
    cvtColor,
    COLOR_BGR2RGB,
    resize,
    INTER_LINEAR,
)
from time import time
from onnxruntime import (
    InferenceSession,
    # get_device,
)


def preprocess_image(image, input_size, in_ch = 3):
    # image = np.array(image)
    image_resized = resize(
        image, input_size, 
        interpolation=INTER_LINEAR
    )
    # print(image_resized.shape)
    image_normalized = image_resized / 255.0
    if len(image_normalized.shape) == 2:
        image_normalized = np.stack(
            [image_normalized] * in_ch, 
            axis=-1
        )
    
    image_normalized = np.transpose(image_normalized, (2, 0, 1))
    image_normalized = np.expand_dims(image_normalized, axis=0)

    return image_normalized.astype(np.float32)


if __name__ == "__main__":
    tic = time()
    # 设置环境变量以指定使用0号GPU
    # os.environ["CUDA_VISIBLE_DEVICES"] = "0"

    image_path = "./img_2_0000.png"
    image_pred_path = "./img_2_0000.png"
    seg_model_path = "/xxx/checkpoint_best_fold_0.onnx"
    if not os.path.exists(seg_model_path):
        raise FileNotFoundError(
            f"Model file {seg_model_path} does not exist."
        )

    # device = get_device()
    device = "CPU"
    providers = (
        ["CUDAExecutionProvider"]
        if device != "CPU"
        else ["CPUExecutionProvider"]
    )

    seg_model = InferenceSession(
        seg_model_path, 
        providers=providers
    )
    image = imread(image_path)
    image = cvtColor(image, COLOR_BGR2RGB)
  
    # 尺寸参考plans.json中的patch_size=(h, w)
    image_input = preprocess_image(
        image,
        (w, h),
        in_ch=3
    )
    # 获取输入和输出的名称
    # input_name = seg_model.get_inputs()[0].name
    # print(f"==>> input_name: {input_name}")
    # output_name = seg_model.get_outputs()[0].name
    # print(f"==>> output_name: {output_name}")
    # 数组组成的列表
    mask_pred_info = seg_model.run(
        # [output_name],
        # {input_name: image_input}
        ['output'],
        {'input': image_input}
    )
    # print(f"==>> mask_pred_info: {mask_pred_info}")
    mask_pred_batch = mask_pred_info[0]
    mask_pred = np.squeeze(
        mask_pred_batch, axis=0
    )
    mask_pred = np.argmax(mask_pred, axis=0)
    # pred_pixel_value_list = np.unique(mask_pred)

    # 恢复自定义的标签值
    predict_recover_value_dict = {
        0: 0,
        1: 128,
        2: 196,
        3: 255
    }
    for predict_value, recover_value in predict_recover_value_dict.items():
        mask_pred[mask_pred == predict_value] = recover_value
        
    imwrite(image_pred_path, mask_pred)
    print("time cost is: ", time() - tic)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2165599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024最新Python Debugger工具pdb的用法(深度学习项目),了解输入输出的形状大小

侵入式方法 (在被调试的代码中添加以下代码然后再正常运行代码) import pdb pdb.set_trace() 例如: 正常运行训练文件后: 在命令行发现输出以下内容: 出现了(Pdb) 的提示符,说明已经打开pdb 在使用Pyth…

解决fatal: unable to access ‘https://........git/‘: Recv failure: Operation time

目录 前言 解决方法一 解决方法二 解决方法三 解决方法四 总结 前言 在使用 Git 进行代码拉取时,可能会遇到连接超时的问题,特别是在某些网络环境下,例如公司网络或防火墙严格的环境中。这种情况下,Git 无法访问远程仓…

红帽认证会过期吗?一文给你解释清楚!

红帽认证以其权威性、实用性和高含金量受到了广大IT人士的青睐,尤其是Linux领域。然而,许多人在考取红帽认证后,心中都有一个疑问:红帽认证会过期吗?本文将为大家详细解答这个问题。 红帽认证是什么? 红帽认证是由红帽公司(Re…

Windows 2003系统的防护技巧,禁止IPC$空连接

一、修改管理员帐号和新建“陷阱”帐号 多年以来,微软一直在强调建议重命名Administrator账号并禁用Guest账号,提高计算机的安全性。Windows Server 2003系统,Guest 账号是默认禁用的,管理员账号默认是Administrator,…

html 几行的空间分成3个区域

1.代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>三个区域示例</title> …

深入解析Python 中的 sortedcontainers 库:高效的排序数据结构

在日常的 Python 编程中&#xff0c;列表&#xff08;list&#xff09;、集合&#xff08;set&#xff09;和字典&#xff08;dict&#xff09;是常用的数据结构。然而&#xff0c;在某些特定的场景下&#xff0c;我们需要对数据进行排序&#xff0c;并且希望在插入、删除或访问…

4.2章节python中选择结构

选择结构主要通过if、elif&#xff08;else if的缩写&#xff09;和else语句来实现。这些语句允许程序根据条件执行不同的代码块。另外还有表达式中多个条件连接等。 一、基本语句if if 语句后面跟一个条件表达式&#xff0c;如果条件为真&#xff08;True&#xff09;&#…

Machine Learning Specialization 学习笔记(4)

文章目录 前言一、模型评估训练集常规训练集线性回归逻辑回归 交叉验证集 偏差与方差正则化 学习曲线数据集的添加&#xff08;数据增强&#xff09;迁移学习精确率与召回率 二、决策树基本概念决策树的工作原理决策树的优点决策树的缺点决策树算法的变体决策树在Python中的实现…

OpenCV4.8 开发实战系列专栏之 01- 环境搭建与图像读写

大家好&#xff0c;欢迎大家学习OpenCV4.8 开发实战专栏&#xff0c;长期更新&#xff0c;不断分享源码。 专栏代码全部基于C 与Python双语演示&#xff0c;专栏答疑群 请联系微信 OpenCVXueTang_Asst 本文关键知识点&#xff1a; 开发环境搭建、读取图像与显示图像,读取图像…

什么是换电连接器

换电连接器是一种高压连接器&#xff0c;安装在整车中&#xff0c;属于车载连接器。它利用导体和绝缘体的特性&#xff0c;将电能和数据信号从换电站设备传输到电动汽车的电池组&#xff0c;实现能源的快速补充。换电连接器通常由插头和插座两部分组成&#xff0c;通过精密的对…

紫光展锐 携手摩托罗拉在全球市场推出强竞争力5G手机moto G35

moto G35 5G亮点 ■ 高清视界&#xff1a;6.72英寸FHDLCD屏幕&#xff0c;120Hz高刷新率&#xff1b; ■ 震撼音效&#xff1a;配备立体声扬声器和杜比全景声Dolby Atmos&#xff1b; ■ 大师影像&#xff1a;5000万像素后置AI相机&#xff1b; ■ 强劲核芯&#xff1a;紫光…

计算机毕业设计Hadoop+Spark知识图谱美团美食推荐系统 美团餐厅推荐系统 美团推荐系统 美食价格预测 美团爬虫 美食数据分析 美食可视化大屏

《HadoopSpark知识图谱美团美食推荐系统》开题报告 一、引言 随着互联网技术的快速发展&#xff0c;大数据已成为企业竞争力的关键要素。美团作为国内领先的本地生活服务平台&#xff0c;拥有海量的用户行为数据和丰富的业务场景。为了进一步提升用户体验&#xff0c;提高推荐…

JVM内存区域详解及DirectByteBuffer内存

Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的基础&#xff0c;它为Java程序提供了一个与平台无关的执行环境。JVM内存区域的划分对于理解Java程序的运行机制至关重要。本文将详细介绍JVM的内存区域&#xff0c;并探讨对外内存中的DirectByteBuffer。 方法区&#x…

炉石传说辅助攻略—VMOS云手机助攻:国服回归任务要点,哪个辅助更好?

在《炉石传说》中想要轻松完成各种任务并享受游戏的乐趣&#xff0c;VMOS云手机是您的最佳辅助工具&#xff01;VMOS云手机为《炉石传说》提供了专属定制版的云手机&#xff0c;内置游戏安装包&#xff0c;不需要重新下载安装游戏&#xff0c;让您快速上手。更棒的是&#xff0…

Misc-流量分析基础

第一种&#xff1a;直接搜索flag字符串 第二种&#xff1a;flag进行了十六进制编码&#xff0c;通过十六进制编码解决 第三种&#xff1a;压缩包流量&#xff1a;tar.gz的压缩包可以直接在wireshark中解压查看&#xff0c;其他的压缩包则要将流量导出来&#xff0c;然后去解码…

微信小程序注册流程及APPID获取(完整版图文教程)

文章目录 前言1. 注册微信小程序账号1.1微信小程序注册1.2 点击注册按钮&#xff0c;进入小程序注册步骤。1.3 填写邮箱、密码、验证码1.4 用户信息登记1.5 微信扫码认证后&#xff0c;回到微信公众平台点击确认提交1.6 进小程序后台&#xff0c;完成注册 2.完善小程序账号信息…

力扣 困难 25.K个一组反转链表

文章目录 题目介绍题解 题目介绍 题解 先把链表的长度求出来&#xff0c;翻转前先判断剩余链表节点的个数&#xff0c;如果大于等于k则翻转&#xff0c;否则直接退出循环返回&#xff0c;每一个小组的翻转和上一题一样。 参考b站灵茶山艾府 class Solution {public ListNo…

汽车3d动画渲染选择哪个?选择最佳云渲染解决方案

面临汽车3D动画渲染挑战&#xff1f;选择正确的云渲染服务至关重要。探索最佳解决方案&#xff0c;优化渲染效率&#xff0c;快速呈现逼真动画。 汽车3d动画渲染选择哪个&#xff1f; 对于汽车3D动画渲染&#xff0c;选择哪个渲染器取决于你的项目需求、预算和期望的效果。Ble…

inBuilder零代码新版表单设计器特性一览

inBuilder零代码新版表单设计器正式上线&#xff0c;此次新版表单设计器相比旧版&#xff0c;优化了界面外观、提升了功能易用性、增加了许多新特性。下面跟随本文简要了解下零代码新设计器主要的几大新特性&#xff1a; 1. 优化设计器界面 新版设计器对表单上控件层级做了一…

素数判断-C语言

1.问题&#xff1a; 输入一个大于3的整数n&#xff0c;判断是否为素数&#xff08;质数&#xff09;。 2.解答&#xff1a; 对100-200之间的每一个数进行遍历&#xff0c;如果不能被3整除&#xff0c;就将此数输出&#xff0c;若能被3整除&#xff0c;就不输出此数。 3.代码&…