Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon Rekognition デモ / 20231208-aws_seminar-01-rekognition-demo

kasacchiful
December 08, 2023

Amazon Rekognition デモ / 20231208-aws_seminar-01-rekognition-demo

2023/12/08 (金)
新潟県工業技術総合研究所様にてデモンストレーションした
Amazon Rekognitionの参考資料

kasacchiful

December 08, 2023
Tweet

More Decks by kasacchiful

Other Decks in Programming

Transcript

  1. Amazon Rekognition デモ
    2023-12-08

    View full-size slide

  2. 画像分類のデモ
    クッキーの割れ判別
    データはAWSが公開しているサンプル
    を用います。

    View full-size slide

  3. 1. 画像の収集
    「トレーニングデータセット」と「テストデータセット」を用意
    画像はPNG形式またはJPEG形式である必要あり

    View full-size slide

  4. 2. 画像のインポート
    いずれかの方法で画像をインポートします。
    今回はS3バケットからインポートします。
    ローカルPCからインポート
    S3バケットからインポート
    画像を含むフォルダ名を使用して画像のラベル付けが可能
    Amazon SageMaker Ground Truth マニフェストファイルをインポート
    既存のAmazon Rekognition カスタムラベルデータセットをコピー

    View full-size slide

  5. S3バケットに画像をアップロ
    ード
    S3バケットを作成します。
    20231208-iri-
    rekognition-demo-
    kasahara
    という名前のバケ
    ットを作りました。

    View full-size slide

  6. S3バケットに画像をアップロード
    バケットに画像をアップロードします。
    以下のフォルダに分けてアップロード
    assets/train/normal/
    assets/train/anomaly/
    assets/test/normal/
    assets/test/anomaly/

    View full-size slide

  7. プロジェクトを作成
    Amazon Rekognitionカスタムラベルのプロジェクトを作成します。
    左側メニューの「カスタムラベルを使用」をクリック
    「ご利用開始にあたって」をクリック
    左側メニューの「プロジェクト」から「プロジェクトを作成」をクリック
    プロジェクト名を適宜入力して「プロジェクトを作成」をクリック
    例: 20231208-iri-rekognition-demo
    「データセットを作成」をクリック

    View full-size slide

  8. データセットを作成
    データセットを作成の画面で以下のように設定する
    「トレーニングデータセットとテストデータセットを使用して開始」を選択
    トレーニングデータセットの詳細では「S3バケットから画像をインポートする」を
    選択
    S3 URIは以下のように設定する
    s3://<
    バケット名>/train
    までのフォルダパス/
    例: s3://20231208-iri-rekognition-demo-
    kasahara/assets/train/
    自動ラベル付けは「フォルダ名に基づいて画像レベルのラベルを自動的に画像に割
    り当てる」にチェックをいれる

    View full-size slide

  9. 「S3バケットが正しく設定されていることを確認してください」で設定する必要がある
    バケットポリシーの内容があります。以下の内容をブラウザの別タブで開いたS3の設定
    画面にてバケットポリシーを設定します。
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "AWSRekognitionS3AclBucketRead20191011",
    "Effect": "Allow",
    "Principal": {
    "Service": "rekognition.amazonaws.com"
    },
    "Action": [
    "s3:GetBucketAcl",
    "s3:GetBucketLocation"
    ],
    "Resource": "arn:aws:s3:::20231208-iri-rekognition-demo-kasahara"
    },
    {
    "Sid": "AWSRekognitionS3GetBucket20191011",
    "Effect": "Allow",
    "Principal": {
    "Service": "rekognition.amazonaws.com"
    },
    "Action": [
    "s3:GetObject",
    "s3:GetObjectAcl",
    "s3:GetObjectVersion",
    "s3:GetObjectTagging"
    ],
    "Resource": "arn:aws:s3:::20231208-iri-rekognition-demo-kasahara/*"
    },
    {
    "Sid": "AWSRekognitionS3ACLBucketWrite20191011",
    "Effect": "Allow",
    "Principal": {
    "Service": "rekognition.amazonaws.com"
    },
    "Action": "s3:GetBucketAcl",
    "Resource": "arn:aws:s3:::20231208-iri-rekognition-demo-kasahara"
    },
    {
    "Sid": "AWSRekognitionS3PutObject20191011",
    "Effect": "Allow",
    "Principal": {
    "Service": "rekognition.amazonaws.com"
    },
    "Action": "s3:PutObject",
    "Resource": "arn:aws:s3:::20231208-iri-rekognition-demo-kasahara/*",
    "Condition": {
    "StringEquals": {
    "s3:x-amz-acl": "bucket-owner-full-control"
    }
    }
    }
    ]
    }

    View full-size slide

  10. テストデータセットの詳細では「S3バケットから画像をインポートする」を選択
    S3 URIは以下のように設定する
    s3://<
    バケット名>/test
    までのフォルダパス/
    例: s3://20231208-iri-rekognition-demo-kasahara/assets/train/
    自動ラベル付けは「フォルダ名に基づいて画像レベルのラベルを自動的に画像に割り当
    てる」にチェックをいれる

    View full-size slide

  11. 「データセットを作成」ボタンをクリックする
    この時、S3バケットにまだバケットポリシーを設定してない場合は、ブラウザの別
    タブで開いたS3の設定画面にてバケットポリシーを設定します。

    View full-size slide

  12. データセットに「トレーニング」
    と「テスト」の画像が登録されて
    いることを確認ください。

    View full-size slide

  13. モデルのトレーニング
    データセットの画面から「モデルをトレーニング」ボタンをクリックします。

    View full-size slide

  14. トレーニングの詳細でプロジェクトを選択
    先ほど作成したプロジェクトを選択すると、長い文字列が表示されます。これは、
    Amazon Resource Name (ARN) と呼ばれ、AWS内で一意のリソースを示すもので
    す。
    「タグ」「イメージデータの暗号化」はデフォルトのままで大丈夫です。
    「モデルをトレーニング」ボタンをクリックします。
    「モデルをトレーニングしますか?」と表示されるので、「モデルをトレーニング」を
    クリックします。

    View full-size slide

  15. モデルのトレーニングが始まりま
    した。トレーニング終了までしば
    らく待ちます。

    View full-size slide

  16. モデルのトレーニングが完了しま
    した。

    View full-size slide

  17. モデルの評価
    トレーニングが完了したモデルのリンクをクリックします。
    評価指標が簡潔に表示されています。
    評価が悪い場合は、データセットの画像を増やす等の対応をしてモデルの再トレーニン
    グしてください。

    View full-size slide

  18. モデルを使った推論
    まず推論用のAPIサーバを立ち上げます。
    その後、AWS CLIまたはAWS SDKを使って、画像の分類を行います。

    View full-size slide

  19. 推論用APIサーバの立ち上げ
    「モデルを使用」タブをクリックし、「モデルの開始または停止」の「開始」をクリッ
    クします。
    推論単位の数を増やすと、スループットが増えます。
    推論が可能になるまで、しばらく待ちます。
    「モデルを使用する」に表示されている「Amazonリソースネーム (ARN)」の文字列を
    メモします。
    arn:aws:
    から始まる長い文字列です。
    この文字列は、推論時に指定する必要があります。

    View full-size slide

  20. 画像の分類
    S3バケットにある画像、または、ローカルにある画像を指定して実行します。
    ローカルにある画像の分類を行う際、画像のサイズは4MB以内にしないといけません。
    S3バケットにある画像ファイルを分類する場合
    aws rekognition detect-custom-labels \
    --project-version-arn
    <モデルのARN
    文字列> \
    --image '{"S3Object": {"Bucket": "MY_BUCKET","Name": "PATH_TO_MY_IMAGE"}}' \
    --region ap-northeast-1

    View full-size slide

  21. ローカルにある画像を指定して分類する場合
    画像をbase64化して渡します。
    image=(`base64 -i ./test-anomaly-1.jpg`);\
    aws rekognition detect-custom-labels \
    --project-version-arn
    <モデルのARN
    文字列> \
    --image "{\"Bytes\": \"${image}\"}" \
    --region ap-northeast-1

    View full-size slide

  22. 結果:
    {
    "CustomLabels": [
    {
    "Name": "normal",
    "Confidence": 88.88899993896484
    }
    ]
    }

    View full-size slide

  23. 推論サーバの停止
    「モデルの開始または停止」の「停止」をクリックします。
    テキストフォームに「stop」を入力して「停止」ボタンをクリックします。
    停止するまでしばらく待ちます。

    View full-size slide

  24. 参考
    チュートリアル:画像の分類 - Rekognition
    使用したサンプル画像

    View full-size slide