計算機視覺(Computer Vision,CV)可能是一個理論性很強的領域,需要有大量的ML和數學知識來理解為諸如目標檢測、人臉識別和目標跟蹤等主題提供動力的演算法,
如果你在理論上沒有經驗,或者沒有時間構建定制的ML/CV模型,那么AWS Rekognion使你能夠通過API呼叫構建功能強大的CV應用程式,
AWS Rekognion是AWS提供的眾多汽車AI服務之一,這些服務是為那些在ML方面沒有太多背景知識的開發人員,或者是時間不多的資料科學家提供的,他們可以快速構建功能強大的ML應用程式,或者根據你可能正在開發的自定義模型對性能進行基準測驗,
AWS Rekognion是AWS上用于計算機視覺的事實上的自動人工智能服務,如果你對構建自定義模型感興趣,請查看AWS SageMaker和我關于如何在那里部署自定義TensorFlow模型的文章:https://towardsdatascience.com/training-and-deploying-custom-tensorflow-models-with-aws-sagemaker-72027722ad76,
在本文中,我們將構建一個Streamlight應用程式,該應用程式接受影像并使用Rekognion回傳影像中檢測到的情感,
注意:對于那些剛接觸AWS的人(最好有一些經驗來完全理解這篇文章),如果你想繼續學習,請確保在下面的鏈接上創建一個帳戶:https://aws.amazon.com/console/,
我還將提供我們將使用的服務串列,以及更深入的定義,如果你已經熟悉這些服務,請跳到代碼演示,
目錄
AWS服務
設定Streamlight應用程式
整合 Rekognition
代碼和結論
AWS服務
AWS Rekognition:AWS主要的汽車AI計算機視覺服務,具有從人臉檢測、文本檢測到目標跟蹤的大量特征,
AWS S3:Amazon的存盤服務,我們將使用此服務存盤我們的訓練資料和模型/資訊,
Boto3:AWS軟體開發工具包(SDK),用于Python開發人員,可以使用它來處理AWS服務,對于這個用例,我們將使用Boto3與S3訪問我們的影像并呼叫Rekognition,
身份訪問和管理(IAM):允許你通過權限和角色管理AWS服務的訪問,使用我的代碼時,你可能希望通過AWS CLI對用戶進行身份驗證,如果你需要安裝方面的幫助,這里有一篇文章詳細介紹了該程序:https://blog.gruntwork.io/authenticating-to-aws-with-the-credentials-file-d16c0fbcbf9e,
設定Streamlight應用程式
在開始處理Rekognition部分之前,我們需要設定web應用程式,
我們希望我們的應用程式能夠上傳一個檔案,然后我們可以在后端使用Rekognion進行處理,
Streamlit有一個整潔的檔案上傳功能,我們可以在這個用例中使用它,我已經創建了一個樣本影像的小目錄,我們可以呼叫它進行分析,
import streamlit as st
import boto3
# S3 Bucket
s3 = boto3.resource('s3', region_name = 'us-east-1')
inputFile = st.file_uploader("Image for Emotion Detection", type = "jpeg")
# 將檔案上傳到S3
if inputFile is not None:
imageFileName = inputFile.name
S3Name = "streamlit-" + imageFileName
s3.meta.client.upload_file(f"./TestImages/{imageFileName}", imagesBucket, S3Name)
我們從示例影像目錄中捕獲該檔案,然后,我們使用Boto3與S3協作,將本地影像存盤在我們創建的S3 bucket中,
要創建S3 bucket,你可以轉到AWS控制臺并手動創建,或者如果你有AWS CLI設定,則只需運行AWS mb unique-bucket-name來創建你的bucket,
我們需要S3中的資料,因為Rekognition直接與S3集成用于API呼叫,因此需要將影像上傳到S3的代碼,


我們現在有了Streamlight應用程式,可以接受影像并將其推送到S3,以便與Rekognion一起作業,
整合Rekognition
我們現在可以專注于在樣本影像上運行情感檢測,Rekognition在detect_faces中有一個API呼叫,它獲取輸入影像并回傳各種引數,例如:年齡范圍、性別、睜眼、情緒等,
在本應用程式中,我們將重點關注情緒引數,我們首先需要為Rekognition創建一個boto3客戶機,就像我們對S3所做的那樣,
rekogClient = boto3.client('rekognition', region_name = 'us-east-1')
我們現在有了客戶端,現在可以將適當的資料提供給detect_faces API呼叫,
# 情緒檢測
response = rekogClient.detect_faces(
Image = {
'S3Object': {
'Bucket': imagesBucket,
'Name': S3Name
}
},
Attributes = ['ALL']
)
現在,我們已經得到了API回應,我們希望決議輸出以關注臉部檢測到的情緒,下面顯示了我們為演示上傳的示例影像,

現在,我們決議回應以顯示大多數情緒和檢測到的所有其他情緒,以及Rekognion在情緒中的信心分數,
st.subheader("Main Emotion Detected")
emotions = response['FaceDetails'][0]['Emotions']
for emotion in emotions:
confidence = emotion['Confidence']
if confidence >= 50:
st.write("Majority Emotion: " + emotion['Type'])
st.write("Confidence Score: " + str(confidence))
st.subheader("All Emotions Detected")
for emotion in emotions:
st.write(str(emotion['Type']) + ": " + str(emotion['Confidence']))
現在,如果我們使用streamlit run filename.py運行streamlit應用程式,我們將看到我們的應用程式成功運行,

我們可以看到Rekognition檢測到的所有情緒,為了清理UI,你還可以添加一個CV庫,如PIL,以顯示你正在上傳的示例影像或檔案,
全部代碼和結論
https://github.com/RamVegiraju/MoodDetectionApp
要訪問專案的完整代碼,請單擊上面的鏈接,
自動人工智能正在迅速擴張,AWS、Azure和GCP等云提供商也在增長,并提供各種尖端服務,如Rekognion,使你能夠以簡單的方式使用ML為應用程式供電,
Rekognion對于資料科學家和非ML背景的人來說非常有用,可以快速啟動并運行計算機視覺應用程式,
☆ END ☆
如果看到這里,說明你喜歡這篇文章,請轉發、點贊,微信搜索「uncle_pn」,歡迎添加小編微信「 woshicver」,每日朋友圈更新一篇高質量博文,
↓掃描二維碼添加小編↓

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/339290.html
標籤:其他
上一篇:人工智能學習筆記 python實作梯度下降法對多元函式求解
下一篇:科研技巧1:如何尋找論文
