机器学习根据文字生成图片教程(附python代码)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gshengod/article/details/82427258

背景

其实在过往我们生活的世界里,当人们需要获取信息的时候,更多地强调的是信息的检索和遍历,意味着去已经存在的物品中找到自己合适的。在我看来这是一种很低级的生活形态,比如我的意识中有一个某种图案的杯子,想要它,只能打开淘宝根据标签去找已经设计好的款式有没有相近的,而不能直接根据我的想法自动生成一个我需要的杯子。

又比如,我想要一张猫正在喝水的照片,只能去搜索引擎里去根据关键词搜索已经存在的猫喝水的照片,而不是自动生成一张符合我要求的照片。随着人工智能的升级,这种低级的信息获取方式一定会淘汰。

今天就介绍一种深度学习方法,如何根据文字自动生成图片。先来看下效果:

输入文本:

sky is above the grass, man standing on the grass

生成的图片,是不是有点神奇:
这里写图片描述

详细流程

关于具体的算法细节可以看下这个论文:“Image Generation from Scene Graphs”

1.下载代码

代码可以在Github找到: https://github.com/google/sg2im?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more
需要把sgim文件夹复制到scripts文件夹下面:
这里写图片描述

2.安装需要的第三方库

建议用python3以上版本,在文件夹下执行

sudo pip3 install -r requirements.txt

3.下载模型

首先自行安装好wget,然后在代码目录下执行:

bash scripts/download_models.sh

4.创建图片

首先,要先自己搞个描述脚本,这个脚本需要描述生成图片中的对象以及对象间的位置关系。比如以下脚本(看过《机器学习实践应用》的同学是不是会眼熟,有点像里面知识图谱的内容):

[
{
"objects": ["car", "street", "line", "sky"],
"relationships": [
[0, "on", 1],
[2, "on", 1],
[3, "above", 1]
]
}
]

描述的是car在street的上面,line在street的上面,sky也在street上面。然后在代码的根目录下执行以下代码(代码中的括号内容是注释,执行前需要去掉):

python3 scripts/run_model.py(预测脚本) --checkpoint sg2im-models/vg128.pt(下载好的模型所在地址) --scene_graphs aohai.json(上面写的脚本) --output_dir outputs(图片输出路径)

最终生成的图片效果:

这里写图片描述

总结

是不是很好玩,可以自己任意添加描述脚本,生成自己想要的图片,是不是非常酷。目前来看像素还比较低,希望以后该项目可以继续更新,可以生成更多高清大图。

猜你喜欢

转载自blog.csdn.net/gshengod/article/details/82427258