dlib's scan_fhog_pyramid: установить max_pyramid_levels
Я использую детектор объекта, который имеет следующий тип:
dlib::object_detector<dlib::scan_fhog_pyramid<dlib::pyramid_down<2>>>
Мой код такой:
dlib::object_detector<dlib::scan_fhog_pyramid<dlib::pyramid_down<2>>> d;
dlib::deserialize(svm_path) >> d;
d.get_scanner().set_max_pyramid_levels(max_levels);
Так что в основном то, что я делаю, это определение детектора объекта. Десериализация уже обученного svm
в этот объект детектор. И в последней строке я пытаюсь настроить детектор, изменив количество уровней пирамиды свиней.
Последняя строка не компилируется как get_scanner()
возвращается const image_scanner_type &
, Так меняется max_pyramid_levels
не сработает Я хотел бы знать, есть ли способ изменить это, чтобы сканировать меньше изображений (т.е. у пирамиды будет меньше изображений).
Моя цель - повысить производительность детектора, и в моем случае я уверен, что в пирамиде требуется только несколько масштабов изображения.
Спасибо за ваш ответ.
1 ответ
Вы можете построить новый детектор объектов с помощью нового сканера изображений:
typedef dlib::scan_fhog_pyramid<dlib::pyramid_down<2> > image_scanner_type;
typedef dlib::object_detector<image_scanner_type> detector_type;
detector_type d;
dlib::deserialize(svm_path) >> d;
image_scanner_type new_scanner;
new_scanner.copy_configuration(d.get_scanner());
new_scanner.set_max_pyramid_levels(1);
detector_type new_d(new_scanner, d.get_overlap_tester(), d.get_w());
Или используйте const_cast.