Перейти к содержанию

Пошаговое руководство по обучению моделей YOLO11 с помощью IBM Watsonx

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

Вы можете обучать модели Ultralytics YOLO11 с использованием IBM Watsonx. Это хороший вариант для предприятий, заинтересованных в эффективном обучении моделей, тонкой настройке для конкретных задач и улучшении производительности моделей с помощью надежных инструментов и удобной настройки. В этом руководстве мы проведем вас через процесс обучения YOLO11 с помощью IBM Watsonx, охватывая все, от настройки вашей среды до оценки обученных моделей. Давайте начнем!

Что такое IBM Watsonx?

Watsonx - это облачная платформа IBM, разработанная для коммерческого использования генеративный ИИ и научные данные. Три компонента IBM Watsonx - watsonx.ai, watsonx.dataи watsonx.governance - объединяются для создания сквозной, надежной платформы искусственного интеллекта, которая может ускорить проекты в области ИИ, направленные на решение бизнес-задач. Она предоставляет мощные инструменты для построения, обучения и развертывание моделей машинного обучения и упрощает подключение к различным источникам данных.

Обзор IBM Watsonx

Его удобный интерфейс и возможности для совместной работы упрощают процесс разработки и помогают в эффективном управлении и развертывании моделей. Будь то компьютерное зрение, прогнозная аналитика, обработка естественного языка или другие приложения ИИ, IBM Watsonx предоставляет инструменты и поддержку, необходимые для стимулирования инноваций.

Ключевые особенности IBM Watsonx

IBM Watsonx состоит из трех основных компонентов: watsonx.ai, watsonx.dataи watsonx.governance. Каждый компонент предлагает функции, которые отвечают различным аспектам искусственного интеллекта и управления данными. Давайте рассмотрим их подробнее.

Watsonx.ai

Watsonx.ai предоставляет мощные инструменты для разработки ИИ и предлагает доступ к пользовательским моделям, поддерживаемым IBM, моделям сторонних разработчиков, таким как Llama 3, и собственным моделям Granite от IBM. Он включает в себя Prompt Lab для экспериментов с подсказками ИИ, Tuning Studio для улучшения производительности моделей с помощью размеченных данных и Flows Engine для упрощения разработки генеративных приложений ИИ. Кроме того, он предлагает комплексные инструменты для автоматизации жизненного цикла моделей ИИ и подключения к различным API и библиотекам.

Watsonx.data

Watsonx.data поддерживает развертывания как в облаке, так и локально благодаря интеграции IBM Storage Fusion HCI. Его удобная консоль обеспечивает централизованный доступ к данным в различных средах и упрощает изучение данных с помощью общего SQL. Он оптимизирует рабочие нагрузки с помощью эффективных механизмов запросов, таких как Presto и Spark, ускоряет получение аналитической информации с помощью семантического уровня на основе ИИ, включает векторную базу данных для релевантности ИИ и поддерживает открытые форматы данных для удобного обмена аналитическими данными и данными ИИ.

Watsonx.governance

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

Как обучить YOLO11 с использованием IBM Watsonx

Вы можете использовать IBM Watsonx для ускорения рабочего процесса обучения вашей модели YOLO11.

Предварительные требования

Вам потребуется учетная запись IBM Cloud для создания проекта watsonx.ai, а также учетная запись Kaggle для загрузки набора данных.

Шаг 1. Настройте свою среду

Сначала вам нужно настроить учетную запись IBM, чтобы использовать Jupyter Notebook. Войдите в watsonx.ai с помощью своей учетной записи IBM Cloud.

Затем создайте проект watsonx.ai и Jupyter Notebook.

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

Шаг 2. Установите и импортируйте соответствующие библиотеки

Далее вы можете установить и импортировать необходимые библиотеки python.

Установка

# Install the required packages
pip install torch torchvision torchaudio
pip install opencv-contrib-python-headless
pip install ultralytics==8.0.196

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

Затем вы можете импортировать необходимые пакеты.

Импортируйте соответствующие библиотеки

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

Шаг 3. Загрузите данные

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

Мы можем загрузить набор данных непосредственно в блокнот с помощью Kaggle API. Сначала создайте бесплатную учетную запись Kaggle. После создания учетной записи вам нужно будет сгенерировать ключ API. Инструкции по созданию ключа можно найти в документации Kaggle API в разделе "API credentials".

Скопируйте и вставьте свое имя пользователя Kaggle и ключ API в следующий код. Затем запустите код, чтобы установить API и загрузить набор данных в Watsonx.

Установка

# Install kaggle
pip install kaggle

После установки Kaggle мы можем загрузить набор данных в Watsonx.

Загрузка данных

# Replace "username" string with your username
os.environ["KAGGLE_USERNAME"] = "username"
# Replace "apiKey" string with your key
os.environ["KAGGLE_KEY"] = "apiKey"

# Load dataset
os.system("kaggle datasets download atiqishrak/trash-dataset-icra19 --unzip")

# Store working directory path as work_dir
work_dir = os.getcwd()

# Print work_dir path
print(os.getcwd())

# Print work_dir contents
print(os.listdir(f"{work_dir}"))

# Print trash_ICRA19 subdirectory contents
print(os.listdir(f"{work_dir}/trash_ICRA19"))

После загрузки набора данных мы распечатали и сохранили наш рабочий каталог. Мы также распечатали содержимое нашего рабочего каталога, чтобы убедиться, что набор данных "trash_ICRA19" был загружен правильно.

Если вы видите "trash_ICRA19" среди содержимого каталога, значит, он успешно загружен. Вы должны увидеть три файла/папки: a config.yaml файл, a videos_for_testing каталог и a dataset каталог. Мы проигнорируем videos_for_testing каталог, поэтому можете смело его удалить.

Мы будем использовать config.yaml файл и содержимое каталога набора данных для обучения нашей обнаружения объектов модель. Вот пример изображения из нашего набора данных о морском мусоре.

Морской мусор с ограничивающим прямоугольником

Шаг 4. Предварительно обработайте данные

К счастью, все метки в наборе данных о морском мусоре уже отформатированы как .txt файлы YOLO. Однако нам необходимо изменить структуру каталогов изображений и меток, чтобы помочь нашей модели обрабатывать изображения и метки. Сейчас структура нашего загруженного набора данных выглядит следующим образом:

Загружена директория набора данных

Но, модели YOLO по умолчанию требуют отдельные изображения и метки в подкаталогах внутри разделения train/val/test. Нам нужно реорганизовать каталог в следующую структуру:

Структура каталога YOLO

Чтобы реорганизовать каталог набора данных, мы можем запустить следующий скрипт:

Предварительная обработка данных

# Function to reorganize dir
def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        # Create image and label subdirs if non-existent
        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        # Move images and labels to respective subdirs
        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))
            # Delete .xml files
            elif filename.endswith(".xml"):
                os.remove(os.path.join(subdir_path, filename))


if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

Далее нам нужно изменить .yaml файл для набора данных. Это настройка, которую мы будем использовать в нашем .yaml файле. Номера ID классов начинаются с 0:

path: /path/to/dataset/directory # root directory for dataset
train: train/images # train images subdirectory
val: train/images # validation images subdirectory
test: test/images # test images subdirectory

# Classes
names:
    0: plastic
    1: bio
    2: rov

Выполните следующий скрипт, чтобы удалить текущее содержимое из config.yaml и замените его содержимым, отражающим структуру каталогов нашего нового набора данных. Обязательно замените часть work_dir пути к корневому каталогу в строке 4 на путь к вашему собственному рабочему каталогу, полученный ранее. Оставьте определения подкаталогов train, val и test. Кроме того, не изменяйте {work_dir} в строке 23 кода.

Редактирование .yaml файла

# Contents of new config.yaml file
def update_yaml_file(file_path):
    data = {
        "path": "work_dir/trash_ICRA19/dataset",
        "train": "train/images",
        "val": "train/images",
        "test": "test/images",
        "names": {0: "plastic", 1: "bio", 2: "rov"},
    }

    # Ensures the "names" list appears after the sub/directories
    names_data = data.pop("names")
    with open(file_path, "w") as yaml_file:
        yaml.dump(data, yaml_file)
        yaml_file.write("\n")
        yaml.dump({"names": names_data}, yaml_file)


if __name__ == "__main__":
    file_path = f"{work_dir}/trash_ICRA19/config.yaml"  # .yaml file path
    update_yaml_file(file_path)
    print(f"{file_path} updated successfully.")

Шаг 5. Обучите модель YOLO11

Запустите следующий код командной строки, чтобы точно настроить предварительно обученную модель YOLO11 по умолчанию.

Обучение модели YOLO11

!yolo task=detect mode=train data={work_dir}/trash_ICRA19/config.yaml model=yolo11n.pt epochs=2 batch=32 lr0=.04 plots=True

Вот более подробный взгляд на параметры в команде обучения модели:

  • task: Определяет задачу компьютерного зрения, для которой вы используете указанную модель YOLO и набор данных.
  • mode: Обозначает цель, для которой вы загружаете указанную модель и данные. Поскольку мы обучаем модель, он установлен на "train". Позже, когда мы будем проверять производительность нашей модели, мы установим его на "predict".
  • epochs: Это ограничивает количество раз, когда YOLO11 будет проходить через весь наш набор данных.
  • batch: Численное значение определяет размеры пакетов обучения. Пакеты - это количество изображений, которые модель обрабатывает перед обновлением своих параметров.
  • lr0: Указывает начальную скорость обучения модели.
  • plots: Указывает YOLO генерировать и сохранять графики обучения и оценки метрик нашей модели.

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

Шаг 6. Протестируйте модель

Теперь мы можем запустить вывод, чтобы проверить производительность нашей точно настроенной модели:

Протестируйте модель YOLO11

!yolo task=detect mode=predict source={work_dir}/trash_ICRA19/dataset/test/images model={work_dir}/runs/detect/train/weights/best.pt conf=0.5 iou=.5 save=True save_txt=True

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

Предсказанные .txt метки для каждого изображения сохраняются с помощью аргумента save_txt=True , а выходные изображения с наложенными ограничивающими рамками создаются с помощью аргумента save=True .
Параметр conf=0.5 сообщает модели, что нужно игнорировать все прогнозы с уровнем достоверности менее 50%.

Наконец, iou=.5 указывает модели игнорировать рамки в том же классе с перекрытием 50% или более. Это помогает уменьшить количество потенциальных дублирующихся рамок, созданных для одного и того же объекта.
мы можем загрузить изображения с прогнозируемыми наложенными ограничивающими рамками, чтобы увидеть, как наша модель работает на нескольких изображениях.

Отображение прогнозов

# Show the first ten images from the preceding prediction task
for pred_dir in glob.glob(f"{work_dir}/runs/detect/predict/*.jpg")[:10]:
    img = Image.open(pred_dir)
    display(img)

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

Шаг 7: Оценка модели

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

Кривая точности от уверенности

График показывает экспоненциальный рост точности по мере увеличения уровня достоверности прогнозов модели. Однако точность модели еще не выровнялась на определенном уровне достоверности после двух эпох.

График полноты (R_curve.png) отображает обратную тенденцию:

Кривая полноты от уверенности

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

Шаг 8: Расчет Intersection Over Union

Вы можете измерить точность прогноза, рассчитав IoU между прогнозируемой ограничивающей рамкой и основной ограничивающей рамкой для одного и того же объекта. Ознакомьтесь с учебником IBM по обучению YOLO11 для получения более подробной информации.

Обзор

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

Для получения более подробной информации об использовании посетите официальную документацию IBM Watsonx.

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

Часто задаваемые вопросы

Как обучить модель YOLO11 с использованием IBM Watsonx?

Чтобы обучить модель YOLO11 с помощью IBM Watsonx, выполните следующие действия:

  1. Настройте свою среду: Создайте учетную запись IBM Cloud и настройте проект Watsonx.ai. Используйте Jupyter Notebook для своей среды кодирования.
  2. Установите библиотеки: Установите необходимые библиотеки, такие как torch, opencvи ultralytics.
  3. Загрузите данные: Используйте Kaggle API для загрузки набора данных в Watsonx.
  4. Предварительная обработка данных: Организуйте свой набор данных в требуемую структуру каталогов и обновите .yaml файл конфигурации.
  5. Обучение модели: Используйте интерфейс командной строки YOLO для обучения вашей модели с определенными параметрами, такими как epochs, batch sizeи learning rate.
  6. Тестирование и оценка: Запустите вывод, чтобы протестировать модель и оценить ее производительность, используя такие метрики, как точность и полнота.

Для получения подробных инструкций обратитесь к нашему руководству по обучению модели YOLO11.

Каковы ключевые особенности IBM Watsonx для обучения моделей ИИ?

IBM Watsonx предлагает несколько ключевых функций для обучения моделей ИИ:

  • Watsonx.ai: Предоставляет инструменты для разработки ИИ, включая доступ к пользовательским моделям, поддерживаемым IBM, и моделям сторонних производителей, таким как Llama 3. Он включает в себя Prompt Lab, Tuning Studio и Flows Engine для комплексного управления жизненным циклом ИИ.
  • Watsonx.data: Поддерживает облачные и локальные развертывания, предлагая централизованный доступ к данным, эффективные механизмы запросов, такие как Presto и Spark, и семантический уровень на основе ИИ.
  • Watsonx.governance: Автоматизирует соответствие требованиям, управляет рисками с помощью оповещений и предоставляет инструменты для обнаружения таких проблем, как предвзятость и дрейф. Он также включает в себя панели мониторинга и инструменты отчетности для совместной работы.

Для получения дополнительной информации посетите официальную документацию IBM Watsonx.

Почему стоит использовать IBM Watsonx для обучения моделей Ultralytics YOLO11?

IBM Watsonx — отличный выбор для обучения моделей Ultralytics YOLO11 благодаря своему комплексному набору инструментов, которые оптимизируют жизненный цикл ИИ. Ключевые преимущества включают в себя:

  • Масштабируемость: Легко масштабируйте обучение своей модели с помощью сервисов IBM Cloud.
  • Интеграция: Легко интегрируйтесь с различными источниками данных и API.
  • Удобный интерфейс: Упрощает процесс разработки благодаря интуитивно понятному интерфейсу для совместной работы.
  • Расширенные инструменты: Доступ к мощным инструментам, таким как Prompt Lab, Tuning Studio и Flows Engine, для повышения производительности модели.

Узнайте больше об Ultralytics YOLO11 и о том, как обучать модели с использованием IBM Watsonx, в нашем руководстве по интеграции.

Как подготовить мой набор данных для обучения YOLO11 на IBM Watsonx?

Чтобы предварительно обработать набор данных для обучения YOLO11 на IBM Watsonx:

  1. Организуйте каталоги: Убедитесь, что ваш набор данных соответствует структуре каталогов YOLO с отдельными подкаталогами для изображений и меток в рамках разделения train/val/test.
  2. Обновите .yaml файл: Измените .yaml файл конфигурации, чтобы отразить новую структуру каталогов и названия классов.
  3. Запустите скрипт предварительной обработки: Используйте скрипт python для реорганизации набора данных и обновления .yaml файла соответствующим образом.

Вот пример скрипта для организации вашего набора данных:

import os
import shutil


def organize_files(directory):
    for subdir in ["train", "test", "val"]:
        subdir_path = os.path.join(directory, subdir)
        if not os.path.exists(subdir_path):
            continue

        images_dir = os.path.join(subdir_path, "images")
        labels_dir = os.path.join(subdir_path, "labels")

        os.makedirs(images_dir, exist_ok=True)
        os.makedirs(labels_dir, exist_ok=True)

        for filename in os.listdir(subdir_path):
            if filename.endswith(".txt"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(labels_dir, filename))
            elif filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".jpeg"):
                shutil.move(os.path.join(subdir_path, filename), os.path.join(images_dir, filename))


if __name__ == "__main__":
    directory = f"{work_dir}/trash_ICRA19/dataset"
    organize_files(directory)

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

Каковы предварительные условия для обучения модели YOLO11 на IBM Watsonx?

Прежде чем начать обучение модели YOLO11 на IBM Watsonx, убедитесь, что у вас есть следующие предварительные условия:

  • Учетная запись IBM Cloud: Создайте учетную запись в IBM Cloud для доступа к Watsonx.ai.
  • Учетная запись Kaggle: Для загрузки наборов данных вам потребуется учетная запись Kaggle и ключ API.
  • Jupyter Notebook: Настройте среду Jupyter Notebook в Watsonx.ai для кодирования и обучения модели.

Для получения дополнительной информации о настройке среды посетите наше руководство по установке Ultralytics.



📅 Создано 1 год назад ✏️ Обновлено 1 месяц назад

Комментарии