Python 如何使用dlib训练或合并多个.svm并检测多个类

Python 如何使用dlib训练或合并多个.svm并检测多个类,python,c++,image-processing,deep-learning,dlib,Python,C++,Image Processing,Deep Learning,Dlib,我想做一个非常简单的例子:使用dlib进行训练,以检测“猫”和“狗”(两个类),并提供框坐标 到目前为止,我发现的示例是只使用一个类进行训练并生成一个.svm文件: 我不擅长C++(但我可以学习),我更喜欢用Python做事情。经过几天的研究(我也是深度学习新手),我想我必须改变以下几行: object_detector<image_scanner_type> detector = trainer.train(images, object_locations, ignore); se

我想做一个非常简单的例子:使用dlib进行训练,以检测“猫”和“狗”(两个类),并提供框坐标

到目前为止,我发现的示例是只使用一个类进行训练并生成一个.svm文件:

我不擅长C++(但我可以学习),我更喜欢用Python做事情。经过几天的研究(我也是深度学习新手),我想我必须改变以下几行:

object_detector<image_scanner_type> detector = trainer.train(images, object_locations, ignore);
serialize("object_detector.svm") << detector;
object\u detector=trainer.train(图像、object\u位置、忽略);

序列化(“ObjtTyTrace.SVM”)

我可以告诉你如何在C++中这样做。然后,我希望您能够了解如何使用Python实现它

这样做不需要使用单个.dat文件。您可以单独训练探测器并保存到单独的文件中。这允许您添加新探测器、更换现有探测器等,而无需再培训。 之后需要创建检测器的向量。i、 e:

std::vector<object_detector> detectors(3);
dlib::deserialize(detectors[0], "object_detector.svm");
dlib::deserialize(detectors[1], "object_detector_2.svm");
dlib::deserialize(detectors[2], "object_detector_3.svm");
在我的例子中,一次运行所有检测器(5)的执行速度大约是顺序运行检测器的2.5-3倍。但这将取决于每个探测器的检测窗口有多相似

std::vector<object_detector> detectors(3);
dlib::deserialize(detectors[0], "object_detector.svm");
dlib::deserialize(detectors[1], "object_detector_2.svm");
dlib::deserialize(detectors[2], "object_detector_3.svm");
std::vector<dlib::rect_detection> detections;
dlib::evaluate_detectors(detectors, image, detections);
for (auto& det : detections) {
    det.rect;          // found rectangle
    det.weight_index;  // detector index in vector (to indentify object class)
}