従来のCVテンプレートマッチングよりも目視検査タスクに畳み込みNNを使用する理由


9

私たちが取り組んでいるプロジェクトに基づいて興味深いディスカッションがありました。なぜテンプレートマッチングアルゴリズムに対してCNN目視検査システムを使用するのですか?

背景:特定のタイプのオブジェクトが「壊れている」/欠陥があるかどうか(この場合はPCB回路基板)を検出する単純なCNNビジョンシステム(ウェブカメラ+ラップトップ)のデモを示しました。私のCNNモデルは、静的な背景に適切な、壊れた回路基板(それぞれ約100枚の画像)の例を示していました。私たちのモデルは、事前に訓練されたVGG16(imagenet上)の最初のいくつかのconv / maxpoolレイヤーを使用し、次にいくつかの密集度を持ついくつかのさらにトレーニング可能なconvs / poolsを追加し、分類のためのdim-3 one hotエンコードされたベクトル化された出力に導きました:(is_empty、has_good_product、has_defective_product)。

モデルはかなり簡単にトレーニングされ、問題なく99%の検証に達しました。また、データセットが小さいことがわかっているため、さまざまなデータ拡張を使用してトレーニングを行いました。実際には、10回のうち約9回動作しましたが、同じ回路基板のいくつかのランダムな変換/回転により、逆のクラスに配置される場合があります。おそらく、より積極的なデータ拡張が役立つでしょう。とにかく、プロトタイプのコンセプトプロジェクトについては私たちは幸せでした。

今、私たちは別のエンジニアと彼の同僚に提示していました、そして彼はNNがこれには過剰であるという議論を持ち出しました、ただテンプレートマッチングを使うべきです、なぜCNNをしたいのでしょうか?

私たちのアプローチが特定のアプリケーション(たとえば、検査する他の部品)でより優れている理由について、良い答えはありませんでした。私たちが提起したいくつかのポイント:

1)不変性に対してよりロバスト(たとえば、データ拡張を介して)

2)システムを改善するためにオンライン学習を行うことができます(たとえば、人間はどの例が間違っているかをソフトウェアに伝えることができます)

3)従来のコンピュータービジョンアルゴリズムのようにしきい値を設定する必要はありません。皆さんはどう思いますか、このタイプの検査タスクのためのCNNシステムにはもっと利点がありますか?どのような場合に、テンプレートマッチングよりも優れていますか?

深いNNが仕事の技術になる可能性がある場合のいくつかのランダムなアイデア:入力の一部として3D深度センシングを必要とするシステム、または変形/ストレッチ/押しつぶすことができるが、依然として「良好」である任意のタイプのオブジェクト不良品ではない(例:ぬいぐるみ、ワイヤーなど)。あなたの考えを聞いて興味があります:)


私はディープラーニングアプローチが好きで、それらが未来であることを知っています。ただし、正確な回転と正確なスケールなど、高精度の結果が必要な場合でも、テンプレートマッチングの方がより良い結果が得られます。0.1度/スケールファクタエラー以下について話している。ディープラーニングは、おそらく「最良の」結果である可能性を「確率」で示し続けるので、高精度が必要な場合は十分ではありません。ディープラーニングを使用した高精度テンプレートマッチング。私は意見や提案を
パブロ・ゴンザレス

回答:


3

アプリケーションの従来のCVメソッドを提案した問題のエンジニアは、単に習慣からそうしました。テンプレートマッチングの使用は非常に古く、パフォーマンスが非常に低いことが示されています。ただし、データセットのサイズによっては、CNNはやりすぎだと思います。

テンプレートマッチングはどのように機能しますか?

テンプレートマッチングはテンプレートとの一致率を提供するウィンドウを画像全体にスライドさせます。一致率が特定の事前定義されたしきい値を超えている場合、一致と見なされます。たとえば、犬の画像があり、その画像に犬がいるかどうかを確認したい場合は、犬のテンプレートを画像領域全体に沿ってスライドさせ、一致率が十分に大きいかどうかを確認します。テンプレートが画像を完全オーバーラップする必要があるため、これによりパフォーマンスが非常に低下する可能性があります。実際にその可能性はどのくらいですか?それほど高くない。

唯一のテンプレート照合は、探しているものを正確に理解していて、特定のクラスのすべての例でほぼ同じように表示されると確信している場合に十分な手法です。

代わりに機械学習を使用する理由

機械学習技術は厳格ではありません。stmaxが言ったこととは異なり、CNNはデータセットを非常によく一般化できます。それが彼らがとても強力な理由です。犬の例を使用すると、CNNは、犬として何が構成されているかを理解するために、存在するすべての犬の写真を見る必要はありません。あなたはそれをグーグル検索からの多分1000枚の画像を示すことができ、それからアルゴリズムはあなたの犬が実際に犬であることを検出することができます。機械学習アルゴリズムが非常に一般化しているという事実が、それらがすべての古代のCV技術を置き換えた理由です。ここで問題は、CNNをトレーニングするために必要なデータの量です。それらは非常にデータ集約的です。

堅牢なCNNをトレーニングするには100データポイントで十分だとは思いません。バイアスを制限するためにモデルは非常に複雑であるため、例の数を増やす必要があります。私は通常、深いモデルのすべての機能について100の例を、浅いモデルのすべての機能について10の例を提案します。それは本当にあなたの特徴空間に依存します。

私が提案すること。

あなたが本当にやっていることは異常検出です。あなたは他の点では良い形のPCBの例がたくさんあります。壊れているものを検出したい。したがって、代わりにいくつかの異常検出方法を試みます。これらは実装がはるかに簡単で、特に偏ったデータセットで浅いモデルを使用して良好な結果を得ることができます(1つのクラスが過剰に表現されています)。


包括的なコメントをありがとう!異常検出を説明する(そしておそらくデモを行う)プロジェクトまたは論文の例を提供できますか?乾杯
JDS

1
異常検出の文献レビューV. Chandola、A。Banerjee、V。Kumar、「異常検出:調査」、ACM Computing Surveys、vol。41、いいえ。3、p。2009
。– JahKnows 2017年

5

答えはタスクによって異なります。テンプレートマッチングは一部のタスクでは機能しますが、すべてでは機能しません。CNNは、テンプレートのいずれにも一致しない目に見えない入力に一般化する機能を持っている可能性があるため、より一般化する可能性があります。

しかし、CNNがテンプレートマッチングを上回るかどうかは、特定のタスクと、具体的に何を達成しようとしているのかによって異なります。これは経験的な科学です。最終的に、どちらがより効果的に機能するかを見つける方法は、両方を試すか、またはそれらを試した他の人から学ぶことです(たとえば、文献を読むことによって)。実世界のデータの経験的評価の代わりになる理論や分類法が見つかるとは思いません。


5

NN(および他の分類方法)で遭遇する可能性がある問題の1つは、特定の欠陥しか表示していないため、将来出現する可能性のある完全に新しい/まだ目に見えない欠陥に対応する方法がわからない可能性があることです。

あなたはNNに「欠陥のないPCBのように見えないものはすべて欠陥のあるPCBである」と学習させたいと思います。しかし、「欠陥のあるPCBのように見えないものはすべて、欠陥のないPCBである」と学習したらどうなるでしょうか。

小さな白い点(または別の小さな摂動)をランダムな場所に追加して、欠陥のないPCBの一部の画像を変更し、ニューラルネットワークでこれらの変更された画像を分類することができます。それは間違いなくそれらを欠陥品として分類するべきですよね?しかし、これまでにそのような欠陥を見たことがないため、おそらく一部(またはかなり多く)を見逃すでしょう。

完全に新しい欠陥を検出するには、異常検出メソッド/ 1つのクラス分類子の方が信頼性が高いかもしれません。

DWが言ったように、両方の方法を試して、どちらがよりうまく機能するかを見つける必要があるだけです。完全に新しい欠陥を含む本当に良いテストセットがあることを確認してください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.