web-dev-qa-db-ja.com

Kerasを使用したオブジェクト検出:R-CNNまたはYOLOを高速化する簡単な方法

この質問には答えられたかもしれませんが、これに対する簡単な答えは見つかりませんでした。 Kerasを使用してシンプソンズのキャラクターを分類するconvnetを作成しました( dataset here )。
20のクラスがあり、入力として画像を与え、キャラクター名を返します。とても簡単です。私のデータセットには、写真内のメインキャラクターの写真が含まれており、ラベルとしてキャラクターの名前のみが含まれています。

次に、オブジェクト検出を追加します。つまり、画像内の文字の周りに境界ボックスを描画し、どの文字であるかを予測します。本当に遅いので、スライディングウィンドウは使いたくありません。そこで、より高速なRCNN( github repo )またはYOLO( github repo )を使用することを考えました。トレーニングセットの各画像の境界ボックスの座標を追加する必要がありますか?トレーニングセットの座標を指定せずにオブジェクト検出を行う(およびテストで境界ボックスを取得する)方法はありますか?

要するに、単純なオブジェクト検出モデルを作成したいのですが、より単純なYOLOまたはFaster RCNNを作成できるかどうかはわかりません。

助けてくれてありがとう。

13
A. Attia

Yoloまたはより高速なrcnnの目標は、境界ボックスを取得することです。要するに、はい、データをラベル付けしてトレーニングする必要があります。

ショートカットを取る:

  • 1)少数のバウンディングボックスにラベルを付けます(1文字につき5としましょう)。
  • 2)非常に小さなデータセットで、より高速なrcnnまたはyoloをトレーニングします。
  • 3)完全なデータセットに対してモデルを実行する
  • 4)それはいくらか正しくなり、多くの間違いを犯します。
  • 5)正しくバインドされているもので、より高速なrcnnをトレーニングします。トレーニングセットは、はるかに大きくなります。
  • 6)希望する結果が得られるまで繰り返します。
13
Andrew Tu

あなたはすでに適切なアーキテクチャを念頭に置いているかもしれません: "今、私はオブジェクト検出を追加したいと思います。すなわち、画像内の文字の周りに境界ボックスを描画し、それがどの文字であるかを予測します。"

したがって、タスクを2つの部分に分割します。
1。人を検出するためのオブジェクト検出器を追加して境界ボックスを返す
2。既にトレーニングしたconvnetを使用して境界ボックスを分類します

パート1では、人を検出するためにオブジェクト検出器(まだYOLOおよびFaster-RCNN)を備えた特徴検出器(たとえば、COCOまたはImagenetで事前にトレーニングされたconvnet)を使用することをお勧めします。ただし、特徴検出器は漫画ベースの画像ではなく実際の画像でトレーニングされているため、「漫画」の人(シンプソンは人だと言います)が正しく認識されないことがあります。その場合、 transferに従って、漫画の特徴を学習するために、漫画画像の特徴検出器のいくつかのレイヤーをre-trainすることができます。 learning 方法論。

4
Michelagio