政安晨【零基础玩转各类开源AI项目】解析开源:gradio:改进真实虚拟试穿的扩散模型

本文主要是介绍政安晨【零基础玩转各类开源AI项目】解析开源:gradio:改进真实虚拟试穿的扩散模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

政安晨的个人主页:政安晨

欢迎 👍点赞✍评论⭐收藏

收录专栏: 零基础玩转各类开源AI项目

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

Gradio 是一个开源 Python 软件包,可以让你快速为机器学习模型、API 或任意 Python 函数创建演示或网络应用。然后,你就可以使用 Gradio 内置的分享功能,在几秒钟内分享你的演示或网络应用程序的链接。无需 JavaScript、CSS 或网络托管经验!

下载项目

git clone git@github.com:gradio-app/gradio.git

以递归方式更新库:

如果你想要以递归方式更新Gradio或其他GitHub项目,你可以使用Git的子模块功能。Git子模块允许你在一个Git仓库中包含另一个Git仓库。

cd gradiogit submodule update --remote --recursive

gradio如何用命令切换到某个版本,如4.36.0

将Gradio项目切换到特定的版本(例如4.36.0),你可以使用Git的checkout命令。首先,你需要在你的终端中导航到Gradio项目的目录,然后运行以下命令:

git checkout gradio@4.36.0

这个命令会将Gradio项目的代码切换到4.36.0版本。请注意,你需要确保Gradio项目的仓库中确实有一个名为gradio@4.36.0的标签或分支。

如果你是通过Python的包管理器pip安装的Gradio,你可以使用以下命令来安装特定版本的Gradio:

pip install gradio==4.36.0

Gradio适用于:

  • 向客户/合伙人/用户/学生演示您的机器学习模型。

  • 通过自动共享链接快速部署您的模型,并获得模型性能反馈。

  • 在开发过程中使用内置的操作和解释工具交互式地调试模型。

快速开始

依赖: Gradio只需要Python 3.8及以上版本icon-default.png?t=N7T8https://www.python.org/downloads/

Gradio能做什么?

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

Gradio让你可以用Python构建演示并分享它们,而且通常只需几行代码!下面让我们开始吧。

Hello, World

要用Gradio运行"Hello World"示例,需要以下三个步骤:

1. 用pip下载Gradio:

pip install gradio

2. 用Python脚本或在Jupyter Notebook中运行下面的代码 (或者使用 Google Colab):

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

3. 下面的演示会自动出现在Jupyter Notebook中,如果使用脚本运行则会在浏览器http://localhost:7860弹出:

Interface 类

你可能会注意到,在运行示例时我们创建了一个 gradio.Interface 。 Interface 类可以用用户接口包装任意的Python函数。在上面的示例中,我们使用了一个基于文本的简单函数,但这个函数可以是任何东西,从音乐生成器到税率计算器,再到预训练机器学习模型的预测函数。

Interface 类核心需要三个参数初始化:

  • fn : 被UI包装的函数
  • inputs : 作为输入的组件 (例如: "text""image" or "audio")
  • outputs : 作为输出的组件 (例如: "text""image" or "label")

下面我们进一步分析用于输入和输出的组件。

组件属性

在之前的示例中我们可以看到一些简单的文本框组件 Textbox ,但是如果您想改变UI组件的外观或行为呢?

假设您想要自定义输入文本字段,例如您希望它更大并有一个文本占位符。如果我们使用 Textbox 的实际类,而不是使用字符串快捷方式,就可以通过组件属性实现个性化。

import gradio as grdef greet(name):return "Hello " + name + "!"demo = gr.Interface(fn=greet,inputs=gr.Textbox(lines=2, placeholder="Name Here..."),outputs="text",
)
demo.launch()
多输入和输出组件

假设您有一个更复杂的函数,有多个输入和输出。在下面的示例中,我们定义了一个函数,该函数接受字符串、布尔值和数字,并返回字符串和数字。观察应该如何传递输入和输出组件列表。

import gradio as grdef greet(name, is_morning, temperature):salutation = "Good morning" if is_morning else "Good evening"greeting = f"{salutation} {name}. It is {temperature} degrees today"celsius = (temperature - 32) * 5 / 9return greeting, round(celsius, 2)demo = gr.Interface(fn=greet,inputs=["text", "checkbox", gr.Slider(0, 100)],outputs=["text", "number"],
)
demo.launch()

您只需将组件包装在列表中。输入列表inputs中的每个组件依次对应函数的一个参数。输出列表outputs中的每个组件都对应于函数的一个返回值,两者均按顺序对应。

一个图像示例

Gradio支持多种类型的组件,如 ImageDateFrameVideoLabel 。让我们尝试一个图像到图像的函数来感受一下!

import numpy as np
import gradio as grdef sepia(input_img):sepia_filter = np.array([[0.393, 0.769, 0.189],[0.349, 0.686, 0.168],[0.272, 0.534, 0.131]])sepia_img = input_img.dot(sepia_filter.T)sepia_img /= sepia_img.max()return sepia_imgdemo = gr.Interface(sepia, gr.Image(), "image")
demo.launch()

当使用Image组件作为输入时,您的函数将接收一个形状为 (height, width, 3) 的NumPy数组,其中最后一个维度表示RGB值。我们还将以NumPy数组的形式返回一张图像。

你也可以用 type= 关键字参数设置组件使用的数据类型。例如,如果你想让你的函数获取一个图像的文件路径,而不是一个NumPy数组时,输入 Image 组件可以写成:

gr.Image(type="filepath")

还要注意,我们的输入 Image 组件带有一个编辑按钮 🖉,它允许裁剪和放大图像。以这种方式操作图像可以帮助揭示机器学习模型中的偏见或隐藏的缺陷!

Blocks: 更加灵活且可控

Gradio 提供了两个类来构建应用程序

1. Interface,这为创建到目前为止我们一直在讨论的示例提供了一个高级抽象。

2. Blocks,一个用于设计具有更灵活布局和数据流的web应用程序的初级API。block可以做许多事,比如特征化多个数据流和演示,控制组件在页面上出现的位置,处理复杂的数据流(例如,输出可以作为其他函数的输入),以及根据用户交互更新组件的属性/可见性,且仍然在Python中。如果您需要这种个性化,那就试试 Blocks 吧!

你好, Blocks

让我们看一个简单的例子。注意这里的API与 Interface 有何不同。

import gradio as grdef greet(name):return "Hello " + name + "!"with gr.Blocks() as demo:name = gr.Textbox(label="Name")output = gr.Textbox(label="Output Box")greet_btn = gr.Button("Greet")greet_btn.click(fn=greet, inputs=name, outputs=output)demo.launch()

注意事项:

  • Blocks 由 with 子句组成,在该子句中创建的任何组件都会自动添加到应用程序中。
  • 组件在应用程序中按创建的顺序垂直显示,(稍后我们将介绍自定义布局!)
  • 一个 按钮 Button 被创建,然后添加了一个 click 事件监听器。这个API看起来很熟悉!就像 Interface一样, click 方法接受一个Python函数、输入组件和输出组件。
更多复杂性

这里有一个应用程序可以让你感受一下Blocks的更多可能:

import numpy as np
import gradio as grdef flip_text(x):return x[::-1]def flip_image(x):return np.fliplr(x)with gr.Blocks() as demo:gr.Markdown("Flip text or image files using this demo.")with gr.Tabs():with gr.TabItem("Flip Text"):text_input = gr.Textbox()text_output = gr.Textbox()text_button = gr.Button("Flip")with gr.TabItem("Flip Image"):with gr.Row():image_input = gr.Image()image_output = gr.Image()image_button = gr.Button("Flip")text_button.click(flip_text, inputs=text_input, outputs=text_output)image_button.click(flip_image, inputs=image_input, outputs=image_output)demo.launch()

尝试

1.安装最新稳定版本的Python和创建虚拟环境: 首先,你需要在miniconda中创建一个新的虚拟环境,并安装最新稳定版本的Python。你可以使用以下命令来完成这个任务:

conda create -n zac_gradio python=3.9

选择 y

这里,zac_gradio是你的环境名称,python=3.9是你要安装的Python版本。你可以根据需要更改这些值。

2. 激活你的虚拟环境: 创建环境后,你需要使用以下命令来激活它:

conda activate zac_gradio

 

3. 安装gradio: 在你的虚拟环境中,你可以使用以下命令来安装gradio:

pip install gradio

4. 实现一个gradio的例子

下面是一个简单的gradio应用示例,它创建了一个界面,用户可以输入一个数字,然后应用会返回这个数字的平方:

import gradio as grdef square(input):return input ** 2iface = gr.Interface(fn=square, inputs="number", outputs="number")
iface.launch()


这篇关于政安晨【零基础玩转各类开源AI项目】解析开源:gradio:改进真实虚拟试穿的扩散模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044730

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

揭秘未来艺术:AI绘画工具全面介绍

📑前言 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。在艺术创作领域,AI技术同样展现出了其独特的魅力。今天,我们就来一起探索这个神秘而引人入胜的领域,深入了解AI绘画工具的奥秘及其为艺术创作带来的革命性变革。 一、AI绘画工具的崛起 1.1 颠覆传统绘画模式 在过去,绘画是艺术家们通过手中的画笔,蘸取颜料,在画布上自由挥洒的创造性过程。然而,随着AI绘画工

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

解析 XML 和 INI

XML 1.TinyXML库 TinyXML是一个C++的XML解析库  使用介绍: https://www.cnblogs.com/mythou/archive/2011/11/27/2265169.html    使用的时候,只要把 tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

用Microsoft.Extensions.Hosting 管理WPF项目.

首先引入必要的包: <ItemGroup><PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" /><PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /><PackageReference Include="Serilog

AI儿童绘本创作

之前分享过AI儿童绘画的项目,但是主要问题是角色一致要花费很长的时间! 今天发现了这款,非常奈斯! 只需输入故事主题、风格、模板,软件就会自动创作故事内容,自动生成插画配图,自动根据模板生成成品,测试效果如下图。 变现方式:生成儿童绘本发布到各平台,吸引宝妈群体进私域。  百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全

eclipse运行springboot项目,找不到主类

解决办法尝试了很多种,下载sts压缩包行不通。最后解决办法如图: help--->Eclipse Marketplace--->Popular--->找到Spring Tools 3---->Installed。

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口