50行代码搭建【自己的】文生图Web应用

简介: 50行代码搭建【自己的】文生图Web应用

用多了其他网站的文生图,有的还需要冲金币,是不是很想自己也搭建个?那么方法来了。


1.环境设置


requirements.txt 如下所示:

paddlenlp>=2.4.1
ftfy
regex
Pillow

再来一下  pip install --upgrade ppdiffusers即可,环境简单吧。

注意:需要GPU环境,需要提前安装好PaddlePaddle-gpu包


2.代码


# 引入 StableDiffusion包
from ppdiffusers import StableDiffusionPipeline
# 引入gradio包,怎么用可以看我的介绍
import gradio as gr
# 加载模型,其实就是下载,需要特别注意的是包3、4个gb,很大,手机的话注意流量
pipe = StableDiffusionPipeline.from_pretrained("CompVis/stable-diffusion-v1-4")
pipe.enable_attention_slicing()
# 设置块
block = gr.Blocks(css=".container { max-width: 800px; margin: auto; }")
# 设置生成图片熟练
num_samples = 8
# 开始推理
def infer(prompt):
    images = pipe([prompt] * num_samples).images
    return images
# 设置样式
with block as demo:
    gr.Markdown(
        "<h1><center>PaddleNLP version of Stable Diffusion</center></h1>")
    with gr.Group():
        with gr.Box():
            with gr.Row().style(mobile_collapse=False, equal_height=True):
                text = gr.Textbox(label="Enter your prompt",
                                  show_label=False,
                                  max_lines=1).style(
                                      border=(True, False, True, True),
                                      rounded=(True, False, False, True),
                                      container=False,
                                  )
                btn = gr.Button("Run").style(
                    margin=False,
                    rounded=(False, True, True, False),
                )
        gallery = gr.Gallery(label="Generated images",
                             show_label=False).style(grid=[2], height="auto")
        text.submit(infer, inputs=[text], outputs=gallery)
        btn.click(infer, inputs=[text], outputs=gallery)
    gr.Markdown("""___
        <p style='text-align: center'>
        Created by https://huggingface.co/CompVis/stable-diffusion-v1-4
        <br/>
        </p>""")
# 启动
demo.launch(debug=True, server_port=8235, server_name="0.0.0.0", share=True)

2.1 gradio使用


gradio是机器学习推理分享的最佳工具,quickstart可参考我的:


Gradio机器学习模型快速部署工具【quickstart】翻译1

Gradio机器学习模型快速部署工具【quickstart】翻译1


2.1 ppdifusion 使用


这里使用PaddleNLP实现,直接安装下载即可。 需要设置的有模型地址、生成图片数量,可以根据源码改,或者换成你想要的进行加载(比如换成你自己的模型)。


3.运行


运行过程中会自动下载模型,此处浪费我流量好多好多。

运行脚本后,输出如下:


Running on local URL:  http://0.0.0.0:8235
Running on public URL: https://e633ad4625553a6c67.gradio.live
This share link expires in 72 hours. For free permanent hosting and GPU upgrades (NEW!), check out Spaces: https://huggingface.co/spaces

给出了2个url,可以通过互联网、以及本地局域网使用

  • 其中http://0.0.0.0:8235 应该换成本地ip即可,或者localhost。
  • 后面的可以全球访问,特别便于访问,提示3天有效时间。

需要注意的是要量力而行,一次2张照片,我显卡扛得住,多的话显存不够会崩。

image.png


3.1 效果


image.png


3.1来一张:


- many cats run on grass
- 许多小猫在草地上奔跑,赛博朋克风格

image.png


3.2再来一张


  • jean grey, young female, x-men, (((full body visible))), looking at viewer, portrait, photography, detailed skin, realistic, photo-realistic, 8k, highly detailed, full length frame, High detail RAW color art, piercing, diffused soft lighting, shallow depth of field, sharp focus, hyperrealism, cinematic lighting

image.png

image.png


3.3 注意


  • 别生成坏模型啊,有检测模型检测。
  • 当然,你可以跳过。



目录
相关文章
|
4天前
|
前端开发 Java 测试技术
Java一分钟之Spring MVC:构建Web应用
【5月更文挑战第15天】Spring MVC是Spring框架的Web应用模块,基于MVC模式实现业务、数据和UI解耦。常见问题包括:配置DispatcherServlet、Controller映射错误、视图解析未设置、Model数据传递遗漏、异常处理未配置、依赖注入缺失和忽视单元测试。解决这些问题可提升代码质量和应用性能。注意配置`web.xml`、`@RequestMapping`、`ViewResolver`、`Model`、`@ExceptionHandler`、`@Autowired`,并编写测试用例。
52 3
|
4天前
|
Java 应用服务中间件 测试技术
深入探索Spring Boot Web应用源码及实战应用
【5月更文挑战第11天】本文将详细解析Spring Boot Web应用的源码架构,并通过一个实际案例,展示如何构建一个基于Spring Boot的Web应用。本文旨在帮助读者更好地理解Spring Boot的内部工作机制,以及如何利用这些机制优化自己的Web应用开发。
30 3
|
4天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
27 3
|
1天前
|
缓存 监控 安全
Django框架在大型Web应用中的架构设计与实战
【5月更文挑战第18天】Django框架在构建大型Web应用中扮演重要角色,采用分层架构(数据、业务逻辑、表示层)和多应用组织模式,结合缓存策略(如Memcached、Redis)提升性能。通过异步处理、分布式部署提高响应速度和扩展性。关注数据分区、安全设计及监控日志,确保系统高效、稳定。Django为复杂业务提供坚实基础,助力打造卓越Web系统。
18 7
|
1天前
|
开发框架 中间件 数据库
Django 框架入门全攻略:轻松构建 Web 应用
【5月更文挑战第18天】本文是 Django 入门教程,介绍了如何使用 Django 构建 Web 应用。内容包括安装、项目与应用创建、模型定义、数据库迁移、视图编写、路由配置、模板系统、表单处理和中间件的使用。通过实例展示了 Django 基本流程,帮助初学者快速上手。Django 提供高效工具,便于开发者聚焦业务逻辑,轻松构建功能丰富的 Web 应用。
16 5
|
1天前
|
存储 缓存 API
Flask 框架在大型 Web 应用中的使用与挑战
【5月更文挑战第18天】Flask框架适用于快速开发轻量级Web应用,但用于大型应用时需应对性能、代码管理和团队协作的挑战。通过集成扩展处理复杂需求,使用蓝图组织代码,以及引入缓存优化性能,结合明确的代码规范和开发流程,可有效应对挑战,构建高效稳定的应用。
15 5
|
1天前
|
数据库连接 Python
Flask 框架入门与实践:构建你的第一个 Web 应用
【5月更文挑战第18天】本文介绍了使用 Flask 框架构建第一个 Web 应用的步骤。首先通过 `pip install Flask` 安装框架,然后编写基本的 Python 代码创建应用,包括定义路由和响应。示例展示如何显示 &quot;Hello, World!&quot;,并扩展到显示用户信息的功能。利用模板(如 `index.html`)可使页面更丰富。随着学习深入,可以利用 Flask 的更多特性,如表单处理和数据库连接,来构建更复杂的 Web 应用。本文旨在激发读者对 Flask 和 Web 开发的兴趣,鼓励不断探索和实践。
15 7
|
2天前
|
存储 前端开发 网络协议
所有的 Web 应用其实就是一个 socket 服务端, 而用户使用的浏览器就是一个 socket 客户端程序
所有的 Web 应用其实就是一个 socket 服务端, 而用户使用的浏览器就是一个 socket 客户端程序
6 0
|
2天前
|
前端开发 Java Go
从前端到后端:构建现代化Web应用的技术实践
本文将介绍如何通过前端和后端技术相结合,构建现代化Web应用的技术实践。我们将探讨前端开发、后端架构以及多种编程语言(如Java、Python、C、PHP、Go)在构建高效、可扩展的Web应用中的应用。
|
3天前
|
JavaScript 前端开发 API
Vue中的组件:构建现代Web应用的基石
Vue中的组件:构建现代Web应用的基石
http://www.vxiaotou.com