【发布时间】:2016-04-17 20:52:15
【问题描述】:
我正在使用 createsamples.exe 和 traincascade.exe 来训练面部痣检测器。
我使用了 150 张正面图像(人脸图像),其中每张图像包含几个痣,总共(所有 150 张图像)包含 1452 个痣;此信息正确保存在 positive.txt 文件中。我还使用了 1015 张没有痣的皮肤区域的负片图像,这些信息被适当地保存在negative.txt 文件中。
为了创建阳性样本,我执行了以下命令行:
createsamples.exe -info positive.txt -vec positive.vec -w 3 -h 7
成功创建了一个包含 1000 个样本的正向量;我使用 w = 3 和 h = 7,因为正图像中标记的痣和负图像中的皮肤区域非常小。
然后,执行此命令行以最终训练检测器:
traincascade.exe -data result\ -vec positive.vec -bg negative.txt -numStages 20 -nsplits 1 -minhitrate 0.998 -maxfalsealarm 0.5 -numPos 150 -numNeg 1015 -w 3 -h 7
我得到了这个:
PARAMETERS:
cascadeDirName: result\
vecFileName: positive.vec
bgFileName: negative.txt
numPos: 150
numStages: 20
precalcValBufSize[Mb] : 256
precalcIdxBufSize[Mb] : 256
stageType: BOOST
featureType: HAAR
sampleWidth: 3
sampleHeight: 7
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: BASIC
===== TRAINING 0-stage =====
<BEGIN
POS count : consumed 150 : 150
Train dataset for temp stage can not be filled. Branch training terminated.
Cascade classifier can't be trained. Check the used training parameters.
我不知道会发生什么。请帮帮我...
【问题讨论】:
-
它说训练参数有问题。检查opencv的文档,可能分类器的大小是样本的问题或数量(或格式)
-
@Nikos M. 问题是我没有找到太多关于 traincascade 的文档。我一直在关注网络中一些运行良好的示例,所以......我不知道错误在哪里......
-
为什么标记为 C++?更好的是,为什么它在 StackOverflow 上?在命令行中输入不是编程。
-
我投票决定将此问题作为题外话结束,因为它与编程无关。这是关于运行一个程序。