ヤマムギ

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

  関連記事

Lambdaでちょっとしたコードを試すときに便利なエディタのフルスクリーン機能

Lambda歴6年で、はじめて使いました。 この存在に気がついてなかったです。 …

EC2スケジュールリザーブドインスタンスって終わりましたん?

ユーザーガイドのScheduled Reserved Instancesを見ると …

AWS IAMのMFA「エンティティは既に存在しています」に対応しました

エンティティは既に存在しています MFA Device entity at th …

Amazon EC2のスクリーンショットとは

ドキュメント見てたらAmazon EC2でスクリーンショットって機能があったので …

cfn-signalの認証とネットワーク

AWS CloudFormationヘルパースクリプトのcfn-signalがC …

AWS LambdaのSQSへの自前ポーリングをやめてSQSイベントソーストリガーに変更した

以前は、LambdaがSQSからメッセージを受信するには、キューをポーリングして …

Amazon Q Developer for CLIでAWS Diagram MCP Serverを使ってAWSアイコンを使った図を書いてもらいました

MacにインストールしているAmazon Q Developer for CLI …

WordPressで画像アップロードができなくなった(AWS WAFでブロックしていた)

WordPressで画像がアップロードできなくなりました。 こんなメッセージです …

Pandocサーバーのコンテナイメージを作成する

マークダウンからEPUBへの変換をAWS Batchで行いたく、ECRにアップロ …

Route 53のホストゾーンにサブドメインを登録する

親ドメインを移行しないでサブドメインの DNS サービスを Amazon Rou …