Зелёная проверка
Ссылка копируется в буфер обмена

Как обучить модели Ultralytics YOLO для обнаружения животных в дикой природе

Узнай, как обучить модели YOLO для обнаружения животных в дикой природе с помощью набора данных African Wildlife Dataset и использовать модель для умозаключений на невидимых изображениях.

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

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

Чтобы преодолеть эти ограничения, искусственный интеллект (ИИ) можно использовать в качестве действенного инструмента для сохранения дикой природы. В частности, модели компьютерного зрения, такие как 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 , так как шаги очень похожи во всех этих средах.

Понимание данных о дикой природе Африки

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

В этом уроке мы будем использовать набор данных African Wildlife Dataset. Она поддерживается пакетом Ultralytics Python и специально разработана для обнаружения животных, часто встречающихся в африканских экосистемах. Он содержит аннотированные изображения четырех ключевых видов: буйволов, слонов, носорогов и зебр.

Рис. 1. Мельком взгляни на набор данных о дикой природе Африки.

Вот некоторые ключевые особенности African Wildlife Dataset:

  • Масштаб: Набор данных состоит из 1504 изображений, разделенных на три подмножества: 1052 для обучения, 225 для валидации и 227 для тестирования. Такое разделение гарантирует, что модель эффективно обучается и тщательно оценивается.

  • Бесшовная интеграция: Ultralytics предоставляет конфигурационный файл YAML, в котором задаются пути к набору данных, классы и другие детали, что упрощает его использование при обучении моделей YOLO .

  • Открытая лицензия: Этот набор данных распространяется под лицензией AGPL-3.0 , поощряющей прозрачность и сотрудничество.

Тренировка Ultralytics YOLO11 для обнаружения животных

Теперь, когда мы изучили набор данных African Wildlife Dataset, мы можем приступить к обучению модели YOLO11 для обнаружения животных на изображениях. Этот процесс включает в себя настройку среды разработки, обучение модели YOLO11 и оценку ее работы.

Шаг 1: Настройка окружения

Чтобы начать работу, мы подготовим среду для обучения и тестирования модели. В зависимости от твоих предпочтений можно использовать Google Colab, Jupyter Notebooks или простой Python . Создай новый блокнот Google Colab, Jupyter Notebook или Python , соответственно.

Если ты используешь Google Colab, то среда по умолчанию работает на CPU (Central Processing Unit), что может замедлить процесс обучения. Чтобы ускорить процесс, особенно для больших моделей, ты можешь переключить время выполнения на использование GPU. В Google Colab ты можешь перейти на вкладку "Время выполнения" в меню, выбрать "Изменить тип времени выполнения" и установить аппаратный ускоритель на GPU (предпочтительно T4 GPU). Это важно для сокращения времени обучения.

Далее, независимо от того, какую среду ты используешь, тебе нужно установить пакет Ultralytics Python . Если ты используешь среду на основе блокнотаGoogle Colab или Jupyter), выполни следующую команду с восклицательным знаком (!) в начале.

pip install ultralytics

Шаг 2: Загрузка YOLO11 и подготовка набора данных

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

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

Набор данных African Wildlife Dataset поддерживается пакетом 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 и используемое оборудованиеCPU в данном случаеCPU ), а также конфигурацию обучения, включая модель (yolo11n.pt), размер партии, эпохи и размер изображения.
  • Краткое описание модели: Здесь содержится информация о сложности модели, например, о количестве слоев и параметров, показывая, насколько велика модель.
  • Оптимизатор и скорость обучения: Здесь упоминается оптимизатор (например, AdamW) и скорость обучения, которые управляют тем, как модель подстраивает свои параметры во время обучения.
  • Сканирование набора данных: Модель сканирует набор данных, показывая, сколько изображений действительны и готовы к обучению. Она подтверждает, что с набором данных нет никаких проблем.
    ‍.
  • Прогресс обучения: Вывод обновляется после каждой эпохи (цикла обучения), показывая прогресс обучения вместе с ключевыми значениями потерь (box_loss, cls_loss, dfl_loss), которые показывают, насколько хорошо модель обучается.
  • Показатели производительности: После каждой эпохи ты будешь видеть такие показатели производительности, как precision, recall и mAP (средняя точность). Эти показатели показывают, насколько точно модель обнаруживает и классифицирует объекты.
  • Использование памятиGPU : Если ты используешь GPU, то в выводе будет показано использование памяти, чтобы отследить загрузку оборудования.
Рис. 2. Выходные данные, которые ты увидишь в процессе обучения модели.

Шаг 4: Оцениваем производительность модели, обученной на заказ.

После завершения процесса обучения ты можешь просмотреть и проверить показатели эффективности модели. В Google Colab ты можешь перейти в папку "runs", затем в папку "detect" и, наконец, в папку "train", где ты найдешь журналы, отображающие основные показатели эффективности.

Для пользователей, работающих в среде Python , результаты обучения по умолчанию сохраняются в директории "runs/train/" в твоем текущем рабочем каталоге. Каждый прогон тренировки создает новую поддиректорию (например, runs/train/exp, runs/train/exp2 и т.д.), в которой ты можешь найти логи и другие результаты, связанные с тренировкой.

Если ты используешь CLI, то можешь легко получить доступ к этим результатам и настройкам с помощью команды "yolo settings", которая позволяет тебе просмотреть или изменить пути и другие конфигурации, связанные с журналами тренировок и деталями экспериментов.

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

Они отслеживают прогресс модели, показывая, как уменьшались потери (разница между предсказаниями модели и реальными значениями) и как росла точность в процессе обучения. Это поможет тебе понять, насколько хорошо модель научилась распознавать животных и насколько она улучшилась к концу обучения.

Рис. 3. Пример графиков, которые ты можешь проанализировать, чтобы оценить свою модель.

Ключевые показатели оценки производительности

Кроме того, вот более подробный обзор некоторых метрик, которые ты можешь использовать для оценки работы модели:

  • Средняя точность (mAP): Эта метрика измеряет общую точность модели в обнаружении животных по всем классам путем усреднения оценок точности на разных уровнях запоминания.
  • Точность: Это процент правильных обнаружений, который рассчитывается путем деления количества истинно положительных обнаружений на общее количество обнаружений.
    ‍.
  • Отзыв: Он показывает процент реальных животных на изображениях, которые были правильно идентифицированы моделью, что отражает ее способность улавливать все значимые экземпляры.

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

Выполнение выводов с помощью твоей пользовательской модели 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. Ты можешь использовать то же самое изображение или любое другое подходящее.

best_model_path = results.save_dir / "weights/best.pt"

model = YOLO(best_path)

img2_results = model("https://images.pexels.com/photos/18341011/pexels-photo-18341011/free-photo-of-elephant-and-zebras-in-savannah.png", save=True)

Выходное изображение, показанное ниже, будет сохранено в соответствующей папке.

Рис. 5. Обнаружение дикой природы с помощью точно настроенной модели YOLO11 на непросматриваемом изображении.

ИИ для сохранения дикой природы: Применение в реальном мире

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

  • Мониторинг видов: ИИ зрения можно использовать для обработки визуальных данных, таких как изображения и видео, чтобы точно определять виды, подсчитывать популяции и отслеживать их перемещения во времени.
  • Оповещения с помощью умных камер: В отдаленных районах компьютерное зрение может использоваться для постоянной классификации животных и отправки оповещений в режиме реального времени, что позволит органам охраны дикой природы быстро реагировать на такие угрозы, как аномальное поведение животных или конфликты между человеком и дикой природой.
  • Анализ поведения: Наблюдая за миграцией, привычками питания и социальными взаимодействиями, системы искусственного зрения могут дать исчерпывающее представление о динамике межвидового развития.
  • Предотвращение браконьерства: Vision AI можно использовать для обнаружения несанкционированного присутствия людей и признаков браконьерства, при этом применяя машинное обучение и исторические данные для точного определения "горячих точек" риска.

Основные выводы

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

Ultralytics YOLO11, в частности, отлично подходит для обнаружения объектов в реальном времени, что делает его идеальным вариантом для таких задач, как наблюдение за браконьерством, анализ поведения и мониторинг экосистем. Внедряя модели, основанные на ИИ, в природоохранную деятельность, мы сможем лучше защищать виды, улучшать отслеживание биоразнообразия и принимать более взвешенные решения для защиты исчезающих диких животных.

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

Логотип LinkedInЛоготип ТвиттераЛоготип FacebookСимвол копирования-ссылки

Читайте больше в этой категории

Давай вместе построим будущее
искусственного интеллекта!

Начни свое путешествие с будущим машинного обучения