我的项目简介
在过来几十年,风景园林经验了从“刀耕火种”的齐全手绘设计时代到当下比拟风行的参数化设计时代,过来的每一轮技术革新都让风景园林作品的表现形式产生了微小的扭转。随着计算机图像技术的倒退,咱们有更多的建模和渲染软件辅助晋升图纸体现成果,但体现成果晋升的背地随同的是越来越微小的人力资源投入,一张好看的效果图须要通过建模、渲染、图像编辑等多个软件繁冗重复操作能力生产进去,加班熬夜重复性地绘图已成为行业常态。简而言之,过来计算机图像技术的倒退并没有让设计师的工作更加轻松,反而成为了一把惨重的“桎梏”。
在人工智能生成内容技术(Artificial Intelligence Generated Content,AIGC)井喷式倒退的背景下,风景园林行业正经验着智能化改革。如何借助人工智能技术进一步提高设计效率、实现疾速多样化设计,对满足用户多样和变动的需要、扭转行业 投入高和人效低 现状有重要意义。在飞桨 AI Studio 和 PPDiffusers 的反对下,华南农业大学 SCUrban Lab 团队尝试在风景园林的场景下对 Stable Diffusion 模型进行调教优化。本文将分享以后摸索成绩,除此之外,咱们也公开了一个“城市公园”场景下的 LoRA 模型权重,欢送大家测试反馈。
环境装置
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+ 工作,笼罩文本图像跨模态、图像、音频等多种模态。
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
模型介绍
本我的项目次要用到的是模型是 Stable Diffusion V1.5 版本和 ControlNet。为了使生成图像的体现成果更加靠近事实场景,咱们也应用了基于 Stable Diffusion 的 Realistic Vision V2.0 模型。针对风景园林公共景观设计畛域,咱们实验室利用自有的城市公园图像数据库训练了 CityParkLoraV1 权重模型并开源,同时咱们还应用了针对地产景观的 Fair-faced-concrete-V1 微调权重,所有开源地址的模型附在文章最初,在此也对所有开源贡献者示意衷心感谢。
效果图生成利用
基于文字生成
与设计大类业余相似,在景观设计院的工作过程中,咱们也简直每天都会收到来自甲方各式各样的文字需要,比方咱们常常调侃的“五彩斑斓的黑”“尊贵大气而低调的格调”等等。对于老成持重的设计师,外表上笑脸嘻嘻投合甲方,但心田早已万马奔腾。所以咱们第一个场景试验就是基于文字的景观成果图像生成,上面咱们就演示一个湿地公园景观生成场景。
推理代码:
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]
成果展现:
效果图
基于事实场景生成
对现有的景观成果进行降级革新也是风景园林的次要工作之一。在景观革新之前,咱们会到现场进行场地的勘察调研,拍摄记录场地现状的照片,而后通过一系列设计工作后,将设计成绩 P 图到场地现状图上。一个经验丰富的设计师,均匀 P 一张一般设计效果图的工夫在 1 个小时左右。如果我的项目规模比拟大,咱们还须要在 3D 建模软件中对场地进行 1:1 还原,这样一整个设计周期下来须要 3 - 5 天甚至更长时间。因而咱们第二个场景试验就是针对事实场景的图像生成,利用 ControlNet 保留原图像的特色,而后利用 Stable Diffusion 对图像进行重绘,以下是一个实在的“漂亮农村”建设项目的试验成果:
推理代码:
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)))
成果展现:
原图
效果图
在这个场景的试验中,咱们在 V100 32G 的显卡环境下测试每张图的生成工夫大概是 10 秒左右,与人工绘图动辄 1 个小时到 1 周不等的工夫相比,这极大地晋升了景观设计的效率,真正解放了生产力!
基于手绘线稿生成
手绘是风景园林设计师的日常表达方式之一。在景观设计过程中,咱们会将脑海里的设计灵感和斟酌过程用手绘的形式疾速表达出来,而后交给建模师和美术设计进行计算机辅助绘图。咱们的第三个场景试验,就是充分利用 ControlNet Canny 边缘检测的个性,将手绘线稿渲染成实在场景的效果图。
推理代码:
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)))
成果展现:
原图
效果图
在线体验
为了让开发者疾速体验以上的内容,目前咱们曾经将基于事实场景和手绘线稿生成效果图的能力上线到 AI Studio 利用核心,开发者能够关上 以下链接 并尝试上传本人的景观手绘或照片,感触疾速高效输入渲染效果图的能力!
- AI Studio 地址
<https://aistudio.baidu.com/aistudio/projectdetail/6235423
结语
以上是咱们实验室基于 Stable Diffusion 模型针对风景园林场景下的一些试验摸索和验证,展示了人工智能在风景园林行业利用的微小后劲。通过咱们多轮重复的试验和工程设计调优,验证了 Stable Diffusion 等生成模型能够被有效应用于风景园林景观设计畛域,并且能大幅节约设计师的工作工夫,具备进步全行业畛域生产力的能力。
欢送更多有趣味的开发者与咱们一起攻克设计管制、设计后果有效性验证等难题,拓展 AIGC 相干技术的钻研及利用,构建起真正的风景园林循证设计框架。
- AI Studio 我的项目链接
https://aistudio.baidu.com/aistudio/projectdetail/6088322
- 版权申明
本文中应用的原图和设计稿由华南农业大学 SCUrban Lab 提供,未经受权许可禁止所有带有商业目的性的转载和应用。
- SCUrban Lab 地址
参考文献
[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-architec…