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.

Другие вопросы по тегам