Вопрос или проблема
Мне нужно проверить, зарегистрирован ли человек в базе данных, и если изображения имеют высокую степень сходства с одним из изображений в базе данных, я хочу получить информацию об изображении (имя, идентификатор и т.д.), чтобы отправить её по электронной почте или другой стороне. Проблема в том, что набор данных очень ограничен (у меня есть только одно изображение на человека), поэтому я увеличил количество изображений до примерно 30 вариаций за счёт увеличения. Сначала я думал использовать Siamese NN, поскольку он хорошо работает с ограниченным источником данных, но понял, что это требует пара изображений (собранного и из набора данных), циклического прохождения через большой набор данных (нужно пройти через 3 тысячи изображений), и SNN не слишком эффективен. Я боюсь использовать VGG или Facenet, поскольку увеличенный набор данных недостаточно велик, чтобы достичь определённой точности.
Есть ли какие-либо предложения на основе моего случая? Одна идея, которая у меня есть, это использовать NN как функцию и проводить расчёт сходства, основываясь на сохранённом NN.
Я обсудил эту проблему с другом и нашел хорошее решение. Ответ заключается в использовании CNN не как классификатора, а как генератора признаков (вложенного) и их сохранении в виде вектора. Далее можно использовать сходства векторов для проверки, является ли это тем же человеком или кто изображён на фотографии.
Вы можете использовать предварительно обученную модель ResNet, как вы упомянули, и затем настроить её как часть кодировщика в архитектуре сиамской сети. Вам не нужно обновлять веса после всех комбинаций, можно использовать мини-пакеты. Это работает довольно хорошо! Удачи!
Ответ или решение
Использование Сиамской нейронной сети (Siamese Neural Network, SNN) для решения задач с большими вариациями классов при ограниченном наборе данных представляет собой интересный вызов, особенно когда речь идет о проверке присутствия человека в базе данных по изображению. В вашей ситуации, где доступно только одно изображение на человека, вы правильно обратились к методам аугментации данных для создания дополнительных вариаций.
Проблема и её решение:
Поскольку требуется определение схожести между парой изображений, где одно — загруженное, а другое — из базы данных, традиционная Сиамская нейронная сеть может потребовать значительных затрат на вычисление из-за необходимости перебора большого объема данных (3k изображений). Это действительно может стать узким местом в производительности.
Основной подход, который вы предварительно рассматривали — использование сверточной нейронной сети (CNN) в качестве генератора признаков — является эффективной стратегией для вашей задачи. Использование предобученных моделей, таких как ResNet, и их настройка (fine-tuning) под ваши данные позволяет извлекать глубокие векторные представления изображений, которые затем могут быть сравнены.
Алгоритм действий:
-
Выбор модели для экстракции признаков: Используйте ResNet или другую предобученную CNN для извлечения признаков с ваших изображений. Это уменьшает необходимость обучения модели "с нуля" и позволяет использовать богатый опыт предобученных сетей.
-
Формирование векторных представлений: Полученные векторные представления (эмбеддинги) изображений сохраняйте в вашей базе данных. Это обеспечит возможность быстрого доступа и обработки.
-
Анализ схожести: Для анализа схожести использujte метрики, такие как косинусное расстояние или евклидово расстояние, чтобы оценить, насколько близки векторные представления. Это позволяет быстро сравнивать эмбеддинги пользователя с эмбеддингами в базе данных.
-
Оптимизация вычислений: Помимо применения мини-батчей при настройке моделей, рассмотреть возможность использования индексации вектора (через библиотеки, такие как Faiss), что существенно ускорит процесс поиска и сравнения векторов.
-
Автоматизация и интеграция: Настройте систему оповещений, чтобы автоматически отправлять информацию (имя, ID и т.д.) по электронной почте или другим каналам при нахождении соответствий.
Этот подход позволит эффективно и продуктивно определять присутствие человека в базе данных, даже при ограниченном наборе данных. Ключевым элементом успеха станет оптимальная обработка эмбеддингов и выбор подходящих метрик для сравнения.
Удачи в реализации вашего проекта! Эффективное использование предобученных моделей и метрик может значительно повысить точность и производительность вашей системы.