2

我正在尝试使用 OpenCV、教程UIUC Image Database for Car Detection来训练级联分类器。但是,训练在第 0 阶段“挂起”并且永远不会生成任何文件;在本教程中,只需几分钟即可看到结果。

我在运行 Yosemite (10.10.5) 的 2015 MBP 上运行使用 conda 安装的 OpenCV 2.4.8

脚步:

  1. 下载数据集并将正图像保存在 pos 文件夹中,将负图像保存在 neg 文件夹中
  2. 为正图像生成一个 txt 文件

    find pos -iname "*.pgm" > cars.txt 
    sed -i '' 's/.pgm/.pgm 1 0 0 100 40/g' cars.txt 
    
  3. 为负片图像生成一个 txt 文件

    find neg -iname "*.pgm" > bg.txt
    
  4. 从 cars.txt 生成一个 vec 文件

    opencv_createsamples -info cars.txt -num 550 -w 48 -h 24 -vec cars.vec
    
  5. 创建一个data目录

    mkdir data
    
  6. 火车级联

    opencv_traincascade -data data -vec cars.vec -bg bg.txt -numPos 500 -numNeg 500 -numStages 2 -w 48 -h 24 -featureType LBP
    

输出:

PARAMETERS:
cascadeDirName: data
vecFileName: cars.vec
bgFileName: bg.txt
numPos: 500
numNeg: 500
numStages: 2
precalcValBufSize[Mb] : 256
precalcIdxBufSize[Mb] : 256
stageType: BOOST
featureType: LBP
sampleWidth: 48
sampleHeight: 24
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   500 : 500
NEG count : acceptanceRatio    500 : 1

我已经等了几个小时,但培训没有进展,也没有在我的data目录中生成任何文件。是什么导致“挂起”?

4

4 回答 4

1

对于它的价值,我遇到了同样的症状,这让我发疯。卸载并重新安装 opencv 修复它。挂起的确切命令突然运行良好。可能你有一个旧版本的 opencv 像我一样在某个地方徘徊:

$ brew uninstall opencv
Uninstalling /usr/local/Cellar/opencv/2.4.12... (225 files, 36M)
opencv 2.4.11_1 is still installed.
Remove them all with `brew uninstall --force opencv`.

$ brew uninstall --force opencv
Uninstalling opencv... (222 files, 35M)

$ brew install opencv --with-tbb

无论如何,需要考虑的事情。

于 2015-10-04T08:29:09.637 回答
0

用--use-tbb(来自自制软件)编译OpenCV为我解决了这个问题,我相信这是OS X上GCD实现的一个错误,如下所述:https ://github.com/opencv/opencv/issues/4765

于 2017-02-28T16:44:25.690 回答
0

我遇到了同样的问题。事实证明,使用 haar 级联训练效果很好。您可以为其指定更多阶段以提高准确性。

于 2015-09-25T23:03:03.523 回答
0

我只是不明白你如何期望从两个训练阶段中获得任何好处。您应该训练直到-acceptanceRatioBreakValue达到 10e-5。你从 OpenCV 订购了 10 个汉堡,但只买了 2 个就离开了。

见这里:http ://docs.opencv.org/3.1.0/dc/d88/tutorial_traincascade.html#gsc.tab=0

于 2016-04-05T23:43:36.413 回答