Gradio

最近看到一个新的包,感觉挺好玩的,这里记录一下。

与他人共享机器学习模型,API或数据科学工作流程的最佳方法之一是创建一个交互式应用程序,使用户或同事可以在浏览器中尝试演示。

Gradio允许在Python中构建演示并分享它们,通常只需要几行代码即可完成之前需要写flask后端服务,前端开发用户界面等复杂工作。

安装

pip install gradio

Hello World

开始学起都是从输出"hello world"开始,这里也不例外。

import gradio as grdef greet(name):return "Hello " + name + "!"demo = gr.Interface(fn=greet, inputs="text", outputs="text")demo.launch()

上面的代码运行后,在http// localhost:7860上弹出浏览器:

左边输入对应的name,右边有基于程序的输出:

接口类

为了制作演示,上面创建了gradio.interface此接口类可以让用户界面包装任何Python函数。在上面的示例中,演示了一个简单的基于文本的功能,接收文本输入,并添加hello+该文本输出。此功能不仅仅局限于该功能,可以是任何函数,比如音乐生成器,税收计算器再到机器学习模型的推理功能的任何内容。

核心接口类Interface以三个必需的参数初始化:

  • fn:包裹UI的功能函数

  • input:用于输入的哪个组件(例如 "text", "image" 或者"audio"

  • output:用于输出的哪个组件(例如 "text", "image" 或者"audio"

组件属性:

  • textbox: 比text有更大的空间,且可以添加提示字符串 ,用法: inputs=gr.Textbox(lines=2, placeholder="Name Here...")

多输入和输出组件

假设输入和输出比较复杂,有多个的情况下,可以通过列表的方式进行传递参数。下面是一个计算器,实现加减乘除的功能,输入是两个数字,中间可以加四种运算符中的其中一种,在输入中只需要将其按照对应的格式排列好即可。[[5, "add", 3],] 表示5+3。可以用example表示默认示例。

import gradio as grdef calculator(num1, operation, num2):if operation == "add":return num1 + num2elif operation == "subtract":return num1 - num2elif operation == "multiply":return num1 * num2elif operation == "divide":if num2 == 0:raise gr.Error("Cannot divide by zero!")return num1 / num2demo = gr.Interface(calculator,["number", gr.Radio(["add", "subtract", "multiply", "divide"]),"number"],"number",examples=[[5, "add", 3],[4, "divide", 2],[-4, "multiply", 2.5],[0, "subtract", 1.2],],title="Toy Calculator",description="Here's a sample toy calculator. Enjoy!",
)
if __name__ == "__main__":demo.launch()

更多接口属性可以参考官方文档。

模型推理

模型推理可能是更加适合的场景。如果你是一名AI工程师或数据科学家,可能熟悉以下情况:刚刚花了数周的时间开发新的机器学习模型,终于对其性能感到满意,并且想向其它人展示它。这个时候如果只是单独的跑一下程序得到一个数字或者字符串可能不是那么直观,Gradio就能帮助我们省略掉写接口服务及前端演示界面的开发等环节。

下面介绍如何将分类模型PyTorch+ResNet152, 这块需要自己装一下PyTorch环境, CPU/GPU都可以

pip install torch==1.10.0 torchvision==0.11.0
import torch
import gradio as gr
from PIL import Image
from torchvision import transforms
import requests# load model 机器要能联网,需要下载训练好的公开模型
model = torch.hub.load('pytorch/vision:v0.6.0', 'resnet152', pretrained=True).eval()# load 1000类标签
labels = []
# labels.txt 可以通过`https://git.io/JJkYN`下载
with open('labels.txt') as f:for ln in f:label = ln.rstrip('\n')labels.append(label)def predict(inp):inp = Image.fromarray(inp.astype('uint8'), 'RGB')inp = transforms.ToTensor()(inp).unsqueeze(0)with torch.no_grad():prediction = torch.nn.functional.softmax(model(inp)[0], dim=0)return {labels[i]: float(prediction[i]) for i in range(1000)}inputs = gr.inputs.Image()
outputs = gr.outputs.Label(num_top_classes=3)# share = 'True' 表示可以生成一个url链接,公众通过该url就能体验该功能,有效期72h
gr.Interface(fn=predict, inputs=inputs, outputs=outputs).launch(share='True')

注意

如果想指定端口号且不想用127.0.0.1这个地址而是用原始的服务器ip地址,可以在demo.launch()中加一些指定的参数:

demo.launch(server_name='xx.xx.xx.xx', server_port=8080)

参考

  • https://gradio.app/docs/
  • https://huggingface.co/gradio
  • https://zhuanlan.zhihu.com/p/374238080
  • https://cloud.tencent.com/developer/article/1952068
  • https://blog.scaleway.com/how-to-make-a-demo-of-your-machine-learning-model-with-gradio/

Gradio实现算法可视化相关推荐

  1. c语言可视化_这些算法可视化网站助你轻松学算法

    前言 无疑,数据结构与算法学习最大的难点之一就是如何在脑中形象化其抽象的逻辑步骤.而图像在很多时候能够大大帮助我们理解其对应的抽象化的东西,而如果这个图像还是我们自己一点点画出来的,那么无疑这个印象是 ...

  2. 3min利用Python实现9种经典排序算法可视化!(附源代码)

    来源:恋习Python 本文附视频,建议收藏. 本文为你分享实现9种经典排序算法可视化的方法,3分钟即可实现. [导 读]近在某网站上看到一个视频,是关于排序算法的可视化的,看着挺有意思的,也特别喜感 ...

  3. python socket发送数组_利用pyprocessing初步探索数组排序算法可视化

    [经过两次更新,功能基本完成]最终效果请直接下拉到最后一个视频观看 背景说明 这篇文章旨在初步探索利用pyprocessing的强大的可视化功能,以及pyprocessing和Ipython之间的本地 ...

  4. 支持中文的算法可视化网站,你想要的算法这都有

    大数据文摘出品 作者:蒋宝尚 上次文摘菌给大家推荐了一个能让算法动起来的开源项目之后,有热心的读者给文摘菌推荐了另一个算法可视化的网站.文摘菌打开之后,立即被起画风所折服,所以决定探索一番. 先给出网 ...

  5. c++ 可视化界面_这些算法可视化网站助你轻松学算法

    作者:守望,Linux应用开发者,目前在公众号[编程珠玑] 分享Linux/C/C++/数据结构与算法/工具等原创技术文章和学习资源. 前言 无疑,数据结构与算法学习最大的难点之一就是如何在脑中形象化 ...

  6. 多目标粒子群算法_PSO粒子群算法可视化

    PSO粒子群算法可视化: 知乎视频​www.zhihu.com 代码如下(参见 github): import numpy as np from sko.PSO import PSOdef demo_ ...

  7. 基于Qt的A*算法可视化分析

    代码地址如下: http://www.demodashi.com/demo/13677.html 需求 之前做过一个无人车需要自主寻找最佳路径,所以研究了相关的寻路算法,最终选择A算法,因为其简单易懂 ...

  8. 数据算法可视化学习网站

    目录 1.数据结构可视化 (Data Structure Visualizations) 2.视觉算法 ( VisuAlgo) 3.算法可视化( Algorithm Visualizer) 4.算法复 ...

  9. C语言作业 – 数组排序算法可视化

    这学期的线下C语言课程,大一同学们学完数组排序后,布置了一次数组排序算法可视化的作业,给了大家1天时间独立完成,通过可视化加深对排序算法的理解. 下面给出了四位同学的实现效果和代码,大家可以参考. 源 ...

最新文章

  1. torch.squeeze()和unsqueeze()
  2. java8避免null_在 Java 8 中避免 Null 检查
  3. MASK-RCNN学习一:(数据集/原理介绍)
  4. 在Oracle 11g中用看Oracle的共享内存段---------IPCS
  5. 1091 N-自守数 (15分)
  6. Android开发笔记(一百四十六)仿支付宝的支付密码输入框
  7. python类似turtle的库_Python库——turtle
  8. 为什么BGP需要TCP三次握手?
  9. 机器学习笔记(二十四):召回率、混淆矩阵
  10. 我的家庭私有云计划-19
  11. 天堂2游戏登陆服务器源码分析1
  12. Win10系统杀毒软件defender无法自动启用的解决方法
  13. 【C语言/入门游戏】猜数字,关机指令游戏及go to语句
  14. Android内存优化汇总
  15. 使用Nodejs+Protractor搭建测试环境
  16. 有关B2C制造业电商企业的数字化转型思考
  17. AU 32-64位转换插件 – SoundRadix 32 Lives v1.0.10 Mac
  18. WVGA与HVGA、QVGA详细解答
  19. 华为服务器1u系列,服务器 1u 尺寸
  20. 成都睿铂|超详细三维模型单体化技术流程与标准

热门文章

  1. 浙江省测绘与地理信息局异地备份和容灾项目
  2. 计算机系统的cpu是指什么意思,电脑cpu参数是什么意思
  3. 云服务器系统一键安装,一键安装服务器系统
  4. 1253寻找肇事司机
  5. vb.net获取汉字串拼音首字母
  6. 【appium】appium自动化入门之基本参数完整版(67个appium基本参数和关键字)
  7. 【ospf-vlink虚拟连接】
  8. 设计师思维 工程师思维_从设计思维到设计行为
  9. 整活~使用webAI做一个网页AR吃豆人小游戏
  10. IO流原理及流的分类