0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

いまさらだけど画像認識を触ってみた

0
Posted at

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

image.png

👉 地味ですが、この作業の質がそのまま精度に直結します。


■ モデルのトレーニング

データセットが用意できたら、そのままトレーニングを実行します。
数分〜数十分で完了します。


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カスタムラベルで「ウォーリー探し」は実現可能
  • 精度はデータセットに大きく依存する
  • 次は動画分析に向けて、動画から細切れ画像の作成にチャレンジ
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?