問題タブ [lbph-algorithm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - OpenCV がトレーニング画像でのみオブジェクトを認識するのはなぜですか?
iOS アプリに 1 ユーロ、2 ユーロ、0.50 ユーロのコインを認識させるために、独自の classifier.xmlを使用opencv_createsamples
して作成しようとしています。opencv_traincascade
そこで、次のような短いビデオから 2 ユーロ硬貨の画像を 60 枚切り抜きました。
次に、 を使用してそれらをランダムな背景と組み合わせましたopencv_createsamples
。これに似た12000枚の画像を取得しました:
次のコマンドを実行しました。
opencv_createsamples -img positives/i.jpg -bg negatives.txt -info i.txt -num 210 -maxidev 100 -maxxangle 0.0 -maxyangle 0.0 -maxzangle 0.9 -bgcolor 0 -bgthresh 0 -w 48 -h 48
(i は 0 から 60 まで)
cat *.txt > positives.txt
opencv_createsamples -info positives.txt -bg negatives.txt -vec 2.vec -num 12600 -w 48 -h 48
opencv_traincascade -data final -vec 2.vec -bg negatives.txt -numPos 12000 -numNeg 3000 -numStages 20 -featureType LBP -precalcValBufSize 2048 -precalcIdxBufSize 2048 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -w 48 -h 48
トレーニングは13段階で停止しました。取得したら、スマートフォンで撮影した単純な画像cascade.xml
ですぐに試してみましたが、何も検出されませんでした:detectMultiScale()
一方、トレーニングとして使用される画像の 1 つを入力として与えると、非常にうまく機能します。
なぜこれが起こっているのか本当に理解できず、気が狂ってしまいます。何よりも、何週間も機能させようとしてきたからです...どこで間違いを犯しているのか教えていただけますか?
私が書いた短いプログラムは次のとおりです。
また、OpenCV バージョン 3.1 の機能ホモグラフィーを考慮に入れようとしました。したがって、自分のバージョン用に opencv_contrib をダウンロードし、xfeatures2d モジュールをコンパイルしようとしましたが、CMakeList ファイルで CMake エラーが発生しました...さらに、xfeature2d は xcode の opencv フレームワーク内にも存在しないため、自分の PC で動作させたとしても、とにかくiOSでは使用しないでください...
アップデート
アドバイスどおり、削除しようとしたところequalizeHist(src_gray, src_gray);
、detectMultiScale()`` で近隣の数を設定したところ、次のようになりました。
更新 2
誰かが示唆したように、このチュートリアルに従って、トリミングされた正の画像、コインのみの画像のみを使用して.vecファイルを作成しました。私はこのコマンドを使用しました:
opencv_createsamples -vec i.vec -w 48 -h 48 -num 210 -img ./positives/i.jpg -maxidev 100 -maxxangle 0 -maxyangle 0 -maxzangle 0.9 -bgcolor 0 -bgthresh 0
(i は 0 から 60 まで)
ご覧のとおり、サンプルを作成するために使用される背景画像はありません。次に、mergevec.pyをダウンロードした後、すべてのベクター ファイルを結合しました。今、私は別のLBPトレーニングを開始するつもりです...うまくいくことを願っています
opencv - LBPユニフォームの実装方法
私はOpenCVが初めてです。顔の特徴を抽出するサンプルを作成しようとしています。私はいくつかの論文を賞賛していますが、最も推奨されているものの 1 つは LBP でした。LBP記述子の動作方法は理解していますが、それからバリアントを読み取りました。LBP ユニフォーム LBP オリジナルと理解していますが、バイナリ シーケンスを取得すると (たとえば、特定のピクセルを隣接ピクセルと比較すると、次の結果が得られます -> 11110001、2 つの遷移があることがわかります。その場合、それは遷移の数が <= 2 であるため、一様です。
私の質問は、このプロセスを実行した後、そのピクセルで計算する必要があるコードです。LBP の元の wew には 256 の値があることはわかっていますが、LBP の一様な que からのこのバリアントでは、その数を 59 のビンの値に減らします。したがって、私の質問は、すべてのピクセルの遷移数が <=2 または >2 であるかどうかをテストした後に、どのコードを配置する必要があるかです。
ありがとう!正しく説明できたことを願っています。
python - createLBPHFaceRecognizer() モジュールがラズベリー pi opencv 2.4.1 および python に見つからない
私はラズベリーパイで顔認識システムを開発しようとしているので、「apt-get python-opencv」を使用してpython用のopencvをダウンロードしました。
"Traceback (最新の呼び出しが最後):
ファイル ""、1 行目、n
認識者=createLBPHFaceRecogniser()
NameError: 名前 'createLBPHFaceRecogniser()' が定義されていません"
opencv - OpenCVのcreateLBPHFaceRecognizerのradiusパラメータは何ですか?
ドキュメントは、2.4 と 3.0 の両方のバージョンのサイトで文の途中で切れています... (リンク: http://docs.opencv.org/3.0-last-rst/modules/face/doc/facerec_api.html#createlbphfacerecognizer )
radius – Circular Local Binary Pattern の構築に使用される半径。半径が大きいほど、
LBPH に関する論文を読んだ私の推測では、半径は各パッチで考慮される領域に関連しているということですか?
これに適した値を見つけようとしていますが、さまざまな値が何に対応するかを正確に知ることができれば幸いです。
opencv - LBP を使用して表情を検出する精度アルゴリズムを改善する
いくつかの表情 (幸福、悲しみ、怒りなど) を検出する単純なアルゴリズムを開発しています。私はそれを行うためにこの論文に基づいています。以下の例に示すように、正規化された画像を 6x6 領域に分割する LBP 均一演算子を適用する前に、前処理を行っています。
統一LBPを適用することで、各地域ごとに59個の特技が抽出されるため、最終的に画像(6x6x59)で2124個の特技が得られます。モデルをトレーニングするのに約 700 枚の画像があると、偉業の数が多すぎると思います。良い精度を得るには良くないことを読んだことがあります。私の質問は、アルゴリズムの精度を向上させるために、偉業または別の手法の次元をどのように削減できるかです。
python - scikit-image の local_binary_pattern 関数が異なるパターンに対して同じ値を提供するのはなぜですか?
local_binary_pattern
scikit-image パッケージの関数を使用しています。半径 1 内の 8 つの隣接点の回転不変の均一な LBP を計算したいと思います。これが私の Python コードです。
そして、ここに出力があります
私を混乱させるのは、いくつかの同じ値がlbp
同じ均一なパターンに対応していないことです。たとえば、lbp[1, 1]
とlbp[2, 2]
は両方とも6
ですが、 の LBPimage[1, 1]
は次のとおりです。
の LBPimage[2, 2]
は次のとおりです。
の値に基づいて、関数は「以上」を使用して近隣と比較するとlbp
仮定します。local_binary_pattern
image[1, 1]
との LBPimage[2, 2]
は両方とも一様です。しかし、どのようimage[1, 1]
にしimage[2, 2]
て同じ LBP 値を持つことができるのでしょうか?