利用AWS Rekognition結合Sumerian實作臉部辨識虛擬助理
虛擬助理如何在見到新客戶即提供符合需求的服務 ? 這次情境設定在當虛擬助理見到新客戶時給予適切的建議,當資料庫中沒有任何新客戶資料時,只能透過使用者當下的情緒、性別及年齡進行推薦。
架構
此次應用主要為結合Amazon Rekognition與Amazon Sumerian進行人臉辨識互動。透過串接了S3、Lambda、Rekognition、IoT、Translate、Sumerian、Polly等服務實作,流程如下:
- 建立 S3 Bucket 儲存辨識圖片
-
利用 Lambda 辨識年齡、性別、情緒
- 辨識結果以 IoT 即時發布,使 Sumerian 能即時接收訊息
Note : 由於 Sumerian 在中文部分僅支持簡體中文,因此辨識結果在發布前須先用 Translate 翻譯成簡體中文
-
設定圖片上傳 S3 後觸發 Lambda
-
Sumerian Host 訂閱 IoT 發布的訊息
服務介紹
-
Amazon Sumerian 是AWS所提供執行虛擬實境(VR)、擴增實境(AR)和3D應用程式的服務,無須任何3D圖形的專業能力。開發者能使用 Sumerian 建立高度沈浸式和互動式場景,並在 Oculus Go、Oculus Rift、HTC Vive、HTC Vive Pro、Google Daydream 和 Lenovo Mirage 等常用硬體及 Android 和 iOS 行動裝置上執行。同時Sumerian支援多國語言與手勢,在互動上更為逼真與親切。
-
Amazon Rekognition 使在應用程式中新增影像和影片分析變得容易。只需將影像或影片提供給 Rekognition API,服務就會識別各種物件、人物、文字、場景和活動,並偵測任何不當的內容。Amazon Rekognition 還可針對提供的影像和影片,提供最精準的臉部分析和臉部辨識。同時可以將偵測、分析及比對臉部運用在使用者驗證、計算人數和公共安全等各種使用案例。
實作架構
建立S3 Bucket儲存辨識圖片
-
新增一個 S3 Bucket
-
在Bucket內新增一個Folder – images 儲存辨識圖片
-
在 Premissons 設定的部分需設定 跨域資源共享(CORS)
* 同時需設定 Bucket Public Access,把所有勾選取消
利用Lambda辨識年齡、性別、情緒並用IoT發布
-
設定 IAM Role 權限,並把 your bucket name 修改 images
-
在 Lambda 新增一個名為 identify-face-detail 的Function
-
利用 boto3 SDK 的 Rekognition API 辨識人臉
-
將辨識出的年齡、性別、情緒結果用 IoT 即時發布 Topic – Topic/RekognitionAge,使 Sumerian 能即時接收訊息
Note : 由於 Sumerian 目前在中文部分僅支持簡體中文,因此辨識結果在發布前須先用 Translate 翻譯成簡體中文
設定圖片上傳S3後觸發 Lambda
-
在 S3 Properties 設定 Events
-
新增 notification
-
當使用者上傳照片到 S3 後會觸發 image-upload 的 Lambda function – identify-face-detail 進行人臉辨識
Sumerian Host訂閱IoT發布的訊息
- 新增一個 Amazon Sumerian Cristine
-
在 Cristine 的 State Machine 中新增一個 State 取名為 – Listen
-
Listen State 新增 Action 中選擇 Listen
-
在 Message Channel 輸入 AgeArrived ,當 Sumerian 接收到 AgeArrived 的訊息後會觸發之後的 State
-
-
在 Cristine 的 Script Component 新增一個 Script 取名為- InitMQTT,為初始化 MQTT ,藉此訂閱 IoT 所發布的 Topic
-
在 InitMQTT Script 中的 External Resources 加入 https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js
-
設定訂閱 IoT 所發布的 Topic – Topic/RekognitionAge
-
設定 SignedUrl 收發 IoT 資料,填入 IoT endpoint
-
當 Message 抵達時取得 IoT 所發布的 Message,並用 worldData 儲存
-
觸發 AgeArrived
-
-
完整程式碼如下
-
在 Cristine 的 State Machine 新增一個 Action 取名為 – Speaking,為設定 Sumerian Speech
-
Speaking State 新增 Action 中選擇 Execute Script,取名為 SpeakConfig
-
設 Sumerian 說話內容與使用 Polly 所提供的中文助理 Zhiyu
-
設定 Cristine 的 State Machine 關聯
-
在 Script 中新增 compileSpeech 方法與修改 enter 方法
-
結論
Sumerian具有簡易的操作介面,能使開發者減少開發時間,同時又能建立客製化的虛擬助理。在這次的應用藉由虛擬助理與使用者互動,不但可以減少人力,同時能收集使用者基本特徵。