🥂
【Amazon Rekognition】aws-sdk-goで有名人の画像を検出してみる
はじめに
Amazon Rekognitionについて少し調べたので、アウトプットしてみます。
今回は有名人を判定します。
判定する有名人は下記の4名です。特に意味はありません。
環境
- go 1.17
- github.com/aws/aws-sdk-go v1.42.9
今回検証する画像
載せるとややこしい事になりそうなので、名前だけ。
この4名の写真をAmazon Rekognitonにかけた時に、名前が検出されるを実験します。
では、早速やってみます。
ソースコード
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/rekognition"
)
const path = "image/"
//ここで画像の名前を定義します
var imageName1 = path + "ガッキー.png"
var imageName2 = path + "星野源.png"
var imageName3 = path + "Jeff Bezos.png"
var imageName4 = path + "Andy Jassy.png"
func main() {
//4枚ある為、スライスにします
imageFiles := []string{
imageName1,
imageName2,
imageName3,
imageName4,
}
// AWSセッション作成
sess := session.Must(session.NewSession())
// Rekognitionクライアントを作成
svc := rekognition.New(sess, aws.NewConfig().WithRegion("ap-northeast-1"))
for _, image := range imageFiles {
// 画像ファイルを取得
file, err := os.Open(image)
if err != nil {
log.Fatal(err)
}
// 最後に画像ファイルを閉じます
defer file.Close()
// 画像ファイルのデータを読み込み
bytes, err := ioutil.ReadAll(file)
if err != nil {
fmt.Println(err.Error())
return
}
// svc.RecognizeCelebritiesに渡すパラメータを設定
params := &rekognition.RecognizeCelebritiesInput{
Image: &rekognition.Image{
Bytes: bytes,
},
}
// svc.RecognizeCelebritiesを実行
result, err := svc.RecognizeCelebrities(params)
if err != nil {
fmt.Println(err.Error())
return
}
//名前だけ出力
fmt.Println(*result.CelebrityFaces[0].Name)
}
}
出力結果
Yui Aragaki
Gen Hoshino
Jeff Bezos
Andy Jassy
ちゃんと有名人の名前が出力されました。
ちなみに、最後のfmt.PrintlnでNameの指定をしていますが、
resultだけで出力すると表情の判定などもズラズラと出ます。
さいごに
Rekognitonを使うと有名人の検出は簡単に出来ました。
次回はテキストの検出もやってみます。
参考
Discussion