Tôi đang sử dụng một bộ mô tả HOG, kết hợp với bộ phân loại SVM, để nhận ra con người trong ảnh. Tôi đang sử dụng trình bao bọc Python cho OpenCV. Tôi đã sử dụng hướng dẫn tuyệt vời tại pymagesearch , giải thích thuật toán này làm gì và cung cấp gợi ý về cách đặt tham số của phương thức DetMultiScale .
Cụ thể là tôi làm
# 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)
Các tham số được chọn theo một tinh chỉnh về cả độ chính xác và hiệu suất, theo các giải thích trong chính hướng dẫn.
Vấn đề của tôi là phương pháp này, có vẻ như là phương pháp tốt nhất hiện nay để nhận ra con người trong một bức tranh theo tài liệu ( bài báo gốc là năm 2005) dường như hoạt động khá kém trên các hình ảnh của tôi. Tôi có hình ảnh chứa quần áo, cả với người mẫu và không có nó và tôi đang thử phương pháp này để nhận ra những người có mô hình. Trên một tập hợp con gồm 300 hình ảnh mà tôi đã quét theo cách thủ công để gắn thẻ chúng có chứa mô hình hay không, phương pháp không thành công 30% lần.
Đây là một số hình ảnh làm ví dụ.
Tại đây, nó phát hiện ra một người mất tích:
Ở đây nó không có được con người đầy đủ:
Tôi hiểu rằng máy dò hoạt động cho con người chính trực. Họ cũng nên có đầy đủ hình? Hình ảnh của tôi bao gồm một nửa hình, con số không có đầu hoặc không có chân.
Trước đó, tôi đã thử một trình phân loại tầng dựa trên tính năng Haar để nhận diện khuôn mặt trong một hình ảnh và độ chính xác trên cùng một bộ hình ảnh là 90%, vì vậy tôi đã cố gắng cải thiện điều này. Ngoài ra, tôi quan tâm đến việc hiểu tại sao mọi thứ không hoạt động ở đây.