引言
人工智能生成内容(Artificial Intelligence Generated Content,简称 AIGC)是当下最火的概念之一。随着 AI 技术的快速发展以及众多开源项目(如Stable Diffusion)的诞生,每个人都可以很轻松且廉价的使用到 AIGC。Serverless是一种云原生开发模式,可使开发人员专注构建和运行应用,而无需关注和管理服务器等底层基础设施及其运维。在本实验场景中,我们将向大家介绍如何基于阿里云Serverless服务函数计算FC部署Stable Diffusion实现文字到图片的生成;以及部署ImageAI 目标检测应用,对现有图片内容进行检测。这是一项接近零基础的教程,其中并不会包含复杂的概念或者深奥的算法,旨在让您轻松便利的体验Serverless架构和AIGC技术。
函数计算
阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。
产品地址:https://www.aliyun.com/product/fc?spm=5176.224200.J_4VYgf18xNlTAyFFbOuOQe.102.5197586c8UbVep
产品优势:
产品文档:https://help.aliyun.com/zh/fc/product-overview/what-is-function-compute
产品架构:
Stable Diffusion
Stable Diffusion 是一种扩散模型(Diffusion Model)的变体,称为“潜在扩散模型”(Latent Diffusion Model),使用这个模型,可以生成包括人脸在内的任何图像。Stable Diffusion 能够根据我们提供的一些提示词以及可以调整的部分参数,通过模型计算生成一张不错的图片。
ImageAI
本节会创建ImageAI目标检测应用,ImageAI是用于图像预测、自定义图像预测、对象检测、视频检测、视频对象跟踪和图像预测训练,本实验会使用ImageAI的图像预测功能,对Stable Diffusion中生成的图片进行预测,ImageAI函数应用在Bucket上传图片后,会自动触发ImageAI 目标检测函数生成图片检测结果。
使用ImageAI进行目标检测非常简单,以下是一个示例代码:
from imageai.Detection import ObjectDetection
# 创建ObjectDetection对象
detector = ObjectDetection()
# 选择要使用的模型
detector.setModelTypeAsYOLOv3()
detector.setModelPath("path_to_model")
# 加载模型
detector.loadModel()
# 检测图像中的物体
detections = detector.detectObjectsFromImage(input_image="input.jpg", output_image_path="output.jpg")
# 打印检测结果
for detection in detections:
print(detection["name"], " : ", detection["percentage_probability"])
上述代码首先创建了一个ObjectDetection对象,并选择了要使用的模型(例如YOLOv3)。然后加载模型并调用detectObjectsFromImage方法对输入图像进行目标检测。最后,可以遍历检测结果并打印出每个检测到的物体及其置信度。
除了静态图像,ImageAI还支持对视频和摄像头流进行目标检测。通过类似的方式,可以实现对视频中的物体进行实时检测。
基于函数计算模板部署AI应用实践
进入函数计算控制台,点击应用,或将以下地址复制进远程桌面的浏览器地址栏直接进入:
https://fcnext.console.aliyun.com/applications
选择通过模板创建应用,在热门应用中选择AI数字绘画stable-diffusion自定义模型版,或者可以在右侧搜框通过名称检索找到AI数字绘画stable-diffusion自定义模型版,再点击立即创建。
进入应用选择配置界面,按照以下配置进行部署:
在弹出的创建提醒界面中,勾选已知当前收费项和我已经了解上面的内容,并同意上述描述,然后点击同意并继续部署
点击部署后,会自动跳转至部署界面,然后等待部署完成(大约需要等待2分钟),在部署时也可以查看 日志 观察应用部署情况
等待应用状态显示部署成功时即表示应用已经部署完成,并且可以在WebUI域名栏查看到应用访问地址
在应用详情界面,点击WebUI 域名的应用访问地址,即可自动跳转至WebUI界面(首次访问需要加载几分钟时间,请耐心等待)
加载完成之后,WebUI返回如下页面,表示已成功进入Stable Diffusion WebUI的操作界面。应用已预置了默认的提示词(如下图红框内),可以协助快速生成第一张图片
直接点击右上角生成按钮,在图片生成的过程中,我们可以在页面上看到生成过程的中间图片逐渐变得清晰。同时,也可以通过进度条直观的了解图片生成的进度和预估剩余时间
生成你的自定义图片:可以在文生图的文本框中,填入中文/英文提示词,之后单击右侧的生成按钮即可
提示词就是生成图片的依据,既可以是描述需要生成内容的词,如:girl, sunset, forest 等;也可以是用于是描述图像属性的词,如:best quality, beautiful, masterpiece 等。我们甚至可以通过提示词选择图片生成的视角、光线、画风;人物的姿势、着装、表情;背景的内容等。我们建议加上画风描述词,让图片更加美观,如:Cyberpunk(赛博朋克),shinkai makoto(新海诚),Ghibli Studio(吉卜力),Paul Gauguin(梵高)等等
生成图片后,我们点击图片下方的 保存 按钮,再点击 Download 按钮将图片下载到本地,记录图片保存的位置,图片将在后续步骤中使用。
下载完成后修改图片名称为fc_test.png。
在下载通知条栏中点击在文件夹中显示。
将以下地址复制进远程桌面的浏览器地址栏,进入对象存储OSS的管理控制台:
https://oss.console.aliyun.com/overview
点击Bucket列表,然后点击创建Bucket。
在弹出的创建页面,按照以下配置进行设置:
Bucket创建完成后,我们点击进入Bucket按钮,进入Bucket界面。
在文件列表中,我们点击 新建目录,在弹出新建目录的界面中填入 origin,再点击 确认 完成创建。
再次点击新建目录,在弹出新建目录的界面中填入 result,再点击 确认 完成创建。
将以下地址复制进远程桌面的浏览器地址栏,进入函数计算FC服务控制台:
https://fcnext.console.aliyun.com/applications
点击创建应用,选择通过模板创建应用,在人工智能类别中选择ImageAI 目标检测,或者可以在右侧搜框检索名称找到ImageAI 目标检测,再点击立即创建。
在高级配置中,按照以下配置进行部署:
等待3-5分钟左右,等部署状态显示为 部署成功 表示成功创建应用。
将以下地址复制进远程桌面的浏览器地址栏,进入 函数计算FC 应用列表:
https://fcnext.console.aliyun.com/applications
然后选择并点击我们刚才创建的 ImageAI应用名称,进入应用详情页面。
再点击 访问域名,即可自动跳转至WebUI界面(首次访问需要加载几分钟时间)。
加载完成之后,WebUI返回如下页面,表示已成功进入ImageAI应用的操作界面。
在WebUI界面的,我们点击选择文件,然后选择在Stable Diffusion中生成的图片导入。
图片上传完成后,点击 图像预测 按钮,等待预测完成后,会在图片下方显示5个预测结果,每个结果后面的数字表示相似度,数字越大表示相似度越高。
首先将以下地址复制进远程桌面的浏览器地址栏进入OSS Bucket列表,点击Bucket名称(u-xxx)进入Bucket界面:
在文件列表中,点击 origin目录 进入。
在origin目录中,点击 上传文件。
在上传界面中,点击 扫描文件,选择我们Stable Diffusion生成的图片,然后点击 上传文件 按钮完成上传。
上传完成后,我们点击 文件列表,返回列表界面,再点击 result目录 进入。
进入目录后,我们可以发现,已经自动生成了图片预测结果文件。
点击文件名称,可以预览文件内容,可以查看到图片内容预测的结果。
至此,已完成本实验全部内容。