如何在dlib正面探测器中分离级联能级
How to split cascades levels in dlib frontal face detector?
后续:openface/inquest/157
我正试图将dlib正面检测器中的五级级联拆分为三级(正面、正面但向左旋转,正面但向右旋转)
叶甫根尼建议在C++中拆分检测器。我不熟悉C++。当我查看frontal_face_detector.h时,get_serialized_frontal_faces
返回一个base64编码的对象。
我学会了如何将现有检测器保存到.svm
文件中:
#include <dlib/image_processing/frontal_face_detector.h>
#include <iostream>
using namespace dlib;
using namespace std;
int main()
{
frontal_face_detector detector = get_frontal_face_detector();
dlib::serialize("new_detector.svm") << detector;
std::cout<<"End of the Program"<<endl;
return 0;
}
那么,如何拆分级联并将新的检测器保存到.svm
文件中呢?
检测器性能也将通过从<6> 到frontal_face_detector.h中的较低值?
只需阅读对象检测器文档,您就会找到解释。以下代码将把探测器分成多个部分,重建原始并限制金字塔级别:
#include <dlib/image_processing/frontal_face_detector.h>
#include <iostream>
#include <string>
using namespace dlib;
using namespace std;
int main()
{
frontal_face_detector detector = get_frontal_face_detector();
dlib::serialize("current.svm") << detector;
std::vector<frontal_face_detector> parts;
// Split into parts and serialize to disk
for (unsigned long i = 0; i < detector.num_detectors(); ++i)
{
dlib::frontal_face_detector part(detector.get_scanner(), detector.get_overlap_tester(), detector.get_w(i));
dlib::serialize("part" + std::to_string(i) + ".svm") << part;
parts.push_back(part);
}
// Reconstruct original detector
frontal_face_detector reconstructed(parts);
dlib::serialize("reconstructed.svm") << reconstructed;
// Create detector that will work only on one level of pyramid
typedef dlib::scan_fhog_pyramid<dlib::pyramid_down<6> > image_scanner_type;
image_scanner_type scanner;
scanner.copy_configuration(detector.get_scanner());
scanner.set_max_pyramid_levels(1); //try setting to 2, 3...
frontal_face_detector one_level_detector = dlib::object_detector<image_scanner_type>(scanner, detector.get_overlap_tester(), detector.get_w());
std::cout<<"End of the Program"<<endl;
return 0;
}
否,将金字塔级别从<6> 对任何其他值都没有多大帮助,因为6不是金字塔级别的限制,而是它在金字塔中的比例:
6=5/6
5=4/5
相关文章:
- 只有级联分类器会发出未定义的引用错误
- 裁剪并显示我从哈尔级联获得的图像
- 每次b/c程序无法加载级联时,使用harr级联的人脸识别都会失败
- C++ 为什么要级联共享对象链接
- 使用打开级联读取步骤文件
- 如何使用所有其他文件信息来编译代码,例如HAAR级联训练的权重的XML文件
- 为什么 haar 级联非常慢 opencv c++.
- 级联功能调用
- 通过级联呼叫来递增值
- 复制构造函数和级联功能调用
- 如何实现分类比较器,以级联相关对象
- CUDA:所有矢量元素的级联求和
- 用于人脸检测的Haar级联xml文件代码解释OpenCV
- 恒定时间级联计算是否可行
- 级联文件的iOS opencv filepath
- OpenCV对象在训练级联后检测算法会冻结
- 返回引用和使用级联函数
- 在黑莓 10 级联 Beta 4 SDK 中显示带有给定号码的拨号盘
- BlackBerry 10级联-如何导航到另一个CPP类
- 如何在dlib正面探测器中分离级联能级