Решение "Команды А" для Самарского хакатона по икусственному интеллекту 2021.
Наш решение предназначено для детектирования и классификации амурских тигров и дальневосточных леопардов - видов, занесенных в красных книгу, - и распознавании уникальной особи амурского тигра, тигрицы Принцессы. Датасет для обучения моделей предоставлен организаторами хакатона.
Для обучения моделей классификации и детектирования мы использовали фреймворк Detectron2. Мы использовали архитектуру Fast R-CNN.
В начале мы обучаем детектор только на изображениях тигров и леопардов в течении 1 эпохи. Затем использовали полученную модель с низким порогом реагирования для отрисовки bounding box-ов на неразмеченных изображениях других видов животных, таким образом, получая рамки для неразмеченных данных (при этом количество ложно-позитивных срабатываний - срабатываний на изображениях, где вообще нет животных - было малым и отлавливалось руками).
После идет обучение классификатора и детектора на 3 классах: тигры, леопарды, другие виды животных.
Также в пайплайн решения входит дообучение модели в процессе эксплуатации: с камер поступают новые изображения - распознаваемые с высоким порогом уверенности сразу используются для дообучения, с низким - проверяются пользователем, затем поступают в систему.
Для распознавания уникальной особи амурского тигра было опробовано несколько подходов:
- Pose Estimation и обнаружение правого и левого полубоков.
- Использование алгоритма SIFT.
- Edge Detection и различные фильтры, накладываемые на изображения.
В итоге для распознавания Принцессы используются модель 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.
Ссылка на гугл-диск с метриками: