画像認識AIを活用した製造の現場最前線 ~物体検知編~【中級者向け】

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

画像認識AIシリーズ【中級者編】のVol. 4は「物体検知」のAIを作成する手順や活用法、注意点をお話ししたいと思います。

物体検知って何?

物体検知とは何でしょうか? ここでいう物体とは、画像の中に写った何らかのモノを示します。つまり、物体検知とは画像の中から何らかのモノを見つけ出す(検知)ことです。

人間は、見ている画像からモノの位置とそれが何であるかの判断を即座に行えますが、それをコンピュータで実現する方法が物体検知です。コンピュータにとって画像はピクセルの集まりで畳み込みやプーリングという手法により、範囲でそれぞれの特徴を捉えることはこちらですでにお話ししました。物体検知においては、特徴を捉えるのに加え映っている位置も必要になってきます。

物体検知モデルはどのように作るか?

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

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

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

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

     

    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. 自動運転
    近年話題の自動運転でもAIによる物体検知は非常に重要な技術です。まず、クルマに搭載されたカメラで周囲の状況を撮影し、その画像中に映る標識や障害物などの物体(や人)を認識します。標識の内容や障害物の状況、そしてそれらに対応すべき適切な操作を瞬時に判断しクルマの運転を自動で行います。
  2. 医療
    エコー写真や内視鏡などの人体内部の画像を使ってAIによる物体検知を行い、出血や腫瘍、炎症などを見つけることで病気の早期発見や診断を行うことができます。今まで医師の目に頼ってきた医療現場においても、物体検知技術を使うことで精度の向上や診断の迅速化、ひいては医療の質の向上を図ることができます。
  3. 異常検知
    工業や農業の現場において、製品の写真の中から異常である部分を見つけ出すことができます。これにより、製品の品質向上や検査工程の省力化を図り、今までベテラン作業員に頼り、マニュアル化が難しかったような勘と経験に基づく外観検査を代替させることもできます。

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

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

下図5はジャングルにいる猿の画像にいろんな物体の画像を合成しています。これらの絵では、猿にバイクや自転車、ギターの画像を重ねることで、AIが人間であると誤った判断してしまいました。また、真ん中の絵では自転車の左右に広がるハンドルを羽と認識して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による物体検知の技術は日に日に進歩していくものと考えられます。

 

新規CTA

新規CTA
新規CTA

RELATED POST関連記事


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


この記事が気に入ったらいいねしよう!