テクニック

AIには適切な教師画像と正しいアノテーションを

こんにちは、南野です。40℃超えの日が続いていますね。先祖が南国で寒いの苦手な私でもこの暑さはさすがにつらいと感じます。この夏は無理せず安全に乗り切りましょう。

さて、今回は「教師画像」と「アノテーション」について書きたいと思います。弊社の営業技術がお客様と話をしている時にほぼ毎回説明しているものですが、AIの性能を大きく左右する重要な要素にもかかわらずネットを調べても話が一般的すぎて実用上の参考になりにくいものが多く、もう少し実用的・具体的・現実的な解説ができればきっと皆さんの参考になるだろうと考えたのが今回のブログの背景です。

いくら良いAIでも間違ったことを教えられたら間違った結果を出す

はい。人間と一緒ですね。いくら頭の良い子供でも、猫を犬だと教わったら混乱して犬と猫の区別ができない子になってしまうのと同じです。AIは非常に柔軟な判定ができますが、教師データの中に間違った情報が入っていると間違った結果を出すことになってしまいます。教師データは2つの要素で構成されます。一つは「教師画像」もう一つは教師画像に付けられた「アノテーション」です。アノテーションという言葉になじみがないかもしれません。アノテーションとは「この画像のこの部分はネジです」「この部分はキズです」といった形で、画像内の場所と名前がセットになったデータのことを言います。アノテーションは通常、人が行います。下の図はネジが不足していないかカウントするためにネジにアノテーションを行った例です。教師画像の中の8カ所に「ネジ」という名前(ラベルともいいます)のアノテーションを行っています。もしキズがあればその部分を「キズ」という別の名前でアノテーションを行います。

ネジのアノテーション

教師画像について

教師画像は適切なバリエーションのあるものを用意する

まず、教師データの一つ目の要素である「教師画像」について解説します。教師画像の質はAIの検出や判定に大きな影響を与えます。そのため、適切な教師画像で学習させる必要があります。では、適切な画像とはどういうものでしょうか?大雑把に言うと、適切な画像というのは実際に起きうる明るさや位置、姿勢(角度)の変化を適切に含んだ画像と言えます。例えば、朝と夜で周囲の明るさが違うのであれば朝と夜それぞれで明るさの違う教師画像を撮影します。また、コンベアを流れてくる部品が90度、180度と回転するのであればそのように回転した状態の教師画像を用意することになります。一方で、部品が回転することがなく、傾いたとしても±5度程度であればそのような限られたバリエーションの教師画像にしたほうが精度が上がります。(この後説明しますが、オーグメンテーション(水増し)という方法で明るさを変化させたり回転させたりした画像を疑似的に作り出すこともできます。)

明るさが変化する場合はその変化の範囲を含む教師画像を用意する
少し回転する可能性があればその変化をカバーする教師画像を用意
360度回転する場合は様々な姿勢の教師画像を用意

教師画像のバリエーションにない画像を判定させたらどうなるか

お客様の中には、部品の品種判別のためにAIを使って頂いているケースも多数あります。その中で「青い部品なのに赤色の部品と判定された」という報告を頂いたことがあります。詳細を確認させて頂いたところ、誤判定された画像は極端に暗く、青い部品であるにも関わらず紺色から黒に近い画像になっていました。一方で教師画像には青色から明るい水色しか与えられていませんでした。AIは「与えられた教師画像の中で」最適な判定をしようと学習するため、それと極端に異なる画像を判定させようとすると誤った判定結果となることがあります。そのため、現実のバリエーションを含んだ教師画像を用意することは非常に重要です。教師画像にないバリエーションがあることが後から分かった場合、その画像を含めて再度学習させることで新しいバリエーションにも対応できるようになります。

アノテーションについて

ここまでは教師画像そのものの質やバリエーションが大切であることを解説しました。ここからは教師画像に対して行う「アノテーション」について、弊社の営業技術担当から聞いた「よくある、でもやってはいけない」例を挙げながら解説したいと思います。

やってはいけないアノテーション①:「OK」「NG」しかない

金属のダコンなど、部品上の欠陥を検出したいときにありがちな「やってはいけないアノテーション」です。設定する人からすればダコン(赤丸)がある部品は部品としてNGなので部品全体をNGとして囲みたくなります。しかしこのようなアノテーションでは設定者がどこに着目してNGとしているかをAIが理解することができません

悪い例:NGの個所ではなく部品全体をNGとアノテーションしている

例えば上記部品の例では、下図の四角形のように打痕の有無よりももっと大きな違いがあります。設定者がダコンに注目していても、それを適切にAIに伝えなければAIは理解できません。AIは囲まれた画像部分の中で最も分かりやすい特徴(ここでは黄色い四角で囲んだネジ穴)を元に判別します。つまり、打痕の有無に関係なく、ねじ穴が見えたらNG、見えなければOKと判定するようになってしまいます。

AIはダコンよりもさらに特徴的な部分を自動的に抽出して判別の根拠にしてしまうことがある

ダコンの有無を基準に判定させたい場合は、下図のようにダコンだけを囲み、OK/NGではなく「ダコン」というアノテーションを行います。これにより、「ネジ穴は判定の基準ではなく、ダコンのパターンが判定の基準」ということをAIが理解することができるようになります。教師画像の解説でも説明しましたが、ダコンもなるべく多くのバリエーションをもって学習させた方が検出の精度は高くなります。

ダコンが問題ならばダコンだけを囲み、「ダコン」という名前を付ける

あとは、「ダコンが一つでもあれば不合格とする」という設定にすることでダコンがある部品をNGと判定することができます。EasyInspector2 / DeepSky では、検出されたダコンなどの個数の上限や下限を決め、その範囲から外れた場合にNGとする設定ができます。一つでもダコンがあればNGとするには、この上限を「0」に設定します。OK/NGとアノテーションするのではなく、欠陥名や物体名でアノテーションを行い、その数でOK/NGの判定を行うことが基本となります。

検出したもの上下限設定(EasyInspector2 / DeepSky)

やってはいけないアノテーション②:アノテーションもれ

これは一枚の画像の中で計数すべき対象が多かったり、一枚の画像の中に欠陥がたくさんある場合に起きがちな「やってはいけない」です。AIはアノテーションされていないものは「見つけてはいけないもの」と解釈します。そのため、見つけたい物には全てアノテーションを行う必要があります。

アノテーション前の状態
良い例:全てに漏れなくアノテーションされている

アノテーション漏れの例

下記のように一部アノテーションを行っていない対象物がある場合、AIは「同じ見た目のものなのに、こちらは見つけなければならない、こちらは見つけてはならない」と解釈してしまい、学習が混乱します。そのため多くの場合、全ての対象物を見つけることができなくなります。

悪い例:リング(右上)のアノテーションを忘れている
悪い例:一部しかアノテーションしていない

その他、「ネジ」を「ナット」とアノテーションするなど、間違ったアノテーションを行うとネジとナットを逆に判別したりする可能性があるので注意が必要です。

やってはいけないアノテーション③:名前を分けすぎる

最後に、営業技術からよく聞く正しくないアノテーションの中に、「すべての欠陥に異なる名前(ラベル)を付ける」というものがあります。AIは同じ名前のものは同じものと判定されるように、異なる名前のものは異なるものと判定されるように学習します。言い換えると、類似したものに異なる名前を付けてしまうと何とかそれらを分類できるように頑張って学習し、その結果うまく判別できなくなることがあります。例えば下図のようにすべてのダコンに別々の名前(ダコン1、ダコン2、ダコン3)を付けてしまうと、AIはそのダコンの方向やパターンの違いによってそれぞれを無理やり区別しようとします。

ダコンに異なる名前を付けた場合、無理に区別しようとして正しい検出ができなくなることがある

一方で、方向やパターンが異なるダコンすべてに同じ名前を付けた場合、AIはこれらに共通の特徴(方向に関係なく金属の肌に黒い模様がついているなど)を自動的に抽出し、ダコンをダコンとして検出できるように学習します。

異なるパターンのダコンでもAIはそれらの共通点を見つけて学習することができる。

このように、アノテーション次第で検出の精度が大きく変わることがあります。AIの学習の特徴を理解し、AIが学習しやすいアノテーションを行うことでより高精度な検出が可能になります。

アノテーションで便利な機能

ここからはより少ない労力でより質の高い学習データを作る方法について、EasyInspector2 / DeepSkyを例に紹介いたします。

オーグメンテーション(データ拡張・水増し)機能

オーグメンテーション機能とは、教師画像にバリエーションを持たせるために、既存の画像に対して回転、反転、ノイズ付加、輝度変更などを行う機能です。アノテーション済みの画像であればアノテーション情報も自動的に付加されるため、10枚アノテーションを行って100枚の教師データを自動的に作ることも可能です。

例えば、「左右反転」「上下反転」にチェックを入れて「拡張実行」をクリックすると下図のような教師画像とアノテーションが自動生成されます。画像の反転に伴ってアノテーション位置も自動的に追随します。

元のアノテーション
左右反転
上下反転

オーグメンテーションを行う際の注意点としては、本来起きうるバリエーションを超えたバリエーション(ありえないくらい明るい、暗いなど)の教師画像を作成した場合は検出精度が低下する可能性があること、左右対称の物体の左右(LR)を判別したいのに左右反転のオーグメンテーションを行うと左右の区別がつかなくなってしまうことです。あくまでも現実のバリエーションの範囲や判定の目的に沿ったオーグメンテーションを行う必要があります。

オートアノテーション機能

オートアノテーション機能とは、これまでの学習データに基づいて未知の教師画像に対して自動的にアノテーションを行う機能です。EasyInspector2 / DeepSkyでは「Box自動生成」のボタンを押すことにより、AIが適切と判断した個所に自動的にアノテーションのBoxとラベル(「ダコン」などの名前)を付けます。これによりアノテーションが半自動化され、設定者は自動生成されたアノテーションの確認が主な作業になるためミスを大幅に低減することができます。

アノテーションがない教師画像
Box自動生成ボタンをクリック
アノテーションが自動的に生成

オートアノテーション機能を使うには最初10-20枚程度の画像に対してアノテーションを手動で行い、学習を実行する必要があります。学習が完了すると自動Box生成ボタンによりオートアノテーション機能を使うことができるようになります。

Box無し教師とは

EasyInspector2 / DeepSkyには選択した画像に対して「Box無し教師」と「教師画像から除外」の設定を行うことができます。それぞれの違いは下記の通りです。

  • Box無し教師:教師データとして学習時に使用されます。ただし、Box(アノテーション)を持たない教師画像のため、「この画像の中に検出すべきものはない(この画像の中では何も検出してはならない)」という意味合いを持った教師データとなります。例えば部品のダコン有無を検査する設定の場合、良品(ダコンがない)の画像を教師データとして与えたい場合にBox無し教師に指定します。
  • 教師画像から除外:教師データとして使わない画像となります。ダコンかダコンでないか人が見ても判別が難しいダコン画像(判別が難しいダコンにあえてアノテーションを行うと過検出になったりすることがあります)や、その他の理由で教師画像として使わない方がよい画像は教師画像から除外します。

参考になるブログと動画

本稿では教師画像とアノテーションの重要性について解説しました。下記リンクはさらに精度の高い学習を行うために弊社の鈴木がアノテーションのコツや考え方をまとめたブログです。アノテーションについてより詳細に知りたい場合は参考にしてください。

また、計数アプリ「cazoeTell」でのアノテーションについて解説した動画も参考にしてください。アノテーションについて共通の考え方が理解できると思います。

関連記事

TOP