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

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

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

Вы можете обучать модели Ultralytics YOLO26 с помощью IBM Watsonx. Это хороший вариант для предприятий, заинтересованных в эффективном обучении моделей, тонкой настройке для конкретных задач и повышении производительности моделей с помощью надежных инструментов и удобной настройки. В этом руководстве мы проведем вас через процесс обучения YOLO26 с помощью 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 упрощает соблюдение нормативных требований, автоматически определяя изменения в регулировании и обеспечивая соблюдение политик. Он связывает требования с данными о внутренних рисках и предоставляет актуальные информационные бюллетени об ИИ. Платформа помогает управлять рисками с помощью оповещений и инструментов для обнаружения таких проблем, как предвзятость и дрейф. Она также автоматизирует мониторинг и документирование жизненного цикла ИИ, организует разработку ИИ с помощью инвентаризации моделей и улучшает взаимодействие благодаря удобным панелям мониторинга и инструментам отчетности.

Как обучать YOLO26 с помощью IBM Watsonx

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

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

Вам потребуется учетная запись 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 ultralytics-opencv-headless

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

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

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

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

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

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

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

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

# Contents of new config.yaml file
def update_yaml_file(file_path):
    data = {
        "path": f"{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: Обучение модели YOLO26

Выполните следующий код командной строки для дообучения предварительно обученной стандартной модели YOLO26.

Обучить модель YOLO26

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

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

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

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

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

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

Протестировать модель YOLO26

!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 по обучению YOLO26.

Обзор

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

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

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

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

Как обучить модель YOLO26 с помощью IBM Watsonx?

Чтобы обучить модель YOLO26 с использованием 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. Тестирование и оценка: Запустите вывод, чтобы протестировать модель и оценить ее производительность, используя такие метрики, как точность и полнота.

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

Каковы ключевые особенности 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 YOLO26?

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

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

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

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

Чтобы предварительно обработать ваш набор данных для обучения YOLO26 на 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)

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

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

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

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

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



📅 Создано 1 год назад ✏️ Обновлено 2 дней назад
glenn-jocherRizwanMunawaronuralpszrambitious-octopusUltralyticsAssistantMatthewNoyceLaughing-qabirami-vina

Комментарии