データ内のパターンを認識するための最良のアプローチは何ですか?また、トピックについてさらに学ぶための最良の方法は何ですか?

StackOverflow https://stackoverflow.com/questions/1441319

質問

私が協力している開発者は、舗装の画像を分析して舗装の亀裂を見つけるプログラムを開発しています。彼のプログラムが発見したすべての亀裂について、ファイルにエントリが生成され、そのピクセルがその特定の亀裂を構成していることがわかります。ただし、彼のソフトウェアには2つの問題があります。

1)いくつかの誤検知が発生します

2)クラックを見つけた場合、彼はその小さなセクションのみを見つけ、それらのセクションを別々のクラックとして示します。

私の仕事は、このデータを読み取って分析し、誤検知と実際のクラックの違いを伝えるソフトウェアを作成することです。また、亀裂の小さなセクションをすべて1つにまとめる方法を決定する必要があります。

データをフィルタリングして偽陽性を排除するさまざまな方法を試しましたが、クラックをグループ化するために、限られた範囲でニューラルネットワークを使用してきました。エラーがあることは理解していますが、今のところ、エラーが多すぎます。私のタスクを達成するため、またはそれについてさらに学ぶための最良の方法について、AI以外の専門家に洞察力がある人はいますか?どんな種類の本を読むべきですか、またはどんな種類のクラスを取るべきですか?

編集私の質問は、同僚のデータのパターンに気付き、それらのパターンを実際の亀裂として識別する方法についてです。私が関係しているのは高レベルのロジックであり、低レベルのロジックではありません。

編集実際には、作業中のデータを正確に表現するにはAT LEAST 20サンプル画像が必要です。それは大きく異なります。しかし、サンプルこちらこちら、およびこちら。これらの画像は、同僚のプロセスですでに処理されています。赤、青、緑のデータは分類する必要があります(赤は暗いひび、青は軽いひび、緑は広いひび割れを意味します)。

役に立ちましたか?

解決

画像処理に関する有用なコメントに加えて、クラスタリングを扱っているようにも聞こえます問題

クラスタリングアルゴリズムは、機械学習の文献、特に教師なし学習。名前が示すように、基本的な考え方は、いくつかの大きなデータセット内のデータポイントの自然なクラスターを識別するしようとすることです。

たとえば、以下の図は、クラスタリングアルゴリズムが多数のポイントを7つのクラスター(円と色で表示)にグループ化する方法を示しています。

 k-means
(ソース: natekohl.net

あなたの場合、クラスタリングアルゴリズムは、いくつかの停止基準が満たされるまで、小さな亀裂を繰り返し結合して大きな亀裂を形成しようとします。最終結果は、結合された亀裂の小さなセットになります。もちろん、亀裂は2次元の点とは少し異なります。ここでクラスタリングアルゴリズムを機能させるための秘partの一部は、2つの亀裂間の有用な距離メトリックを定義することです。

一般的なクラスタリングアルゴリズムには、 k-meansクラスタリングデモ)および階層的クラスタリング。また、2番目のリンクには、k-meansの仕組みを段階的に説明しています。

編集:フィリップスの一部のエンジニアによるこの論文は、あなたがやろうとしていることに関連性があります:

  • Chenn-Jung Huang、Chua-Chin Wang、Chi-Feng Wu、「ウェーハ欠陥クラスター識別のための画像処理技術」、 IEEE Design and Test of Computers、vol。 19、いいえ。 2、pp。44-48、2002年3月/ 4月。

シリコンウェーハ上の欠陥の目視検査を行っており、メディアンフィルター最近隣クラスタリングアルゴリズムを使用して欠陥を検出する前にノイズを除去します。

参考になる関連論文/書籍をいくつか紹介します。

  • M。 TaubenlattおよびJ. Batchelder、“ クラスター環境用の空間フィルタリングを使用したパターン付きウェーハ検査、” Applied Optics、vol。 31、いいえ。 17、1992年6月、pp。3354-3362。
  • F.-L。チェンとS.-F。 Liu、“ 半導体製造における欠陥空間パターンを認識するためのニューラルネットワークアプローチ。” IEEE Trans。半導体製造、vol。 13、いいえ。 3、2000年8月、366-373ページ。
  • G。 Earl、R。Johnsonbaugh、S。Jost、パターン認識と画像解析 Prentice Hall、アッパーサドルリバー、ニュージャージー州、1996。

他のヒント

あなたの問題は、画像分類の非常に広範な分野に属します。これらのタイプの問題は悪名高く困難な場合があり、結局のところ、それらを解決することは芸術です。問題のあるドメインについてのあらゆる知識を活用して、問題のドメインを扱いやすくする必要があります。

1つの基本的な問題は正規化です。同様に分類されたオブジェクトを、データ表現ができるだけ類似するようにしたい場合。たとえば、亀裂の画像がある場合、すべての画像の向きは同じですか?そうでない場合、画像を回転させると分類に役立つ場合があります。同様に、スケーリングと翻訳( this を参照)

また、トレーニングセットから無関係なデータを可能な限り削除する必要があります。画像を直接操作するのではなく、エッジ抽出を使用できます(たとえば、Cannyエッジ検出)。これにより、画像からすべての「ノイズ」が除去され、エッジのみが残ります。演習では、どのエッジが亀裂で、どのエッジが自然舗装であるかを特定します。

ソリューションを迅速に追跡したい場合は、まずで運を試すことをお勧めしますConvolutional Neural Net 。最小限の前処理と正規化で、かなり良好な画像分類を実行できます。手書き認識でよく知られているので、あなたがしていることにちょうどいいかもしれません。

あなたが問題を解決するために選んだ方法に少し混乱しています。同僚が完全なクラックを特定できず、それが仕様である場合、それが問題になります。しかし、すべての亀裂をつなぎ合わせて、彼の誤検知を避けることができたら、彼の仕事をしただけではありませんか?

それはともかく、これは分類の問題ではなく、エッジ検出の問題だと思います。エッジ検出器が良好であれば、問題は解決します。

まだ分類を設定している場合は、誤検知と実際のクラックを区別するものを定量化する方法が必要なので、既知の回答を含むトレーニングセットが必要になります。ただし、亀裂が個々の舗装スラブに固有であるため、分類器が亀裂を接続できる可能性は低いと考えています。

エッジ検出の領域に飛び込んで共同開発者のクラック検出にパッチを当て、彼の誤検知を取り除くと、ire_and_cursesに同意する必要があります。彼の仕事をしているようです。彼のソフトウェアが検出しなかったものにパッチを当て、彼があなたに与えたものに関する彼の偽陽性を取り除くことができるなら。完全な画像に対してこれを行うことができるようです。

仕様がクラックを検出するためのものであり、あなたがそれらを分類する場合、エッジ検出を行い、偽陽性を除去することが彼の仕事です。そして、彼があなたに与えたものを取って、それがどんなタイプのクラックであるかを分類するあなたの仕事。これを行うためにエッジ検出を行う必要がある場合、共同開発者を仕事から遠ざけることには程遠いようです。

ここには非常に良い答えがあります。ただし、問題を解決できない場合は、Mechanical Turkを検討してください。場合によっては、頑固な問題に対して非常に費用対効果が高い場合があります。このようなあらゆる種類のことでそれを使用する人々を知っています(人間は簡単にできるが、コーディングが難しいことが証明されています)。

https://www.mturk.com/mturk/welcome

私は決して専門家ではありませんが、 Haar Cascades を見てみてください。 OpenCVツールキットを試してみることもできます。これら2つのことを組み合わせて、顔検出やその他のオブジェクト検出タスクを実行します。

「トレーニング」を行う必要がある場合があります。舗装のひび割れに対するHaar Cascadeを開発する。

  

データ内のパターンを認識するための最良のアプローチは何ですか?また、このトピックについてさらに学ぶための最良の方法は何ですか?

最良のアプローチは、パターン認識と機械学習を研究することです。 Dudaのパターン分類から始めて、Bishopのパターン認識と機械学習。素材が沈むにはしばらく時間がかかりますが、パターン認識の基本的な感覚と分類問題の主要なアプローチを理解することで、方向性がわかるはずです。私はここに座ってデータについていくつかの仮定を立てることができますが、正直なところ、誰よりもデータセットを扱ってきたので、おそらくデータセットについて最高のアイデアを持っているでしょう。たとえば、サポートベクターマシンおよびブースティング

編集:ブースティングの興味深い用途は、リアルタイムの顔検出です。 Viola / Jonesの単純なブーストカスケードを使用した高速オブジェクト検出を参照してください。 機能(pdf)。また、サンプル画像を見て、エッジ検出を少し改善してみてください。ガウスで画像を平滑化し、より積極的なエッジ検出を実行すると、小さなクラックの検出が増加する可能性があります。

画像処理の教科書を取り上げて、そのテーマについて読むことをお勧めします。 特に、形態 操作 like Dilation および侵食‎ は、エッジ検出器。ネット上の多くの資料...

これは画像処理の問題です。このテーマについて書かれた本はたくさんありますが、これらの本の多くの資料は、このような行検出の問題を超えています。以下は、この問題に対して機能する1つの手法の概要です。

  1. 亀裂を見つけると、亀裂を構成するピクセルがいくつか見つかります。これには、エッジ検出フィルターまたは他のエッジ検出方法を使用できます。

  2. クラック内の1つの(任意の)ピクセルから開始して、「フォロー」亀裂から複数ポイントの線を作成します-線を構成するポイントを保存します。中間点が直線に近い場合、いくつかの中間点を削除できます。すべてのクラックピクセルでこれを行います。星型の亀裂がある場合は、心配しないでください。 1つ(または2つ)の方向にピクセルをたどって線を作り、クラックピクセルのセットからこれらのピクセルを削除します。星の他の脚は、別の行として認識されます(今のところ)。

  3. 手順1の前に、クラックピクセルを細くすることがあります。つまり、ピクセルの隣接を確認し、多すぎる場合はそのピクセルを無視します。 (これは単純化です。このためのアルゴリズムをいくつか見つけることができます。)別の前処理ステップは、細すぎる、または2つのかすかなラインをすべて削除することです。これは誤検知に役立つ場合があります。

  4. これで、多数の短いマルチポイント行ができました。各行のエンドポイントについて、最も近い行を見つけます。ラインが許容範囲内にある場合、「接続」行-それらをリンクするか、同じ構造または配列に追加します。この方法で、コンクリートの同じ亀裂になる可能性が高い、近い亀裂を接続できます。

良好なパフォーマンスを得るには、アルゴリズムに関係なく、パラメーター調整が必要になるようです。強度のしきい値、最小および最大の厚さなどを簡単に変更できるように書きます。

使用環境によっては、ユーザーが判断して疑わしいケースを判断できるようにするか、ユーザーがすべてのクラックを確認し、クリックして検出されたクラックを結合、分割、または削除できるようにすることができます。

非常に良い答えが得られました。 @ネイト、および提案されたすべてのリンクと本は価値があります。しかし、私が私ののトップピックになる本を誰も提案していないことに驚いています-O'Reillyの Collective Intelligenceのプログラミング。タイトルはあなたの質問とは無関係に見えるかもしれませんが、私を信じて、内容は です。データマイニングと「機械学習」の最も実用的でプログラマー向けの記事の1つです。私が今まで見てきました。試してみてください!-)

これは、岩盤にジョイントがあり、これらのジョイントを方向、長さ、およびその他のプロパティによって「セット」にグループ化する必要があるロックメカニクスの問題のように聞こえます。この例では、うまく機能する方法の1つにクラスタリングがありますが、従来のK-meansには、遺伝的アルゴリズムを使用して対話型ソリューションを実行したいくつかの問題があるようです。

この例では、まったく同じように動作しない可能性があります。この場合、縦方向、横方向などで始まるグループを作成し、各グループの動作を正確に定義する必要があると思われます。それは分類です。

その後、各亀裂に対して、作成した分類に基づいてランダムな亀裂または亀裂のパターンを生成します。次に、最小二乗アプローチのようなものを使用して、チェックしている亀裂が、発生したランダムな亀裂/亀裂にどれだけ近いかを確認できます。モンテカルロ分析の方法でこの分析を何度も繰り返して、ランダムに生成された亀裂のうち、どれがチェック対象の亀裂に最も適合するかを特定できます。

誤検知に対処するには、異なるタイプの誤検知のそれぞれにパターンを作成する必要があります。つまり、縁石のエッジは直線です。その後、分析する各クラックの最も可能性の高いグループである分析ピッキングを実行できます。

最後に、より良い結果を得るには、さまざまな亀裂タイプの定義を「微調整」する必要があります。これは、さまざまな亀裂タイプの定義方法に応じて、自動化アプローチまたは手動アプローチのいずれかを使用できると思います。

このような問題を抱えているときに役立つことがあるもう1つの変更は、ランダムグループを作成することです。ランダムグループの感度、つまり、クラックがランダムグループに含まれる可能性を調整することで、モデルの感度を、実際にはどこにも収まらない複雑なパターンに調整できる場合があります。

幸運を祈ります。本当に挑戦しているようです。

データマイニング、特にパターンマイニング

  

データマイニングとは、データからパターンを抽出するプロセスです。より多くのデータが収集されるにつれて、3年ごとにデータ量が倍増するため、データマイニングはこれらのデータを情報。一般に、マーケティング、監視、不正検出、科学的発見など、幅広いプロファイリングのプラクティスで使用されます。

このテーマに関する良い本は、データマイニング:実用的な機械学習ツールとテクニック

 Amazonでデータマイニングを購入できます。
(source: waikato.ac.nz ]( http://www.amazon.com/Data-Mining -Ian-H-Witten / dp / 3446215336 " ISBN 0-12-088407-0")

基本的には、統計ツールと方法論をデータセットに適用する必要があります。最も使用される比較方法は、スチューデントの t検定カイ2乗検定であり、2つの無関係な変数がある程度の信頼性に関連しているかどうかを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top