生活随笔
收集整理的這篇文章主要介紹了
快速搭建 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 目錄下
總結
通過 函數計算 函數工作流,搭建了一個定時批量處理圖片進行人臉識別的服務。該服務因為使用了函數工作流的流程,將任務分為了多個步驟,只需要確保每個步驟的函數能夠在函數計算限制時間(10分鐘)內完成即可。
通過 Fun 工具,一鍵部署 函數計算 函數工作流,免去去多平臺進行操作的步驟。
相關參考
函數計算函數工作流Aliyun Serverless VSCode 插件Fun
參考示例
serverless-face-recognitionoss-batch-process
“阿里巴巴云原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術圈。”
總結
以上是生活随笔為你收集整理的快速搭建 Serverless 人脸识别离线服务的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。