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

Gradio是一个MIT开源项目,可以让你只需几行代码就能将AI算法转化为交互式网页,支持多种输入输出格式,并能生成外部访问链接。通过Gradio,无需编程或配置环境知识,就能让非技术人员体验算法。它简化了算法分享过程,适用于机器学习、图像处理等各种场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

  • 上github

  • 将代码打包或者封装成docker后,用QQ/百度云/U盘传输

  • 学习前后端知识,写个前端界面,买个域名,用flask这样微服务框架快速部署,看情况结合一下内网穿透。

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

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

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

看Gradio在线Demo,可以上一个AI开源社区SwanHub

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")
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的小工具(自媒体老哥表示很有用),都能适用。

你还在发愁怎么做大作业PPT汇报吗?不如试试Gradio。

了解更多

关于我

  • 个人博客:https://xiaolin199912.github.io/
  • 我的产品:焕影一新(微信小程序)
    集成了照片修复,智能上色,证件照换底,AI抠图等为一体的AI照片应用,欢迎使用与给我们提建议xiaolin199912@163.com
    焕影一新小程序码
Gradio是一个用于构建交互式界面的Python库,可以轻松地将模型、函数或数据转换成可视化的界面。通过Gradio,你可以实现输入图像或视频的功能。 要实现输入图像的功能,你可以使用以下代码示例: ```python import gradio as gr import cv2 def process_image(image): # 在这里对图像进行处理 # 返回处理后的图像 return processed_image iface = gr.Interface(fn=process_image, inputs="image", outputs="image") iface.launch() ``` 在这个示例中,`process_image`函数接收一个图像作为输入,并对图像进行处理。你可以在函数中使用OpenCV等库来实现图像处理的具体逻辑。然后,通过`gr.Interface`创建一个接口,指定输入类型为图像,输出类型也为图像。最后,调用`launch`方法启动界面。 如果你想实现输入视频的功能,可以使用类似的方法。你可以使用OpenCV读取视频帧,并在处理每一帧时调用处理函数。然后,将处理后的帧显示在界面上。 希望这个回答对你有帮助!如果你还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* *2* *3* [Gradio轻松实现AI算法可视化部署](https://blog.youkuaiyun.com/SoulmateY/article/details/117327898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值