Нажимая “Принять все файлы cookie”, вы соглашаетесь на сохранение файлов cookie на вашем устройстве с целью улучшения навигации по сайту, анализа использования сайта и помощи в наших маркетинговых усилиях. Подробнее
Настройки cookie
Нажимая “Принять все файлы cookie”, вы соглашаетесь на сохранение файлов cookie на вашем устройстве с целью улучшения навигации по сайту, анализа использования сайта и помощи в наших маркетинговых усилиях. Подробнее
Узнайте, как обучать модели YOLO для обнаружения животных в дикой природе с использованием набора данных African Wildlife Dataset и использовать модель для выполнения выводов на невидимых изображениях.
Дикая природа нашей планеты невероятно разнообразна, от жужжащих пчел до высоких слонов, и сохранение этого биоразнообразия является ключом к поддержанию сбалансированной экосистемы. Однако усилия по сохранению природы становятся все более сложными из-за потери среды обитания, браконьерства и изменения климата. Все эти факторы негативно влияют на популяции диких животных.
Традиционные методы мониторинга животных, такие как ручной анализ изображений с камер-ловушек и проведение полевых исследований, могут быть медленными и требовать больших ресурсов. Эти усилия часто не позволяют эффективно охватить большие территории и большие популяции.
Чтобы преодолеть эти ограничения, искусственный интеллект (AI) можно использовать в качестве эффективного инструмента в охране дикой природы. В частности, модели компьютерного зрения, такие как Ultralytics YOLO11, могут анализировать визуальные данные, такие как изображения и видео, для автоматизации идентификации и отслеживания животных в реальном времени.
Здесь очень полезны задачи компьютерного зрения, такие как обнаружение объектов и сегментация экземпляров, поддерживаемые YOLO11. Анализируя визуальные данные, эти задачи помогают нам собирать важные данные, выявлять экологические закономерности и более эффективно реагировать на экологические угрозы.
В этой статье мы рассмотрим процесс обучения YOLO11 для обнаружения животных. Давайте начнем!
Начало работы с Ultralytics YOLO11
Прежде чем перейти к руководству, давайте рассмотрим различные варианты настройки и инструменты, которые вам понадобятся для обучения и использования YOLO11.
Основной инструмент, который вам понадобится, — это пакет Ultralytics Python, который упрощает работу с моделями YOLO для таких задач, как обучение, обнаружение объектов и запуск выводов. Чтобы использовать пакет Ultralytics, вам необходимо настроить среду для запуска кода, и у вас есть различные варианты на выбор.
Вот некоторые из наиболее популярных вариантов настройки среды разработки:
Интерфейс командной строки (CLI): CLI, также известный как терминал, — это текстовый инструмент, который позволяет взаимодействовать с компьютером, вводя команды. В отличие от графических интерфейсов (GUI), где вы нажимаете кнопки и используете мышь, CLI требует ввода текстовых инструкций для запуска программ или выполнения задач.
Jupyter Notebooks: Эти блокноты позволяют писать и запускать код небольшими фрагментами, называемыми ячейками. Это интерактивно, то есть вы можете сразу увидеть результат своего кода, что упрощает тестирование и отладку.
Google Colab: Google Colab — это облачная платформа, которая работает как Jupyter Notebooks, но предлагает бесплатный доступ к мощным графическим процессорам. Ее легко настроить, и вам не нужно ничего устанавливать на свой компьютер.
Хотя существуют и другие варианты настройки вашей среды, которые вы можете изучить в официальной документации Ultralytics, три упомянутых выше варианта требуют очень небольшой настройки и просты в использовании, что делает их идеальными для быстрого начала работы.
В этом руководстве мы покажем, как настроить и обучить YOLO11 с помощью Google Colab, Jupyter Notebooks или простого файла Python, поскольку шаги очень похожи во всех этих средах.
Понимание набора данных African Wildlife
После выбора среды разработки, чтобы обучить YOLO11 обнаруживать диких животных, нам нужен высококачественный набор данных с размеченными изображениями. На каждом изображении должно быть четко показано, где находятся животные и какого они типа, чтобы модель могла научиться распознавать их посредством обучения с учителем.
В этом руководстве мы будем использовать набор данных «Африканская дикая природа». Он поддерживается пакетом Ultralytics Python и специально разработан для обнаружения животных, обычно встречающихся в африканских экосистемах. Он содержит аннотированные изображения четырех ключевых видов: буйволов, слонов, носорогов и зебр.
Рис. 1. Краткий обзор набора данных African Wildlife.
Вот некоторые ключевые особенности набора данных African Wildlife:
Масштаб: Набор данных состоит из 1504 изображений, разделенных на три подмножества: 1052 для обучения, 225 для валидации и 227 для тестирования. Такое разделение гарантирует, что модель эффективно обучается и тщательно оценивается.
Простая интеграция: Ultralytics предоставляет файл конфигурации YAML, который определяет пути к набору данных, классы и другие детали, что упрощает его использование при обучении моделей YOLO.
Открытая лицензия: Этот набор данных распространяется под лицензией AGPL-3.0, что способствует прозрачности и сотрудничеству.
Обучение Ultralytics YOLO11 для обнаружения животных
Теперь, когда мы изучили набор данных африканской дикой природы, мы можем начать обучение модели YOLO11 для обнаружения животных на изображениях. Этот процесс включает в себя настройку среды разработки, обучение модели YOLO11 и оценку производительности модели.
Шаг 1: Настройка среды
Для начала мы подготовим среду для обучения и тестирования модели. Google Colab, Jupyter Notebooks или простой файл Python можно использовать в зависимости от ваших предпочтений. Создайте новый блокнот Google Colab, Jupyter Notebook или файл Python соответственно.
Если вы используете Google Colab, среда по умолчанию работает на CPU (центральном процессоре), что может замедлить обучение. Чтобы ускорить процесс, особенно для больших моделей, вы можете переключить среду выполнения на использование GPU. В Google Colab вы можете перейти на вкладку «Среда выполнения» в меню, выбрать «Изменить тип среды выполнения» и установить аппаратный ускоритель на GPU (предпочтительно T4 GPU). Это важно для сокращения времени обучения.
Далее, независимо от того, какую среду вы используете, вам необходимо установить пакет Ultralytics Python. Если вы используете среду на основе блокнотов (Google Colab или Jupyter), выполните следующую команду с восклицательным знаком (!) в начале.
pip install ultralytics
Шаг 2: Загрузка YOLO11 и подготовка набора данных
После установки пакета Ultralytics следующим шагом является загрузка модели YOLO11 и подготовка набора данных для обучения. Сначала мы загружаем модель YOLO11, которая уже предварительно обучена для общих задач обнаружения объектов. Эта предварительно обученная модель дает нам хорошую отправную точку, поскольку она уже научилась обнаруживать различные объекты.
Затем мы указываем набор данных с помощью YAML-файла, который содержит информацию об изображениях и метках. Этот файл сообщает модели, где найти набор данных и какие объекты она должна научиться распознавать.
Набор данных African Wildlife поддерживается пакетом Ultralytics, поэтому он будет автоматически загружен при запуске обучения, что избавит вас от необходимости настраивать его вручную.
Как только набор данных будет готов, начнется обучение модели. Модель несколько раз пройдет через набор данных, этот процесс называется обучением на нескольких эпохах, чтобы улучшить свою способность распознавать животных на изображениях. В ходе этого процесса размер изображений будет изменен до единообразного размера для обработки, и модель будет работать с заданным количеством изображений за раз, известным как пакет. Это помогает модели учиться более эффективно.
Вкратце, модель загружается, набор данных автоматически скачивается, и начинается обучение для обнаружения животных на основе набора данных African Wildlife Dataset при запуске приведенного ниже фрагмента кода.
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
results = model.train(data="african-wildlife.yaml", epochs=30, batch=8)
Шаг 3: Пошаговое руководство по обучению YOLO11
После запуска приведенного выше фрагмента кода модель начинает обучение на основе заданных нами настроек. Мы указали модели через код, чтобы она прошла через обучающие изображения 30 раз. Это означает, что модель просмотрит все изображения в наборе данных 30 раз, каждый раз узнавая немного больше.
Представьте, что вы пытаетесь научиться рисовать животное. В первый раз у вас может получиться не очень хорошо, но после многократной практики у вас начинает получаться лучше. Каждый раз, когда вы пробуете снова, вы учитесь на своих ошибках и исправляете их. Это то, что делает каждая эпоха для модели - она смотрит на изображения, совершает ошибки, учится на них и каждый раз лучше распознает животных.
Если код обучения успешно запущен, вы увидите следующий вывод по мере продвижения обучения:
Настройка обучения: В первой части отображается версия Ultralytics, PyTorch и используемое оборудование (в данном случае ЦП), а также конфигурация обучения, включая модель (yolo11n.pt), размер пакета, количество эпох и размер изображения.
Сводка по модели: Предоставляет информацию о сложности модели, такую как количество слоев и параметров, показывая, насколько велика модель.
Оптимизатор и скорость обучения: В нем упоминается оптимизатор (например, AdamW) и скорость обучения, которые контролируют, как модель корректирует свои параметры во время обучения.
Сканирование набора данных: Модель сканирует набор данных, показывая, сколько изображений являются допустимыми и готовыми к обучению. Это подтверждает отсутствие проблем с набором данных.
Прогресс обучения: Выходные данные обновляются после каждой эпохи (цикла обучения), показывая прогресс обучения вместе с ключевыми значениями потерь (box_loss, cls_loss, dfl_loss), которые указывают, насколько хорошо модель обучается.
Метрики производительности: После каждой эпохи вы увидите метрики производительности, такие как точность, полнота и mAP (средняя средняя точность). Эти значения показывают, насколько точно модель обнаруживает и классифицирует объекты.
Использование памяти GPU: При использовании GPU в выходных данных отображается использование памяти для отслеживания загрузки оборудования.
Рис. 2. Вывод, который вы увидите во время обучения модели.
Шаг 4: Оценка производительности пользовательской обученной модели
После завершения процесса обучения вы можете просмотреть и проверить показатели производительности модели. В Google Colab вы можете перейти в папку «runs», затем в папку «detect» и, наконец, в папку «train», где вы найдете журналы, отображающие ключевые показатели производительности.
Для пользователей в среде Python результаты обучения по умолчанию сохраняются в каталоге “runs/train/” в вашем текущем рабочем каталоге. Каждый запуск обучения создает новый подкаталог (например, runs/train/exp, runs/train/exp2 и т. д.), где можно найти журналы и другие выходные данные, связанные с обучением.
Если вы используете CLI, вы можете легко получить доступ к этим результатам и настройкам, используя команду «yolo settings», которая позволяет просматривать или изменять пути и другие конфигурации, связанные с журналами обучения и деталями эксперимента.
Среди журналов вы также найдете графики, которые можно посмотреть, чтобы увидеть, насколько хорошо прошел процесс обучения модели. Эти графики, созданные после завершения обучения, показывают, улучшилась ли модель с течением времени, совершая меньше ошибок и становясь более точной.
Они отслеживают прогресс модели, показывая, как уменьшалась функция потерь (разница между предсказаниями модели и фактическими значениями) и как увеличивалась точность во время обучения. Это помогает понять, насколько хорошо модель научилась распознавать животных и насколько она улучшилась к концу обучения.
Рис. 3. Пример графиков, которые можно анализировать для оценки вашей модели.
Ключевые метрики оценки производительности
Кроме того, вот более подробный обзор некоторых метрик, которые можно использовать для оценки производительности модели:
Средняя точность (mAP): Эта метрика измеряет общую точность модели при обнаружении животных по всем классам путем усреднения оценок точности на разных уровнях полноты.
Точность (Precision): Это представляет собой процент правильных обнаружений, вычисленный путем деления количества истинно положительных обнаружений на общее количество выполненных обнаружений.
Полнота: Она указывает процент фактических животных на изображениях, которые были правильно идентифицированы моделью, что отражает ее способность захватывать все релевантные экземпляры.
Эти метрики оценки могут помочь точно настроить модель для повышения точности перед использованием в реальных приложениях.
Запуск инференсов с использованием вашей пользовательской модели YOLO11
Теперь, когда мы обучили и оценили YOLO11, пришло время использовать его для анализа изображений и запуска инференсов. Вы можете использовать тестовые изображения из набора данных или новые изображения из разных источников.
Мы будем использовать следующий фрагмент кода для запуска модели на изображении в тестовом наборе данных. Он импортирует необходимые модули из библиотеки Ultralytics. Затем он определяет путь к файлу с наилучшими весами модели («best.pt»), хранящемуся в каталоге результатов. Пользовательская модель YOLO11, обученная на заказ, загружается с использованием этих весов.
После этого устанавливается путь к изображению из тестового набора данных African Wildlife. Модель применяется к этому изображению для обнаружения объектов, генерируются результаты и сохраняется вывод (например, обнаруженные объекты или аннотации).
from ultralytics import settings
best_model_path = results.save_dir / "weights/best.pt"
model = YOLO(best_path)
image_path = f"{settings['datasets_dir']}/african-wildlife/test/images/1 (168).jpg"img_results = model(image_path, save=True)
Изображение вывода, показанное ниже, будет сохранено в папке «predict», расположенной в каталоге runs/detect. Для последующих тестов будут созданы новые папки, такие как «predict2», «predict3» и т. д., для хранения изображений.
Рис. 4. Запуск инференса с использованием точно настроенной модели YOLO11 на тестовом изображении.
Чтобы протестировать изображения из разных источников, вы можете использовать код ниже. Мы использовали изображение с Pexels. Вы можете использовать то же изображение или любое другое подходящее изображение.
Изображение вывода, показанное ниже, будет сохранено в соответствующей папке.
Рис. 5. Обнаружение диких животных с использованием точно настроенной модели YOLO11 на ранее не виденном изображении.
ИИ для охраны дикой природы: Применение в реальном мире
Такие модели, как YOLO11, могут автоматически обнаруживать и отслеживать животных, что открывает множество практических применений. Вот краткий обзор некоторых ключевых областей, где Vision AI можно использовать для поддержки усилий по сохранению дикой природы:
Мониторинг видов: Визуальный ИИ можно использовать для обработки визуальных данных, таких как изображения и видео, для точной идентификации видов, подсчета популяций и отслеживания их перемещений во времени.
Оповещения с интеллектуальных камер: В отдаленных районах компьютерное зрение можно использовать для непрерывной классификации животных и отправки оповещений в режиме реального времени, что позволяет природоохранным органам оперативно реагировать на такие угрозы, как ненормальное поведение животных или конфликты между человеком и дикой природой.
Анализ поведения: Благодаря мониторингу миграции, привычек питания и социальных взаимодействий системы машинного зрения могут предоставить всестороннюю информацию о межвидовой динамике.
Предотвращение браконьерства: Vision AI можно использовать для обнаружения несанкционированного присутствия людей и признаков браконьерства, используя машинное обучение и исторические данные для определения потенциальных очагов риска.
Основные выводы
Модели компьютерного зрения, такие как YOLO11, могут играть ключевую роль в сохранении дикой природы, автоматизируя обнаружение и отслеживание животных. С помощью Vision AI мы можем обрабатывать большие объемы изображений и видео из различных источников, что позволяет проводить точные оценки дикой природы.
Ultralytics YOLO11, в частности, является отличным выбором для обнаружения объектов в реальном времени, что делает его идеальным для таких задач, как наблюдение за борьбой с браконьерством, анализ поведения и мониторинг экосистем. Внедряя модели на основе AI в природоохранные мероприятия, мы можем лучше защитить виды, улучшить отслеживание биоразнообразия и принимать более обоснованные решения для защиты исчезающих видов.