一句话生成图片,FlagAI使用(附页面操作代码) | 机器学习

news2024/11/15 13:50:00

目录

前言

项目结构

页面交互调整

总结


前言

最近Text-To-Image是一个很火的话题,甚至更进一步的Text-To-Video话题度也在不断上升。最近看到一个开源项目FlagAI,是目前我觉着效果比较好的项目之一。安装操作简单,支持中英文,这就很nice。

项目开源地址:github地址

下面是我用项目demo跑出的效果,大家可以看一下。

输入的文本:

Anime portrait of natalie portman as an anime girl by stanley artgerm lau, wlop, rossdraws, james jean, andrei riabovitchev, marc simonetti, and sakimichan, trending on artstation

翻译一下,乱七八糟的人名,动漫肖像女孩,大概是这样。

项目结构

在ReadMe中,作者不但提供了快速上手的可以使用的中英文预训练模型。

还有分词器、预测器的操作说明。

我先打开作者给我们的样例代码。

使用的方式很简单,生成图片的方法为:predictor.predict_generate_images,代码看上去十分简单移动。作者给出的安装说明如下:

OK,我把样例代码改一下,改成可页面交互方式,方便使用。

页面交互调整

代码如下:

import torch
from flagai.auto_model.auto_loader import AutoLoader
from flagai.model.predictor.predictor import Predictor
from PIL import Image
import gradio as gr
import os
import shutil

# Initialize
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

loader = AutoLoader(task_name="text2img",  # contrastive learning
                    model_name="AltDiffusion",
                    model_dir="./checkpoints")

model = loader.get_model()
model.eval()
model.to(device)
predictor = Predictor(model)


def handle(text: str):
    if not os.path.isdir("./AltDiffusionOutputs"):
        os.mkdir("./AltDiffusionOutputs")
    else:
        shutil.rmtree("./AltDiffusionOutputs")
    predictor.predict_generate_images(text)
    imgs = []
    for s in os.listdir("./AltDiffusionOutputs/samples"):
        imgs.append(Image.open(os.path.join("./AltDiffusionOutputs/samples", s)))
    return imgs


if __name__ == '__main__':
    demo = gr.Interface(fn=handle, inputs=gr.Text(),
                        outputs=[gr.Image(type="pil"), gr.Image(type="pil"),
                                 gr.Image(type="pil"), gr.Image(type="pil")])
    demo.launch(server_name="0.0.0.0", server_port=12003)

除了项目要求的安装内容,需要额外安装gradio。

安装命令如下:

pip install gradio -i https://pypi.douban.com/simple

第一次执行会在当前目录下创建checkpoints文件夹,下载预训练模型,耗时比较久。

第二次执行后结果如下

******************** text2img altdiffusion
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
making attention of type 'vanilla' with 512 in_channels
Working with z of shape (1, 4, 64, 64) = 16384 dimensions.
making attention of type 'vanilla' with 512 in_channels
******************** txt_img_matching altclip-xlmr-l
model files:['config.json', 'pytorch_model.bin', 'tokenizer.json', 'tokenizer_config.json', 'preprocessor_config.json', 'special_tokens_map.json']
./checkpoints/AltCLIP-XLMR-L
Global Step: 143310
Running on local URL:  http://0.0.0.0:12003

To create a public link, set `share=True` in `launch()`.

通过浏览器打开页面:http://localhost:12003

输入需要生成图片的文字,然后点击submit。

我们用中文试试看这次输入的是:坐落在迷幻森林里的庙宇,周围有着满是红色枫叶的枫树。

我们看一下执行的效果

该demo方法会默认生成4张图,我们一起看一下。

第一眼看我还以为是照片,下面我简化操作过程,看下生成的几个效果。

文本:一个有天使翅膀的动漫女孩

文本:国画风格

总结

项目整体效果个人感觉还是不错的,其中英文还是稍微比中文理解的更好一些。大家可以自己摸索尝试一下。

最近太忙,很少写文章。有不少人微信联系我,问我这个文章那个文章的安装部署问题,我也没太多时间一一回复。我写这些文章不是为了给自己带来什么收入,主要是抛砖引玉给大家分享,还是希望大家多自己摸索,会收获更多。

分享:

        曲则全,枉则直,洼则盈,敝则新,少则得,多则惑。是以圣人抱一,为天下式。不自见故明,不自是故彰,不自伐故有功,不自矜故长。夫唯不争,故天下莫能与之争。古之所谓曲则全者,岂虚言哉!诚全而归之。——《道德经》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12973.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

疫情防控管理系统

1、项目介绍 疫情防控管理系统拥有两种角色:管理员和用户 管理员:医护信息管理、物资管理、疫苗管理、疫站管理等 用户:登录注册、物资、疫苗、疫站查看 2、项目技术 后端框架: Servlet、mvc模式 前端技术:Bootst…

yolov5剪枝实战1: 论文及yolov5剪枝实战项目介绍

本系列博客介绍yolov5剪枝方法 1. 介绍 神经网络一般都存在过参数化(over-parameterized)的问题,存在冗余的神经元或权重,所以可以进行剪枝。 其实对网络可以针对不同的颗粒度进行剪枝,可以进行权重、神经元级别的剪枝,也可以基于channel, shape,filter以及layer级别的剪枝…

卷积神经网络基础

由于篇幅所限,本章将重点介绍计算机视觉的经典模型(卷积神经网络)和两个典型任务(图像分类和目标检测)。主要涵盖如下内容: 卷积神经网络:卷积神经网络(Convolutional Neural Netwo…

Nginx知识汇总

一、Nginx的简介 nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。 二、Nginx的优…

基于微信小程序的沁园健身房预约管理系统设计与实现-计算机毕业设计源码+LW文档

小程序开发说明 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Mave…

[附源码]Python计算机毕业设计 楼盘销售管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【Linux】第十二章 多线程(线程概念+线程控制)

🏆个人主页:企鹅不叫的博客 ​ 🌈专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接:代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

UNet - 训练数据train

目录 1. train 训练数据 2. Loss 值 3. 完整代码 1. train 训练数据 训练的代码只是在之前图像分类的基础上做了一些更改,具体的可以看下面的文章 pytorch 搭建 LeNet 网络对 CIFAR-10 图片分类https://blog.csdn.net/qq_44886601/article/details/127498256 …

EventBridge 生态实践:融合 SLS 构建一体化日志服务

作者: 昶风 引言 阿里云日志服务 SLS 是一款优秀的日志服务产品,提供一站式地数据采集、加工、查询与分析、可视化、告警、消费与投递等服务。对于使用 SLS 的用户业务而言,SLS 上存储的日志信息反映着业务的运行状态,通过适当地…

2021年认证杯SPSSPRO杯数学建模D题(第一阶段)停车的策略全过程文档及程序

2021年认证杯SPSSPRO杯数学建模 D题 停车的策略 原题再现: 开车前往人流集中的目的地时,决定在何处停车经常是一个难题。是停在距离目的地较远的地方,因为那里的空余车位可能较多,然后再走很远的路?或者是否应该乐观…

【C语言】程序的翻译环境和执行环境

🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5&#xff5…

智慧博物馆解决方案-最新全套文件

智慧博物馆解决方案-最新全套文件一、建设背景二、思路架构三、解决方案建成5个方面1、集约化2、物联网接入3、大数据可视化分析4、室内室外地图集成5、可视化信息多元交互四、获取 - 智慧博物馆全套最新解决方案合集一、建设背景 博物馆是征集、典藏、陈列和研究代表自然和人…

【FME实战教程】002:FME完美实现CAD数据转shp案例教程(以三调土地利用现状数据为例)

FME完美实现CAD数据转shp案例教程(以三调土地利用数据为例) 文章目录1. cad数据预览2. 转换过程3. shp数据预览1. cad数据预览 2. 转换过程 (1)打开FME Desktop2020中文软件,点击【新建】。 (2&#xff09…

【Spring】——2、使用@ComponentScan自动扫描组件并指定扫描规则

📫作者简介:zhz小白 公众号:小白的Java进阶之路 专业技能: 1、Java基础,并精通多线程的开发,熟悉JVM原理 2、熟悉Java基础,并精通多线程的开发,熟悉JVM原理,具备⼀定的线…

微信小程序开发(九):使用扩展组件库

前端开发中离不开各种组件库,我最先接触的组件库还是Bootstrap,后来工作中又陆续使用了inoic、ng-zorro等各种不同的库。 在微信小程序开发中也有多种组件库,这里记录其中几种不同组件库的使用方法。 WeUI 这是微信官方推出的一款和微信原…

使用Python,Open3D对点云散点投影到面上并可视化,使用3种方法计算面的法向量及与平均法向量的夹角

使用Python,Open3D对点云散点投影到面上并可视化,使用3种方法计算面的法向量及与平均法向量的夹角 写这篇博客源于博友的提问,他坚定了我继续坚持学习的心,带给了我充实与快乐。 将介绍以下5部分: 随机生成点云点投影…

LaTeX学习笔记

LaTeX学习笔记 文章目录LaTeX学习笔记1. 开始的尝试2.文档类与宏包3.标题与章节4.标注5.列表6.对齐7.插入代码块8.绘制表格9.插入图片10.数学公式10.1.基础公式10.2.复杂公式10.3 常用符号11.参考文献冲鸭!!! 1. 开始的尝试 先开始试一下一个…

MySQL数据库索引和事务详解

目录 前言: 索引 查看索引 创建索引 删除索引 索引使用 底层数据结构分析 事务 事务引出 MySQL设计事务 事务四大特性 小结: 前言: 数据库索引和事务的存在,对于数据库的一些性能有了显著提升。我们需掌握其底层的实现…

NUMA那些事儿

NUMA——Non Uniform Memory Access,中文为非统一内存访问,在NUMA出现之前,内存的控制器是包含在北桥芯片中的,所有内存由北桥统一管理,因此可以保证访问内存的一致性。随着CPU架构的不断迭代和演进,核数越…

Elasticsearch与Kibana安装

现有环境 windows docker ubuntu Elasticsearch安装 安装包下载 ES不同平台、版本下载路径:Download Elasticsearch | Elastic 本文演示用linux # 启动ubuntu环境,开放端口9200、9300、5601 docker run -name es -p 9200:9200 -p 9300:9300 -p 5…