Meet YOLO26: next-gen vision AI.

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

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

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

Link to this sectionЧто такое IBM Watsonx?#

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

IBM Watsonx AI platform architecture overview

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

Link to this sectionКлючевые особенности IBM Watsonx#

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

Link to this sectionWatsonx.ai#

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

Link to this sectionWatsonx.data#

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

Link to this sectionWatsonx.governance#

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

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

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

Link to this sectionПредварительные требования#

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

Link to this sectionШаг 1: Настройка среды#

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

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

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

Link to this sectionШаг 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

Link to this sectionШаг 3: Загрузка данных#

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

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

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

Marine Litter with Bounding Box

Link to this sectionШаг 4: Предобработка данных#

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

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-файле. Идентификаторы классов (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.")

Link to this sectionШаг 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.

Link to this sectionШаг 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)

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

Link to this sectionШаг 7: Оценка модели#

Ты можешь создавать визуализации precision и полноты для каждого класса модели. Эти визуализации сохраняются в директории выполнения обучения ({work_dir}/runs/detect/train/). Оценка precision отображается на графике BoxP_curve.png:

Model precision-confidence evaluation curve

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

График recall (BoxR_curve.png) показывает обратную тенденцию:

Model recall-confidence evaluation curve

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

Link to this sectionШаг 8: Расчет Intersection Over Union#

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

Link to this sectionРезюме#

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

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

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

Link to this sectionFAQ#

Link to this sectionКак мне обучить модель 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.

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

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

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

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

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

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

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

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

Link to this sectionКак я могу подготовить (предобработать) мой набор данных для обучения 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)

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

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

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

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

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

Комментарии