Skip to content

Latest commit

 

History

History
32 lines (30 loc) · 4.55 KB

docs.md

File metadata and controls

32 lines (30 loc) · 4.55 KB

Модули

  • Storage, разделил на два хранилища на случай если вдруг придется прикручивать какой-нибудь индекс для эмбедингов (вряд ли)
    • хранилище эмбедингов, которое умеет искать k ближайших соседей
      • embedding_id => embedding
      • айди эмбедингов генерит само хранилище
    • хранилище метаданных
      • embedding_id => metadata
      • метаданные это файл с фоткой, айди юзера и тд
  • Engine - движок для работы со всем алгоритмом
    • объединяет в себе два Storage (для найденных и для потерянных) и модель для эмбедингов
    • Storage крутятся отдельным сервисом, потому что движком пользуются и телеграм бот и городская камера, а и им нужно шарить БД
    • модель крутится прямо в движке, надо будет тоже обернуть в сервис и запихнуть в какое-нибудь облако с GPU, потому что для Watcher получается медленно.
  • Telegram bot - просто использует Engine. Можно добавить найденного/потерянного питомца, в ответ бот возвращает совпадения если есть.
  • Watcher - крутится типа на городской камере. Смотрит кадры с видеопотока и пытается на них с помощью другой модели найти лица питомцев. Найденные лица кропает, находит для них эмбеддинг и отправляет в базу найденных питомцев. Модель для детекции лиц надо будет тоже затащить на облако, потому что на CPU у нее примерно 5 FPS, это медленно. Чтобы не замусоривать одними и теми же лицами нужно агрегировать результаты детекции: например, 3 секунды детектим, а эмбединг находим только для самого уверенного детекта за промежуток. Можно также перед тем как класть эмбединг в базу посмотреть нет ли в ней почти-дубликатов (L2 < 0.01). Также вотчеры используют отдельную базу для находяшек, чтобы упростить контроль.

Текущие вопросы

  • Надо поресерчить пороги уверенности для моделей. Какая должна быть dist между двумя питомцами, чтобы считать это совпадением? Какой должен быть conf у модели детекции, чтобы считать, что на фотке питомец?

  • у API бекенда будет метод getCurrentTopMatches(lost_id), возвращающее топ совпадений с городских камер для потеряшки. В каждом совпадении будет вся нужная инфа: фотка, степень совпадения (L2 расстояние), время обнаружения, местоположение камеры, может порода и т.д. Надо подумать как это все красиво показать хозяину потеряшки. Предварительно:

    • нужна красивая таблица с совпадениями и возможностью фильтрации (например, отсортировать по району, дальности от дома хозяина)
    • нужна карта, на которой будем рисовать совпадения. Нужно подумать как на карте учитывать степень совпадения, может просто цветом - красный=макс, синий=мин.

    Все это желательно адаптировать под мобилки (инфы много, места на экране мало, возможно все-таки оставим чисто веб).