Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

常用的两款AI可视化交互应用比较:

方便调试:gradio可以在jupyter中直接展示页面,更加方便调试。

Python第三方库Gradio快速上手,当前版本V3.27.0

在本地开发时,如果你想将代码作为Python脚本运行,你可以使用GradioCLI在重载模式下启动应用程序,这将提供无缝和快速的开发。

gradioapp.pyNote:你也可以做pythonapp.py,但它不会提供自动重新加载机制。

Gradio可以包装几乎任何Python函数为易于使用的用户界面。从上面例子我们看到,简单的基于文本的函数。但这个函数还可以处理很多类型。Interface类通过以下三个参数进行初始化:

通过这三个参数,我们可以快速创建一个接口并发布他们。

importgradioasgrdefgreet(name):return"Hello"+name+"!"iface=gr.Interface(fn=greet,inputs=gr.inputs.Textbox(lines=2,placeholder="NameHere..."),outputs="text",)if__name__=="__main__":app,local_url,share_url=iface.launch()1.2.2多个输入和输出对于复杂程序,输入列表中的每个组件按顺序对应于函数的一个参数。输出列表中的每个组件按顺序排列对应于函数返回的一个值。

inputs列表里的每个字段按顺序对应函数的每个参数,outputs同理。

Gradio支持许多类型的组件,如image、dataframe、video。使用示例如下:

当使用Image组件作为输入时,函数将收到一个维度为(w,h,3)的numpy数组,按照RGB的通道顺序排列。要注意的是,我们的输入图像组件带有一个编辑按钮,可以对图像进行裁剪和放大。以这种方式处理图像可以帮助揭示机器学习模型中的偏差或隐藏的缺陷。此外对于输入组件有个shape参数,指的设置输入图像大小。但是处理方式是保持长宽比的情况下,将图像最短边缩放为指定长度,然后按照中心裁剪方式裁剪最长边到指定长度。当图像不大的情况,一种更好的方式是不设置shape,这样直接传入原图。输入组件Image也可以设置输入类型type,比如type=filepath设置传入处理图像的路径。具体可以查看官方文档,文档写的很清楚。

在Interface添加live=True参数,只要输入发生变化,结果马上发生改变。

全局变量的好处就是在调用函数后仍然能够保存,例如在机器学习中通过全局变量从外部加载一个大型模型,并在函数内部使用它,以便每次函数调用都不需要重新加载模型。下面就展示了全局变量使用的好处。

Gradio支持的另一种数据持久性是会话状态,数据在一个页面会话中的多次提交中持久存在。然而,数据不会在你模型的不同用户之间共享。会话状态的典型例子就是聊天机器人,你想访问用户之前提交的信息,但你不能将聊天记录存储在一个全局变量中,因为那样的话,聊天记录会在不同的用户之间乱成一团。注意该状态会在每个页面内的提交中持续存在,但如果您在另一个标签页中加载该演示(或刷新页面),该演示将不会共享聊天历史。

要在会话状态下存储数据,你需要做三件事。

在Interface中设置live=True,则输出会跟随输入实时变化。这个时候界面不会有submit按钮,因为不需要手动提交输入。

同1.2.4

在许多情形下,我们的输入是实时视频流或者音频流,那么意味这数据不停地发送到后端,这是可以采用streaming模式处理数据。

Blocks方式需要with语句添加组件,如果不设置布局方式,那么组件将按照创建的顺序垂直出现在应用程序中,运行界面

相信有小伙伴已经注意到,输出框下有个Flag按钮。当测试您的模型的用户看到某个输入导致输出错误或意外的模型行为,他们可以标记这个输入让开发者知道。这个文件夹由Interface的flagging_dir参数指定,默认为’flagged’。将这些会导致错误的输入保存到一个csv文件。如果Interface包含文件数据,文件夹也会创建来保存这些标记数据。

打开log.csv展示如下:

在Gradio官方文档,搜索不同的组件加.style(如image.style),可以获取该组件的样式参数设置样例。例如image组件的设置如下:

demo=gr.Interface(...).queue()demo.launch()#或withgr.Blocks()asdemo:#...demo.queue()demo.launch()在某些情况下,你可能想显示一连串的输出,而不是单一的输出。例如,你可能有一个图像生成模型,如果你想显示在每个步骤中生成的图像,从而得到最终的图像。在这种情况下,你可以向Gradio提供一个生成器函数,而不是一个常规函数。下面是一个生成器的例子,每隔1秒返回1张图片。

importgradioasgrimportnumpyasnpimporttime#生成steps张图片,每隔1秒钟返回deffake_diffusion(steps):for_inrange(steps):time.sleep(1)image=np.random.randint(255,size=(300,600,3))yieldimagedemo=gr.Interface(fake_diffusion,#设置滑窗,最小值为1,最大值为10,初始值为3,每次改动增减1位inputs=gr.Slider(1,10,value=3,step=1),outputs="image")#生成器必须要queue函数demo.queue()demo.launch()2.4Blocks进阶使用2.4.1Blocks事件可交互设置任何输入的组件内容都是可编辑的,而输出组件默认是不能编辑的。如果想要使得输出组件内容可编辑,设置interactive=True即可。

importgradioasgrdefgreet(name):return"Hello"+name+"!"withgr.Blocks()asdemo:name=gr.Textbox(label="Name")#不可交互#output=gr.Textbox(label="OutputBox")#可交互output=gr.Textbox(label="Output",interactive=True)greet_btn=gr.Button("Greet")greet_btn.click(fn=greet,inputs=name,outputs=output)demo.launch()事件设置我们可以为不同的组件设置不同事件,如为输入组件添加change事件。可以进一步查看官方文档,看看组件还有哪些事件。

importgradioasgrdefwelcome(name):returnf"WelcometoGradio,{name}!"withgr.Blocks()asdemo:gr.Markdown("""#HelloWorld!Starttypingbelowtoseetheoutput.""")inp=gr.Textbox(placeholder="Whatisyourname")out=gr.Textbox()#设置change事件inp.change(fn=welcome,inputs=inp,outputs=out)demo.launch()多个数据流如果想处理多个数据流,只要设置相应的输入输出组件即可。

事件监听器函数的返回值通常是相应的输出组件的更新值。有时我们也想更新组件的配置,比如说可见性。在这种情况下,我们可以通过返回update函数更新组件的配置。

Blocks应用的是html中的flexbox模型布局,默认情况下组件垂直排列。

使用Row函数会将组件按照水平排列,但是在Row函数块里面的组件都会保持同等高度。

importgradioasgrwithgr.Blocks()asdemo:withgr.Row():img1=gr.Image()text1=gr.Text()btn1=gr.Button("button")demo.launch()组件垂直排列与嵌套组件通常是垂直排列,我们可以通过Row函数和Column函数生成不同复杂的布局。

importgradioasgrwithgr.Blocks()asdemo:withgr.Row():text1=gr.Textbox(label="t1")slider2=gr.Textbox(label="s2")drop3=gr.Dropdown(["a","b","c"],label="d3")withgr.Row():#scale与相邻列相比的相对宽度。例如,如果列A的比例为2,列B的比例为1,则A的宽度将是B的两倍。#min_width设置最小宽度,防止列太窄withgr.Column(scale=2,min_width=600):text1=gr.Textbox(label="prompt1")text2=gr.Textbox(label="prompt2")inbtw=gr.Button("Between")text4=gr.Textbox(label="prompt1")text5=gr.Textbox(label="prompt2")withgr.Column(scale=1,min_width=600):img1=gr.Image("test.jpg")btn=gr.Button("Go")demo.launch()组件可视化:输出可视化从无到有如下所示,我们可以通过visible和update函数构建更为复杂的应用。

在某些情况下,您可能希望在实际在UI中呈现组件之前定义组件。例如,您可能希望在相应的gr.Textbox输入上方显示使用gr.examples的示例部分。由于gr.Examples需要输入组件对象作为参数,因此您需要先定义输入组件,然后在定义gr.Exmples对象后再进行渲染。解决方法是在gr.Blocks()范围外定义gr.Textbox,并在UI中希望放置的任何位置使用组件的.render()方法。

要获得额外的样式功能,您可以设置行内css属性将任何样式给应用程序。如下所示。

您可以向任何组件添加HTML元素。通过elem_id选择对应的css元素。

如果运行环境能够连接互联网,在launch函数中设置share参数为True,那么运行程序后。Gradio的服务器会提供XXXXX.gradio.app地址。通过其他设备,比如手机或者笔记本电脑,都可以访问该应用。这种方式下该链接只是本地服务器的代理,不会存储通过本地应用程序发送的任何数据。这个链接在有效期内是免费的,好处就是不需要自己搭建服务器,坏处就是太慢了,毕竟数据经过别人的服务器。

demo.launch(share=True)3.2huggingface托管为了便于向合作伙伴永久展示我们的模型App,可以将gradio的模型部署到HuggingFace的Space托管空间中,完全免费的哦。

方法如下:

3,创建好的项目有一个Readme文档,可以根据说明操作,也可以手工编辑app.py和requirements.txt文件。

#show_error为True表示在控制台显示错误信息。demo.launch(server_name='0.0.0.0',server_port=8080,show_error=True)这里host地址可以自行在电脑查询,C:\Windows\System32\drivers\etc\hosts修改一下即可127.0.0.1再制定端口号

在首次打开网页前,可以设置账户密码。比如auth参数为(账户,密码)的元组数据。这种模式下不能够使用queue函数。

demo.launch(auth=("admin","pass1234"))如果想设置更为复杂的账户密码和密码提示,可以通过函数设置校验规则。

例如:数据分析展示dashboard,数据标注工具,制作一个小游戏界面等等。

本范例我们将应用gradio来构建一个图片筛选器,从百度爬取的一堆猫咪表情包中刷选一些我们喜欢的出来。

THE END
1.数学思维中的阴影面积如何可视化呈现数学思维中的阴影面积如何可视化呈现2024-12-18 00:51:29 朗威谈星座 辽宁 举报 0 分享至 0:00 / 0:00 速度 洗脑循环 Error: Hls is not supported. 视频加载失败 声明:取材网络、谨慎鉴别 朗威谈星座 1.6万粉丝 分享星座 06:21 读了博士要退学,为什么有这种想法?难道博士学历真的不香了吗? 00:https://www.163.com/v/video/VAINJ73CK.html
2.聚类算法之DBSCAN可视化演示51CTO学堂DBSCAN算法的可视化流程:选择数据形状,无需选择初始化方式,不需要指定p值,需要指定核心点密度阈值。https://edu.51cto.com/lesson/229335.html
3.一看就懂数据结构以及各种算法的可视化演示工具最近发现了一个宝藏网站:Data Structure Visualizations,提供了一个在线的可视化工具,可以交互式地演示各种数据结构和算法。我们只需要一个浏览器,就可以通过实际操作的方式理解复杂的数据结构和算法。 打开该网站之后,可以看到一个介绍页面。 该页面介绍了一些使用方法,我们可以点击页面左侧的“Algorithms”按钮查看所有可以https://blog.csdn.net/horses/article/details/120385749
4.基于KMeans聚类算法演示及可视化展示python这篇文章主要介绍了基于K-Means聚类算法演示及可视化展示,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 + 目录 K-Means聚类算法演示及可视化展示 1 2 3 4 5 6 7 8 9 #导入包 fromsklearn.clusterimportKMeans https://www.jb51.net/article/266480.htm
5.算法演示工具TFLSNOI算法演示工具 数据结构可视化https://www.cs.usfca.edu/~galles/visualization/source.html 数据结构和算法动态可视化https://visualgo.net/zh Data Structure Alghoritm Animationhttps://www.cnblogs.com/tflsnoi/p/9574633.html
6.数据结构可视化类库JVDSCL的设计实现与应用算法演示引擎为算法动态演示的实现提供了一种解决方案。通过构造算法演示引擎,可以实现交互式的算法动态演示。在设计与实现JVDSCL的同时,作者研究与开发了一个基于JVDSCL的算法演示引擎AAE(Algorithm Animation Engine)。一个基于算法演示引擎的应用包括:算法演示引擎,代码库和数据结构可视化类库。AAE是JVDSCL的其中一个https://cdmd.cnki.com.cn/Article/CDMD-11911-2006085022.htm
7.可视化数据结构算法演示Basics Stack: Array Implementation Stack: Linked List Implementation Queues: Array Implementation Queues: Linked List Implementation Lists: Array Implementation (available injavaversion) Lists: Linked List Implementation (available injavaversion) Recursion https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
8.算法动态可视化工具有哪些帆软数字化转型知识库算法动态可视化工具包括:FineReport、FineVis、Jupyter Notebook、Gephi、TensorBoard。FineReport是一款功能强大的商业智能工具,具有高度可定制的数据可视化功能,可以方便地展示算法的动态过程。FineVis专注于数据可视化分析,提供直观的图表和交互功能,适合大数据分析和算法演示。Jupyter Notebook通过其交互式计算环境,可以轻松嵌入https://www.fanruan.com/blog/article/241547/
9.红黑树动态演示生成红黑树(严蔚敏、吴伟民)数据结构配套可视化算法演示系统,很好 上传者:sbsdf821时间:2008-10-05 数据结构和算法Flash动画演示 数据结构和算法Flash动画演示数据结构和算法Flash动画演示 上传者:zhangwenbo时间:2008-09-08 算法导论经典习题答案 该资源包含了算法导论教程中的经典习题的详细解答过程,不过是英文版的解答描述 https://www.iteye.com/resource/nkyuchen-3650505
10.DBSCAN聚类算法3、不适合高维数据,可以先进行降维操作 4、Sklearn中效率很慢,可以先执行数据削减策略 六、分类效果演示 可视化演示的网址 作者:owolf 链接:https://www.jianshu.com/p/d2eddc733c4dhttps://www.imooc.com/article/257210
11.可视化算法algorithmvisualizerAlgorithm Visualizer is an interactive online platform that visualizes algorithms from code.http://algorithm-visualizer.org/
12.干货算法学习必备诀窍:算法可视化解密腾讯云开发者社区算法可视化是伴随着需求而发展的一门技术,用户的需求决定了算法可视化的发展方向。从只提供文字和简单图表的无可视化阶段,到通过弹出式问题与用户交互,从用户能改变系统所演示算法的数据,再到自主创建自己的算法的可视化动画,用户的需求不同,其在系统中的参与层级也不同。 https://cloud.tencent.com/developer/article/1605577
13.10种图算法直观可视化解释我们为过去十年中最先进的图像解释技术整合了视觉界面,并对每种技术进行了简要描述。 过去11年中用于解释神经网络的最新方法是如何发展的呢? 本文在 Inception 网络图像分类器上尝试使用引导反向传播进行解释演示。 可视化图布局算法简介 Fruchterman Reingold (FR) FR算法将所有的结点看做是电子,每个结点收到两https://www.pianshen.com/article/65641875805/
14.一个可视化学算法的好工具程序员学算法和数据结构时,如果从纯文本和静态图来学,挺枯燥的。 相反,可视化动画工具,真是一个非常棒的帮手。这类工具/网站,我们曾介绍过 3 个: 旧金山大学数据结构和算法的可视化学习工具 http://hao.jobbole.com/visualizing-algorithms-and-data-structure/ https://www.jianshu.com/p/c53f5031fc76
15.支持可视化配置的深度强化学习应用编程框架,30分钟上手强化general特性以及可视化演示 general特性 general项目原计划至少实现四个方面的特性:支持可视化操作、集成主流强化学习算法、支持非gym环境交互、提供工业应用项目案例集,在1.0版本中实现了前三个特性的支持,工业应用项目案例集需要随着项目的推广和实践来积累。 https://github.com/zhaoyingjun/general
16.Python数据挖掘与机器学习实战选题.pdfDBSCAN等经典聚类算法原理 10.2 、python 实现 k-means 算法 第十章:聚类与集成算法 10.3 、聚类算法应用场景与特征工程 10.4 、Adaboost 集成算法原理 案例实战:聚类算法可视化演示 (可自己定) 11.1 在线学习 11.2 迁移学习 11.3 增强学习 11.4 LSTM 11.5 GAN 第十一章:其他机器学习算法 最新机器学习算法 (可https://max.book118.com/html/2021/1111/8051075035004035.shtm