/RedListHack

Solution for Samara AI Hackathon 2021. Amur tiger and far eastern leopard.

Primary LanguagePythonApache License 2.0Apache-2.0

RedListHack

Решение "Команды А" для Самарского хакатона по икусственному интеллекту 2021.

Оглавление

  1. Описание кейса

  2. Техническое решение

    2.1. Детектирование и классификация

    2.2. Распознавание уникальной особи

  3. Развертывание и запуск

  4. Дальнейшее развитие проекта

Описание кейса

Наш решение предназначено для детектирования и классификации амурских тигров и дальневосточных леопардов - видов, занесенных в красных книгу, - и распознавании уникальной особи амурского тигра, тигрицы Принцессы. Датасет для обучения моделей предоставлен организаторами хакатона.

Техническое решение

Детектирование и классификация

Для обучения моделей классификации и детектирования мы использовали фреймворк Detectron2. Мы использовали архитектуру Fast R-CNN.

В начале мы обучаем детектор только на изображениях тигров и леопардов в течении 1 эпохи. Затем использовали полученную модель с низким порогом реагирования для отрисовки bounding box-ов на неразмеченных изображениях других видов животных, таким образом, получая рамки для неразмеченных данных (при этом количество ложно-позитивных срабатываний - срабатываний на изображениях, где вообще нет животных - было малым и отлавливалось руками).

После идет обучение классификатора и детектора на 3 классах: тигры, леопарды, другие виды животных.

Также в пайплайн решения входит дообучение модели в процессе эксплуатации: с камер поступают новые изображения - распознаваемые с высоким порогом уверенности сразу используются для дообучения, с низким - проверяются пользователем, затем поступают в систему.

Распознавание уникальной особи

Для распознавания уникальной особи амурского тигра было опробовано несколько подходов:

  1. Pose Estimation и обнаружение правого и левого полубоков.

PoseEstim

  1. Использование алгоритма SIFT.

SIFT

  1. Edge Detection и различные фильтры, накладываемые на изображения.

Edges

В итоге для распознавания Принцессы используются модель EfficientNetB0 для бинарной классификации - вначале происходит определение вида животного с помощью модели детекции, описанной выше, затем определяется является ли тигр Принцессой или нет.

При дальнейшем развитии проекта планируется улучшение имеющихся моделей, а также проверка возможности объедиенения с подходами, описанными выше. Подобную реализацию мы нашли в статье.

Развертывание и запуск

Загрузить веса модели можно по ссылке.

В директории сервера необходимо создать папку /output/model_b и поместить туда веса модели.

Создать структуру файлов data/sorted/,data/buffer, data/uncertain. В первой - три папки: tiger, leopard, other, во второй - изображения, которые мы хотим отсортировать.

Ниже команды для установки detectron2:

git clone https://github.com/facebookresearch/detectron2 detectron2_repo
pip install -e detectron2_repo

Также необходимо fast_api.

Ссылка на гугл-диск с метриками:

классификация разных животных

распознавание Принцессы