Слишком медленное распознавание лица через dlib - PullRequest
0 голосов
/ 13 июня 2019

Я использую этот пример OpenCV для обнаружения лица . И затем я использую этот пример dlib для распознавания лиц. Первый шаг - определить лицо с помощью OpenCV и сохранить обнаруженный прямоугольник в формате jpg. Также я делаю то же самое для второго изображения. После этого я загружаю эти грани в модель dlib, и она пытается распознать, есть ли там тот же человек. Все работает и даже правильно, но на i7 8550U и 16-Гбайт оперативной памяти требуется около 1 мин 30 с для распознавания лиц. Так что, на мой взгляд, я делаю что-то неправильно. Вот какой-то код, как я пытаюсь сравнить лица:

anet_type dlibNet;
deserialize("dlib_face_recognition_resnet_model_v1.dat") >> dlibNet;
...
cv::Mat img1 = cv::imread("img1.jpg");
cv::Mat img2 = cv::imread("img2.jpg");
cv::resize(img1, img1, cv::Size(150, 150));
cv::resize(img2, img2, cv::Size(150, 150));

cv_image<bgr_pixel> image1(img1);
matrix<rgb_pixel> matr1;
assign_image(matr1, image1);

cv_image<bgr_pixel> image2(img2);
matrix<rgb_pixel> matr2;
assign_image(matr2, image2);

std::vector<matrix<rgb_pixel>> faces;
faces.push_back(matr1);
faces.push_back(matr2);
std::vector<matrix<float, 0, 1>> face_descriptors = dlibNet(faces);
if (length(face_descriptors[0] - face_descriptors[1]) < 0.6)
        cout << "Same person" << endl;
else
        cout << "Fail. Different people" << endl; 
...