首页 > 编程语言 >Gradio:轻松实现AI算法可视化部署

Gradio:轻松实现AI算法可视化部署

时间:2023-04-30 17:12:14浏览次数:42  
标签:inputs gr AI outputs Gradio 可视化 import image

如何将你的AI算法迅速分享给别人,让对方体验,一直是一件麻烦事儿。

首先大部分人都是在本地跑代码,让别人使用你的模型,以往有这三种方案:

  • 上github
  • 将代码打包或者封装成docker后,用QQ/百度云/U盘传输
  • 学习前后端知识,写个前端界面,买个域名,用flask这样微服务框架快速部署,看情况结合一下内网穿透。

这些方案的问题在于——前两者需要对方会编程会配置环境(还得愿意),我们的分享对象满足这个条件的寥寥无几;后者则需要你这个算法工程师升级成全栈,学习前后端开发,学习成本太高

总结起来:场景不匹配,需求不契合,费时又费力!

那么有没有更好的解决方案呢?有!它就是我今天要给大家安利的一个python开源库:Gradio

 

Gradio是MIT的开源项目,GitHub 2k+ star。

使用gradio,只需在原有的代码中增加几行,就能自动化生成交互式web页面,并支持多种输入输出格式,比如图像分类中的图>>标签,超分辨率中的图>>图等。

同时还支持生成能外部网络访问的链接,能够迅速让你的朋友,同事体验你的算法

总结起来,它的优势有:

  • 自动生成页面且可交互
  • 改动几行代码就能完成
  • 支持自定义多种输入输出
  • 支持生成可外部访问的链接进行分享

目前已经有很多优秀的开源项目使用Gradio做demo页面。那么该怎么使用Gradio,让我们一起来玩玩~

 

Get start

0.安装Gradio

pip install gradio

1.写个简单的RGB转灰度

import gradio as gr
import cv2
​
def to_black(image):
    output = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return output
​
interface = gr.Interface(fn=to_black, inputs="image", outputs="image")
interface.launch()

gradio的核心是它的gr.Interface函数,用来构建可视化界面。

  • fn:放你用来处理的函数
  • inputs:写你的输入类型,这里输入的是图像,所以是"image"
  • outputs:写你的输出类型,这里输出的是图像,所以是"image"

最后我们用interface.lauch()把页面一发布,一个本地静态交互页面就完成了!

在浏览器输入http://127.0.0.1:7860/,查收你的页面:

 

 

上传一张图片,点击「SUBMIT」,大功告成。

 

 

对于任何图像处理类的ML代码来说,只要定义好一个图像输入>>模型推理>>返回图片的函数(逻辑和RGB转灰度图本质上没区别),放到fn中,就完事了。

2.增加example

我们可以在页面下方添加供用户选择的测试样例。

gr.Interface里的examples中放入图片路径,格式为[[路径1],[路径2],...]。

import gradio as gr
import cv2
​
def to_black(image):
    output = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    return output
​
interface = gr.Interface(fn=to_black, inputs="image", outputs="image",
                        examples=[["test.png"]])
interface.launch()

 

 

增加example不仅能让你的UI界面更美观,逻辑更完善,也有一些其他意义:

  • 比如做了一个图像去噪算法,但是用户手头并没有躁点照片,example能让他更快的体验到效果

当然example建议选择效果最好的图,原因和写论文选best case一样(大雾)。

3.创建一个外部访问链接

创建外部访问链接非常简单,只需要launch(share=True)即可,在打印信息中会看到你的外部访问链接。

免费用户的链接可以使用24小时,想要长期的话需要在gradio官方购买云服务。

 

4.升个级:图像分类pytorch+resnet18

import gradio as gr
import torch
from torchvision import transforms
import requests
from PIL import Image
​
model = torch.hub.load('pytorch/vision:v0.6.0', 'resnet18', pretrained=True).eval()
​
# Download human-readable labels for ImageNet.
response = requests.get("https://git.io/JJkYN")
labels = response.text.split("\n")
​
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)
gr.Interface(fn=predict, inputs=inputs, outputs=outputs).launch()

 

 

图像分类任务是机器学习经典任务。上面我们在outputs中设置了gr.outputs.Label(num_top_classes=3),这是Gradio中专为图像分类展示类标定制的函数.

修改inputs和outputs的组合,总能找到适合你的算法的那一个。

ps:不得不说imagenet的类标真细

 

总结

Gradio的最大的价值我认为是缩短了算法与应用的距离,人人都能迅速分享与体验项目成果,这不管在同事交流,项目汇报,甚至是同学吹牛(大雾),都性感多了。

同时,作为一个python库,不论是ML,还是数据分析,图像处理,甚至做一个视频转gif的小工具(自媒体老哥表示很有用),都能适用。

你还在发愁怎么分享你的AI算法吗?不如试试Gradio。

标签:inputs,gr,AI,outputs,Gradio,可视化,import,image
From: https://www.cnblogs.com/botai/p/Gradio-deploy.html

相关文章

  • 使用Gradio搭建AI演示系统
    简介在训练好模型之后,往往需要将其搭建为一个服务,使得他人能够进行调用。最常见的方案,可能就是借助flask、fastapi等配置较为容易web框架进行服务搭建。但是,根据需求,有时不仅会让我们搭建一个基本的服务,还需要进行前端样式配置,比如毕设的演示系统。笔者作为一名算法人员,前端的知......
  • Gradio: 使用Python构建机器学习网页应用
    Gradio:用Python构建机器学习网页APPGradio是一个开源的Python库,用于构建演示机器学习或数据科学,以及web应用程序。使用Gradio,您可以基于您的机器学习模型或数据科学工作流快速创建一个漂亮的用户界面,让用户可以”尝试“拖放他们自己的图像、粘贴文本、录制他们自己的声音,并通......
  • macbook air 安装 MacOS 及 win10
    前期准备mac电脑、16G的U盘、可以访问的AppStore帐号。重要提示U盘和硬盘数据格式化后不可恢复,需提前做好数据备份。安装macos需要连网。创建可引导的macOS安装器1、U盘y要求至少有14GB可用储存空间,格式化为MacOS扩展格式。2、下载macos系统镜像3、使用“终端”......
  • 响应式的 switchboard:让又大又慢的Vue/AIpine 页面爆快
    我的提示:AIpine是一个js库,官网口号是“一个新的轻量极javascript框架”,其实我之前也没接触过,翻译这篇文章时才注意到官方地址:[AIpine.js]https://alpinejs.dev下面开始是译文:小提示:在这篇文章中我将使用Vue/AIpine术语,但是我认为此模式可以应用于更多不同的语言框架......
  • 项目启动时数据库报错:com.mysql.cj.jdbc.exceptions.CommunicationsException: Commun
    项目启动时报错:com.mysql.cj.jdbc.exceptions.CommunicationsException:Communicationslinkfailure解决方法(转载):https://blog.csdn.net/lvoelife/article/details/129284611?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTR......
  • Raid卡常用命令
    1.创建删除raid#点3槽位灯:/opt/MegaRAID/MegaCli/MegaCli64-PDLocate-start-physdrv[32:3]-a0关3槽位灯:/opt/MegaRAID/MegaCli/MegaCli64-PDLocate-stop-physdrv[32:3]-a0#删除raid/opt/MegaRAID/MegaCli/MegaCli64-CfgLdDel-L1-A0L1:1为RIAD组TargetId号......
  • AI练口语
    网页版的应用:https://myshell.ai/需要前提:1.梯子;2.钱包账号google商店下载MetaMask,添加到扩展程序打开网页,出现一个狐狸标识,注册就好 也有其他练口语app可能用到APIkey1.https://help.openai.com/en/articles/6882433-incorrect-api-key-provided这篇文章说明如何查找已......
  • 转 LSI SAS 1068E Raid CentOS 5.7 安装浪潮NF5220
    (转)LSISAS1068ERaidCentOS5.5安装实例浪潮NF5220系列分类:linux 新来了一批服务器,全都是清一色的国产服务器,相同的阵列卡,令人头疼的是Linux标准内核不包含该raid驱动,需要单独安装,如果是新升级内核,肯定需要编译进去该raid驱动。一、先把主板自带的驱动光盘中的驱动文件......
  • AI奇幻词汇乐园一:探险之旅等你来
    人工智能......
  • 记一次nginx配置不当引发的499与failover 机制失效
    背景nginx499在服务端推送流量高峰期长期以来都是存在的,间或还能达到告警阈值触发一小波告警,但主观上一直认为499是客户端主动断开,可能和推送高峰期的用户打开推送后很快杀死app有关,没有进一步探究问题根源。然而近期在非高峰期也存在499超过告警阈值的偶发情况,多的时候一天几......