2016-10-05 20 views
1

現在、私がファイルに保存している画像を持つDNNを訓練しようとしています。数千の固定サイズの小さな画像の画像)。dlib-19.1:イメージからdlib :: matrixを初期化する(例:dlib :: cv_image)

私はいくつかのコードを開いて、小さなOpenCV cv :: Mat'sに集約イメージを適切に分割しています。私の問題は

  • 電車直接DLIB :: cv_image上のDNNへの道があるように思えません、である(CV巻き付けることができます::マット、私はコンパイルエラーの500+ラインを取得しています)または
  • 簡単/ラップCVを変換する::マットはDLIBする::行列をすべての要素

をコピーせずに、私はここで何かが欠けていますかなり確信して、任意のポインタをいただければ幸いです。

注:dlib :: dnn_trainer :: train()は、dlib :: matrix(コンパイル時に固定サイズ)のベクトルと、符号なしのラベルが付いたベクトル(符号なしラベルはコンパイルされません)、train()は両方の型にテンプレート化されています。すべてのポインタ?

答えて

2

コンパイル時にdlib :: matrixのサイズを修正する必要はありません。その上でset_size()を呼び出すだけです。 http://dlib.net/faq.html#HowdoIsetthesizeofamatrixatruntimeも参照してください。

また、dlib :: matrix以外のものを入力として使用したい場合は、それを行うことができます。独自の入力レイヤーを定義するだけで済みます。あなたが実装しなければならないインターフェースは、ここに完全に文書化されています:http://dlib.net/dlib/dnn/input_abstract.h.html#EXAMPLE_INPUT_LAYER。既存の入力レイヤーを例に見ることもできます。しかし、あなたが持っている可能性が高い質問に答えるので、ドキュメントを必ず読んでください。

+0

おかげで、私は間違っベースのすべてのものを想定しgeneric_imageでは、入力レイヤーと一緒に魔法のように動作します。今のところ行列を使用します。 もう1つの質問(しかし、あまりにも多くの詳細な質問でSOを汚染したくない):私はdlibでcaffeを使って得たトレーニング結果を検証しようとしています。ネットワークのトレーニングを開始することはできましたが、同等の結果が得られませんでした。私の訓練体制を可能な限り忠実に再現しようとしていますが、dlibの体重減衰と勢いをどのように設定するかについては言及がありません。これは現在可能ですか、それとも自動設定されていますか? – Daniel

+0

これらの値は、任意の値に設定できます。これらのことはすべて、2つの導入事例プログラムで議論されています。それ以外に、API全体が文書化されています。このページには、すべてのリンクがある詳細な学習セクションがあります:http://dlib.net/ml.html。また、http://dlib.net/faq.html#Whereisthedocumentationforオブジェクト関数 –

+0

見つかった:これは、明示的に建設時に設定できるトレーナーのプロパティです:dlib :: dnn_trainer トレーナー(ネット、dlib :: sgd(float weight_decay 、フロート運動量)); – Daniel

1

DLIBは、このタスクのための素晴らしい機能があります:http://dlib.net/imaging.html#assign_imageを、それはここで、各要素

のコピーを作ることがどのように使用できるかのサンプルコードです:

// mat should be greyscale image (8UC1) 
void cv_to_dlib_float_matrix(const cv::Mat& mat, dlib::matrix<float>& res) 
{ 
    cv::Mat tmp(mat.cols, mat.rows, CV_32FC1); 
    cv::normalize(mat, tmp, 0.0, 1.0, cv::NORM_MINMAX, CV_32FC1); 
    dlib::assign_image(res, dlib::cv_image<float>(tmp)); 
} 
関連する問題