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

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

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

简介

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

函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考
函数工作流(Function Flow):函数工作流是一个用来协调多个分布式任务执行的全托管云服务。用户可以用顺序,分支,并行等方式来编排分布式任务,FnF 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。函数工作流更多信息参考

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

开通服务

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

解决方案

流程如下:

  1. 设定定时触发器,定时触发函数计算中的函数。
  2. 函数被触发后,调用一次函数工作流中的流程。
  3. 函数工作流中的流程被执行:

    1. 调用函数计算中的函数,列举出 OSS Bucket 根路径下的图片文件列表。
    2. 对于步骤1中列出的文件列表,对每个文件:

      • 调用函数计算中的函数处理,进行人脸识别并标注。将标注后的文件存入 OSS,最后将处理过的文件进行转移。
    3. 判断当前 OSS 根路径下是否有更多的文件

      • 如是,继续步骤1
      • 如否,结束流程

快速开始

  1. Clone 工程到本地

    • git clone git@github.com:ChanDaoH/serverless-face-recognition.git
  2. 替换项目目录下 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
  3. 一键部署函数计算和函数工作流资源至云端

    • 安装最新版本的 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
相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
存储 Serverless 数据库
科普文:云计算服务类型IaaS, PaaS, SaaS, BaaS, Faas说明
本文介绍了云计算服务的几种主要类型,包括IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)、BaaS(后端即服务)和FaaS(函数即服务)。每种服务模式提供了不同的服务层次和功能,从基础设施的提供到应用的开发和运行,再到软件的交付使用,满足了企业和个人用户在不同场景下的需求。文章详细阐述了每种服务模式的特点、优势和缺点,并列举了相应的示例。云计算服务的发展始于21世纪初,随着互联网技术的普及,这些服务模式不断演进,为企业和个人带来了高效、灵活的解决方案。然而,使用这些服务时也需要注意服务的稳定性、数据安全性和成本等问题。
12205 5
|
9月前
|
Serverless Python
借助 serverless 将 MCP 服务部署到云端
本文介绍了如何将 MCP 服务通过 SSE 协议部署到云端,避免本地下载和启动的麻烦。首先,使用 Python 实现了一个基于 FastMCP 的网络搜索工具,并通过设置 `transport='sse'` 启用 SSE 协议。接着,编写客户端代码测试服务功能,确保其正常运行。随后,利用阿里云函数计算服务(FC 3.0)以 Serverless 方式部署该服务,包括创建函数、配置环境变量、添加依赖层以及部署代码。最后,提供了客户端测试方法和日志排查技巧,并展示了如何在不同工具(如 Cherry-Studio、Cline 和 Cursor)中配置云端 MCP 服务。
1513 10
借助 serverless 将 MCP 服务部署到云端
|
分布式计算 运维 Serverless
EMR Serverless Spark服务和EMR Serverless StarRocks服务的比较
**EMR Serverless Spark** 以其出色的稳定性、高效性能、减轻运维负担及成本优化著称,适合大规模数据处理。**EMR Serverless StarRocks** 则以高速查询、存算分离架构和灵活扩缩容见长,侧重企业级功能。两者在不同应用场景中有各自优势,选择应基于具体需求。更多详情,参考阿里云官方资源。
|
11月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
弹性计算 人工智能 自然语言处理
魔搭社区与函数计算:高效部署开源大模型的文本生成服务体验
在数字化时代,人工智能技术迅速发展,开源大模型成为重要成果。魔搭社区(ModelScope)作为开源大模型的聚集地,结合阿里云函数计算,提供了一种高效、便捷的部署方式。通过按需付费和弹性伸缩,开发者可以快速部署和使用大模型,享受云计算的便利。本文介绍了魔搭社区与函数计算的结合使用体验,包括环境准备、部署应用、体验使用和资源清理等步骤,并提出了改进建议。
|
机器学习/深度学习 监控 物联网
函数即服务(FaaS)
函数即服务(FaaS)
805 6
|
消息中间件 关系型数据库 Serverless
【阿里云】一键部署创建函数计算服务以处理多媒体文件
通过阿里云的一键部署功能,轻松创建函数计算服务以处理多媒体文件。首先选择地域并配置资源栈名称及其他必要参数,如登录凭证、实例类型及数据库配置。过程中可能需开通相关服务如消息服务MNS,并确保账户有足够的余额。完成配置后,系统自动创建资源栈。当状态显示“创建成功”即部署完毕。最后,通过提供的URL及凭据访问应用,上传PPTX文件进行处理,并下载处理后的结果。
258 5
|
存储 运维 安全
函数计算产品使用问题之如何获取到访问其他阿里云服务所需的AccessKey、SecretKey或STS Token
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
Kubernetes 安全 Serverless
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
Kubernetes 的架构问题之Serverless Container中提供对外服务如何解决
190 6

相关产品

  • 函数计算