ubuntu20+dlib19.22+0pencv4.5.0的非特定目标识别之手势识别算法
项目简介:
该项目包括训练和识别过程。
(1) 找到 imglab 工具源码目录进行配置编译
imglab位于dlib源码包的tools里面。
cd tools/imglab/
cmake .
make
编译完成后将生成的 imglab 可执行文件,将其拷贝到样本照片所在目录。
(2) 在dlib源码包找到 examples/train_object_detector.cpp 样本训练工具,将其拷贝出来单独进行编译,并生成 train_object_detector 可执行文件
(3) 图像采集:
dlib 对样本照片并没有太多要求,会做二次处理,样本拍摄建议在光线充足的情况下完成采集,样本数量越多越好,并将拍好的照片统一放在一个目录,比如 img 下面等待处理。
(4) 生成 xml 描述文件:
./imglab -c data.xml img
(5) 生成 xml 描述文件:
手动标记检测目标或特征点。在弹出的图形化工具上面对需要检测的特征进行标记,通过 shift 选择识别对象,双击选中对象以后,右键可以标记特征点,标记完成点 File->save 保存结果到 xml 中。
命令如下:
./imglab data.xml
如果要标记特征点,需要增加参数
./imglab mydataset.xml --parts "1 2 3 4 5 6 7 8 9 10"
打开 xml 可以查看目标或特征的标记坐标,同时还生成了一个 image_metadata_stylesheet.xsl 样式文件。
(6) 训练样本
./train_object_detector -tv data.xml
训练结束后会生成 object_detector.svm 模型序列,这个模型就可以用于对象检测了。
训练效果比较好的话,要求数据多,而且标记的特征点要多要好。
(7) 训练模型测试
一般先从训练样本中随便找张照片进行测试,测试如果能够成功找出目标后,再用于实际的目标识别:
./train_object_detector photo.png