当前位置: 首页 > ai >正文

3.2.3

# 导入必要的库
import onnx
import numpy as np
from PIL import Image
import onnxruntime as ort


# 定义预处理函数,用于将图片转换为模型所需的输入格式
def preprocess(image_path):
    input_shape = (1, 1, 64, 64)    # 模型输入期望的形状,这里是 (N, C, H, W),N=batch size, C=channels, H=height, W=width
    img = Image.open(image_path).convert('L')    # 打开图像文件并将其转换为灰度图  1分
    img = img.resize((64, 64), Image.ANTIALIAS)    # 调整图像大小到模型输入所需的尺寸
    img_data = np.array(img, dtype=np.float32)    # 将PIL图像对象转换为numpy数组,并确保数据类型是float32
    # 调整数组的形状以匹配模型输入的形状
    img_data = np.expand_dims(img_data, axis=0)  # 添加 batch 维度
    img_data = np.expand_dims(img_data, axis=1)  # 添加 channel 维度
    assert img_data.shape == input_shape, f"Expected shape {input_shape}, but got {img_data.shape}"    # 确保最终的形状与模型输入要求的形状一致
    return img_data    # 返回预处理后的图像数据


# 定义情感类别与数字标签的映射表 2分

emotion_table = {'____________':0, '____________':1, 'surprise':2, 'sadness':3, 'anger':4, 'disgust':5, 'fear':6, 'contempt':7}

---

emotion_table = {'neutral':0, 'happiness':1, 'surprise':2, 'sadness':3, 'anger':4, 'disgust':5, 'fear':6, 'contempt':7}
代码解释:


# 加载模型 2分

ort_session = ____________.____________('emotion-ferplus.onnx')    # 使用onnxruntime创建一个会话,用于加载并运行模型

---

ort_session = ort.InferenceSession('emotion-ferplus.onnx')    # 使用onnxruntime创建一个会话,用于加载并运行模型


# 加载本地图片并进行预处理 2分

input_data = ____________('____________')

---

input_data = preprocess('img_test.png')


# 准备输入数据,确保其符合模型输入的要求
ort_inputs = {ort_session.get_inputs()[0].name: input_data}    # ort_session.get_inputs()[0].name 是获取模型的第一个输入的名字


# 运行模型,进行预测 2分

ort_outs = ____________.____________(None, ort_inputs)

---

ort_outs = ort_session.run(None, ort_inputs)

代码解释:动词在后面,


# 解码模型输出,找到预测概率最高的情感类别 2分

predicted_label = ____________.____________(ort_outs[0])

---

predicted_label = np.argmax(ort_outs[0])

代码解释:概率最高argmax


# 根据预测的标签找到对应的情感名称 2分

predicted_emotion = list(____________.keys())[____________]

---

predicted_emotion = list(emotion_table.keys())[predicted_label]

列表

标签


# 输出预测的情感

print(f"Predicted emotion: {predicted_emotion}")
 

http://www.xdnf.cn/news/7860.html

相关文章:

  • SMT贴片工厂核心工艺与质量控制解析
  • LeetCode-链表-合并两个有序链表
  • GO语言学习(七)
  • 野火RK3588部署yolov8
  • 【notepad++如何设置成中文界面呢?】
  • 解决使用HBuilder X开发时uView组件不生效的问题
  • python爬虫和逆向:百度翻译数据采集的几种方式
  • Spring Boot AI 之 Chat Client API 使用大全
  • 前端面试题
  • C# AOP编程
  • 【亲测有效】Ubuntu22.04安装黑屏重启进入系统卡死
  • 如果有三个服务实例部署在三台不同的服务器上,这三个服务实例的本地缓存,是存储一模一样的数据?还是各自只存一部分?
  • 《易经》的数学表达:初级版和高级版
  • 回溯算法——排列篇
  • 新导游入行规范与职业发展指导
  • auto关键字解析
  • 时源芯微|π型LC滤波电路
  • 力扣面试150题--填充每个节点的下一个右侧节点指针 II
  • SPI协议软件实现 W25QXX flash 存储器
  • 【写在创作纪念日】基于SpringBoot和PostGIS的各省东西南北四至极点区县可视化
  • C++函数重载
  • 2025年保姆级教程:Powershell命令补全、主题美化、文件夹美化及Git扩展
  • 线端子人工做线操作介绍
  • C++学习:六个月从基础到就业——多线程编程:条件变量
  • 诊断仪进行CAN采样点测试的原理
  • 管理会议最佳实践:高效协同与价值最大化
  • ctfhub技能书http协议
  • 2570. 合并两个二维数组 - 求和法
  • RTMP协议解析【三】
  • 【论文复现】——基于NDT与ICP结合的点云配准算法(matlab版)