我正在寻找最好的Python
目标检测方法来检测通常具有坚实背景的专业头像图像。我认为专业头像应该是人脸识别的最佳方案,并且对于不太理想的图像,其结果要比95%的成功率好得多。处理速度不得明显低于20秒内1000张图像。我在下面提供的代码可以在10秒内处理1000个图像。如果有任何建议,我将不胜感激
编辑:表现不佳是因为哈尔卡斯卡德在头像中发现了两张或更多的脸。我的代码拒绝只有一张脸的图像。另外一个“面”通常位于颈部。scaleFactor为1.3时,可以得到我所期望的最佳结果。提高或降低它会产生更多的假阴性
头像来自年鉴,下面是一幅示例图像:
我的样本集大约有1000张图像,其中有800张正样本(头像)和200张负样本(非头像)。阴性样本可以是一组人或一个人的全身图像。所有头像的大小约为160 x 200像素(高宽比为1.25)。负片图像大小不一,最大可达500 x 500像素
face_cascade = cv2.CascadeClassifier('/haarcascade_frontalface_default.xml')
for img_file in img_files:
img = cv2.imread(sample_dir + img_file)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
height, width = img.shape[:2]
# min size of face w.r.t. image (using max was intentional)
min_size = int(max(0.4*width, 0.3*height))
faces = face_cascade.detectMultiScale(gray,
scaleFactor=1.3,
minNeighbors=3,
minSize=(min_size, min_size))
if len(faces) == 1: # want only one face
cv2.imwrite(positive_dir + img_file, img)
else:
cv2.imwrite(negative_dir + img_file, img)
detectMulitScale
是在运行时训练的。
此外,当阴性样本在我的研究开始时
循环(我的典型情况),错误否定的数量和
与阴性样本相比,假阳性率有所下降
散布在环的末端或在环的末端。{如果我训练Haar
或LBP
,我希望如果我使用整个照片,而不仅仅是脸部(由于坚实的背景和肩部),我只能得到比haarcascade_frontalface_default.xml更好的结果。这有意义吗?只能按1:1的长宽比进行培训吗?如果可能的话,1.25会更好
目前没有回答
相关问题 更多 >
编程相关推荐