快速搭建 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: 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
- 一键部署函数计算和函数工作流资源至云端
- 安装最新版本的 Fun
- 在项目根目录下执行
fun deploy
效果验证
- 在 OSS Bucket 的根目录下放置图片
- 等待一分钟后,定时触发器触发函数执行函数工作流。
- 工作流执行完成后,查看 OSS Bucket
- 标注出人脸的图像放置在
face-detection
目录下
- 处理过的录像放置在
processed
目录下
总结
通过 函数计算 函数工作流,搭建了一个定时批量处理图片进行人脸识别的服务。该服务因为使用了函数工作流的流程,将任务分为了多个步骤,只需要确保每个步骤的函数能够在函数计算限制时间(10分钟)内完成即可。
通过 Fun 工具,一键部署 函数计算 函数工作流,免去去多平台进行操作的步骤。
相关参考
- 函数计算
- 函数工作流
- Aliyun Serverless VSCode 插件
- Fun
参考示例
- serverless-face-recognition
- oss-batch-process
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”
快速搭建 Serverless 人脸识别离线服务相关推荐
- OpenCV4.5.4 DNN人脸识别模块使用介绍--如何快速搭建一个人脸识别系统
点击下方卡片,关注"OpenCV与AI深度学习" 视觉/图像重磅干货,第一时间送达 导读 本文主要介绍OpenCV4.5.4中人脸识别模块的使用和简易人脸识别系统的搭建,供大家参考 ...
- 如何快速搭建智能人脸识别系统
作者 | 小白 来源 | 小白学视觉 网络安全是现代社会最关心的问题之一,确保只有特定的人才能访问设备变得极其重要,这是我们的智能手机设有两级安全系统的主要原因之一.这是为了确保我们的隐私得到维护,只 ...
- 快速搭建 Serverless 在线图片处理应用
作者:倚贤 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数 ...
- 云上快速搭建Serverless AI实验室
Serverless Kubernetes和ACK虚拟节点都已基于ECI提供GPU容器实例功能,让用户在云上低成本快速搭建serverless AI实验室,用户无需维护服务器和GPU基础运行环境,极大 ...
- java64 离线_Java调用人脸识别离线sdk-windows版
最近因工作需求在java-web服务中调用人脸识别离线sdk,主要通过JNA及JNI技术,但均未调试通过,JNA调用时出现以下异常,一直未解决,求大佬指点,导常信息如下: in BaiduFaceAp ...
- 人脸识别接口_人脸识别云服务
人脸识别是一款基于服务器平台的人脸比对识别服务程序,企业可将该识别服务部署在自有服务器上(云服务器或本地服务器),部署完成后,APP端.PC客户端.web端.微信H5端等均可发送识别请求,通过Web ...
- 【Java】【入门级操作】百度人脸识别离线SDK接入指南
本文主要以简单讲解,百度人脸识别离线SDK(Java)版本工程运行入门级操作阐述. 项目地址 https://gitee.com/xshuai/BaiDuFaceOfflineSample SDK基 ...
- java人脸识别api_Java调用人脸识别离线sdk-windows版
最近因工作需求在java-web服务中调用人脸识别离线sdk,主要通过JNA及JNI技术,但均未调试通过,JNA调用时出现以下异常,一直未解决,求大佬指点,导常信息如下: in BaiduFaceAp ...
- 腾讯云【人脸识别】服务的一次尝试(JAVA)
背景 人脸识别是人工智能智能领域中应用最广泛的服务之一.个人认为,人脸识别也是目前人工智能领域中技术最成熟的技术之一.各大云服务厂商均开通了人脸识别的服务. 那就来尝尝吧.. 登陆注册->找到人 ...
最新文章
- Spring 多视图配置
- C++ 十字链表图转java版
- 学英语不必太在意单词
- 为什么要重写 hashcode 和 equals 方法?
- PS2019进阶笔记(二)
- 基于androidx的快速开发框架_Vue企业级优雅实战07框架开发03封装基于MockJS的模拟数据...
- AMD迎接变革:加速OpenCL的未来
- java强制关闭远程桌面_elasticsearch中的java.io.IOException: 远程主机强迫关闭了一个现有的连接...
- 【Java】用while循环实现1+2+3......+100
- Linux软件安装方法小结
- 配置数据引擎(BDE、SQL Link)的简单方法 /制做快速按钮条的方法/建立临时表的方法
- K3Cloud BOS设计 值更新 字段拼接到文本字段
- sqli-labs 第八关盲注脚本
- 教你做Android逆向
- 帝国cms安装 mysql支持错误_帝国CMS安装时 mysql出错。
- 谷歌浏览器设置启动页被hao123劫持_win10系统打开chrome主页会被hao123劫持的故障原因及解决方法...
- v7000更换电池步骤_UPS电池更换方案
- 【读书笔记】《曾国藩的正面与侧面(一)》
- 用友GRP-U8Cloud V11.0 V11.21 行政业务高校 G C版
- 计算机组装试卷分析,高中英语试卷分析
热门文章
- 设计模式C++实现(15)——观察者模式
- Prometheus Targets动态配置
- 第二章 搜索 【未完结】
- 给虚拟机中的linux系统增加一个硬盘
- Spring boot配置类
- Redis字符串操作
- Spring RabbitMQ使用
- View和View的参数传递
- core identity mysql_Asp.Net Core Identity 4 改成 MySql/MariaDB
- 在C盘和D盘执行php 结果不同,window_双系统电脑给C盘扩容后导致D盘Win10引导项丢失该怎么办?,为了写个经验,特意把C盘用无 - phpStudy...