Перейти к содержимому

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

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

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

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

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

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

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

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

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

# Import ultralytics
import ultralytics

ultralytics.checks()

# Import packages to retrieve and display image files

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

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

Мы можем загрузить набор данных прямо в блокнот, используя API Kaggle. Для начала создай бесплатный аккаунт 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: Обучи модель YOLOv8

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

Обучи модель YOLOv8

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

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

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

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

Шаг 6: Проверь модель

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

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

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

Резюме

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

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

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

ВОПРОСЫ И ОТВЕТЫ

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

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

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

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

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

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

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

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

Для предварительной обработки твоего набора данных для обучения YOLOv8 на 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)

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

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

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

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

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


📅 Created 1 month ago ✏️ Updated 11 days ago

Комментарии