dlib.get_frontal_face_detector () получает лица в полном изображении, но не получает в обрезанном изображении
Мой первый раз здесь, но я действительно искал об этом и, к сожалению, я не нашел помощи.
У меня есть алгоритм распознавания лиц... В настоящее время я пытаюсь повысить его эффективность.
После некоторого изучения я пришел к выводу, что dlib.get_frontal_face_detector () была функцией, замедляющей мой код.
Затем мой подход заключался в удалении фона моих фигур и выделении только различий между двумя изображениями. После этого у меня есть фрагменты изображения, обрезанные от полного и оригинального, и эти фрагменты, имеющие только различия, намного меньше (например, полное изображение: 1520 x 2592 пикселей и обрезанное изображение с лицом: 150x200 пикселей).
OBS: Камера обнаружения очень далека от узнаваемых людей, из-за чего лица на изображениях крошечные и большая часть этого размера бесполезна, поэтому я решил удалить ненужные части.
НО, тут все сошло с ума: когда я применяю крошечное, обрезанное лицо к dlib.get_frontal_face_detector (), он ИНОГДА не распознает его! (бывают случаи, когда он узнает, это странно!). Это звучит странно, потому что когда я применяю полное изображение к face_detector, но с тем же разрешением, только с большей формой, он распознает то же лицо!
Я думаю, что мне не хватает теоретической информации здесь...
detector = dlib.get_frontal_face_detector()
new_image = []
im2, contours, hierarchy = cv2.findContours(im_bw,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
[x, y, w, h] = cv2.boundingRect(contour)
#print(x, y, w, h)
if h<20 or w<20:
continue
else:
new_image.append(img2_n[y*inv_coef:y*inv_coef+h*inv_coef, x*inv_coef:x*inv_coef+w*inv_coef])
for images in new_image:
rgb_img = cv2.cvtColor(images, cv2.COLOR_BGR2RGB)
dets = detector(rgb_img, 1)
Над экстрактором меньших изображений и использованием его на детекторе. Ниже приведен простой код, где я применяю полное изображение к тому же детектору.
full_img = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB)
dets = detector(full_img, 1)
Кто-нибудь, кто понимает немного больше о DLIB, OPENCV и PYTHON, может мне помочь?
OBS¹: изображения, которые не распознаются, превышают пороговое значение, установленное в для удаления слишком маленьких фрагментов изображения.