1

caffe convnet を使用して表情を検出するにはどうすればよいですか?

画像データセット Cohn Kanade があり、このデータセットを使用して caffe convnet をトレーニングしたいと考えています。Caffeにはドキュメンテーション サイトがありますが、自分のデータをトレーニングする方法が説明されていません。事前にトレーニングされたデータのみ。

誰かが私にそれを行う方法を教えてもらえますか?

4

1 に答える 1

1

Caffe は、入力データの複数の形式 (HDF5/lmdb/leveldb) をサポートしています。最も快適に感じるものを選択するだけです。以下にいくつかのオプションを示します。

  1. カフェ/ビルド/ツール/convert_imageset:

convert_imagesetは、caffe をビルドすることで得られるコマンド ライン ツールの 1 つです。

使用方法は次のとおりです。

  • テキスト ファイルで画像とラベルのペアのリストを指定します。ペアごとに 1 行。
  • 画像の場所を指定します。
  • バックエンド データベースの選択 (どの形式か)。デフォルトは lmdb で、問題ありません。

各行が画像のファイル名で始まり、その後にスカラー ラベル (例: 0、1、2、...) が続くテキスト ファイルを作成する必要があります。

  1. DatumCaffe のクラスを使用して、Python で lmdb を構築します。

これには、caffe の python インターフェイスを構築する必要があります。ここでは、次のような Python コードを記述します。

  • 画像のリストを反復処理します
  • numpy画像を配列にロードします。
  • Datumカフェオブジェクトを構築します
  • 画像データをDatumオブジェクトに割り当てます。
  • クラスにはというDatumメンバーがありlabel、ネットワークで分類したい場合は、CK データセットから AU クラスに設定できます。
  • Datumオブジェクトをデータベースに書き込み、次の画像に移動します。

Gustav Larsson によるブログ投稿から、画像を lmdb に変換するコード スニペットを次に示します彼の例では、画像分類用の画像とラベルのペアの lmdb を構築しています。

lmdb をネットワークにロードする:

これは、LeNet の例とまったく同じように行われます。LeNet モデルを記述するネットワーク prototxt の先頭にあるこのデータ層。

layer {
  name: "mnist"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
  transform_param {
    scale: 0.00390625
  }
  data_param {
    source: "examples/mnist/mnist_train_lmdb"
    batch_size: 64
    backend: LMDB
  }
}

source フィールドは、作成したばかりの lmdb の場所を caffe に指定する場所です。

これを機能させるために重要ではなく、パフォーマンスに関連するものは、入力機能を正規化する方法を指定することです。これは、transform_paramフィールドを通じて行われます。CK+ は固定サイズの画像なので、サイズ変更の必要はありません。ただし、グレースケール値を正規化する必要があります。これは、平均減算によって行うことができます。transform_param:scaleこれを行う簡単な方法は、 の値を CK+ データセットのグレー スケール強度の平均値に置き換えることです。

于 2015-09-30T13:26:04.037 に答える