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

2,851次阅读
没有评论

如何将你的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。

了解更多

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2023 年 4 月
 12
3456789
10111213141516
17181920212223
24252627282930
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开

清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开

清库存!DeepSeek突然补全R1技术报告,训练路径首次详细公开 Jay 2026-01-08 20:18:...
训具身模型遇到的很多问题,在数据采集时就已经注定了丨鹿明联席CTO丁琰分享

训具身模型遇到的很多问题,在数据采集时就已经注定了丨鹿明联席CTO丁琰分享

训具身模型遇到的很多问题,在数据采集时就已经注定了丨鹿明联席CTO丁琰分享 衡宇 2026-01-08 20:...
「北京版幻方」冷不丁开源SOTA代码大模型!一张3090就能跑,40B参数掀翻Opus-4.5和GPT-5.2

「北京版幻方」冷不丁开源SOTA代码大模型!一张3090就能跑,40B参数掀翻Opus-4.5和GPT-5.2

「北京版幻方」冷不丁开源SOTA代码大模型!一张3090就能跑,40B参数掀翻Opus-4.5和GPT-5.2...
开源“裸考”真实世界,国产具身智能基座模型拿下全球第二!

开源“裸考”真实世界,国产具身智能基座模型拿下全球第二!

开源“裸考”真实世界,国产具身智能基座模型拿下全球第二! 西风 2026-01-08 19:02:20 来源:...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
刚开年,马斯克就到账了200亿美金!

刚开年,马斯克就到账了200亿美金!

Failed to fetch content Read More 
B站开启AI创作大赛,首次开放《三体》改编权,奖金总计超300万

B站开启AI创作大赛,首次开放《三体》改编权,奖金总计超300万

B站开启AI创作大赛,首次开放《三体》改编权,奖金总计超300万 量子位的朋友们 2026-01-05 15:...
悲报!Stack Overflow彻底凉了,比18年前上线首月问题数量还少

悲报!Stack Overflow彻底凉了,比18年前上线首月问题数量还少

悲报!Stack Overflow彻底凉了,比18年前上线首月问题数量还少 闻乐 2026-01-05 19:...
老黄All in物理AI!最新GPU性能5倍提升,还砸掉了智驾门槛

老黄All in物理AI!最新GPU性能5倍提升,还砸掉了智驾门槛

老黄All in物理AI!最新GPU性能5倍提升,还砸掉了智驾门槛 闻乐 2026-01-06 09:09:0...