---
title: AWSで物の情報をシェアするアプリつくってみた ―VLMとベクトル検索で、角度を問わず物体同定―
tags: 
author: [Takuya Yamazaki](https://image.docswell.com/user/kkmtyyz)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/47ZL41G4J3.jpg?width=480
description: 物体を光の加減や角度の違いに関わらず同定する、一昔前は不可能と思えたこともAWSを使えば実現できます。 この発表では、他の高度なモデルより優れたAmazon Novaの能力と、ベクトル検索・OCRを用いてそれを実現する方法と、最新のDynamoDBベクトル検索や、ガードレールとしてのRekognitionの応用を組み合わせたソリューションを紹介しています。
published: August 08, 26
canonical: https://image.docswell.com/s/kkmtyyz/5PRXME-2026-08-08-205601
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/47ZL41G4J3.jpg)

2026-08-08 [東北][岩手][JAWS-UGいわて]LT会＋生成 AIハンズオン#3
物の情報をシェアするアプリつくってみた
― VLMとベクトル検索で、角度を問わず物体同定 ―
山崎 拓也


# Page. 2

![Page Image](https://bcdn.docswell.com/page/YJ6W3LYGJV.jpg)

山崎 拓也
所属: 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)


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GJ5ML1GXJ4.jpg)

写真で物体のコメントをシェアできるアプリ
写真を撮って物体検出


# Page. 4

![Page Image](https://bcdn.docswell.com/page/LE3WL1R4E5.jpg)

タップして物体とコメントを確認、コメントを追加してシェア


# Page. 5

![Page Image](https://bcdn.docswell.com/page/8EDKNXY57G.jpg)

様々な角度で物体を同定できる


# Page. 6

![Page Image](https://bcdn.docswell.com/page/V7PK5P6DJ8.jpg)

暗くても、場所が異なっていても同定できる


# Page. 7

![Page Image](https://bcdn.docswell.com/page/2JVVP23GJQ.jpg)

登録するときは物体を中心にスマホを動かすだけ
ゆっくり動かして撮影
サムネイル選択
最初のコメント入力


# Page. 8

![Page Image](https://bcdn.docswell.com/page/5EGLPRYDJL.jpg)

アーキテクチャ
主に
Kiro for iOS
で開発！


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4JQY2VMX7P.jpg)

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%


# Page. 10

![Page Image](https://bcdn.docswell.com/page/K74WLMV2E1.jpg)

物体検索にはベクトル検索とOCRを併用し精度向上
• Titan Multimodal Embeddings G1で画像をベクトル化
• Nova Liteで画像内のテキスト抽出し、正規化
• DynamoDBでベクトル検索
• ベクトルと一緒にテキストが保存されてる場合は検索結果をリランキング
• テキストが無いor複数になる場合もあるためマルチモーダル埋め込みにしない


# Page. 11

![Page Image](https://bcdn.docswell.com/page/LJ1YL83KEG.jpg)

登録時にはクライアント側で検索精度向上の工夫
• 登録UXがスマホを動かすだけなので、画像が大量に撮れる
→ 検索に適した画像をアルゴリズムで厳選する
• サムネイル画像はユーザーの目に触れるため、AIではなく人に選ばせる
100msごとに自動撮影
数百枚
サムネイル選択
50枚に厳選
• ブレ画像除去
• 類似フレーム除去
• 等間隔サンプリング


# Page. 12

![Page Image](https://bcdn.docswell.com/page/GJWGVZPP72.jpg)

ベクトル作成時にも、検索精度と速度を上げるための工夫
• 登録時に複数物体が写っている場合、サムネ画像のBBoxとの重なり具合に
よりクロップ対象を決定する（IoU≧0.3）
• モデル呼び出し（BBox検出、OCR、ベクトル作成）に時間を要するため並
列処理
向き補正(EXIF)
+ リサイズ
BBox検出
クロップ
（6%余白）
光正規化
（CLAHE）
登録時のみ
4方向回転


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4EZL41K673.jpg)

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/


# Page. 14

![Page Image](https://bcdn.docswell.com/page/Y76W3LQL7V.jpg)

黄色判定の時はユーザーに判定させ、結果を精度向上に使う


# Page. 15

![Page Image](https://bcdn.docswell.com/page/G75ML1RM74.jpg)

同一物体（緑・黄・赤）の判定調整が難しい
• ベクトル検索だけでは上手くいかなかった
• 繰り返し調整を行い、４Stepでの３値判定に落ち着いた
• 物体登録数により継続的な調整が必要
• 次ページに判定方法を記載


# Page. 16

![Page Image](https://bcdn.docswell.com/page/9J29L1DRER.jpg)

同一物体（緑・黄・赤）の判定方法 ４Step
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で文字一致判定となり、スコアが加算されたかどうか
３値判定
判定
条件
緑
スコア ≥ 0.80 かつ（margin ≥ 0.10 または 文字一致）
黄
スコア ≥ 0.72 かつ votes ≥ 2
赤
上記いずれにも該当しない


# Page. 17

![Page Image](https://bcdn.docswell.com/page/DEY4QZ25JM.jpg)

非同期処理の進捗をユーザーに伝える
• 登録処理は15～25秒かかるため、動いていることをユーザーに伝える
• 3秒ごとにJobステータスを取得
• AppSync EventsでWebSocketを使った方法でもよい


# Page. 18

![Page Image](https://bcdn.docswell.com/page/VJNYK38478.jpg)

画像のガードレールとしてRekognitionを使う
• 人間や不適切な物体を登録できないよう、3つのAPIでガード
• detect_faces：人の顔をブロック
• detect_labels：Person / Human ラベルで後ろ姿など顔以外もブロック
• detect_moderation_labels：不適切な物体をブロック


# Page. 19

![Page Image](https://bcdn.docswell.com/page/YE9PV9K4J3.jpg)

コメントのガードレールはBedrock Guardrailを使う
• ユーザーによる不適切なコメント投稿を防ぐ
• AIへ渡すプロンプトに使われがちだが、こういう用途にも使える


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GE8DP9RVED.jpg)

まとめ
• 高度なモデルを選ぶのではなく、用途に合わせて適切なモデルを使う
• BBox検出ならNova、ラベル付き検出ならRekognition
• 画像ベクトル検索だけに頼らず、加工やテキスト一致などの工夫で精度を上
げる
• ブレ検出、類似フレーム除去、EXIF補正、リサイズ、OCR、CLAHE光正
規化、4方向回転
• AIの曖昧さは、消そうとせずユーザーに返す
• 緑・黄・赤の3段階判定
• 黄色はユーザーに判定させ、精度向上に使う


# Page. 21

![Page Image](https://bcdn.docswell.com/page/LELM1WKR7R.jpg)

ご清聴ありがとうございました。


