【问题标题】:traincascade to train detector of moles in facestraincascade 训练面部痣检测器
【发布时间】: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 上?在命令行中输入不是编程。
  • 我投票决定将此问题作为题外话结束,因为它与编程无关。这是关于运行一个程序。

标签: c++ opencv


【解决方案1】:

您需要减少 -numPos 参数。 -numPos 参数应小于 .vec 文件中的阳性总数。尝试将其设置为 130。

您可能还需要考虑您的 -numStages 参数。您将过度训练您的分类器,因为您只有 150 个阳性结果。查看link 了解有关 traincascade 参数的更多详细信息。

另外,通过运行命令“createsamples.exe -info positive.txt -vec positive.vec -w 3 -h 7”,您将获得一个包含 150 个样本而不是 1000 个样本的向量。

【讨论】:

  • 您的negative.txt 可能有问题。您确定在negatives.txt 中正确指定了负样本的路径吗?
【解决方案2】:

似乎您的negative.txt 格式不正确,因为traincascade.exe 输出消耗的正数,但负数不输出。反例的路径应该是相对于traincascade.exe的目录。

【讨论】:

  • 我有一个 haar 文件夹,其中包含:createsamples.exe、traincascade.exe、Negative 和 Positive 文件夹,里面有相应的图像、positive.txt(每行都有这样的内容:Positive/img1 .jpg 2 132 143 10 20 201 300 6 11)negative.txt(每行都有这样的内容:Negative/nimg1.jpg),cascade.xml 的空结果文件夹和运行 cretesamples 的 positive.vec 结果。可执行程序。我从 haar 文件夹执行命令行...我不认为是路径问题...
【解决方案3】:

我之前遇到过和你一样的问题。我的问题是负面例子的路径。这是我的解决方案。我将文件“neg.txt”放在与“opencv_traincascade.exe”相同的路径。所有的例子都放在一个名为“neg”的文件夹中。而在“neg.txt”文件中,我指明了相对路径,看起来像这样。 希望可以帮助遇到同样问题的人。

neg/image1.png
neg/image2.png
neg/image3.png
...

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 2015-12-09
    • 2023-03-06
    • 2018-06-14
    • 2016-12-21
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多