Saya menggunakan deskriptor HOG, ditambah dengan classifier SVM, untuk mengenali manusia dalam gambar. Saya menggunakan pembungkus Python untuk OpenCV. Saya telah menggunakan tutorial yang sangat baik di pymagesearch , yang menjelaskan apa yang dilakukan algoritma dan memberikan petunjuk tentang cara mengatur parameter metode detectMultiScale .
Secara khusus, saya lakukan
# 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)
Parameter dipilih sesuai dengan penyempurnaan yang baik pada akurasi dan kinerja, mengikuti penjelasan dalam tutorial itu sendiri.
Masalah saya adalah bahwa metode ini, yang tampaknya merupakan metode terbaik saat ini untuk mengenali manusia dalam gambar menurut literatur ( makalah aslinya bertanggal 2005) tampaknya berkinerja sangat buruk pada gambar saya. Saya memiliki gambar yang berisi pakaian, baik dengan model dan tanpa itu dan saya mencoba pendekatan ini untuk mengenali mereka yang memiliki model. Pada subset dari 300 gambar yang saya pindai secara manual untuk menandai mereka karena mengandung model atau tidak, metode gagal 30% dari waktu.
Ini adalah beberapa gambar sebagai contoh.
Di sini ia mendeteksi manusia yang hilang:
Di sini ia tidak mendapatkan manusia sepenuhnya:
Di sini ia tidak mengenalinya sama sekali:
Saya mengerti bahwa detektor berfungsi untuk manusia yang jujur. Haruskah mereka juga figur penuh? Gambar saya mencakup setengah angka, angka tanpa kepala atau tanpa kaki.
Sebelum ini, saya telah mencoba pengklasifikasi cascade berbasis fitur Haar untuk mengenali wajah dalam sebuah gambar dan akurasi pada set gambar yang sama telah 90%, jadi saya mencoba untuk memperbaiki ini. Juga, saya tertarik untuk memahami mengapa semuanya tidak berjalan di sini.