物体検知(物体検出)とは?仕組みや活用事例を徹底解説

 2020.09.03  株式会社システムインテグレータ

近年は、「人工知能(AI)」という言葉をよく耳にするようになりました。実際、私たちの身の回りには人工知能を活用した製品が増えています。特に身近なものにスマホがありますが、例えばカメラを使うとき人の顔の部分に四角い枠が出るのを見たことがあるかかと思います。これは、AIの物体検知という技術で画像の中から人の顔を識別する顔認識を適用した機能です。

本記事では、AIによる物体検知の概要をはじめ、仕組みや活用例をご紹介します。

物体検知(物体検出)とは

Curious corporate businessman skeptically meeting looking at small employee standing on table through magnifying glass isolated office grey wall background. Human face expression, attitude, perception-2

物体検知(物体検出)とは、簡単に説明すると、「画像や動画から物体を検知(検出)する技術」です。

人間は、見ている画像からモノの位置とそれが何であるかという判断を即座に行えますが、それをコンピューターで実現する方法が物体検知です。コンピューターにとって画像はピクセルの集まりにすぎませんが、「畳み込み」や「プーリング」という手法を用いることで、そこに写ったものの特徴を捉えることができます。

物体検知なら、画像や動画の中に特定の物体が確認された場合に位置や種類、個数を特定することができます。製造業の外観検査、医療や建設業などに利用されることが多い技術です。身近な例では、スマホのカメラ、自動運転における歩行者の検知などに利用されています。そして、物体検知を実行するときには「ディープラーニング(深層学習)」が用いられます。

AIによる画像認識のビジネス活用についてはこちらの記事でもご紹介しています。
関連記事:画像認識AIをビジネスに活用するために押さえるべき基礎知識【中級者向け】

物体検知の仕組み

物体検出を行ううえで重要なポイントは、前景にある物体の数が画像によって異なることです。

例えば1つの画像に1個の物体しか存在しない場合なら、「バウンディングボックスの発見」「カテゴリー判断」といった簡単な方法で処理できます。バウンディングボックスとは、画像や映像の中の物体を囲む長方形の枠のことです。カメラの顔認識機能によって顔の部分が枠で囲まれますが、物体見地におけるバウンディングボックスは、この枠を物体全体まで広げたようなものです。

物体検知の主な手法

物体検知では、ディープラーニングの中で最も有名な「畳み込みニューラルネットワーク(CNN/Convolutional Neural Networks)」というものを利用することがほとんどです。画像の濃淡を検出する畳み込みフィルター層と、物体の位置がズレても同一の物体として認識するプーリング層を持つネットワークで、画像処理に対して非常に有効とされています。

ひと括りに物体検知といっても、いくつかの手法があります。

  1. R-CNN(Regional CNN)
  2. YOLO
  3. SDD
  4. DETR

上から順番に見ていきましょう。

R-CNN

ディープラーニングを用いた物体検知の先駆けといえるのが「R-CNN」です。以下の手順で

画像中の物体を検出します。

  1. 画像データを入力する
  2. データの中から物体のある領域の候補を抽出する(約2,000個)
  3. CNNによって、それぞれの候補の特徴量を計算する
  4. 各領域内に写ったものを分類する

この手法によって、ディープラーニングを使わない手法と比べて高精度に物体を検出できるようになりました。

しかし、R-CNNは項目別に学習する必要があることから「学習に時間がかかる」「メモリの消費量が大きい」といった問題がありました。これらの問題を解決するために登場したのが「Fast R-CNN」「Faster R-CNN」です。特に「Fastar R-CNN」なら、画像の入力から物体検知まで一度に学習し、推定までできるので、学習時間やメモリの消費量を大きく削減できたのです。

YOLO

YOLOは「You Only Look Once」の略であり、「一度見るだけでいい」という意味があります。実はYOLO以前にもさまざまな物体検知の手法は存在したのですが、複数のプロセスに分けて検知する必要があったことから時間がかかっていました。一方、ニューラルネットワークを使用して画像を解析するYOLOは、より短い時間で画像内にある物体の内容を検出できる優れた物体検知能力があるので、広く注目されるようになりました。

YOLOの特徴は、物体を検知したい画像の入力があれば正方形にリサイズした後さらに細かく正方形で分割することです。縦長や横長の画像も正方形に一度リサイズすることによって、ニューラルネットワークを使用した分析がしやすくなります。

SSD

SSD(Single Shot MultiBox Detector)はYOLOと同じく、ひとつのネットワークで領域の検出やクラス分類を行う手法です。

さまざまな大きさの特徴量マップの作成によって、画像内の異なる大きさの物体を想定した特徴量が得られるという構成です。

SSDのコードの実装は、以下の手順で行われます。

  1. 教師データをダウンロードする
  2. 前処理を行う
  3. Datasetを作成する
  4. DataLoaderを作成する
  5. SSDモデルを作成する
  6. 損失関数の定義と最適化手法を設定する
  7. 学習・検証を実施する
  8. テストデータの推論

先程ご紹介したR-CNNは、バウンディングボックスを何度も動かしてその都度演算を行っていたことから、1枚の画像の物体検知を行うのに処理時間を要しました。一方SSDは「Single Shot」という名のとおり、1回のCNN演算で物体の「領域候補検出」と「クラス分類」を行います。

これにより、物体検知の処理を高速化できるようになったのです。

DETR

DETR(End-to-End Object Detection with Transformers)は、物体検知の方法にTransformerという機械学習モデルを融合させた手法です。初めてTransformerを採用した物体検出モデルであり、2020年5月にFacebookの研究チームによって論文が発表されました。

DETRは、3つの構成から成り立っています。

  • Backbone:画像の特徴量をエンコードするCNN
  • Transformer:CNNから抽出した画像の特徴量から、注意機構を用いて各物体の位置や種類の情報に変換し、事前に決められた個数の物体を予測する深層学習モデル
  • FFN:Transformerの出力情報を、物体の位置座標・クラスラベルにデコードするネットワーク

シンプルな手法でありながら高精度な検知ができる点がDETRの特徴です。

物体検知モデルの作り方

物体検知は画像の中に写っているモノを見つけ出す技術です。つまり「画像のどこにモノが写っているのか」、そして「そのモノが何か」の2つを検知することです。それでは、物体検知を行う学習モデルを作成する方法は具体的にどのようなものでしょうか。

  1. 画像データを用意する

    画像認識AIとはこちらでご説明した画像(物体)分類が、その画像全体がどのカテゴリか(対象となる画像にあるのが犬か猫か)を分類するのに対して、物体検知は画像の中に写っているモノ(つまり、画像の一部分)がどのカテゴリか分類するという違いがあります。

    下図1の犬と猫が映っている画像をご覧ください。この画像は犬と猫のどちらに分類していいかわからないので、画像分類に利用するのは難しい画像です。しかし右側に写っているのが猫、左側に写っているのが犬というように教えてあげることで物体検知に利用できるようになります。

    画像分類についてはこちらの記事で詳しく解説しています。
    関連記事:AI(ディープラーニング)による画像分類とその活用法【中級者向け】

    3133031_m図 1:犬と猫の画像

  2. アノテーションを付ける

    物体検知では「画像のどこにモノが写っているのか」と「そのモノが何か」を認識する必要がありますので、この2つを学習させないといけません。そのため、画像に写っている物体の範囲を四角で囲み、さらにその四角それぞれに何が映っているか意味付けする作業を行います。この四角の位置、大きさ、意味付けをまとめて「アノテーション」と呼びます。下の図2は先ほどの犬と猫の画像にアノテーションを付ける作業を行ったときのイメージです。

    図2アノテーション付けのイメージ
    図 2:アノテーション付けのイメージ

    アノテーションを付ける作業は、画像の中のどこに何があるかを、人間が目で見て判断する必要があります。

    この作業は学習用の画像が数枚であればある程度簡単にできますが、画像が多くなると非常に大変な作業となります。作業を楽にするさまざまなツールが存在しますので、使いやすさ、取扱可能なデータの形式から利用するものを選択します。

    以下に無償のツールをいくつかご紹介します。

    名前

    公式サイト

    labelImg

    https://github.com/tzutalin/labelImg

    Cloud Annotations

    https://cloud.annotations.ai

    VoTT

    https://github.com/microsoft/VoTT

    LabelBox

    https://github.com/Labelbox/Labelbox

    また、アノテーションを専門で行う会社もありますので、量が多いときなどは外部に依頼してもよいでしょう。

    アノテーションした画像は、学習用とテスト用に分けておきます。これは、学習したことのあるデータと同一または類似した画像でいくら精度が高くても、汎用的に精度高く認識できるかわからないので、学習に使っていないデータでテスト検証を行うためです。

  3. 学習する

    用意した学習用の画像とアノテーションのデータを使って、物体の写る位置と写っている物体の特徴を覚え込ませていきます。まずは近い色のピクセルを統合していくという手法で画像の中から物体が写っていると思われる四角の領域をいくつも設定します(領域抽出)。この設定された四角形の領域はバウンディングボックス(下図3の①と②)と呼ばれます。

    領域抽出ができたら、バウンディングボックスで画像を切り抜き、それぞれに対して画像分類を行ってどのカテゴリなのか(下図3では「犬」か「猫」か)を判断します。領域抽出によって多くのバウンディングボックスが抽出されますので、同じ物体に対して複数のバウンディングボックスが設定されてしまいます。

    下図3では、2つのバウンディングボックス①と②がとても近い位置に設定されています。この①②両方とも犬が写っていると判断されると、1つの画像の中に犬が2匹いることになってしまいます。

    図31つの物体に複数のバウンディングボックスが設定されたイメージ
    図 3:1つの物体に複数のバウンディングボックスが設定されたイメージ

    これに対処するため、各バウンディングボックスは背景ではなく特定したい物体が映っている確率(信頼度スコアと呼びます)を計算します。バウンディングボックス同士が一定以上重なっている場合は信頼度スコアを比べ、低いものは削除していきます。上図3の場合、バウンディングボックス②のほうが①より信頼度スコアが高ければ①を削除するという具合です。このように同一の物体に対して重なり合ったバウンディングボックスから有効なものを選択して、同じ物体を複数検出しないよう制御しています。

    【バウンディングボックスの重なり具合を計算する】

    下図4の2つのバウンディングボックスはどの程度重なっているでしょうか。

    これは、2つのバウンディングボックスが重なった領域の面積と2つのバウンディングボックスで作られる図形の面積の比で表されます。アミカケの四角形の面積÷(赤い領域の面積+アミカケの四角形の面積+緑の領域の面積)で計算できることが分かります。この数値を専門的にはIoU(Intersection over Union)と呼んでいます。

    図4重なり合うバウンディングボックス

    図 4:重なり合うバウンディングボックス

    物体検出においては、IoUの値が一定未満の場合は不正解となるのですが、この閾値には0.5がよく使われます。想像していたより低いと思われるかもしれません。ここで下図5をご覧ください。同じ大きさの正方形を縦横に1/20だけずらしたものです。あまりずれはないように見えますがこの2つの正方形のIoUは0.822です。このように、ほんの少しのずれでIoUの値は大きく減ってしまいます。

    図51-20だけずらした正方形図 5:1/20だけずらした正方形

  4. 性能を評価する

    テスト用のアノテーションのついた画像を使って、性能を評価していきます。物体検知モデルの性能を測る際はmAP(mean Average Precision)と呼ばれる指標を用います。これは、得られた結果の信頼度、正解とのIoUを総合してカテゴリごとに求め、それらの平均になります。

    例えば犬と猫と猿を検出するモデルで、犬の精度が80%、猫の精度が75%、猿の精度が90%であったとすれば、mAPは81.67%になります。

  5. チューニングする

    業務で使用する場合、精度も重要ですが処理速度も重要です。そのため実際に業務で使うものに近いスペックの機器上で動かして、許容できる速度や精度が出るかを確認します。

    その後、画像の前処理や機器のチューニング、モデルの再作成などを行っていきます。

物体検知でできること

私たちの日常やビジネスシーンで物体検知によって何ができるのか、以下にまとめました。

  1. 異常検知・外観不良検知
  2. 自動運転
  3. 建物の外観診断
  4. 防犯や監視用途での活用
  5. 医療分野での活用

上から順に詳細を見ていきましょう。

異常検知・外観不良検知

物体検知を用いることで、異常検知や外観不良検知が可能になります。

従来の製造現場では、異常や不良を調べる際には検査員による目視検査が行われることがほとんどでした。製品の目視検査では、「限度見本」という、良品か不良品か品質の限度を示した見本と比べて製品の良否判定を行います。

しかし、少子高齢化による人材不足や、検査員による品質のバラつきといった問題もあることから、近年は外観検査の自動化が進められています。物体検知を活用した外観検査装置を導入することで、製品を撮像した写真データの中から異常を検知することが可能です。これにより、検査工程の省力化や製品の品質向上を図り、今までベテラン頼みでマニュアル化が難しかった勘や経験に基づく外観検査を代替させることができます。

自動運転

近年になって進化が著しい自動運転も、AIによる物体検知が重要な役割を担っています。

クルマに搭載されたカメラで周囲の状況を撮影し、その画像に映る標識や障害物などの物体や歩行者を認識します。標識の内容や障害物の状況、そしてそれらに対応するための適切な操作を瞬時に判断してクルマの運転を自動で行います。

建物の外観診断

建物の外観診断にも、物体検知の技術は活用されています。

従来、建物の外観劣化診断は、作業員の経験や主観による判断に基づいて行われていました。しかし、近年では画像データを用いて自動で判定する手法が構築されています。

学習データと検証データの2つのデータを使って、画像データを劣化度ごとに分類したあと、学習データとの正誤率を確認して精度を評価します。そうすることで外観劣化診断を自動化でき、人的コストの削減や診断結果の標準化が可能になりました。

防犯や監視用途での活用

防犯や監視の用途にも物体検知が活用されています。

従来の監視カメラは、撮影シーンを固定して、何らかの変化があった際に異常として捉えます。物体検知を搭載した監視カメラもその点は同じですが、映像から侵入者の特定や不審物の置き去りを検知できるだけでなく、検出した物体を追跡して不審な動きを解析することも可能です。

ほかにも、店内における顧客の数や動向、走行する車の台数など、リアルタイムにカウントできるほか、最近では新型コロナウイルス感染の拡大防止のためにソーシャルディスタンスを確保する目的での活用なども見込まれています。

医療分野での活用

医療分野では、内視鏡やエコー写真といった人体内部の画像を対象に検知が行われます。

従来は医師の目視に頼ってきたことから、例えば微細な初期のがん細胞などは発見が難しいとされていました。しかし、物体検出の技術を活用することでがん細胞の早期発見だけでなく、出血や腫瘍、炎症などを見つけることもできます。

医療現場での物体検知技術の活用によって、診断の精度向上や迅速化、医療の質の向上を図ることができるのです。

物体検知で気をつけたいこと

1.被写体の構図を考える

下図5はジャングルにいる猿の画像にさまざま物体の画像を合成しています。これらの絵では、猿にバイクや自転車、ギターの画像を重ねることで、AIが誤った判断してしまいました。バイクの画像を重ねた左側の画像では人間と誤認しました。中央の画像では自転車の左右に広がるハンドルを羽と認識して鳥と判断し、右側の画像でもギターをその形状から鳥と判断してしまっているようです。

なぜこのようなことが起こり得るのでしょうか。

AIでは物体の輪郭や内部、そして背景を総合的に判断しています。自転車やバイク、ギターと一緒に映るのは猿より人間である場合が多く、ジャングルでは自転車のハンドルやギターより鳥があることのほうが多いので、そういった情報を加味した結果、人間や鳥であると誤検知したものと考えられます。

図6画像を重ねると誤検知することがある[1]図 6:画像を重ねると誤検知することがある[1]
画像元:Visual Concepts and Compositional Voting

物体検知は、事前に覚え込ませた特徴を使って画像の中から物体を見つけ出しているため、この例のように、画像を重ねたり、背景を変えたりすると誤検知しやすくなります。実際の業務で利用する場合、可能であればできる限り背景は変わらないようにして、カメラと撮影したい物体の間にモノがないように撮像すると検知精度は高くなると考えられます。

2.必要十分(必要最低限)の解像度に抑える

実際に物体検知をビジネスシーンで利用する場合、何か制限はあるのでしょうか。

近年のカメラ技術の進化により撮影可能な解像度はどんどん向上しています。一方で、画像の解像度が大きくなればなるほど、それを処理する負荷も高くなり、処理にかかる時間も大幅に増えていきます。逆に、解像度が低すぎると対象となるモノの特徴が抽出できず、検知精度が下がってしまいます。

そこで、画像を分割あるいは圧縮して画像のサイズを小さくする、色情報が必要ないのであればグレースケールのカメラにするなど、特徴を抽出するのに最低限必要な解像度でデータ量を極力抑えるといった工夫をしたうえで、適切な解像度のカメラを選択する必要があります。

また、物体検知においては、すべてのバウンディングボックスが各カテゴリに属する確率、あるいはいずれにも属さない確率が求められます。例えば犬、猫、猿を検知するモデルである場合は、バウンディングボックス1に犬が映っている確率は45%、猫が映っている確率は30%、猿が映っている確率は20%、いずれのカテゴリにも属さない確率が5%といったイメージです。

見つけ出すモノの数、分類したいカテゴリの数によって検知する結果がどんどん増えていくことになるので、分類したいカテゴリ数や検知する物体の最大数をあまり多くしてしまうと結果が出るまでに時間がかかったり、精度が下がってしまいます。そのため、必要最低限のカテゴリのみに絞る、撮像を工夫して画像内に映る物体数を減らすなどの工夫が必要になります。

物体検知の最新研究

物体検知は、以前はパターンマッチングを行っていました。今回ご紹介した手法では物体検知を①領域提案、②画像分類の2つのステージで行い、画像分類にディープラーニングを用いたことで今までの手法に圧倒的な精度の差をつけました。

一般的に画像分類のような畳み込みを伴う手法は時間がかかります。特に多くのバウンディングボックスに対して画像分類を行うには、非常に長い時間がかかってしまうのが難点でした。そのため、物体の写る領域とそこに映るモノの種類を同時に推論することで処理にかかる時間を減らす研究も出てきました。

物体検知は現在も精力的に研究が続けられている分野であり、2015年のFast-RCNNではmAP 35.9%でしたが、2020年にはEfficientDet-D7xという手法によりmAP74.3%を記録するなど非常に目覚ましい発展を遂げています。

これからもAIによる物体検知の技術は日々進歩していくものと考えられます。

まとめ

物体検知における手法の進化は著しく、DETRのようにごく最近になって登場したものもあります。

ひと括りにディープラーニングといっても多くの種類があり、ビジネスシーンでも広く普及しています。特に導入が進んでいるのが製造現場の画像認識システムであり、後継者不足や人手不足、品質のバラつきといった従来の課題は解消されつつあります。

画像認識システムをビジネスに活用する方法をまとめた資料をご用意していますので、ぜひあわせてご覧ください。

外観検査AI化 始め方ガイド ~生産現場の作業効率を大幅改善するAI活用のポイントを徹底解説~

CTA

RELATED POST関連記事


RECENT POST「AIの技術」の最新記事


AIの技術

AI(ディープラーニング)による画像分類とその活用法【初級者向け】

AIの技術

画像認識AIをビジネスに活用するために押さえるべき基礎知識【中級者向け】

AIの技術

AI(ディープラーニング)による画像分類とその活用法【中級者向け】

AIの技術

画像認識とは?機械学習による発展の歴史と実世界での活用シーンを紹介

物体検知(物体検出)とは?仕組みや活用事例を徹底解説