回答:
生産システムの多くのソリューションは、この回答で以下に説明するスライディングウィンドウをまだ使用していますが、コンピュータービジョンの分野は急速に変化しています。この分野における最近の進歩には、R-CNNおよびYOLOが含まれます。
オブジェクト分類子がすでにトレーニングされている場合に、画像内のオブジェクト一致を検出することは、通常、画像パッチをブルートフォーススキャンすることの問題です。
予想される最大のパッチサイズから始めます。たとえば、画像が1024 x 768であるが、常に道路の遠距離撮影である場合、車が画像内で80 x 80ピクセルを超えるとは思わないかもしれません。したがって、画像の1つのコーナーからピクセルの80x80ブロックを取得し、そのコーナーに車が存在する可能性を分類子に尋ねます。次に、次のパッチを適用します。おそらく20ピクセル移動します。
すべての可能な位置について繰り返し、車が含まれている可能性が最も高いパッチを決定します。
次に、ブロックサイズを減らし(おそらく60 x 60、一度に15ピクセルずつ移動)、同じ演習を繰り返します。目標の予想最小ブロックサイズに達するまで、これを繰り返します。
最終的には、画像内の領域のリストが表示され、それぞれに車が含まれている可能性があります。
両方の高い確率で重複するブロックは同じ車である可能性が高いので、ロジックはブロックをマージするためのしきい値を設定する必要があります。
通常のMLアプローチと同様に、最も正確な結果を得るには、正しいメタパラメータ(この場合はブロックサイズ、ステップサイズ、および領域のマージ/分割のルール)を試す必要があります。
アプリケーションを共有して、@ Neil_Slaterの回答を追加したいと思います。
私のアプリケーションでは、次のようにチェスの本からチェスの位置を自動的にロードできるモデルをトレーニングしたいと思います。
MINSTの数字をトレーニングするようなものだったので、それは難しい問題ではありませんでした。十分な数のサンプルを収集し、それらのサンプルにランダムにノイズを追加しました。私のモデルは2層の畳み込みディープラーニングでした。
チェス盤は常に正方形なので。私はOpenCVで利用可能な正方形検出を使用して、候補のリストを提供しています。小さすぎる、大きすぎる、64で割り切れない四角形はすべて破棄します(64の四角形があるため)。
次に、画像を次のようにトリミングします。
今、私はボードの各正方形をチェックする別の多層畳み込みネットワークを持っています。ストライドの長さは、イメージの次元を8で割ったものです(各次元には8つの正方形があるため)。パッチのサイズはストライドの長さと同じです。
2つの異なる分類子を組み合わせることができたので、パイプラインは機能しました。私は個人的には、2つの分類器をトレーニングする方を好みます。なぜなら、すべてを1つのモデルに入れるよりも、トレーニングと検証が簡単だからです。
画像の実行ごとに1台の車を検出できるモデルがあるか、車(または他のオブジェクト)を検出するために使用するツール、アルゴリズム、またはフレームワークを尋ねているだけなので、質問自体は完全に明確ではありません。画像で。
2番目のバリアントに答えると、オブジェクト検出用に開発されたアルゴリズムを使用する必要があります。これは、Haarカスケード(OpenCVに埋め込まれ、カスタムオブジェクト検出器をトレーニングする方法の明確なチュートリアル、たとえばバナナチュートリアル)またはCNNのいずれかです。個人的には、ニューラルネットワークを使用したオブジェクト検出の選択です。私はその実装での作業を楽しんでいます -シンプルで包括的なコードと素晴らしい結果。
両方のアプローチ(Haar CascadesとCNN)は基本的に、特定のオブジェクト(顔、バナナ、車、UFOなど)を表す相互に接続され、同じ場所に配置された形状のパターンを見つけ、これらのパターンを使用して新しい画像上のオブジェクトを見つけます。検出されたオブジェクトの相互包含(オブジェクトの境界が交差する場合、またはオブジェクトの境界が別のオブジェクトに含まれる場合)を使用して、すべての領域に最適な一致を見つけます。
あなたの質問はあなたが複数の物体ではなく複数の車だけを探していると明確に述べているので、答えは質問の中にあります。複数のオブジェクトではなく、同じオブジェクトの複数のオカレンスを探しています。
両方のタイプの車を認識できるようにシステムを十分にトレーニングした場合、両方を標準のカスケードフィルターアプローチを使用して検出する必要があります...これは、1つの写真で2つの顔を検出する方法を尋ねるようなものですか?
車とサルを探していた場合、状況は大きく異なり、オープンCVなどのツールで一般的なアプローチを使用すると、通常、2つの分類子(1つは車用、もう1つはサル用)をトレーニングし、画像を2回繰り返します。
検出するオブジェクトの異なるクラスが多いほど、必要な分類子と反復が多くなります。