Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проектная практика студента первого семестра магистратуры "Машинное обучение" ИИКС НИЯУ МИФИ Лысогора Антона Алесандровича на тему "Мониторинг экосистемы через IT-решения"

Москва, 2025

Введение

СУТЬ ПРОБЛЕМЫ:

В настоящее время происходит массовое вымирание животных, так называемое "шестое массовое вымирание" или "голоценовское вымирание" (голоцен - геологическая эпоха, начавшаяся около 12 тысяч лет назад). Отдельным пунктом в этом вымирании стоит вымирание мегафауны — крупных наземных животных тяжелее 45 килограммов. Крупных животных выделяют по ряду причин, в том числе из-за того, что крупные животные бросаются в глаза и всё время на виду и ещё, что крупные животные точно подвержены антропогенному (человеческому) уничтожению, в первую очередь, благодаря охоте и разрушению мест обитния животных.

Один из способов сохранения животных - это создание заповедных зон с установленными фотоловушками (camera trap, автономные камеры с автоматическим запуском по датчику движения).

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

Интерес представляют съёмки:

  • животных — для подсчёта статистики посещения, кучности (количества животных в кадре), выяснения сезонности, подсчёт не только количественного, но и видового биоразнообразия;
  • людей/транспорта — для выявления случаев браконьерства и оценки антропогенного вляния на частоту появления животных в кадре.

РЕШЕНИЕ:

IT-система автоматизированного мониторинга биоразнообразия

Ядро системы: MegaDetector — предобученная нейронная сеть для детекции объектов на фотографиях с камер-ловушек.

ПЛЮСЫ:

  • Автоматическое распознавание на снимках объектов трёх видов: животные (animal), люди (person), транспорт (vehicle).
  • Рекурсивная обработка всех изображений во всех директориях входного каталога.
  • Создание файла отчёта, формата JSON, с указанием для каждого файла-снимка:
    • отметки вида распознования (1 - animal, 2 - person, 3 - vehicle);
    • ранга. Ранжирование всех распознаных объектов для каждого снимка по степени уверенности (0, 1, 2, ...);
    • доверительного интервала (confidence interval) или степени уверенности — число меньше единицы и больше нуля (для примера, 96.6 % — это точность работы обученных волонтеров в проекте Snapshot Serengeti);
    • четырёх координат, для выделения квадрата нахождения распознаного объекта на снимке.
  • Оповещение об угрозах в режиме реального времени (детекция браконьеров по появлению людей/транспорта ночью в заповедной зоне).

Описание проекта

Данный проект призван продемонстрировать работоспособность модели (предобученной нейронной сети MegaDetctor).

Для этого создан репозиторий на GitHub, который содержит:

  • Папку с тестовыми изображениями /megadetector_test_images, всего 29 штук, из них:
    • большинство, 17 изображений, — условно случайные (отбирал вручную) снимки фотоловушек с датасета Snapshot Safari 2024 Expansion (один из датасетов, использованных для обучения модели).
    • остальная часть — тестовая, для проверки, как поведёт себя модель на незнакомых снимках:
      • всё, кроме двух снимков, изображения из Википедии: динозавров, дамы в шляпе, танка, экскаватора, светофора, коня, единорога;
      • один снимок из личной коллекции (селфтест);
      • один снимок случайный из интернета ("осёл и кот.jpg"), для проверки распознавания вымышленных существ из мультфильма.
  • Python-скрипт, файл формата Jupyter Notebook megadetector.ipynb, для запуска модели в режиме рекурсивной обработки всех изображений во всех каталогах входной папки \megadetector_test_images.

Инструкция для запуска

Установка Python и Jupyter Notebook

Если вы не знаете уставновлен ли у вас Python и хотите установить его впервые, то рекомендую установить Miniforge - среду для установки и запуска компонентов Python. Существуют и другие способы установки Python, и MegaDetector не зависит конкретно от Miniforge, но его установка довольно проста, поэтому я буду использовать именно его в этих инструкциях. Если у вас уже установлена Miniforge, Anaconda или любая другая среда Python, вы можете пропустить этот шаг.

Для установки Miniforge в Windows, скачайте и запустите Miniforge installer. После установки у вас должен появиться ярлык для запуска командной строки с названием "Miniforge prompt". Запустите его, должно получиться что-то вроде этого: (base) PS C:\Users\{ваше имя пользователя}>. (В скобках слева указано имя текущего окружения Python.)

Установим программу Jupyter Notebook (веб-приложение с открытым исходным кодом, которое позволяет создавать и обмениваться документами, содержащими работающий код, уравнения, визуализации и повествовательный текст), так как скрипт для запуска модели написан именно в нём.

mamba install jupyter

Если у вас уже стоит Python и вы знаете, что делать:

pip install -r requirements.txt

Установка виртуального окружения и библиотеки распознавания MegaDetector

После того, как вы окажетесь в командной строке Miniforge, рекомендую создать виртуальное окружение Python, куда вы будете устанавливать компоненты MegaDetector. Виртуальное окружение — это набор инструментов Python, существующих в своей собственной изолированной среде, поэтому они не будут мешать другим инструментам Python, установленным в других средах на вашем компьютере. Чтобы создать окружение с именем «megadetector», откройте командную строку Miniforge и выполните следующую команду (если у вас уже стоит conda, то пишите conda вместо mamba в командах ниже):

(base)$ mamba create -n megadetector python=3.11 pip -y

Активируем созданное виртуально окружение:

(base)$ mamba activate megadetector

Привязка виртуального окружения к Jupyter:

(megadetector)$ pip install ipykernel
(megadetector)$ python -m ipykernel install --user --name=megadetector --display-name "megadetector"

Теперь в Jupyter можно выбрать это ядро, и ноутбук будет использовать пакеты из конкретного виртуального окружения.

Установим Python-библиотеку MegaDetector (может занять некоторое время в зависимости от скорости скачивания, у меня при средней скорости 125 kB/s потребовалось около 30 минут и около 10 минут при средней скорости 10 MB/s):

(megadetector)$ pip install --upgrade megadetector

Скачивание и запуск скрипта

Сверху этой страницы есть зелёная кнопка <> Code ▼, нажмите на неё и выберите в выпадающем меню пункт Download ZIP, скачайте архив и распакуйте его.

Откройте командную строку Miniforge prompt и выполните команду jupyter notebook. Эта команда запустит сервер jupyter и попытается запустить начальную страницу (Home Page) в браузере по умолчанию. В открывшемся окне браузера на владке Файлы перейдите к скачанному и распакованному архиву и откройте файл megadetector.ipynb.

(Что может пойти не так:

  1. Браузер по умолчанию не тот или настроен неправильно (у меня одно время по умолчанию открывалось приложение Telegram). В этом случаее скопируйте в терминале (окно с командной строкой) ссылку на ноутбук, откройте ваш браузер и вставьте скопированную ссылку.

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

Or copy and paste one of these URLs:
http://localhost:8888/?token=...уникальный.хэш (набор латинских букв и цифр)
  1. На вкладке Файлы вы не видите папку с распакованным архивом, так как Jupyter видит только те файлы и папки, которые вложены в каталог, где его открыли. Переместите папку со скаченным архивом в это место, либо в командной строке перейдите на требуемые уровни выше cd ...

В открывшемся файле megadetector.ipynb в закладке Ядро в нижнем пункте Изменение ядра, выберите ядро созданного виртуального оружения megadetector.

В меню сверху выберите раздел Ячейка, а в нём пункт Запустить всё (Run->Run All Cells). Для обработки всех изображений тоже потребуется какое-то время в зависимости от конфигурации вашего компьютера и наличии в нём доступной видеокарты. (У меня заняло от одной минуты (~5 sec/img), на новом коппьютере и до 5 минут на старом (~17 sec/img), оба без поддержки видеокарты, с ней должно быть быстрее.)

Описание полученного результата

В целом успех.

На снимках из фотоловушек всё ожидаемо правильно. Где пусто, там пусто. Где животные, там выделены животные (при установленном уровне достоверности >20%). Единственная галлюцинация на втором снимке anno_Safari 2024~APN_S2_KUMH_R3_IMAG0178.jpeg помимо animal 97% ещё ряд ложных выделений кустов, как животных. (Так как основное животное выделено правильно, можно считать ошибку не критичной.)

На тестовых снимках тоже всё хорошо. Смоделированные динозавры уверенно определяются, как животные. Танк не был перпутан со слоном, а экскаватор с носорогом. Лена (дама в шляпе) определена, как человек (всего лишь 41% уверенности, можно списать на то, что люди на фотоловушках в основном предоставлены в полный рост, а не только одной головой). Ни один светофор не был никак опознан. Нарисованный конь - получил статус животного, я - человека, вымышленный осёл - животного (96%), а вот кот в сапогах - был опознан, как человек, с уверенностью 55%. (Это сложный вопрос оценки качества распознавания. С одной стороны дама в шляпе явно более человек, чем антропоморфный кот. C другой стороны, если выставить уровень уверенности до 60%, то с ними потеряем ещё только рисованных: единорога и матросов уничтожающих дронтов. Пока буду считать это несущественным недостатком.)

Вывод

Признаю модель годной для дальнейшей промышленной разработки.

  1. Легка в установке.
  2. Выдаёт приемлимое качество распознавания.
  3. Содержит множество инструментов для обработки изображений, в том числе:
    • рекурсивная обработка всего каталога загружаемых изображений;
    • подробный лог распознавания;
    • тонкая визуализация распознавания (установка доверительного интервала).

Полезные ссылки

Задание

Задача Мониторинг экосистемы через IT-решения.

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

Решение Создание IT-системы, которая:

  • использует данные из разных источников (спутники, аудио, фото, сенсоры);
  • применяет предобученные модели ML для анализа аномалий, трендов и изменений;
  • визуализирует данные для поддержки принятия решений;
  • автоматизирует оповещения о критических событиях в экосистемах.

Оценивание Общая оценка формируется по 100-балльной шкале:

Критерий Максимум балов Описание
Структура работы 20 В проекте есть решение и его описание
Комментарии к коду 20 Код структурирован, читаем, снабжён комментариями
Документация 20 README.md содержит описание, инструкции и ссылки
Качество решения 40 Прототип работоспособен, решает задачу, корректно использует модели ML

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages