利用Lindorm AI 引擎进行AIGC应用开发Demo
下面我们以一个室内设计场景作为案例,展示一下如何利用Lindorm AI 引擎来根据文字生成设计图,以及切换设计风格。
根据文本生成设计图
▶︎ 模型背景
这里我们以ModelScope上的中文StableDiffusion模型为例,演示如何在Lindorm AI 引擎内完成根据文本生成设计图。Stable Diffusion是一种AI文本生成图片的扩散模型,能够在给定文本输入的情况下生成逼真的图像。
▶︎ 构建步骤
1. 在Lindorm数据库中创建室内设计文本描述表,将用于生成图片的文本插入到表中,这里我们插入了3条关于室内设计的文字描述:
lindorm:default> CREATE TABLE `room_desc` ( > `room_desc_id` INTEGER, > `room_desc` VARCHAR, > primary key(`room_desc_id`) > ); lindorm:default> INSERT INTO `room_desc` ( > `room_desc_id`, > `room_desc` > ) VALUES ( > 1, > '新中式风格的家居设计,在传统中式风格的基础上,融入了现代时尚的设计理念,打造出一个充满禅意的中式风格卧室空间。' > ), ( > 2, > '室内设计,开放式,厨房和起居室,模块化家具与棉织品,木地板,高天花板,大钢窗,可以看到一个城市。' > ), ( > 3, > '高分辨率摄影室内设计,梦幻般的下沉式客厅,木地板,通向花园的小窗户,包豪斯家具和装饰,高天花板,米色蓝色鲑鱼粉色调,室内设计杂志,舒适的气氛。' > ); 3 row affected (22 ms) lindorm:default> select * from room_desc; +--------------+----------------------------------------------------------------------------------------------------------------------------------------------+ | room_desc_id | room_desc | +--------------+----------------------------------------------------------------------------------------------------------------------------------------------+ | 1 | 新中式风格的家居设计,在传统中式风格的基础上,融入了现代时尚的设计理念,打造出一个充满禅意的中式风格卧室空间。| | 2 | 室内设计,开放式,厨房和起居室,模块化家具与棉织品,木地板,高天花板,大钢窗,可以看到一个城市。 | | 3 | 高分辨率摄影室内设计,梦幻般的下沉式客厅,木地板,通向花园的小窗户,包豪斯家具和装饰,高天花板,米色蓝色鲑鱼粉色调,室内设计杂志,舒适的气氛 | +--------------+----------------------------------------------------------------------------------------------------------------------------------------------+ 3 rows in set (30 ms)
2. 接下来我们使用Lindorm AI 引擎扩展的CREATE MODEL SQL语法自动从 ModelScope平台导入中文Stable Diffusion模型:
lindorm:default> CREATE MODEL `room_maker_model` > FROM 'modelscope://damo/multi-modal_chinese_stable_diffusion_v1.0' > TASK TEXT_TO_IMAGE > ALGORITHM STABLE_DIFFUSION; 0 row affected (63 ms)
3. 最后通过SQL调用推理函数 AI_INFER在数据库中使用刚刚导入的模型进行推理,Lindorm会先使用模型根据文本生成图片,自动保存成Lindorm内的BLOB对象类型,并返回图片的下载链接:
lindorm:default> SELECT > `room_desc`, > AI_INFER( > 'room_maker_model', > `room_desc` > ) as 'room_image' > FROM room_desc; +--------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | room_desc | room_image | +--------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | 新中式风格的家居设计,在传统中式风格的基础上,融入了现代时尚的设计理念,打造出一个充满禅意的中式风格卧室空间。 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | | 室内设计,开放式,厨房和起居室,模块化家具与棉织品,木地板,高天花板,大钢窗,可以看到一个城市。 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | | 高分辨率摄影室内设计,梦幻般的下沉式客厅,木地板,通向花园的小窗户,包豪斯家具和装饰,高天花板,米色蓝色鲑鱼粉色调,室内设计杂志,舒适的气氛。 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | +--------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ 3 rows in set (7875 ms)
4. 通过得到的链接(备注:上述案例中的链接为测试实例所属VPC内网链接,无法通过公网访问)可以看到生成了三张室内设计图片。
设计文案
👇
新中式风格的家居设计,在传统中式风格的基础上,融入了现代时尚的设计理念,打造出一个充满禅意的中式风格卧室空间。
设计图
👇
设计文案
👇
室内设计,开放式,厨房和起居室,模块化家具与棉织品,木地板,高天花板,大钢窗,可以看到一个城市。
设计图
👇
设计文案
👇
高分辨率摄影室内设计,梦幻般的下沉式客厅,木地板,通向花园的小窗户,包豪斯家具和装饰,高天花板,米色蓝色鲑鱼粉色调,室内设计杂志,舒适的气氛。
设计图
👇
对设计图进行风格变换
▶︎ 模型背景
ControlNet是前段时间比较火的能够对Stable Diffusion生成的图片进行各种条件控制的模型,这里我们用它来对刚刚生成的几张设计图进行风格切换。
▶︎ 构建步骤
1. 我们使用另外一个表来做演示,表结构设计为包含一个图片 URL 地址和一个 prompt 字段,用来维护想要对设计风格进行控制的提示词。我们为刚刚生成的 3 张图片各切换 3 种风格(分别是中式、地中海和工业风),因此一共得到 9 行数据(出于篇幅限制,这里省略了 INSERT 环节):
lindorm:default> CREATE TABLE `control_room` ( > `control_room_id` INTEGER, > `img_url` VARCHAR, > `prompt` VARCHAR, > primary key(`control_room_id`) > ); lindorm:default> select * from control_room; +-----------------+--------------------------------------------------------------------------------------------------+-----------------------------+ | control_room_id | img_url | prompt | +-----------------+--------------------------------------------------------------------------------------------------+-----------------------------+ | 1 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Chinese style, 1 room | | 2 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Mediterranean style, 1 room | | 3 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Industrial style, 1 room | | 4 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Chinese style, 1 room | | 5 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Mediterranean style, 1 room | | 6 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Industrial style, 1 room | | 7 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Chinese style, 1 room | | 8 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Mediterranean style, 1 room | | 9 | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Industrial style, 1 room | +-----------------+--------------------------------------------------------------------------------------------------+-----------------------------+ 9 rows in set (25 ms)
2. 接下来同样使用SQL从HuggingFace平台导入ControlNet模型:
lindorm:default> CREATE MODEL `style_transfer_model` > FROM 'huggingface://lllyasviel/ControlNet' > TASK MULTIMODAL_TO_IMAGE > ALGORITHM CONTROL_NET; 0 row affected (68 ms)
3. 同样,通过调用推理函数AI_INFER在数据库中使用刚刚导入的模型进行推理,Lindorm会使用img_url对应的图片以及prompt作为模型输入,通过模型生成新的图片,并返回图片的 URL:
lindorm:default> SELECT > `img_url`, > `prompt`, > AI_INFER( > 'style_transfer_model', > `img_url`, > `prompt`, > 'control_type=seg' > ) as 'controlled_image' > FROM control_room; +--------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------------------------------------------------------------------------+ | img_url | prompt | controlled_image | +--------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------------------------------------------------------------------------+ | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Chinese style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873429213.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Mediterranean style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873451405.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873258559.jpg | Industrial style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873472694.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Chinese style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873494592.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Mediterranean style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873516370.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873265155.jpg | Industrial style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873538218.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Chinese style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873560219.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Mediterranean style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873582595.jpg | | http://ld-xxx-blob.xxx.com:9000/images/sd_1678873271757.jpg | Industrial style, 1 room | http://ld-xxx-blob.xxx.com:9000/images/cn_1678873604486.jpg | +--------------------------------------------------------------------------------------------------+-----------------------------+--------------------------------------------------------------------------------------------------+ 9 rows in set (16219 ms)
4. 通过链接,我们可以看到切换风格后的图片:
是不是很Easy就在数据库中完成了AIGC?还有更多有趣的用法等待你去尝试。
未来展望
Lindorm AI 引擎实现了数据不出库,一站式智能处理,可以大大降低AIGC业务落地的使用门槛。未来我们还会进一步探索如何利用 AI 对非结构化数据的分析与处理能力实现多模数据的融合分析与处理。我们希望用户在采用Lindorm构建AIGC应用时,就像用MySQL构建库存订单管理一样简单!