Как обучить модель OpenCV (cv::LBPHFaceRecouncer) с очень большим количеством изображений?C++

Программы на C++. Форум разработчиков
Гость
Как обучить модель OpenCV (cv::LBPHFaceRecouncer) с очень большим количеством изображений?

Сообщение Гость »


Я пытаюсь создать в OpenCV модель для распознавания лиц (в частности, пола и возраста). В моем наборе данных около 50 000 изображений. Когда я пытаюсь обучить модель с таким объемом данных, использование памяти просто увеличивается. Даже при попытке пакетной обработки и выгрузки загруженного изображения cv::mat модель просто увеличивается в размерах (чего, я думаю, и следовало ожидать).
Я пробовал загрузить и обучить одно изображение на время, и с этим вариантом я пробовал обучение в пакетном режиме, но результат все тот же.
Класс ImageCollection представляет собой просто карту SEXAGEBRACKET (меток) для путей к файлам изображений. Я использую модель LBPHFaceRecouncer.
Вот как выглядит моя функция «загрузка и обучение»:

Код: Выделить всё

void ModelGenerator::LoadImagesAndTrain(const ImageCollection* imageCollection, const cv::Ptr modelToTrain, const bool isUpdatingModel)
{
cv::Size loadedImageSize;
cv::Mat currLoadedImage;
std::vector imagesToUse;
std::vector labelsToUse;
std::multimap* bracketToImageFileNameMap;

if (imageCollection != NULL && modelToTrain != NULL)
{
std::cout begin()->second, cv::IMREAD_GRAYSCALE);

imagesToUse.push_back(currLoadedImage);
labelsToUse.push_back(bracketToImageFileNameMap->begin()->first);

modelToTrain->train(imagesToUse, labelsToUse);

currLoadedImage.release();
}

imagesToUse.clear();
labelsToUse.clear();

unsigned long i = 1UL;
for (std::multimap::iterator it = bracketToImageFileNameMap->begin(); it != bracketToImageFileNameMap->end(); it++)
{
if ((i % 2000) == 0)
{
std::cout 

Источник: [url]https://stackoverflow.com/questions/78141558/how-to-train-an-opencv-model-cvlbphfacerecognizer-with-a-very-large-number-o[/url]

Вернуться в «C++»