设计师解放双手之作!3秒生成风景园林效果图,AIGC赋能景观设计

news2024/12/23 18:06:16

abbe6948e21a0bab34cb156ad8791297.gif

8668b240e42b6bb695c73b6644326bd1.png

f73a8970883f8c4d0dde3ab63adb9519.png项目简介

在过去几十年,风景园林经历了从“刀耕火种”的完全手绘设计时代到当下比较流行的参数化设计时代,过去的每一轮技术革新都让风景园林作品的表现形式产生了巨大的改变。随着计算机图像技术的发展,我们有更多的建模和渲染软件辅助提升图纸表现效果,但表现效果提升的背后伴随的是越来越巨大的人力资源投入,一张美观的效果图需要经过建模、渲染、图像编辑等多个软件繁杂反复操作才能生产出来,加班熬夜重复性地绘图已成为行业常态。简而言之,过去计算机图像技术的发展并没有让设计师的工作更加轻松,反而成为了一把沉重的“枷锁”。

在人工智能生成内容技术(Artificial Intelligence Generated Content,AIGC)井喷式发展的背景下,风景园林行业正经历着智能化变革。如何借助人工智能技术进一步提高设计效率、实现快速多样化设计,对满足用户多样和变化的需求、改变行业投入高和人效低现状有重要意义。在飞桨 AI Studio 和 PPDiffusers 的支持下,华南农业大学 SCUrban Lab 团队尝试在风景园林的场景下对 Stable Diffusion 模型进行调教优化。本文将分享当前探索成果,除此之外,我们也公开了一个“城市公园”场景下的 LoRA 模型权重,欢迎大家测试反馈。

511e7fc50b2ea1dfe124f4ba9e3c52fb.png

环境安装

8c8c7843bbc2c63f0136b75422743449.png

PPDiffusers 介绍

PPDiffusers 是一款支持多种模态(如文本图像跨模态、图像、语音)扩散模型(Diffusion Model)训练和推理的国产化工具箱。依托于飞桨框架和 PaddleNLP 自然语言处理开发库,PPDiffusers 提供了超过50种 SOTA 扩散模型 Pipelines 集合,支持文图生成(Text-to-Image Generation)、文本引导的图像编辑(Text-Guided Image Inpainting)、文本引导的图像变换(Image-to-Image Text-Guided Generation)、超分(Super Resolution)在内的10+任务,覆盖文本图像跨模态、图像、音频等多种模态。

7e0cd0f5d18e6620103892c0ef3d8a2e.png

PPDiffusers 安装

如果您是刚接触 Python 编程的新用户,我们推荐使用以下便捷的 pip 的安装方式:

pip install --upgrade ppdiffusers -f https://www.paddlepaddle.org.cn/whl/paddlenlp.html --user

由于最近 AIGC 发展速度比较快,PPDiffusers 代码仓库更新也比较频繁,如果您有一定的 Python 基础,我们推荐克隆 PaddleNLP 仓库源代码进行手动安装。

git clone https://github.com/PaddlePaddle/PaddleNLP
cd PaddleNLP/ppdiffusers
python setup.py install

34fe5ceece599c8034bc70886b814ba0.png

模型介绍

本项目主要用到的是模型是 Stable Diffusion V1.5 版本和 ControlNet。为了使生成图像的表现效果更加接近现实场景,我们也使用了基于 Stable Diffusion 的 Realistic Vision V2.0 模型。针对风景园林公共景观设计领域,我们实验室利用自有的城市公园图像数据库训练了 CityParkLoraV1 权重模型并开源,同时我们还使用了针对地产景观的 Fair-faced-concrete-V1 微调权重,所有开源地址的模型附在文章最后,在此也对所有开源贡献者表示衷心感谢。

1b11b6d3d742f2a2851c21cb00aa99ab.png

效果图生成应用

fa4a9205ded6656e7a883e554321c424.png

基于文字生成

与设计大类专业类似,在景观设计院的工作过程中,我们也几乎每天都会收到来自甲方各式各样的文字需求,比如我们经常调侃的“五彩斑斓的黑”“尊贵大气而低调的风格”等等。对于初出茅庐的设计师,表面上笑脸嘻嘻迎合甲方,但内心早已万马奔腾。所以我们第一个场景实验就是基于文字的景观效果图像生成,下面我们就演示一个湿地公园景观生成场景。

de8cc4e429119b856ca0172dd459a517.png

推理代码:

import paddle
from ppdiffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler

paddle.seed(12321)
pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
pipe.unet.load_attn_procs("Xiejiehang/CityParkLoraV1", from_hf_hub=True)
image = pipe("A wetland park in the suburbs of the city, high resolution,hyper quality,full details, natural, communtiy park, outdoor, grassland", num_inference_steps=50).images[0]

效果展示:

5dbea39b9a4b29f6bd33bca9e9ac50ef.png

49dac91fed3b554123315697e3a83114.png

9b4edd140ec691d7cd8c04d5003861d1.png

f6c47ee32f96ea14111426f02d4c4176.png

效果图(向右滑动查看更多)

326ec90abf9c9cab298978cff4af273a.png

基于现实场景生成

对现有的景观效果进行升级改造也是风景园林的主要工作之一。在景观改造之前,我们会到现场进行场地的勘察调研,拍摄记录场地现状的照片,然后经过一系列设计工作后,将设计成果 P 图到场地现状图上。一个经验丰富的设计师,平均 P 一张普通设计效果图的时间在1个小时左右。如果项目规模比较大,我们还需要在 3D 建模软件中对场地进行1:1还原,这样一整个设计周期下来需要3-5天甚至更长时间。因此我们第二个场景实验就是针对现实场景的图像生成,利用 ControlNet 保留原图像的特征,然后利用 Stable Diffusion 对图像进行重绘,以下是一个真实的“美丽乡村”建设项目的实验效果:

c69ef0542d6182f657eb6f1e9a5248f7.png

推理代码:

import os
import cv2
import random
import paddle

from annotator.canny import CannyDetector
from annotator.util import HWC3, resize_image
from paddlenlp.trainer import set_seed as seed_everything
from ppdiffusers import ControlNetModel, StableDiffusionControlNetPipeline, StableDiffusionPipeline

apply_canny = CannyDetector()
controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny")

pipe = StableDiffusionControlNetPipeline.from_pretrained(
"SG161222/Realistic_Vision_V2.0", controlnet=controlnet, from_hf_hub=True, from_diffusers=True
)

def process(
input_image,
prompt,
a_prompt,
n_prompt,
num_samples,
image_resolution,
ddim_steps,
guess_mode,
strength,
scale,
seed,
eta,
low_threshold,
high_threshold,
):

with paddle.no_grad():
img = resize_image(HWC3(input_image), image_resolution)
H, W, C = img.shape
detected_map = apply_canny(img, low_threshold, high_threshold)

detected_map = HWC3(detected_map)
control = paddle.to_tensor(detected_map.copy(), dtype=paddle.float32) / 255.0
control = control.unsqueeze(0).transpose([0, 3, 1, 2])
control_scales = (
[strength * (0.825 ** float(12 - i)) for i in range(13)] if guess_mode else ([strength] * 13)
) 
if seed == -1:
seed = random.randint(0, 65535)
seed_everything(seed)
results = []
for _ in range(num_samples):
img = pipe(
prompt + ", " + a_prompt,
negative_prompt=n_prompt,
image=control,
num_inference_steps=ddim_steps,
height=H,
width=W,
eta=eta,
controlnet_conditioning_scale=control_scales,
guidance_scale=scale,
).images[0]
results.append(img)

return [255 - detected_map] + results

inputImage = cv2.imread('test_img/village.jpg')
results = process(input_image=inputImage,
prompt="beautiful village,shrubs and flowers around the building,countryside,country road,blue sky,modern house,white wall,glass window, wooden roof,high resolution,hyper quality,full details",
a_prompt="",
n_prompt="",
num_samples=1,
image_resolution=512,
ddim_steps=20,
guess_mode=False,
strength=1.0,
scale=9.0,
seed=123321123,
eta=0.0,
low_threshold=20,
high_threshold=200,
)

# 保存图像
savePath = "./outputImg/"
if not os.path.exists(savePath):
os.makedirs(savePath)
for i in range(1, len(results)):
results[i].save(os.path.join(savePath, "{}.jpg".format(i)))

效果展示:

ff78a1742a18fdb9ce21b0d2908271eb.jpeg原图

2d9ec3dbbf442800a08bb3b9d4a9243f.jpeg

fbf56b6027de3caf86d219bb3a38df67.jpeg

19d810a50ea9af61dcf5a3cbd5415a8e.png

效果图(向右滑动查看更多)

在这个场景的实验中,我们在 V100 32G 的显卡环境下测试每张图的生成时间大约是10秒左右,与人工绘图动辄1个小时到1周不等的时间相比,这极大地提升了景观设计的效率,真正解放了生产力!

ab2c93b12b389fe0d65b56653051e686.png

基于手绘线稿生成

手绘是风景园林设计师的日常表达方式之一。在景观设计过程中,我们会将脑海里的设计灵感和推敲过程用手绘的方式快速表达出来,然后交给建模师和美术设计进行计算机辅助绘图。我们的第三个场景实验,就是充分利用 ControlNet Canny 边缘检测的特性,将手绘线稿渲染成真实场景的效果图。

358c9f26ec236a1d3ad7d261b2ee065a.png

推理代码:

pipe.apply_lora("/home/aistudio/data/data214847/Fair-faced-concrete-V1.safetensors")

inputImage = cv2.imread('test_img/draw.jpg')
results = process(input_image=inputImage,
prompt="garden in residential area,large grassland,adults and children walking,people sit under umbrellas chatting,glass window,blue sky,high resolution,hyper quality,full details,modern architecture,outside,facade",
a_prompt="",
n_prompt="water,lake",
num_samples=1,
image_resolution=512,
ddim_steps=20,
guess_mode=False,
strength=1.0,
scale=9.0,
seed=12332,
eta=0.0,
low_threshold=20,
high_threshold=200,
)
savePath = "./outputImg/"
if not os.path.exists(savePath):
os.makedirs(savePath)
for i in range(1, len(results)):
results[i].save(os.path.join(savePath, "{}.jpg".format(i)))

效果展示:

a86ca30ae8ff7c7b517004f967819ecf.jpeg原图

6eefbc930b744ffbc95dbeced76b4d28.jpeg

e9f65c61a48d29070d60406beb89b428.jpeg

8e74d66b112af62bc656e8e8afd6a319.jpeg

fc3f8423b18eba72d0b1fcecc1cbbbd9.jpeg

效果图(向右滑动查看更多)

fe6ef5752db2f65c5c73602b9c8b8c96.png

在线体验

为了让开发者快速体验以上的内容,目前我们已经将基于现实场景和手绘线稿生成效果图的能力上线到 AI Studio 应用中心,开发者可以打开以下链接并尝试上传自己的景观手绘或照片,感受快速高效输出渲染效果图的能力!

  • AI Studio地址

https://aistudio.baidu.com/aistudio/projectdetail/6235423

d5091969d15d646ddbf1527d78b1939a.png

f7640bd43a2466b5cfc2969577c6ce9f.png

结语

以上是我们实验室基于 Stable Diffusion 模型针对风景园林场景下的一些实验探索和验证,展现了人工智能在风景园林行业应用的巨大潜力。经过我们多轮反复的实验和工程设计调优,验证了 Stable Diffusion 等生成模型可以被有效应用于风景园林景观设计领域,并且能大幅节约设计师的工作时间,具备提高全行业领域生产力的能力。

欢迎更多有兴趣的开发者与我们一起攻克设计控制、设计结果有效性验证等难题,拓展 AIGC 相关技术的研究及应用,构建起真正的风景园林循证设计框架。

AI Studio 项目链接

https://aistudio.baidu.com/aistudio/projectdetail/6088322

版权声明

本文中使用的原图和设计稿由华南农业大学 SCUrban Lab 提供,未经授权许可禁止一切带有商业目的性的转载和使用。

  • SCUrban Lab 地址

https://www.scurbanlab.com/

参考文献

[1] https://github.com/PaddlePaddle/PaddleNLP/tree/develop/ppdiffusers

[2] https://huggingface.co/Xiejiehang/CityParkLoraV1/

[3] https://huggingface.co/lllyasviel/sd-controlnet-canny

[4] https://huggingface.co/SG161222/Realistic_Vision_V2.0

[5] https://civitai.com/models/34597/fair-faced-concrete-architecture

5a70749f6fef0cef43a098803a2fffc3.gif

关注【飞桨PaddlePaddle】公众号

获取更多技术内容~

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

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

相关文章

Python中深拷贝与浅拷贝介绍

用赋值的时候的一些注意事项 a "< meta name“Keywords” content“小博测试成长之路” />" b a c bprint(id("< meta name“Keywords” content“小博测试成长之路” />")) print(id(a)) print(id(b)) print(id(c)) print(a is b) # a和b…

面试题百日百刷-java基础篇(九)

锁屏面试题百日百刷&#xff0c;每个工作日坚持更新面试题。请看到最后就能获取你想要的,接下来的是今日的面试题&#xff1a; 1.Java 中IO 流分为几种? 按照流的流向分&#xff0c;可以分为输入流和输出流&#xff1b; 按照操作单元划分&#xff0c;可以划分为字节流和字符…

BGP 基础知识学习笔记

今天海翎光电的小编为大家介绍一下BGP的相关基础知识&#xff0c;文章浅显易懂&#xff0c;适合对BGP完全没有了解的同学。 BGP&#xff08;边界网关协议&#xff09;是将互联网联合在一起的路由协议&#xff0c;海翎光电的小编将解释在哪些情况下我们需要 BGP 以及它是如何工作…

为什么你工作很努力却没有晋升?分析晋升的关键点!

见字如面&#xff0c;我是军哥&#xff01; 昨天有一位二线大厂的程序员读者和我吐槽&#xff0c;说马上公司一波人晋升&#xff0c;可是晋升名额并么有他&#xff0c;但是他在这家公司已经干了三年了&#xff0c;工作也很努力&#xff0c;996 更是家常便饭&#xff0c;难道是大…

C语言小游戏的实现——扫雷(使用C语言基础语法)

前言 结合前边我们所学的C语言知识&#xff0c;本期我们将使用C语言实现一个简单的小游戏——扫雷 目录 前言 总体框架设计 多文件分装程序 各功能模块化实现 初始化棋盘 棋盘打印 埋雷 判赢与排雷 游戏逻辑安排 总结 总体框架设计 和三子棋相同&#xff0c;游戏开始时…

109.(cesium篇)cesium椎体上下跳动+旋转

地图之家总目录(订阅之前请先查看该博客) 地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en…

python+django高校疫情防控管理系统vue

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;高校疫情防控管理系统也不例外&#xff0c;但目前国内的有些学校仍都使用人工管理&#xff0c;学校规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化…

屏幕挂灯是不是智商税?明基ScreenBar Halo屏幕挂灯初体验

目录 一、屏幕挂灯是不是智商税&#xff1f;二、文心一言眼里的屏幕挂灯1、明基ScreenBar Halo屏幕挂灯2、屏幕挂灯和普通台灯哪个好&#xff1f; 三、屏幕挂灯初体验四、使用体验五、无线控制器六、专业角度分析1、屏幕工作照明&#xff0c;不是随便一盏灯就可以2、引导光线照…

记录--超长溢出头部省略打点,坑这么大,技巧这么多?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 在业务中&#xff0c;有这么一种场景&#xff0c;表格下的某一列 ID 值&#xff0c;文本超长了&#xff0c;正常而言会是这样&#xff1a; 通常&#xff0c;这种情况都需要超长省略溢出打点&#xff0…

2023网络安全工程师面试宝典(附答案)

2023年即将过去一半&#xff0c;先来灵魂三连问&#xff1a; 年初定的目标完成多少了&#xff1f;薪资涨了吗&#xff1f;女朋友找到了吗&#xff1f; ​好了&#xff0c;不扎大家的心了&#xff0c;接下来进入正文。 1、SQL注入的原理是什么&#xff1f; SQL注入攻击是通过将…

1722_PolySpace Bug Finder的几种启动方式

全部学习汇总&#xff1a; GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral …

【算法】使用数位算法生成0至某个数之间的整数(for循环之外的另一种实现方式,蛮长见识的)

导入&#xff1a; 对某个整数进行遍历&#xff0c;按常规的编程思维都是 for(int i0;i<number;i){} 但是如果这个数比较大&#xff0c;大到无法的话&#xff0c;可能使用普通for循环方式进行遍历就有些吃力了。 那么针对这个问题&#xff0c;可以考虑深度搜索算法dfs来辅助完…

Linux--ServerProgramming--(1)TCP\IP协议族

1.TCP/IP 协议族 1.1 TCP/IP协议族及主要协议 TCP/IP 协议族是一个四层协议系统。自上而下为&#xff08;如下图所示&#xff09;&#xff1a;应用层传输层网络层数据链路层 应用层负责处理应用程序逻辑&#xff0c;在用户空间实现。&#xff08;少数服务器程序在内核中实现。…

快速上手kettle(一)壶之简介

Linux核心命令系列文章目录 快速上手kettle&#xff08;一&#xff09;&#xff1a;壶之简介 快速上手kettle&#xff08;二&#xff09;&#xff1a;Kettle初体验&#xff08;博主正在玩命更新中&#xff09; 快速上手kettle&#xff08;三&#xff09;&#xff1a;Kettle转换…

艾迪普发布新一代国产化“3D引擎+工具+平台”,加速释放数字内容生产力

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 艾迪普的2023新产品发布会在5月20日在北京隆重举行&#xff0c;该发布会以"向新出发 智见未来"为主题&#xff0c;艾迪普重磅推出了新一代实时三维图形图像引擎IDP Engine 4.0、iVis无代码编程数字孪生应用开发工…

谷歌云开启GPU算力狂飙,驱动AIGC时代加速到来

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着人工智能的飞速发展&#xff0c;尤其是大型AI模型、AIGC的崛起&#xff0c;对AI算力产生了巨大的需求。以GPU为核心的算力供给&#xff0c;已经成为大模型、AIGC乃至整个智能产业发展的关键基础设施。因此&#xff0c;对…

springboot+vue基于java的用户行为的个性化新闻推荐系统

使用个性化新闻服务平台相对传统个性化新闻服务方式具备很多优点&#xff1a;首先可以大幅提高个性化新闻服务信息检索&#xff0c;只需输入新闻相关信息就能在数秒内反馈想要的结果&#xff1b;其次可存储大量的个性化新闻服务信息&#xff0c;同时个性化新闻服务安全性有更高…

Java内存模型 JMM

并发编程模型的两个关键问题 线程之间如何通信及线程之间如何同步。 线程之间如何通信&#xff1a;共享内存&#xff0c;消息传递线程之间如何同步通信是指线程之间以何种机制来 交换信息同步是指程序中用于控制不同线程间 操作发生相对顺序 的机制在共享内存的并发模型里&a…

案例21:Java农产品供求信息系统设计与实现开题报告

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

腾讯、头条 | 算法岗详细面经

作者 | 常青czq 整理 | NewBeeNLP 面试锦囊之面经分享系列&#xff0c;持续更新中 赶紧后台回复"面试"加入讨论组交流吧 写在前面 本硕华南某985&#xff0c;有过两段实习经历&#xff0c;一段是大厂的算法实习&#xff0c;另一段是招行Fintech实习&#xff0c;虽然…