私は、HOG記述子とSVM分類器を組み合わせて、写真の中の人間を認識しています。OpenCV用のPythonラッパーを使用しています。私はpymagesearchで優れたチュートリアルを使用しました。これは、アルゴリズムが何をするかを説明し、detectMultiScaleメソッドのパラメーターを設定する方法についてのヒントを提供します。
具体的には
# initialize the HOG descriptor
hog = cv2.HOGDescriptor()
# Set the support vector machine to be pre-trained for people detection
hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
# Detect people in the image
(rects, weights) = hog.detectMultiScale(image,
winStride=(4, 4),
padding=(8, 8),
scale=1.05)
パラメータは、チュートリアル自体の説明に従って、精度とパフォーマンスの両方の微調整に従って選択されます。
私の問題は、文献によると写真で人間を認識するための現在最良の方法のように思えるこの方法(元の論文は2005年の日付です)が私の画像でかなりうまく機能しないように見えることです。モデルのある服とない服の両方を含む画像があり、この方法でモデルのある服を認識しようとしています。モデルを含むかどうかをタグ付けするために手動でスキャンした300枚の画像のサブセットでは、メソッドは30%の確率で失敗します。
これらは例としていくつかの画像です。
検出器が直立した人間に有効であることを理解しています。彼らはまた、完全な数字である必要がありますか?私のイメージは、頭も足もない半身像を含みます。
これの前に、Haar機能ベースのカスケード分類器を使用して画像内の顔を認識しました。同じ画像セットの精度は90%でしたので、これを改善しようとしました。また、ここで機能しない理由を理解することにも興味があります。