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 注意


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



目录
相关文章
|
15天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
29 3
|
20天前
|
移动开发 开发者 HTML5
构建响应式Web界面:Flexbox与Grid的实战应用
【10月更文挑战第22天】随着互联网的普及,用户对Web界面的要求越来越高,不仅需要美观,还要具备良好的响应性和兼容性。为了满足这些需求,Web开发者需要掌握一些高级的布局技术。Flexbox和Grid是现代Web布局的两大法宝,它们分别由CSS3和HTML5引入,能够帮助开发者构建出更加灵活和易于维护的响应式Web界面。本文将深入探讨Flexbox和Grid的实战应用,并通过具体实例来展示它们在构建响应式Web界面中的强大能力。
33 3
|
1月前
|
存储 安全 关系型数据库
后端技术:构建高效稳定的现代Web应用
【10月更文挑战第5天】后端技术:构建高效稳定的现代Web应用
53 1
|
2天前
|
缓存 安全 网络安全
HTTP/2与HTTPS在Web加速中的应用
HTTP/2与HTTPS在Web加速中的应用
|
5天前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
16天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
17 3
|
16天前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
32 2
|
16天前
|
测试技术 持续交付 PHP
PHP在Web开发中的应用与最佳实践###
【10月更文挑战第25天】 本文将深入探讨PHP在现代Web开发中的应用及其优势,并分享一些最佳实践来帮助开发者更有效地使用PHP。无论是初学者还是有经验的开发者,都能从中受益。 ###
37 1
|
17天前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
48 2
|
20天前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
19 4