简介

首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考

函数工作流(Function Flow):函数工作流是一个用来协调多个分布式任务执行的全托管云服务。用户可以用顺序,分支,并行等方式来编排分布式任务,FnF 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。函数工作流更多信息参考

本文将重点介绍如何快速地通过函数计算与函数工作流部署一个定时离线批量处理图片文件并标注出人脸的服务。

开通服务

  1. 免费开通函数计算,按量付费,函数计算有很大的免费额度。
  2. 免费开通函数工作流,按量付费,目前该产品在公测阶段,可以免费使用。
  3. 免费开通对象存储,按量付费。

解决方案

流程如下:

  1. 设定定时触发器,定时触发函数计算中的函数。

  2. 函数被触发后,调用一次函数工作流中的流程。

  3. 函数工作流中的流程被执行:

  4. 调用函数计算中的函数,列举出 OSS Bucket 根路径下的图片文件列表。

  5. 对于步骤1中列出的文件列表,对每个文件:

- 调用函数计算中的函数处理,进行人脸识别并标注。将标注后的文件存入 OSS,最后将处理过的文件进行转移。
  1. 判断当前 OSS 根路径下是否有更多的文件
- 如是,继续步骤1
- 如否,结束流程

快速开始

  1. Clone 工程到本地
  • git clone git@github.com:ChanDaoH/serverless-face-recognition.git
  1. 替换项目目录下 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: AllowAction:- 'oss:ListObjects'- 'oss:GetObject'- 'oss:PutObject'- 'oss:DeleteObject'- 'fnf:*'Resource: '*'listObjects:Type: 'Aliyun::Serverless::Function'Properties:Handler: index.handlerRuntime: python3Timeout: 60MemorySize: 128CodeUri: functions/listobjectsEnvironmentVariables:OSS_ENDPOINT: 'https://oss-cn-hangzhou-internal.aliyuncs.com'detectFaces:Type: 'Aliyun::Serverless::Function'Properties:Handler: index.handlerRuntime: python3Timeout: 60MemorySize: 512CodeUri: functions/detectfacesEnvironmentVariables:OSS_ENDPOINT: 'https://oss-cn-hangzhou-internal.aliyuncs.com'timer:Type: 'Aliyun::Serverless::Function'Properties:Handler: index.handlerRuntime: python3Timeout: 60MemorySize: 512CodeUri: functions/timerEvents:timeTrigger:Type: TimerProperties:CronExpression: '0 * * * * *'Enable: true # replace YOUR_BUCKET_NAME to your oss bucket namePayload: '{"flowName": "oss-batch-process", "input": "{\"bucket\": \"YOUR_BUCKET_NAME\",\"prefix\":\"\"}"}'oss-batch-process:Type: 'Aliyun::Serverless::Flow'Properties:Description: batch process flowDefinitionUri: flows/index.flow.ymlPolicies:- AliyunFCInvocationAccess
  1. 一键部署函数计算和函数工作流资源至云端
  • 安装最新版本的 Fun
  • 在项目根目录下执行 fun deploy

效果验证

  1. 在 OSS Bucket 的根目录下放置图片

  1. 等待一分钟后,定时触发器触发函数执行函数工作流。

  1. 工作流执行完成后,查看 OSS Bucket
  • 标注出人脸的图像放置在 face-detection 目录下

  • 处理过的录像放置在 processed 目录下

总结

通过 函数计算 函数工作流,搭建了一个定时批量处理图片进行人脸识别的服务。该服务因为使用了函数工作流的流程,将任务分为了多个步骤,只需要确保每个步骤的函数能够在函数计算限制时间(10分钟)内完成即可。
通过 Fun 工具,一键部署 函数计算 函数工作流,免去去多平台进行操作的步骤。

相关参考

  1. 函数计算
  2. 函数工作流
  3. Aliyun Serverless VSCode 插件
  4. Fun

参考示例

  1. serverless-face-recognition
  2. oss-batch-process

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

快速搭建 Serverless 人脸识别离线服务相关推荐

  1. OpenCV4.5.4 DNN人脸识别模块使用介绍--如何快速搭建一个人脸识别系统

    点击下方卡片,关注"OpenCV与AI深度学习" 视觉/图像重磅干货,第一时间送达 导读 本文主要介绍OpenCV4.5.4中人脸识别模块的使用和简易人脸识别系统的搭建,供大家参考 ...

  2. 如何快速搭建智能人脸识别系统

    作者 | 小白 来源 | 小白学视觉 网络安全是现代社会最关心的问题之一,确保只有特定的人才能访问设备变得极其重要,这是我们的智能手机设有两级安全系统的主要原因之一.这是为了确保我们的隐私得到维护,只 ...

  3. 快速搭建 Serverless 在线图片处理应用

    作者:倚贤 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数 ...

  4. 云上快速搭建Serverless AI实验室

    Serverless Kubernetes和ACK虚拟节点都已基于ECI提供GPU容器实例功能,让用户在云上低成本快速搭建serverless AI实验室,用户无需维护服务器和GPU基础运行环境,极大 ...

  5. java64 离线_Java调用人脸识别离线sdk-windows版

    最近因工作需求在java-web服务中调用人脸识别离线sdk,主要通过JNA及JNI技术,但均未调试通过,JNA调用时出现以下异常,一直未解决,求大佬指点,导常信息如下: in BaiduFaceAp ...

  6. 人脸识别接口_人脸识别云服务

    人脸识别是一款基于服务器平台的人脸比对识别服务程序,企业可将该识别服务部署在自有服务器上(云服务器或本地服务器),部署完成后,APP端.PC客户端.web端.微信H5端等均可发送识别请求,通过Web ...

  7. 【Java】【入门级操作】百度人脸识别离线SDK接入指南

    本文主要以简单讲解,百度人脸识别离线SDK(Java)版本工程运行入门级操作阐述. 项目地址  https://gitee.com/xshuai/BaiDuFaceOfflineSample SDK基 ...

  8. java人脸识别api_Java调用人脸识别离线sdk-windows版

    最近因工作需求在java-web服务中调用人脸识别离线sdk,主要通过JNA及JNI技术,但均未调试通过,JNA调用时出现以下异常,一直未解决,求大佬指点,导常信息如下: in BaiduFaceAp ...

  9. 腾讯云【人脸识别】服务的一次尝试(JAVA)

    背景 人脸识别是人工智能智能领域中应用最广泛的服务之一.个人认为,人脸识别也是目前人工智能领域中技术最成熟的技术之一.各大云服务厂商均开通了人脸识别的服务. 那就来尝尝吧.. 登陆注册->找到人 ...

最新文章

  1. linux cmake 多线程 错误 undefined reference to 'pthread_create'
  2. python类方法和实例方法syntax errors_Python 实例方法,类方法和静态方法
  3. 关于WEB三层架构的思考
  4. 使用HTTPS和OAuth 2.0保护服务到服务的Spring微服务
  5. 集合框架(一) ----------Map集合遍历的方法
  6. 关于Xcode隐藏打印的logs的方法
  7. java远程执行jmi,java调用matlab 时出现java.lang.NullPointerException错误
  8. python 命令行 模块_深入浅析Python 命令行模块 Click
  9. 华为hs8145v5如何改桥接_口译vlog | 跟我一起去华为东莞“欧洲小镇”吧!
  10. Jenkins使用经验谈
  11. POSIX XSI
  12. unity3d摄像机的透视有些夸张怎么办?
  13. 即构推出微信引流方案,助力在线教育平台大幅降低获客成本
  14. react手机端项目注意点,ant design-mobile框架
  15. 云长协助你彻底搞清楚转发与重定向的区别
  16. 谷歌索引量查询,批量查询网站在谷歌RR权重值
  17. 第四十二次总结:json模块与pickle模块
  18. 美团大规模微服务通信框架及治理体系OCTO核心组件开源
  19. 2019年上半年人工智能产业数据概览
  20. 线程并发和并行_并发性,并行性和圣诞老人​​的许多线程

热门文章

  1. addr 与 offset 区别
  2. 【Rsyslog】facilty priority
  3. MySQL为表和字段取别名
  4. html语言把字变大,css怎么让字体变大?
  5. 面试官:谈谈你对零拷贝的理解~
  6. 数据结构与算法-二叉查找树(java描述)
  7. hibernate继承关系映射方法(三)--每个具体类一张表TPC
  8. Eclipse导入项目常见问题----jdk版本问题(有个红色感叹号)01
  9. 在docker上调用宿主机硬件_Docker精华问答:Docker与虚拟机的区别?| 技术头条
  10. java爬虫下载付费html网页模板