基于paddle 2.4.2的图像分类gradio示例

ResNet50模型是一个预先训练的卷积神经网络,它已经在ImageNet数据集上训练用于图像分类任务。该脚本使用飞桨加载预处理的ResNet50模型,并使用model.eval()将模型设置为评估模式。预测函数获取输入图像,使用变换函数对其进行预处理,使其通过预先训练的ResNet50模型以获得预测的logits,并将概率最高的标签作为包含标签名称及其相应概率的字典返回。该脚本使用Gradio.interface()函数创建一个Gradio接口,该函数将预测函数以及函数的输入和输出类型作为输入,并为图像分类器创建一个用户界面。该界面允许用户上传图像并查看图像的预测标签。

安装模块

conda install paddlepaddle==2.4.2 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/
conda install gradio

代码

import paddle
from paddle.vision.transforms import Compose, Resize, Normalize
import gradio as gr
import paddle.vision.transforms as T

# 加载模型
model = paddle.vision.models.resnet50(pretrained=True)
model.eval()

# 定义图像预处理函数
# transform = Compose([Resize((224, 224)), Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])])
transform = T.ToTensor()

# 定义预测函数
def predict(image):

    # 预处理图像
    image = transform(image)
    # 添加一维批次维度
    image = paddle.unsqueeze(image, axis=0)
    # 模型预测
    logits = model(image)
    # 取最大概率的标签
    pred = paddle.argmax(logits).numpy()[0]
    print(pred)
    # 返回预测结果
    return {'label': str(pred)}

# 创建Gradio界面
inputs = gr.inputs.Image()
outputs = gr.outputs.Label(num_top_classes=1)
interface = gr.Interface(fn=predict, inputs=inputs, outputs=outputs,
                         title='ResNet50 图像分类器',
                         description='使用PaddlePaddle的ResNet50模型对图像进行分类')
interface.launch()

界面

通过浏览器访问界面:http://127.0.0.1:7860

效果

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

外码斯迪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值