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

Пошаговое руководство по обучению моделей 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, и собственным моделям IBM Granite. Она включает в себя лабораторию 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 .

Пререквизиты

Для создания проекта watsonx.ai вам понадобится учетная запись IBM Cloud, а для загрузки набора данных - учетная запись 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. Указания по генерации ключа можно найти в документации по API Kaggle в разделе "Учетные данные API".

Скопируйте и вставьте свое имя пользователя 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 файл videos_for_testing каталог, и dataset каталог. Мы будем игнорировать videos_for_testing каталог, так что смело удаляйте его.

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

Морской мусор с ограничительной рамкой

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

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

Каталог загруженных данных

Но модели 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-файле. Номера идентификаторов классов начинаются с 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 confg.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

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

  • Задача: Указывает задачу компьютерного зрения, для которой вы используете указанную модель YOLO и набор данных.
  • режим: Обозначает цель, для которой вы загружаете указанную модель и данные. Так как мы обучаем модель, для нее установлено значение "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) демонстрирует обратную тенденцию:

Кривая доверия к отзыву

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

Шаг 8: Вычисление пересечения над объединением

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

Резюме

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

Более подробную информацию об использовании можно найти в официальной документации 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 .

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

Комментарии