快速搭建 Serverless 人脸识别离线服务

简介

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

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

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

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

开通服务

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

解决方案

流程如下:

  1. 设定定时触发器,定时触发函数计算中的函数。
  2. 函数被触发后,调用一次函数工作流中的流程。
  3. 函数工作流中的流程被执行:
  4. 调用函数计算中的函数,列举出 OSS Bucket 根路径下的图片文件列表。
  5. 对于步骤1中列出的文件列表,对每个文件:
- 调用函数计算中的函数处理,进行人脸识别并标注。将标注后的文件存入 OSS,最后将处理过的文件进行转移。
  1. 判断当前 OSS 根路径下是否有更多的文件
- 如是,继续步骤1
- 如否,结束流程

快速开始

  1. Clone 工程到本地
  • git clone [email protected]: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: 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
  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 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

原文地址:https://www.cnblogs.com/alisystemsoftware/p/12083653.html

时间: 2024-08-30 14:35:57

快速搭建 Serverless 人脸识别离线服务的相关文章

还在花钱买人脸识别云服务?这有免费的!

说起人脸识别,大家肯定都不陌生.现在,我们的生活中已经有许多领域运用到了人脸识别.比如我们熟悉的手机的faceID解锁,人脸识别考勤打卡,以及一些门禁系统和摄像监视系统.从定义上来说,人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部的一系列相关技术,通常也叫做人像识别.面部识别. 那什么又是云服务呢? 人脸识别云服务是将识别核心部署在服务器上进行人脸识别的技术,可多平台调用识别,需

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

作者:倚贤 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费.函数计算更多信息参考. ImageMagick:ImageMagick 是一个用于查看.编辑位图文件以及进行图像格式转换的开放源代码软件套装.它可以读取.编辑超过100种图象格式..参见维基百科词条 I

免费的人脸识别服务接口XQFace

服务介绍 XQFace人脸识别开放平台专注于人脸检测.人脸跟踪.人脸比对与人脸识别四大核心功能.我们通过提供云端API.离线SDK.以及面向用户提供个性化产品定制服务. 特色功能 1.在线API XQFace开放平台,通过提供免费易用的人脸识别在线API,让更多的开发者更近距离的接触到真正可用的人脸识别技术.在线API识别比对的准确率不打折,话不多说,感兴趣的小伙伴们可以自己体验一下. 2.离线SDK XQFace人脸识别离线SDK,拥有强劲的性能优势,更好了发挥大规模人像检索和动态人脸识别监控

[译]Kubernetes 分布式应用部署和人脸识别 app 实例

原文地址:KUBERNETES DISTRIBUTED APPLICATION DEPLOYMENT WITH SAMPLE FACE RECOGNITION APP 原文作者:skarlso 译文出自:掘金翻译计划 好的,伙计,让我们静下心来.下面将会是一个漫长但充满希望和有趣的旅程. 我将使用 Kubernetes 部署分布式应用程序.我试图创建一个类似于真实世界 app 的应用程序.显然,由于时间和精力有限,我不得不忽略一些细节部分. 我的重点将放在 Kubernetes 和应用部署上.

人脸识别私有化部署(三):人脸识别应用场景举例

经过近些年AI领域的快速发展,人脸识别应用场景也越来越广泛.可以应用在各行各业进行安防管理,考勤办公.人员管理等等.既可以单独使用解决问题,也可以集成在场景整体解决方案中. 1. 人员进出管理,门禁或闸机 2. 访客管理 3. 黑名单布控 4. 酒店住宿人证核对 5. 口罩人脸识别 更多查阅:https://ai.minivision.cn/#/solution/MS500欢迎询问交流: 原文地址:https://blog.51cto.com/14681569/2473699

记录一下:使用 python -m SimpleHTTPServer 快速搭建http服务

在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer. 我们可以很简单的使用  python -m SimpleHTTPServer 快速搭建一个http服务,提供一个文件浏览的web服务. 命令如下: python -m SimpleHTTPServer 8000 使用上面的命令可以把当前目录发布到8000端口. 但是这条命令是当前运行的,不是后台运行的,也就是说如果Ctrl + C,则该端口就会关闭. python -

Ubuntu Linux下快速搭建Samba服务

引用:http://www.linuxidc.com/Linux/2016-03/129195.htm Samba服务对于从事Linux开发从业人员来说并不陌生,现在也有Windows版本了,当我们在开发Linux驱动或者应用的时候,一般都输需要个Linux开发环境.对于大公司来说有个服务器可供程序员们公共使用,但对于小公司来说一般是在虚拟机里转个Linux开发环境,也很少用实体机来装Linux的,当然也有例外.这是时候往往涉及到Windows和Linux之间文件交互的问题,我现在用的最多的就是

“云中论道”之——使用开源技术和Azure公有云服务快速搭建云端IoT解决方案(上)

"云中论道"技术课堂第一课开讲啦!微软各路技术咖们齐聚一堂,为大家带来干货不断!作为"云中论道"课堂的开课之作,我们首先邀请到了微软Azure专家级的架构师:槐长清,他为我们带来了关于"使用开源技术和Azure公有云服务快速搭建云端IoT解决方案"的精心讲解. 本文作者介绍: 微软Azure专家级架构师,江湖人称"槐长清",曾连续5年被评为微软最有价值专家,多年云计算从业经验,对微软公有云解决方案有深入研究. 涉及产品及技术:

centos 使用sshfs快速搭建文件共享服务

centos 使用sshfs快速搭建文件共享服务 看了很多教程都写的不够完整所以自己根据实际操作找遇到的坑共享一下给大家 共享文件服务器必须打开ssh服务器 实例:IP192.168.7.50 yum -y install epel-release # 安装epel 源码 yum -y install fuse-sshfs # 安装sshfs  sshfs -o allow_other,nonempty [email protected]:/opt/ /opt/http 指定密钥文件 sshfs