Python 采用Haar Cascade(或LBP)或其他方法进行专业头像检测 问题
我正在寻找最好的Python 采用Haar Cascade(或LBP)或其他方法进行专业头像检测 问题,python,opencv,object-detection,face-detection,haar-classifier,Python,Opencv,Object Detection,Face Detection,Haar Classifier,我正在寻找最好的Python对象检测方法来检测通常具有坚实背景的专业头像图像。我认为专业的头像应该是人脸识别的最佳场景,对于不太理想的图像,它的效果要比95%的Haar成功率好得多。处理速度不得明显低于20秒内1000张图像。我在下面提供的代码可以在10秒内处理1000个图像。如果有任何建议,我将不胜感激 编辑:表现不佳是因为哈尔卡斯卡在头像中发现了两张或更多的脸。我的代码拒绝只有一张脸的图像。另外一个“面”通常位于颈部。scaleFactor为1.3时,可以得到我所期望的最佳结果。提高或降低它
Python
对象检测方法来检测通常具有坚实背景的专业头像图像。我认为专业的头像应该是人脸识别的最佳场景,对于不太理想的图像,它的效果要比95%的Haar成功率好得多。处理速度不得明显低于20秒内1000张图像。我在下面提供的代码可以在10秒内处理1000个图像。如果有任何建议,我将不胜感激
编辑:表现不佳是因为哈尔卡斯卡在头像中发现了两张或更多的脸。我的代码拒绝只有一张脸的图像。另外一个“面”通常位于颈部。scaleFactor为1.3时,可以得到我所期望的最佳结果。提高或降低它会产生更多的假阴性
头像来自年鉴,下面是一幅示例图像:
我收集的样本的描述
我的样本集大约有1000张图像,其中有800张正样本(头像)和200张负样本(非头像)。阴性样本可以是一组人或一个人的全身图像。所有头像的大小约为160 x 200像素(高宽比为1.25)。负片图像大小不一,最大可达500 x 500像素
我的代码
来自代码的意外行为
detectMulitScale
是在运行时训练的。
此外,当阴性样本在我的研究开始时
循环(我的典型情况),错误否定的数量和
与阴性样本相比,假阳性率有所下降
散布在环的末端或在环的末端。detectMulitScale
是否能够
跑步训练?无法复制如果我训练Haar或LBP,我希望如果我使用整个照片,而不仅仅是脸部(由于坚实的背景和肩部),我只能得到比haarcascade_frontalface_default.xml更好的结果。这有意义吗?只能按1:1的长宽比进行培训吗?如果可能的话,1.25会更好。没有在线培训,您的探测器应该对一张图像给出合理的结果,图像的顺序应该无关紧要。在培训期间,您可以选择任何aspecr比率。必须将阳性训练样本裁剪到要检测的区域。你应该尝试一下深入学习,微型的yolo v3探测器也非常快。米卡,在读了你的评论后,我做了更多的故障排除。我无法复制订单问题。查看我的编辑。我会按照你的建议试试Tiny YOLO。谢谢
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)