在过去几十年,风景园林经历了从“刀耕火种”的完全手绘设计时代到当下比较流行的参数化设计时代,过去的每一轮技术革新都让风景园林作品的表现形式产生了巨大的改变。随着计算机图像技术的发展,我们有更多的建模和渲染软件辅助提升图纸表现效果,但表现效果提升的背后伴随的是越来越巨大的人力资源投入,一张美观的效果图需要经过建模、渲染、图像编辑等多个软件繁杂反复操作才能生产出来,加班熬夜重复性地绘图已成为行业常态。简而言之,过去计算机图像技术的发展并没有让设计师的工作更加轻松,反而成为了一把沉重的“枷锁”。
02
环境安装
▎PPDiffusers介绍
PPDiffusers是一款支持多种模态(如文本图像跨模态、图像、语音)扩散模型(DiffusionModel)训练和推理的国产化工具箱。依托于飞桨框架和PaddleNLP自然语言处理开发库,PPDiffusers提供了超过50种SOTA扩散模型Pipelines集合,支持文图生成(Text-to-ImageGeneration)、文本引导的图像编辑(Text-GuidedImageInpainting)、文本引导的图像变换(Image-to-ImageText-GuidedGeneration)、超分(SuperResolution)在内的10+任务,覆盖文本图像跨模态、图像、音频等多种模态。
▎PPDiffusers安装
如果您是刚接触Python编程的新用户,我们推荐使用以下便捷的pip的安装方式:
由于最近AIGC发展速度比较快,PPDiffusers代码仓库更新也比较频繁,如果您有一定的Python基础,我们推荐克隆PaddleNLP仓库源代码进行手动安装。
03
模型介绍
04
效果图生成应用
▎基于文字生成
与设计大类专业类似,在景观设计院的工作过程中,我们也几乎每天都会收到来自甲方各式各样的文字需求,比如我们经常调侃的“五彩斑斓的黑”“尊贵大气而低调的风格”等等。对于初出茅庐的设计师,表面上笑脸嘻嘻迎合甲方,但内心早已万马奔腾。所以我们第一个场景实验就是基于文字的景观效果图像生成,下面我们就演示一个湿地公园景观生成场景。
推理代码:
importpaddlefromppdiffusersimportStableDiffusionPipeline,DPMSolverMultistepSchedulerpaddle.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("Awetlandparkinthesuburbsofthecity,highresolution,hyperquality,fulldetails,natural,communtiypark,outdoor,grassland",num_inference_steps=50).images[0]
效果展示:
▎基于现实场景生成
▎基于手绘线稿生成
手绘是风景园林设计师的日常表达方式之一。在景观设计过程中,我们会将脑海里的设计灵感和推敲过程用手绘的方式快速表达出来,然后交给建模师和美术设计进行计算机辅助绘图。我们的第三个场景实验,就是充分利用ControlNetCanny边缘检测的特性,将手绘线稿渲染成真实场景的效果图。
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="gardeninresidentialarea,largegrassland,adultsandchildrenwalking,peoplesitunderumbrellaschatting,glasswindow,bluesky,highresolution,hyperquality,fulldetails,modernarchitecture,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/"ifnotos.path.exists(savePath):os.makedirs(savePath)foriinrange(1,len(results)):results[i].save(os.path.join(savePath,"{}.jpg".format(i)))
05
在线体验
为了让开发者快速体验以上的内容,目前我们已经将基于现实场景和手绘线稿生成效果图的能力上线到AIStudio应用中心,开发者可以打开以下链接并尝试上传自己的景观手绘或照片,感受快速高效输出渲染效果图的能力!