1. はじめに
画像認識を触ってみようと思ったきっかけは、某スケートアニメでした。
ジャンプの種類(アクセル、ループ、ルッツなど)の違いが気になり、
「プログラムで判別できたら面白そう。」とふと思ったのが始まりです。
本来やりたいのは動画分析なのですが、ChatGPTに聞いたところ、
動画分析は「連続した画像認識」と捉えることもできる
とのことだったので、まずはシンプルに画像認識から触ってみることにしました。
なお、筆者はこの分野ほぼ未経験&満足するのが早いタイプなので、
若干遠回りや中途半端な部分もあるかもしれませんが、そのあたりはご容赦ください 🙏
2. 環境
■ AWS
-
Amazon Rekognition
AWSが提供する画像・動画認識サービス。
今回は「カスタムラベル」を使って、特定のキャラクター(ウォーリー)を検出できるようにします。 -
CloudShell
ブラウザ上でAWS CLIを実行できる環境。
ローカル環境を汚さずにRekognition APIを叩けるので検証用途に便利でした。
3. やってみたこと
ふと思いました。
「画像認識でウォーリー探せたら面白くない?」
ということで、AWSの画像認識を使って「ウォーリーを探せ」をやってみることにしました。
(調べてみると意外とやってる人いました😂)
4. Amazon Rekognition カスタムラベル
■ Amazon Rekognitionとは?
画像や動画から以下のような情報を抽出できるサービスです。
- 物体検出(人、車、動物など)
- 顔認識
- テキスト検出
ただし、ウォーリーのような特定キャラクターは標準機能では検出できません。
そこで使うのが👇
■ カスタムラベルとは?
独自の画像データを学習させることで、
「自分専用の画像認識モデル」を作成できる機能です。
今回のゴールはシンプルに、
👉 「ウォーリーがどこにいるか」を検出する
です。
■ プロジェクト作成
Rekognitionのコンソールからカスタムラベルのプロジェクトを作成します。
- プロジェクト名:
find-w-project(任意) - データセット:後から追加
👉 UIが整っているので、ここは特に迷うことはありませんでした。
■ データセット登録とラベル付け
ここが一番重要かつ一番大変な工程です。
① 画像を用意
- 「ウォーリーを探せ」の画像を複数枚用意
- ウォーリーが写っているもの
👉 今回はChatGPTも活用しつつ素材を準備しました。
② バウンディングボックスでラベル付け
- ウォーリーの位置を矩形で囲む
- ラベル名:
w
👉 地味ですが、この作業の質がそのまま精度に直結します。
■ モデルのトレーニング
データセットが用意できたら、そのままトレーニングを実行します。
数分〜数十分で完了します。
5. Amazon Rekognition 実行
■ ChatGPTでテスト問題作成
テスト用画像の準備にもChatGPTを活用しました。
- バリエーションの洗い出し
- 「検出できそう / できなさそう」なケースの整理
👉 地味にこの工程があると検証の質が上がります。
■ Rekognition API実行
CloudShellからAWS CLIで実行します。
aws rekognition detect-custom-labels \
--project-version-arn <ARN> \
--min-confidence 20 \
--image '{"S3Object":{"Bucket":"your-bucket","Name":"test.jpg"}}'
実行結果:
{
"CustomLabels": [
{
"Name": "w",
"Confidence": 29.68,
"Geometry": {
"BoundingBox": {
"Width": 0.0967,
"Height": 0.3898,
"Left": 0.4529,
"Top": 0.3193
}
}
}
]
}
👉 それっぽい位置を検出してくれると、テンション上がります。
6. 学び
■ とにかく楽しい
AWSのマネージドサービスだけでここまでできるのは純粋に楽しいです。
試している途中でも、
- 野球の球種判定できそう
- Zoom SDKと組み合わせて大喜利系サービス作れそう
- 某探偵映画で見るような解析も意外と現実的かも
など、いろいろ妄想が広がりました。
■ ジャンプ判定に向けて、方向性は良さそう
- 小さな特徴でも検出可能
- カスタムラベルの自由度が高い
👉 工夫すれば動画分析にも応用できそうな手応えがあります。
■ データセットは命
今回一番の学びです。
- 雑なラベル付け → 精度が出ない
- 丁寧なラベル付け → ちゃんと検出できる
さらに重要だと感じたのが👇
👉 「特徴ごとに分解する」
例:
- 赤白ボーダー
- 帽子
- メガネ
のように分解することで、検出精度が上がる可能性があります。
ジャンプ判定のような動画分析でも、
👉 特徴の連続性で判定できそう
という感触を得られました。
■ 今回の検証で発生した料金
- 約2ドル
👉 個人の検証としてはかなり手軽です。
まとめ
- Rekognitionカスタムラベルで「ウォーリー探し」は実現可能
- 精度はデータセットに大きく依存する
- 次は動画分析に向けて、動画から細切れ画像の作成にチャレンジ
