rekognition這個詞儼然已成AWS視覺分析平台的代名詞 -- 好記與獨特性的詞能夠幫你免費打廣告
reference: medium - Getting Started on Amazon Rekognition and using their SDKs
AWS平台是由Amazon提供的一個雲端運算平台,由於近期專案需求,也有註冊帳戶與試用了一段時間;對於想嘗試看雲運算服務或是開發App的人來說,是值得註冊一個帳戶先免費試用的。
而Amazon Rekognition,顧名思義,是在AWS的平台上提供影像分析服務。
同樣的,在開始使用API來開發之前,先了解這個服務該人和使用吧!
好了,Demo玩了一下,那我們要如何把它實際應用在專案裡呢?
接下來我們就透過現有的AWS帳戶,來實際開發吧!
註
:AWS的帳戶免費方案不是很容易理解,在使用之前請務必詳閱AWS的定價方案。
-- 但接下來下面的操作步驟是以免費、試用的方式去實作,請安心服用。
快捷鍵
也是一模一樣的)# 匯入必要套件
import boto3
from PIL import Image, ImageDraw
import requests
from io import BytesIO
# 測試看看Amazon API是否可以正常使用
s3 = boto3.resource('s3')
# 列出目前S3服務中所有的儲存貯體
for bucket in s3.buckets.all():
print(bucket.name)
# 透過URL取得圖片資料,轉成Bytes
response = requests.get('https://memeprod.ap-south-1.linodeobjects.com/user-template/ce186a93c6b54b03441678f32c3847ee.png')
content = response.content
img = Image.open(BytesIO(content))
# 辨識圖片中的人臉
client = boto3.client('rekognition')
result = client.detect_faces(
Image={
"Bytes": bytearray(content)
}
)
img_w, img_h = img.size
draw = ImageDraw.Draw(img)
for face in result['FaceDetails']:
box = face['BoundingBox']
w = int(box['Width'] * img_w)
h = int(box['Height'] * img_h)
# 定義臉部位置的四個點:左上、左下、右下、右上
p0 = int(box['Left'] * img_w), int(box['Top'] * img_h)
p1 = p0[0], p0[1] + h
p2 = p1[0] + w, p1[1]
p3 = p2[0], p2[1] - h
draw.line((p0, p1, p2, p3, p0), width=5, fill='green')
# 五官位置
for landmark in face['Landmarks']:
x = int(landmark['X'] * img_w)
y = int(landmark['Y'] * img_h)
draw.ellipse((x - 5, y - 5, x + 5, y + 5), fill='red')
draw.text((x, y - 20), landmark['Type'], fill='pink')
img
看到這有沒有發現問題?
你真的不打算再看一下圖片,稍微思考一下問題在哪嗎?
那我要揭曉答案囉?
.
.
.
那就是:
這張圖片根本不是人臉,是吉娃娃
對...我相信大家都知道這隻狗是吉娃娃,而且這張圖片也曾經紅過一時,
可是這個系列是人臉偵測,而我們正在用的是Amazon Rekognition的人臉分析服務耶!?
話就說到這邊,其他的就不多說了
明天我們會整理一下人臉偵測的幾個重點,
然後要來處理自行開發人臉分析應用程式時,圖片前處理的一些重點。
下一篇見!
註:完成測試後,記得回SageMaker Studio主控台將你建立的應用程式與使用者都刪除,避免閒置資源被收費喔!