6

Caffe を使用する場合、画像を含むトレーニング データセットを作成するには、lmdb などの特別な形式でデータベースを作成する必要がありますが、たとえば、画像のバッチを Caffe に渡すオプションはありますvector<cv::Mat>か?

明確にするために、メモリに収まらない大量の画像を処理できるソリューションを探しています (ただし、1 つのトレーニング バッチ (たとえば 50 個の画像を含む) をメモリに格納できると仮定します)。

4

1 に答える 1

7

Caffe は、使用する入力レイヤーに応じて、多くの種類の入力を受け取ることができます。利用可能な入力方法のいくつかは次のとおりです。

  1. データ
  2. メモリデータ
  3. HDF5データ
  4. 画像データなど

モデル ファイルで最初に見つかるレイヤーは で、入力メソッドとしてLayer type: Data使用されます。lmdb or leveldbこれらのデータベースへの一連の画像の変換は、Caffe が既に画像を変換するツールを提供しているため、非常に簡単です。

Layer type: MemoryDataメモリから直接データを読み取ります。これは、テスト段階でカメラ入力を Caffe 入力として渡す際に非常に役立ちます。このレイヤーをトレーニングに使用することは強くお勧めしません

Layer type: ImageDataテキスト ファイルを入力として受け取ります。テキスト ファイルには、すべてのイメージ名とその完全なパスおよびクラス番号が含まれています。Caffe は OpenCV を使用して、このレイヤーの画像を読み取ります。また、画像へのすべての変換も処理します。したがって、OpenCV を使用して画像を読み取ってから MemoryData レイヤーに渡す代わりに、ImageData を使用することをお勧めします。

ImageData レイヤーが画像を読み取る .txt の形式は次のとおりです。

/path/to/the/image/imageName.jpg クラス番号

LMDB または LevelDB の使用を強くお勧めします。画像のパスまたは名前にスペースが含まれている場合、または画像のいずれかが破損している場合、ImageData が適切に機能する必要がないからです。

さまざまなレイヤーの詳細については、こちらを参照してください

モデルとバッチサイズに応じて、GPU にメモリが割り当てられます。メモリ オーバーフローが発生した場合は、バッチ サイズを小さくしてみてください。Caffe は、120 万枚の画像の Imagenet データベースのトレーニングを簡単に処理しました。したがって、最適なバッチ サイズで、アルゴリズムは問題なく動作するはずです。

于 2015-10-16T21:44:24.683 に答える