155 Views
August 08, 26
スライド概要
物体を光の加減や角度の違いに関わらず同定する、一昔前は不可能と思えたこともAWSを使えば実現できます。
この発表では、他の高度なモデルより優れたAmazon Novaの能力と、ベクトル検索・OCRを用いてそれを実現する方法と、最新のDynamoDBベクトル検索や、ガードレールとしてのRekognitionの応用を組み合わせたソリューションを紹介しています。
SFとコンピュータが好き
2026-08-08 [東北][岩手][JAWS-UGいわて]LT会+生成 AIハンズオン#3 物の情報をシェアするアプリつくってみた ― VLMとベクトル検索で、角度を問わず物体同定 ― 山崎 拓也
山崎 拓也 所属: SIer 仕事: • AWS案件のアプリやインフラのリード • 社内AWSサポート • 社内AWSエンジニア育成 好き: 低レイヤ、SF、AWS AWSアワード: • 2024~2026 Japan AWS Top Engineer • 2022~2026 Japan All AWS Certifications Engineer • 2026 AWS Community Builder (Serverless)
写真で物体のコメントをシェアできるアプリ 写真を撮って物体検出
タップして物体とコメントを確認、コメントを追加してシェア
様々な角度で物体を同定できる
暗くても、場所が異なっていても同定できる
登録するときは物体を中心にスマホを動かすだけ ゆっくり動かして撮影 サムネイル選択 最初のコメント入力
アーキテクチャ 主に Kiro for iOS で開発!
Amazon Novaは任意物体のBounding Box検出が得意 • NovaはBBox検出用に特別な学習が施されている • Rekognitionは精度・速度ともに優れているが、 学習済みラベルしか検出で きない Amazon Nova Lite Claude Sonnet 5(バ北) Rekognition 平均 1.9 s 平均 4.7 s (東京4.5は3.3s) 平均 0.8 s 漏れなく正確なBBox 不正確なBBox 高速・正確。学習済み物体のみ https://unsplash.com/ja/%E5%86%99%E7%9C%9F/%E7%99%BD%E3%81%84%E3%82%B7%E3%83%A3%E3%83%84%E3%82%92%E7%9D%80%E3%81%9F%E7%94%B7%E3%81%AE%
物体検索にはベクトル検索とOCRを併用し精度向上 • Titan Multimodal Embeddings G1で画像をベクトル化 • Nova Liteで画像内のテキスト抽出し、正規化 • DynamoDBでベクトル検索 • ベクトルと一緒にテキストが保存されてる場合は検索結果をリランキング • テキストが無いor複数になる場合もあるためマルチモーダル埋め込みにしない
登録時にはクライアント側で検索精度向上の工夫 • 登録UXがスマホを動かすだけなので、画像が大量に撮れる → 検索に適した画像をアルゴリズムで厳選する • サムネイル画像はユーザーの目に触れるため、AIではなく人に選ばせる 100msごとに自動撮影 数百枚 サムネイル選択 50枚に厳選 • ブレ画像除去 • 類似フレーム除去 • 等間隔サンプリング
ベクトル作成時にも、検索精度と速度を上げるための工夫 • 登録時に複数物体が写っている場合、サムネ画像のBBoxとの重なり具合に よりクロップ対象を決定する(IoU≧0.3) • モデル呼び出し(BBox検出、OCR、ベクトル作成)に時間を要するため並 列処理 向き補正(EXIF) + リサイズ BBox検出 クロップ (6%余白) 光正規化 (CLAHE) 登録時のみ 4方向回転
DynamoDBベクトル保存・検索により、さらなる速度向上 • 一昨日発表されたばかりの機能(8月5日) • 当初S3 Vectorsを使用していたが、DynamoDBにすることで27%高速化 S3 Vectors DynamoDB 物体登録 21秒 15秒 (-6.5秒、-28.6%) 物体検索 2.5秒 1.8秒 (-0.65秒, -26.1%) https://aws.amazon.com/jp/blogs/aws/amazon-dynamodb-now-supports-real-time-vector-search-at-any-scale/
黄色判定の時はユーザーに判定させ、結果を精度向上に使う
同一物体(緑・黄・赤)の判定調整が難しい • ベクトル検索だけでは上手くいかなかった • 繰り返し調整を行い、4Stepでの3値判定に落ち着いた • 物体登録数により継続的な調整が必要 • 次ページに判定方法を記載
同一物体(緑・黄・赤)の判定方法 4Step Step 1: ベクトル検索の上位20ベクトルを取得し、スコア算出(1-コサイン距離) Step 2: OCRで文字が取れた場合、文字一致によるスコア調整とリランキング 部分一致(含む関係)または編集距離比率 ≥ 0.7 なら一致とみなす Step 3: Step 4: クエリ側の文字 候補側の文字 一致判定 スコア調整 あり あり 一致 +0.05 あり あり 不一致 -0.05 スコア1位の候補に対して判定指標を算出 指標 計算方法 sim 1位のスコア margin Step2調整前の1位スコア - 最も上位の別物体の調整前スコア(1位のダントツ具合) votes 上位20位の1位と同じ物体の数 文字一致 1位がStep2で文字一致判定となり、スコアが加算されたかどうか 3値判定 判定 条件 緑 スコア ≥ 0.80 かつ(margin ≥ 0.10 または 文字一致) 黄 スコア ≥ 0.72 かつ votes ≥ 2 赤 上記いずれにも該当しない
非同期処理の進捗をユーザーに伝える • 登録処理は15~25秒かかるため、動いていることをユーザーに伝える • 3秒ごとにJobステータスを取得 • AppSync EventsでWebSocketを使った方法でもよい
画像のガードレールとしてRekognitionを使う • 人間や不適切な物体を登録できないよう、3つのAPIでガード • detect_faces:人の顔をブロック • detect_labels:Person / Human ラベルで後ろ姿など顔以外もブロック • detect_moderation_labels:不適切な物体をブロック
コメントのガードレールはBedrock Guardrailを使う • ユーザーによる不適切なコメント投稿を防ぐ • AIへ渡すプロンプトに使われがちだが、こういう用途にも使える
まとめ • 高度なモデルを選ぶのではなく、用途に合わせて適切なモデルを使う • BBox検出ならNova、ラベル付き検出ならRekognition • 画像ベクトル検索だけに頼らず、加工やテキスト一致などの工夫で精度を上 げる • ブレ検出、類似フレーム除去、EXIF補正、リサイズ、OCR、CLAHE光正 規化、4方向回転 • AIの曖昧さは、消そうとせずユーザーに返す • 緑・黄・赤の3段階判定 • 黄色はユーザーに判定させ、精度向上に使う
ご清聴ありがとうございました。