背景
其实在过往我们生活的世界里,当人们需要获取信息的时候,更多地强调的是信息的检索和遍历,意味着去已经存在的物品中找到自己合适的。在我看来这是一种很低级的生活形态,比如我的意识中有一个某种图案的杯子,想要它,只能打开淘宝根据标签去找已经设计好的款式有没有相近的,而不能直接根据我的想法自动生成一个我需要的杯子。
又比如,我想要一张猫正在喝水的照片,只能去搜索引擎里去根据关键词搜索已经存在的猫喝水的照片,而不是自动生成一张符合我要求的照片。随着人工智能的升级,这种低级的信息获取方式一定会淘汰。
今天就介绍一种深度学习方法,如何根据文字自动生成图片。先来看下效果:
输入文本:
sky is above the grass, man standing on the grass
生成的图片,是不是有点神奇:
详细流程
关于具体的算法细节可以看下这个论文:“Image Generation from Scene Graphs”
1.下载代码
代码可以在Github找到: /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(图片输出路径)
最终生成的图片效果:
总结
是不是很好玩,可以自己任意添加描述脚本,生成自己想要的图片,是不是非常酷。目前来看像素还比较低,希望以后该项目可以继续更新,可以生成更多高清大图。
如果觉得《机器学习根据文字生成图片教程(附python代码)》对你有帮助,请点赞、收藏,并留下你的观点哦!