Opencv 提高Haar培训效果的想法
请帮助我获得更多关于我第一次haar培训结果的知识。 所以我想训练Haar分类器来识别简单的笔,如下文 我用手机拍了14张钢笔画。这些图片的大小约为:263x2814Opencv 提高Haar培训效果的想法,opencv,training-data,haar-classifier,Opencv,Training Data,Haar Classifier,请帮助我获得更多关于我第一次haar培训结果的知识。 所以我想训练Haar分类器来识别简单的笔,如下文 我用手机拍了14张钢笔画。这些图片的大小约为:263x2814 然后我收集了一些底片,其中一些是从网上下载的,尺寸为640x480,还有一些是用我的手机摄像头拍摄的,尺寸为1920x10805313x2388 有些负面图片真的很大。我总共有158张底片。 之后,创建负片和正片图像列表并运行:createsamples命令: perl createtrainsamples.pl positiv
然后我收集了一些底片,其中一些是从网上下载的,尺寸为640x480,还有一些是用我的手机摄像头拍摄的,尺寸为1920x10805313x2388
有些负面图片真的很大。我总共有158张底片。
之后,创建负片和正片图像列表并运行:createsamples命令:
perl createtrainsamples.pl positives.dat negatives.dat samples 250 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 0.5 -maxyangle 0.5 maxzangle 0.5 -maxidev 40 -w 160 -h 20"
opencv_traincascade -data firstTry -vec samples.vec -bg negatives.dat -numPos 250 -numNeg 99 -numStages 25 –featureType HAAR -mode ALL -w 160 -h 20 -mem 2048
我不确定160的身高和20的身高是否合适在获得samples.vec文件后,我使用以下命令运行级联训练:
perl createtrainsamples.pl positives.dat negatives.dat samples 250 "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 0.5 -maxyangle 0.5 maxzangle 0.5 -maxidev 40 -w 160 -h 20"
opencv_traincascade -data firstTry -vec samples.vec -bg negatives.dat -numPos 250 -numNeg 99 -numStages 25 –featureType HAAR -mode ALL -w 160 -h 20 -mem 2048
我使用了相同的宽度和高度,但不确定这是否正确。我从一些参考脚本中获取了宽度和高度值。获取cascade.xml文件后,我使用以下参数在图片上运行detectMultiScale:
faces = faceCascade.detectMultiScale( image, scaleFactor=1.4, minNeighbors=3, minSize=(30, 30) )
这种检测方法效果不好。它只是检测笔的某些部分,而不是整支笔另外,当我有一些笔放在环境中的照片时,笔并没有被检测到
我想我需要调整所有正片和负片的大小,使它们的大小相同,尽管在这个问题上不确定
你能就我在这里做错了什么以及如何改进我的成绩提供一些意见吗
您可以找到我的所有文件:这些文件仅基于我自己的经验:
-minHitRate 0.999 -maxFalseAlarmRate 0.1 -maxWeakCount 1000
请注意:如果要使用上述数字,基本上必须使用LBP而不是HAAR。HAAR具有更好的检测功能,但使用LBP时,您可以使用更好的值,因为它所需的时间更少(尽管使用这些数字和大量图像(+10000),可能仍需要几天,但使用HAAR时,我可能会在几个月后看到您)。以下是制作LBP的方法:-featureType LBP
minHitRate越接近1越好。MaxFalseAllarmRate越低,越适合于0。最大值越高越好。
还要注意,设置得越好,需要进行的阶段就越少。您可能有一个25级级联,其性能比设置良好的6级级联差。还要注意的是,当你使用这些数字时,你的traincascade可能会被困在负面图像上(不过没关系)
奇怪的是:当你想检测钢笔时,为什么要使用
faces=faceCascade.detectMultiScale
:D不要让计算机比现在更混乱:D这些仅基于我自己的经验:
-minHitRate 0.999 -maxFalseAlarmRate 0.1 -maxWeakCount 1000
请注意:如果要使用上述数字,基本上必须使用LBP而不是HAAR。HAAR具有更好的检测功能,但使用LBP时,您可以使用更好的值,因为它所需的时间更少(尽管使用这些数字和大量图像(+10000),可能仍需要几天,但使用HAAR时,我可能会在几个月后看到您)。这是你怎么做到的