8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

株式会社オーイーシーAdvent Calendar 2023

Day 10

Amazon Rekognition による「画像からの物体検出、テキスト検出」をブラウザから試す

Last updated at Posted at 2023-11-28

はじめに

AWS は様々な AI サービスを提供しています

そして、それらのサービスはブラウザから簡単に試せるようになっています

サービス 機能 お試し記事 Elixir 実装例
Transcribe 音声の文字起こし(音声認識) 参照 参照
Polly 文書の読み上げ(音声合成) 参照 参照
Lex チャットボット 参照 Coming Soon...
Translate 翻訳 参照 参照
Rekognition 画像認識
顔認識
参照
参照
参照
Textract 画像からの表データ読込 参照 参照
Bedrock 生成AIによるチャット、画像生成 参照 参照

本記事では AWS の AI 画像処理サービス Amazon Rekognition の物体検出、テキスト検出をブラウザから試してみます

なお、顔検出、顔識別機能については以下の記事にまとめています

Amazon Rekognition とは

Amazon Rekognition は AI モデルによって画像から物体や人物の顔を検出し、それが何であるか識別するサービスです

Amazon Rekognition の使い途(ユースケース)

Amazon Rekognition は画像に何が写っているかだけでなく、それがどこにあるのかを返してくれます

Amazon Rekognition は以下のような用途に使用可能です

  • 監視カメラ映像からの不審人物検出
  • ドライブレコーダー映像からの車両検出
  • 写真からのテキスト抽出
  • 動画から特定人物が写った箇所だけを抽出

Amazon Rekognition の料金

AWS の料金は基本的に従量課金制です

また、リージョン(サービス提供するサーバーが存在する地域)によって料金が異なります

Amazon Rekognition を東京リージョンで使う場合、静止画からの物体検出なら $0.0013 / 枚 の料金になります

150 ¥/$ の場合、 ¥0.195 / 枚 = ¥195 / 千枚 となります

例えば 1 万枚の写真からの物体検出を実行した場合、 ¥1,950 請求されます

ただし、 AWS のサービスの多くには無料利用枠が存在します

無料利用枠
AWS の無料利用枠の一環として、Amazon Rekognition Image を無料で開始していただけます。無料利用枠は 12 か月ご利用になれます。
画像分析: 無料利用枠期間中は、グループ 1 およびグループ 2 の API で、それぞれ 1 か月に 5,000 枚の画像を無料で分析することができます。 Image Properties は無料利用枠ではありません。

グループ 1 は顔識別等に使う API で、グループ 2 がそれ以外です

無料利用期間中の場合、物体検出なら 5,000 枚まで無料利用可能なため、本記事で実行する程度の処理であれば無料範囲内に収まります

アカウント作成

Amazon Rekognition を使うためには、 AWS のアカウント作成が必要です

以下の公式手順に従って、アカウントを作成してください

クレジットカードと電話番号が必要になります

予めご用意ください

ブラウザからの物体検出実行

Amazon Rekognition への移動

AWS のマネジメントコンソールにログインすると、以下のような画面が表示されます

スクリーンショット 2023-11-26 9.59.09.png

この画面から最近使ったサービスなどにアクセスできるようになっています

上メニューにある検索ボックスに rek と入力してみましょう

スクリーンショット 2023-11-26 20.34.24.png

サービスの候補として Amazon Rekognition が表示されます

Amazon Rekognition をクリックして、サービスページに移動しましょう

以下のような画面が表示されます

スクリーンショット 2023-11-26 20.35.29.png

ラベル検出の実行

ブラウザから物体検出(ラベル検出 = 何が写っているか)を実行してみましょう

左メニューから「デモ」の「ラベル検出」をクリックします

スクリーンショット 2023-11-26 20.38.28.png

ラベル検出のデモ画面が表示され、サンプル画像での実行結果が表示されます

左側の画像に対して、右側に検出された物体の名前が列挙されています

  • Neighborhood(近所) 99.9 %
  • City(街) 99.9 %
  • Road(道路) 99.9 %
  • Street(通り) 99.9 %
  • Urban(都会) 99.9 %
  • Person(人) 98.7 %

数値は確信度で、 AI がどれだけ自信を持って答えているか、という意味です
99.9 % なら「ほぼ間違いない」回答として AI は答えていますが、 30 % 程度なら「もしかしたら」程度の回答です
多くの場合、確信度が一定の値(閾値)以上の場合のみ画面に表示する、というような制御を行います

また、画像内の四角形の内側にカーソルを合わせると、その中に写っているものの名前が表示されます

スクリーンショット 2023-11-26 20.49.38.png

この四角形が AI によって検出した物体の位置を示しています

また、右側の「レスポンス」をクリックすると、以下のようなテキストが表示されます

{
    "Labels": [
        {
            "Name": "Neighborhood",
            "Confidence": 99.99998474121094,
            "Instances": [],
            "Parents": [],
            "Aliases": [],
            "Categories": [
                {
                    "Name": "Buildings and Architecture"
                }
            ]
        },
        {
            "Name": "City",
            "Confidence": 99.98468017578125,
            "Instances": [],
            "Parents": [],
            "Aliases": [
                {
                    "Name": "Town"
                }
            ],
            "Categories": [
                {
                    "Name": "Buildings and Architecture"
                }
            ]
        },
        {
            "Name": "Road",
            "Confidence": 99.98146057128906,
            "Instances": [],
            "Parents": [],
            "Aliases": [],
            "Categories": [
                {
                    "Name": "Transport and Logistics"
                }
            ]
        },
        {
            "Name": "Street",
            "Confidence": 99.98146057128906,
            "Instances": [],
            "Parents": [
                {
                    "Name": "City"
                },
                {
                    "Name": "Road"
                },
                {
                    "Name": "Urban"
                }
            ],
            "Aliases": [],
            "Categories": [
                {
                    "Name": "Buildings and Architecture"
                }
            ]
        },
        {
            "Name": "Urban",
            "Confidence": 99.98146057128906,
            "Instances": [],
            "Parents": [],
            "Aliases": [],
            "Categories": [
                {
                    "Name": "Colors and Visual Composition"
                }
            ]
        },
        {
            "Name": "Person",
            "Confidence": 98.77580261230469,
            "Instances": [
                {
                    "BoundingBox": {
                        "Width": 0.20574712753295898,
                        "Height": 0.2853928506374359,
                        "Left": 0.4315406382083893,
                        "Top": 0.3422974646091461
                    },
                    "Confidence": 98.77580261230469
                },
                {
                    "BoundingBox": {
                        "Width": 0.009459801018238068,
                        "Height": 0.016445089131593704,
                        "Left": 0.218057319521904,
                        "Top": 0.535713255405426
                    },
                    "Confidence": 96.38606262207031
                },
                ...

これは JSON という形式で物体検出結果を表したものです

NeighborhoodCity のような画像全体に対するラベルと、 PersonCar のような画像に写っている物に対するラベルが含まれています
画像に写っている物の場合、 BoundingBox の中に位置情報も入っています
幅、高さ、左位置、上位置を画像全体に対する比で示しています

プログラムから Rekognition を呼び出す場合、この JSON を読み込んで利用することになります

「アップロード またはドラッグアンドドロップ」のところから、自前の画像をアップロードしてみましょう

スクリーンショット 2023-11-26 21.09.37.png

別府の鬼山地獄の写真をアップロードしたところ、 Crocodile = ワニ と Lizard = トカゲ が返ってきました

Crocodile の方が確信度が高いので、まあ正解と言えるのではないでしょうか

返答されるラベルはあくまでも Rekognition が標準的に学習しているラベルなので、例えば「畳」のような日本独自のものは答えられません

そういったものに対応する場合、カスタムラベルをトレーニングする必要があります

画像のプロパティ

左メニューから「画像のプロパティ」をクリックすると、画像の色や品質に関する情報を取得するデモが表示されます

スクリーンショット 2023-11-26 21.16.01.png

左側に表示されている画像に対して、右側に以下の情報を表示しています

  • ドミナントカラー = メインとして使われている色
  • Brightness = 明るさ
  • Sharpness = 輪郭の鮮明さ
  • Contrast = 明暗の明確さ

 また、前景と背景に分けた場合のそれぞれの値(Contrast 除く)も取得可能です

スクリーンショット 2023-11-26 21.21.34.png

画像のモデレーション(不適切画像の検出)

左メニューから「画像のモデレーション」をクリックすると、不適切画像を検出するデモが表示されます

スクリーンショット 2023-11-26 21.23.09.png

左下サンプル画像のうち、左側の画像に対しては「結果」欄に「もでレーションは検出されませんでした」と表示されています

サンプル画像のうち、右側の画像(ビキニの女性)をクリックしてみましょう

スクリーンショット 2023-11-26 21.25.49.png

「結果」欄には以下のように表示されました

  • Suggestive = 挑発的
  • Female Swimwear Or Underwear = 女性の水着、下着
  • Revealing Clothes = 露出度の高い服

例えば写真共有サービスで不適切画像のアップロードを規制するなどの用途に使えます

イメージ内のテキスト

左メニューから「イメージ内のテキスト」をクリックすると、画像からのテキスト検出デモが表示されます

スクリーンショット 2023-11-26 21.33.58.png

左側の画像に対して、右側に検出したテキストが表示されます

「レスポンス」をクリックすると、以下のように表示されます

{
    "TextDetections": [
        {
            "DetectedText": "IT'S",
            "Type": "LINE",
            "Id": 0,
            "Confidence": 100,
            "Geometry": {
                "BoundingBox": {
                    "Width": 0.14000000059604645,
                    "Height": 0.09833335876464844,
                    "Left": 0.6722222566604614,
                    "Top": 0.1850000023841858
                },
                "Polygon": [
                    {
                        "X": 0.6722222566604614,
                        "Y": 0.1850000023841858
                    },
                    {
                        "X": 0.8122222423553467,
                        "Y": 0.1850000023841858
                    },
                    {
                        "X": 0.8122222423553467,
                        "Y": 0.28333336114883423
                    },
                    {
                        "X": 0.6722222566604614,
                        "Y": 0.28333336114883423
                    }
                ]
            }
        },
        ...

幅、高さ、左位置、上位置で表す BoundingBox とは別に、 Polygon でテキストを含む多角形の頂点も取得しています

これはテキストが斜めになっている場合への対応です

この機能を使うことで、ナンバープレートの文字検出などが可能になります

ただし、日本語には対応していないことに注意しましょう

Amazon Rekognition is designed to detect words in English, Arabic, Russian, German, French, Italian, Portuguese and Spanish.

PPE 検出

ヘルメットやゴーグル、マスクなどの個人用防護具 = PPE 検出も可能です

スクリーンショット 2023-11-26 21.41.40.png

この機能により、作業者が正しい装備をしているか、といったチェックが可能です

まとめ

Amazon Rekognition を使うことで、画像から物体やテキストなどが検出できます

画像の色検出や不適切な画像の検出なども可能なので、組み合わせることで様々な応用が可能です

まずはデモで色々検出してみて、自分の用途に合うのか確認してみましょう

8
4
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
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?