Mac 系统下 OpenCV DNN 训练 (填坑)

Mac 系统下 OpenCV DNN 训练 (填坑)

  • 编译 opencv_createsamples opencv_traincascade
    • 首先是下载源码
    • 激活target
    • 'QTKit/QTKit.h' File not found
  • DNN训练

编译 opencv_createsamples opencv_traincascade

首先是下载源码

git clone https://github.com/opencv/opencv github.com/opencv/opencv

Mac 系统下 OpenCV DNN 训练 (填坑)_第1张图片
然后进行编译

cd github.com/opencv

# 创建项目目录

mkdir -p Xcode.prj-4.1.2

cd xcode.prj-4.1.2

cmake ../opencv -G "Xcode"

使用XCode打开xcode.prj-4.1.2/OpenCV.xcodeproj 项目编译完成后发现项目target中并没有有opencv_createsamples、opencv_traincascade这两个target。

激活target

激活以上两个target,打开 opencv/apps/CMakeLists.txt ,找到以下两行,删除前面的“#”号。

#ocv_add_app(traincascade)

#ocv_add_app(createsamples)

激活后使用 cmake 更新项目,这次生成的项目target里已经有了opencv_createsamples、opencv_traincascade这两个target,继续编译,编译发现这连个target中的代码已过时,先吐口血。

使用一下命令切换到2.4版本继续尝试编译。

git checkout -b mybranch origin/2.4

‘QTKit/QTKit.h’ File not found

刚开始以为QTKit是QT路径未找到的 但是确认开启了QT支持后发现仍然发现不能编译成功。继而查到QTKit是Mac下已经废弃

的QTKit.framework,查到的资料都是拷贝未升级的系统中的QTKit.framework,考虑到时间耽搁,最终决定不编译objectactive-c,移除源文件cap.cpp、cap—qtkit.mm的依赖。

DNN训练

为了能快速训练,验证能否成功,只用2个正样本,4个负样本,使用下面的命令进行训练

./opencv_createsamples -vec pos.vec -info pos.txt -bg neg.txt -w 50 -h 50

./opencv_traincascade -data xml -vec pos.vec -bg neg.txt -numPos 2 -numNeg 4 -numStages 10 -w 50 -h 50 -mode ALL

failed1 : 样本太少

Cascade classifier can’t be trained. Check the used training parameters.
然后,将样本各拷贝几份,使用下面的命令再次进行训练。
Mac 系统下 OpenCV DNN 训练 (填坑)_第2张图片

./opencv_createsamples -vec pos.vec -info pos.txt -bg neg.txt -w 50 -h 50

./opencv_traincascade -data xml -vec pos.vec -bg neg.txt -numPos 12 -numNeg 16 -numStages 10 -w 50 -h 50 -mode ALL

Succ : 训练成功

Train dataset for temp stage can not be filled. Branch training terminated.

xml目录下的 cascade.xml 就是本次训练的成功模型。

Mac 系统下 OpenCV DNN 训练 (填坑)_第3张图片

你可能感兴趣的:(OpenCV,神经网络,机器学习,深度学习)