【发布时间】:2017-11-24 02:26:54
【问题描述】:
我是学生,我正在尝试使用基本的手部识别创建我自己的第一个 haar-cascade(用于学习)。我收集了 510 个阳性样本和 1276 个阴性样本。我的训练一切正常(我想,我让你看到了终端窗口)。
唯一的事情是当我使用带有基本脚本的 xml 文件时(你会看到它之后),什么都没有出现。我用我的终端启动它,我没有错误。之后我的相机掉了几次!(但速度较慢)但没有出现任何窗口。如果我使用来自网络的其他 xml 文件,它可以工作......我不知道为什么......
有人可以帮助我吗?
Python 3.5 和 opencv 3.2
Charless-MacBook-Pro:desktop charles$ opencv_traincascade -data data -vec Positive_image.vec -bg Negative_image.text -numPos 449 -numNeg 1276 -numStages 10 -w 50 -h 50 -featureType LBP
PARAMETERS:
cascadeDirName: data
vecFileName: Positive_image.vec
bgFileName: Negative_image.text
numPos: 449
numNeg: 1276
numStages: 10
precalcValBufSize[Mb] : 1024
precalcIdxBufSize[Mb] : 1024
acceptanceRatioBreakValue : -1
stageType: BOOST
featureType: LBP
sampleWidth: 50
sampleHeight: 50
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
===== TRAINING 0-stage =====
<BEGIN
POS count : consumed 449 : 449
NEG count : acceptanceRatio 1276 : 1
Precalculation time: 18
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 1|
+----+---------+---------+
| 3| 1| 0.402821|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 1 minutes 31 seconds.
===== TRAINING 1-stage =====
<BEGIN
POS count : consumed 449 : 449
NEG count : acceptanceRatio 1276 : 0.403542
Precalculation time: 19
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 1|
+----+---------+---------+
| 3| 0.995546| 0.300157|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 3 minutes 14 seconds.
===== TRAINING 2-stage =====
<BEGIN
POS count : consumed 449 : 451
NEG count : acceptanceRatio 1276 : 0.121674
Precalculation time: 19
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 1|
+----+---------+---------+
| 3| 1| 0.413009|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 4 minutes 59 seconds.
===== TRAINING 3-stage =====
<BEGIN
POS count : consumed 449 : 451
NEG count : acceptanceRatio 1276 : 0.0501789
Precalculation time: 20
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 1|
+----+---------+---------+
| 2| 1| 1|
+----+---------+---------+
| 3| 1|0.0783699|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 6 minutes 46 seconds.
===== TRAINING 4-stage =====
<BEGIN
POS count : consumed 449 : 451
NEG count : acceptanceRatio 1276 : 0.00391926
Precalculation time: 20
+----+---------+---------+
| N | HR | FA |
+----+---------+---------+
| 1| 1| 0|
+----+---------+---------+
END>
Training until now has taken 0 days 0 hours 8 minutes 44 seconds.
===== TRAINING 5-stage =====
<BEGIN
POS count : consumed 449 : 451
Train dataset for temp stage can not be filled. Branch training terminated.
这是我使用 python 编写的基本脚本:
import numpy as np
import cv2
face_cascade = cv2.CascadeClassifier('/Users/charles/Desktop/closedFist.xml')
cap = cv2.VideoCapture(0)
while 1:
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
cv2.imshow('img',img)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
编辑:
它有效。我收集了 2100 个正样本和 4500 个负样本。我的 xml 文件有 25 个阶段。我的错误是具有相同分辨率的负样本和正样本:50x50 像素。现在负样本的比例为 16:9。 160x90 像素。它有效!!!
【问题讨论】:
-
哇,您的代码与我自己的级联文件完美配合。我怀疑 XML 文件有问题。你能检查 XML 文件的大小吗?另请注意,Training STAGE-5 已终止!您能否说明您在创建级联文件时遵循的步骤?
-
我的级联文件只有 5KB。如果你想看的话,我已经关注了这个:link。我也花了很多时间阅读文档。 :)
-
5KB 对于 50x50 像素图像的标准 10 级级联分类器文件来说非常小...尝试 2:1 比例,它应该在第 9 阶段正常结束(第 10 阶段开始时)与 0)。
标签: python xml opencv haar-classifier