快速搭建 Serverless 人脸识别离线服务
快速搭建 Serverless 人脸识别离线服务
简介
首先介绍下在本文出现的几个比较重要的概念:
函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考
函数工作流(Function Flow):函数工作流是一个用来协调多个分布式任务执行的全托管云服务。用户可以用顺序,分支,并行等方式来编排分布式任务,FnF 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。函数工作流更多信息参考
本文将重点介绍如何快速地通过函数计算与函数工作流部署一个定时离线批量处理图片文件并标注出人脸的服务。
开通服务
解决方案
流程如下:
- 设定定时触发器,定时触发函数计算中的函数。
- 函数被触发后,调用一次函数工作流中的流程。
-
函数工作流中的流程被执行:
- 调用函数计算中的函数,列举出 OSS Bucket 根路径下的图片文件列表。
-
对于步骤1中列出的文件列表,对每个文件:
- 调用函数计算中的函数处理,进行人脸识别并标注。将标注后的文件存入 OSS,最后将处理过的文件进行转移。
-
判断当前 OSS 根路径下是否有更多的文件
- 如是,继续步骤1
- 如否,结束流程
快速开始
-
Clone 工程到本地
git clone git@github.com:ChanDaoH/serverless-face-recognition.git
-
替换项目目录下 template.yml 文件中的
YOUR_BUCKET_NAME
为在杭州区域的 OSS Bucket (可以不是杭州区域的,需要同步修改OSS_ENDPOINT
)ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources: face-recognition: Type: 'Aliyun::Serverless::Service' Properties: Policies: - Version: '1' Statement: - Effect: Allow Action: - 'oss:ListObjects' - 'oss:GetObject' - 'oss:PutObject' - 'oss:DeleteObject' - 'fnf:*' Resource: '*' listObjects: Type: 'Aliyun::Serverless::Function' Properties: Handler: index.handler Runtime: python3 Timeout: 60 MemorySize: 128 CodeUri: functions/listobjects EnvironmentVariables: OSS_ENDPOINT: 'https://oss-cn-hangzhou-internal.aliyuncs.com' detectFaces: Type: 'Aliyun::Serverless::Function' Properties: Handler: index.handler Runtime: python3 Timeout: 60 MemorySize: 512 CodeUri: functions/detectfaces EnvironmentVariables: OSS_ENDPOINT: 'https://oss-cn-hangzhou-internal.aliyuncs.com' timer: Type: 'Aliyun::Serverless::Function' Properties: Handler: index.handler Runtime: python3 Timeout: 60 MemorySize: 512 CodeUri: functions/timer Events: timeTrigger: Type: Timer Properties: CronExpression: '0 * * * * *' Enable: true # replace YOUR_BUCKET_NAME to your oss bucket name Payload: '{"flowName": "oss-batch-process", "input": "{\"bucket\": \"YOUR_BUCKET_NAME\",\"prefix\":\"\"}"}' oss-batch-process: Type: 'Aliyun::Serverless::Flow' Properties: Description: batch process flow DefinitionUri: flows/index.flow.yml Policies: - AliyunFCInvocationAccess
-
一键部署函数计算和函数工作流资源至云端
- 安装最新版本的 Fun
- 在项目根目录下执行
fun deploy
效果验证
- 在 OSS Bucket 的根目录下放置图片
- 等待一分钟后,定时触发器触发函数执行函数工作流。
-
工作流执行完成后,查看 OSS Bucket
- 标注出人脸的图像放置在
face-detection
目录下
- 标注出人脸的图像放置在
- 处理过的录像放置在
processed
目录下
总结
通过 函数计算 + 函数工作流,搭建了一个定时批量处理图片进行人脸识别的服务。该服务因为使用了函数工作流的流程,将任务分为了多个步骤,只需要确保每个步骤的函数能够在函数计算限制时间(10分钟)内完成即可。
通过 Fun 工具,一键部署 函数计算 + 函数工作流,免去去多平台进行操作的步骤。
相关参考
参考示例

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MaxCompute 开发者社区2019圣诞趴——致敬十年,感谢有你!
听说 “MaxCompute 开发者社区有圣诞party呀?”来来来~2019年12月24日 16:30-17:30坐标 MaxCompute开发者社区钉钉1群和2群 咖喱,肉骨茶,印尼九层塔Coco,Pineapple,Mango Mango香瓜,啤酒花,榴莲臭臭配香茶这些都没有啦~ 有的是技术咖和开发!行行代码和意气风发!满满真情和红包哗啦啦! 去年的圣诞趴回忆杀来一波~~
- 下一篇
阿里云如何基于标准 K8s 打造边缘计算云原生基础设施
作者 | 黄玉奇(徙远) 阿里巴巴高级技术专家 导读:伴随 5G、IoT的发展,边缘计算正在成为云计算的新边界,而规模和复杂度的日益提升对边缘计算的效率、可靠性、资源利用率等一系列能力又提出了新的诉求。试想,如果能将云能力从中心往边缘触达,上述问题是不是将迎刃而解?在云原生时代构建云到边的触达通路,保持云边一致性体验,我们的抓手又在哪里呢?本文将一一为你揭晓。 云原生的理念现今正如火如荼。它不仅仅是一种技术,更是随着云生态的发展而被逐渐提炼出的一系列技术、最佳实践与方法论的集合;它带来了资源利用率提升、分布式系统的弹性扩展与可靠性等能力,能够让 IT系统最大程度的享受云计算红利,业界全面拥抱云原生就是最好的佐证。 云原生概念 云原生的概念最早是在 2013 年被提出,经过近几年的发展,尤其是从 2015 年 Google 牵头成立
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G