ヤマムギ

growing hard days.

*

Amazon Augmented AI (Amazon A2I) のチュートリアル

      2025/06/28

Amazon Augmented AI (Amazon A2I)を使ったことがありませんでしたので、チュートリアルをやってみました。
チュートリアル: Amazon A2I コンソールの使用を開始するに公開されている手順です。

準備

A2IはTextract向け、Rekognition向け、カスタムの3種類があって、チュートリアルではTextractとRekognitionそれぞれにサンプルの画像が用意されていました。

一応両方S3バケットを作ってアップロードしました。
リージョンはバージニア北部で実行しました。

  • Amazon Textract向けの画像

ワークチームの作成

A2Iは機械学習モデルの評価を人が行うために、モデル作成のワークフロー(MLOps)に組み込むためのサービスです。
作業する人のチームを先に設定します。
チームはプライベートで作成することもできますし、Amazon Mechanical Turkを使用してアウトソースしたりベンダーチームに依頼することもできます。
チュートリアルではプライベートチームを作成しました。

SageMaker AIの[Ground Truth]-[ラベリングワークフォース]でプライベートチームの作成をしました。

プライベートチームの認証はCognitoを使用しました。
ワーカーはEメールによる招待を設定しました。
イベントのSNSトピックへの通知もできましたが、今回は設定しませんでした。

Textract向けの人間によるレビューワークフローの作成

SageMaker AIの[Argumented AI]-[人間によるレビューワークフロー]で[Create human review workflow]を押下しました。

サンプル画像をアップロードしたS3バケットとプレフィックスのURIを設定しました。
IAMロールは新規作成もできます。
私は少し前に作っていたS3バケットへの権限があるIAMロールを選択しました。

ロールの許可ポリシーには、AWS管理ポリシーのAmazonSageMakerFullAccessと、S3のGetObject、PutObject、DeleteObject、ListBucketが設定されていました。
信頼ポリシーはPrincipalにsagemaker.amazonaws.comが設定されていました。

Task typeでは、Textractを選択しました。

チュートリアルにならって「Amazon Textract によって識別され、信頼スコアが指定範囲にあるすべてのフォームキーについて、人間によるレビューをトリガーします」を有効にしました。
識別信頼度しきい値: 「フォーム内で検出されたキーと値のペアについて、信頼スコアが次の範囲にある場合、人間によるレビューをトリガーします」では0~98を設定しました。
適格信頼度しきい値: 「フォーム内のキーと値のペアに含まれるテキストの信頼スコアが次の範囲にある場合、人間によるレビューをトリガーします」では0~98を設定しました。
これでほとんどの場合は人間によるレビューが必要になります。

他のオプションは「フォーム キーの信頼スコアに基づいて、または特定のフォーム キーが欠落している場合に、特定のフォーム キーの人間によるレビューをトリガーします。」と「フォームのサンプルをランダムに人間に送信してレビューしてもらいます。」でした。
今回はこれらは使用していません。

Worker task template creationではCreate from default templateを選択してテンプレート名を入力しました。

Task descriptionに説明を入力しました。
ここは日本語は使用できませんでした。

WorkersではPrivateで作成しておいたワークチームを選択しました。

ヒューマンループの開始

チュートリアルではPython boto3のサンプルコードがありましたが、CloudShellで簡単に実行したいので、CLIで実行しました。
次のコマンドからdocumentとFlowDefinitionArnを変更して実行しました。

開始後の確認

コンソールで人間によるレビューワークフローのHuman loopsを見に行くと、StatusがFailedになってました。

名前をクリックして、詳細を確認すると次のエラーメッセージがありました。

Task failed to render: [ MisconfiguredResource: ‘CORS is not correctly enabled on this object’s S3 bucket: s3://bucketname/a2i/sample-document-final.png’ ].

手順にはなかったように思いましたが、S3バケットのCORS設定が必要なんでしょうか。
設定して再度やってみましょう。

CORSを設定して、HumanLoopNameを別の名前にしてaws textract analyze-documentコマンドをもう一度実行しました。

In progressになりました!!
CORS設定が必要だったんですね。

人によるレビュー

ワークチームに設定したワーカーの受信メールを確認したら、メールが届いていました。

ジョブが作成されているので、[Start working]を押下してみました。

Textractによる抽出結果が表示されています。
すべてきれいに抽出されているようです。
Mail addressの最初のTownだけ不要そうなのでそれを削除線としてハイフンに書き換えて、Submitしました。

ジョブがなくなりました。

Human loopsを見に行くとそちらもCompletedになっていました。

出力データを確認する

Human loopsの名前をクリックして、Output locationにあるS3に保存されたoutput.jsonをダウンロードしてみます。

大きなJSONなので部分的に確認しました。

Textractがもともと抽出した情報がinputContentのaiServiceResponseのblocksにあります。

humanAnswersのblocksに人がチェックした後に送信した情報があります。

元の該当箇所では、”Town”となっていました。
信頼度のconfidenceは35.44533とかなり低い値です。

同じid値の箇所を”–“と修正したことがわかります。

モデルの推論結果に対して、人が関わって正しかったのか、正しくないのか、何がどう正しくなかったのかを送信できました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

Amazon FSx for Lustreのユーザーガイド入門演習

ファイルシステムの作成 FSx for Lustreを選択しました。 容量やスル …

kintoneに登録されたアカウントの電話番号にGoogleカレンダーの予定をAmazon Pollyが読み上げてTwilioから電話でお知らせする(AWS Lambda Python)

Google Calendar Twilio Reminder Googleカレ …

AWS Trusted Advisorの2023/11/17発表のAPI

2023/11/17に発表されたAWS Trusted Advisor の新しい …

AWSアカウントの解約

アカウント作成メニュー確認のために作成したAWSアカウントを解約しました。 使っ …

Amazon Glacierのプロビジョニングされた迅速取り出し容量をなぜか購入しました

過去1年ぐらいのAWSコストをCost Explorerで見てまして、10/10 …

WordPressの年ごとのブログ投稿数を調べるSQL

毎年年末に使いそうなのでメモです。 [crayon-685fabb904b316 …

Amazon Connectで電話を転送する

かかってきた電話を転送するようにしました。 問い合わせフローで[終了/転送]から …

API Gatewayで顧客レベルの使用量プランを設定する

API GatewayのAPIキーを使って使用量プランでのスロットリングも設定し …

NATインスタンスを作成する

プライベートサブネットのEC2インスタンスからカスタムメトリクスとCloudWa …

Amazon SageMakerプロジェクトを使用してMLパイプラインを構築

SageMakerプロジェクトの作成 SageMaker Studioの左ナビゲ …