Skip to main content

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

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

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

Что такое IBM Watsonx?

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

IBM Watsonx AI platform architecture overview

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

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

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

Watsonx.ai

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

Watsonx.data

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

Watsonx.governance

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

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

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

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

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

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

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

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

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

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

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

Установка
# Install the required packages
pip install torch torchvision torchaudio
pip install ultralytics-opencv-headless

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

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

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

ultralytics.checks()

# Import packages to retrieve and display image files

Шаг 3: Загрузка данных

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

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

Скопируй и вставь свое имя пользователя Kaggle и API key в следующий код. Затем выполни код, чтобы установить 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" среди содержимого директории, значит, загрузка прошла успешно. Ты должен увидеть три файла/папки: config.yaml файл, videos_for_testing директорию и dataset директорию. Мы проигнорируем videos_for_testing директорию, так что можешь смело удалять ее.

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

Marine Litter with Bounding Box

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

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

Loaded Dataset Directory

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

YOLO Directory Structure

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

Предварительная обработка данных
# 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 которую мы определили ранее, поэтому убедись, что она указывает на твой набор данных перед выполнением, и оставь определения поддиректорий 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

Запусти следующую команду CLI для дообучения предобученной модели 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".
  • эпохах: Это определяет количество проходов YOLO26 через весь наш набор данных.
  • batch: Числовое значение, определяющее batch sizes обучения. Батчи — это количество изображений, которые модель обрабатывает перед обновлением своих параметров.
  • 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

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

Предсказанные .txt метки для каждого изображения сохраняются с помощью аргумента save_txt=True, а выходные изображения с наложенными ограничивающими рамками (bbox) генерируются через аргумент 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: Оценка модели

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

Model precision-confidence evaluation curve

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

Метод recallГрафик (R_curve.png) демонстрирует обратную тенденцию:

Model recall-confidence evaluation curve

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

Шаг 8: Вычисление Intersection Over Union

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

Резюме

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

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

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

FAQ

Как обучить модель 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 (CLI) для обучения модели с определенными параметрами, такими как epochs, batch size и learning rate.
  6. Тестирование и оценка: Запусти вывод для тестирования модели и оценки ее производительности с использованием таких метрик, как точность и полнота.

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

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

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

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

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

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

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

  • Масштабируемость: Легко масштабируй обучение своей модели с помощью сервисов 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)

Подробнее читай в нашем data preprocessing guide.

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

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

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

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

Комментарии