Пошаговое руководство по обучению моделей YOLO26 с IBM Watsonx#
Сегодня масштабируемые решения для компьютерного зрения встречаются всё чаще и меняют подход к работе с визуальными данными. Отличный пример — IBM Watsonx, передовая платформа для ИИ и работы с данными, которая упрощает разработку, развёртывание и управление моделями ИИ. Она предлагает полный набор инструментов для всего жизненного цикла ИИ и бесшовную интеграцию с сервисами IBM Cloud.
Ты можешь обучать модели 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 состоит из трёх основных компонентов: 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.
Предварительные требования#
Чтобы создать проект 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 ultralytics-opencv-headlessПодробные инструкции и рекомендации по установке смотри в руководстве по установке Ultralytics. Если при установке пакетов, необходимых для YOLO26, возникнут сложности, решения и советы найдешь в руководстве по распространенным проблемам.
После этого импортируй необходимые пакеты.
import ultralytics
ultralytics.checks()Шаг 3. Загрузи данные#
В этом руководстве мы воспользуемся набором данных о морском мусоре, доступным на Kaggle. На этом наборе данных мы обучим модель YOLO26 для обнаружения и классификации мусора и биологических объектов на подводных изображениях.
Мы можем загрузить набор данных прямо в ноутбук с помощью API Kaggle. Для начала создай бесплатную учётную запись Kaggle. После этого сгенерируй ключ API. Инструкции по его созданию приведены в разделе «API credentials» документации API Kaggle.
Скопируй и вставь своё имя пользователя 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 и содержимое каталога набора данных. Вот пример изображения из нашего набора данных о морском мусоре.
Шаг 4. Предобработай данные#
К счастью, все метки в наборе данных о морском мусоре уже представлены в формате файлов YOLO .txt. Однако нам нужно изменить структуру каталогов с изображениями и метками, чтобы помочь модели обрабатывать изображения и метки. Сейчас загруженный каталог набора данных имеет следующую структуру:
Однако по умолчанию моделям YOLO нужны отдельные подкаталоги с изображениями и метками внутри разбиений train/val/test. Поэтому нужно реорганизовать каталоги следующим образом:
Чтобы реорганизовать каталог набора данных, запусти следующий скрипт:
# 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", ".png", ".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 не изменяй.
# 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 с настройками по умолчанию.
!yolo detect train data={work_dir}/trash_ICRA19/config.yaml model=yolo26n.pt epochs=2 batch=32 plots=TrueРассмотрим подробнее параметры команды обучения модели:
- detect: задача компьютерного зрения, для которой используется указанная модель YOLO и набор данных.
- train: режим, указывающий цель загрузки выбранной модели и данных. Позже, когда мы будем проверять качество модели, воспользуемся режимом
predict. - epochs: задаёт количество проходов YOLO26 по всему набору данных.
- batch: Это числовое значение задаёт размеры обучающих пакетов. Пакет — это количество изображений, которые модель обрабатывает перед обновлением параметров.
- plots: Указывает YOLO создавать и сохранять графики метрик обучения и оценки нашей модели.
Чтобы подробно разобраться в процессе обучения модели и лучших практиках, обратись к руководству по обучению модели YOLO26. Это руководство поможет извлечь максимум пользы из экспериментов и эффективно использовать YOLO26.
Шаг 6: тестирование модели#
Теперь можно запустить инференс, чтобы проверить производительность дообученной модели:
!yolo detect 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: оценка модели#
Можно построить визуализации точности и полноты модели для каждого класса. Эти визуализации сохраняются в каталоге запуска обучения ({work_dir}/runs/detect/train/). Оценка точности отображена на графике BoxP_curve.png:
График показывает экспоненциальный рост точности по мере увеличения уверенности модели в предсказаниях. Однако после двух эпох точность модели ещё не вышла на плато при определённом уровне уверенности.
График полноты (BoxR_curve.png) показывает обратную тенденцию:
В отличие от точности, полнота изменяется в противоположном направлении: она выше для примеров с низкой уверенностью и ниже для примеров с высокой уверенностью. Это наглядный пример компромисса между точностью и полнотой в моделях классификации.
Шаг 8: вычисление пересечения над объединением#
Можно измерить точность предсказания, вычислив IoU между предсказанной ограничивающей рамкой и эталонной ограничивающей рамкой того же объекта. Подробнее см. в руководстве IBM по обучению YOLO26.
Итоги#
Мы рассмотрели ключевые возможности IBM Watsonx и способы обучения модели YOLO26 с помощью IBM Watsonx. Также мы узнали, как IBM Watsonx может улучшить рабочие процессы ИИ благодаря продвинутым инструментам для создания моделей, управления данными и обеспечения соответствия требованиям.
Подробности об использовании см. в официальной документации IBM Watsonx.
Также загляни на страницу руководств по интеграции Ultralytics, чтобы узнать больше о различных интересных интеграциях.
Часто задаваемые вопросы#
Чтобы обучить модель YOLO26 с помощью IBM Watsonx, выполни следующие шаги:
- Настрой среду: Создай аккаунт IBM Cloud и настрой проект Watsonx.ai. Используй Jupyter Notebook в качестве среды для написания кода.
- Установи библиотеки: Установи необходимые библиотеки, например
torch,opencvиultralytics. - Загрузи данные: Используй API Kaggle, чтобы загрузить набор данных в Watsonx.
- Предварительно обработай данные: Организуй набор данных в требуемой структуре каталогов и обнови файл конфигурации
.yaml. - Обучи модель: Используй интерфейс командной строки YOLO, чтобы обучить модель с определёнными параметрами, например
epochs,batch sizeиlearning rate. - Протестируй и оцени: Запусти инференс, чтобы протестировать модель, и оцени её производительность с помощью таких метрик, как точность и полнота.
Подробные инструкции см. в нашем руководстве по обучению модели YOLO26.
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 Cloud.
- Интеграция: Легко интегрируй решения с различными источниками данных и API.
- Удобный интерфейс: Упрощает разработку благодаря интуитивно понятному интерфейсу для совместной работы.
- Продвинутые инструменты: Получи доступ к мощным инструментам, таким как Prompt Lab, Tuning Studio и Flows Engine, для повышения производительности модели.
Узнай больше об Ultralytics YOLO26 и обучении моделей с помощью IBM Watsonx в нашем руководстве по интеграции.
Чтобы предварительно обработать набор данных для обучения YOLO26 на IBM Watsonx:
- Организуй каталоги: Убедись, что набор данных соответствует структуре каталогов YOLO: изображения и метки должны находиться в отдельных подкаталогах для разделов train/val/test.
- Обнови файл .yaml: Измени файл конфигурации
.yaml, указав новую структуру каталогов и названия классов. - Запусти скрипт предварительной обработки: Используй скрипт 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", ".png", ".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 подготовь следующее:
- Аккаунт IBM Cloud: Создай аккаунт IBM Cloud, чтобы получить доступ к Watsonx.ai.
- Аккаунт Kaggle: Для загрузки наборов данных понадобится аккаунт Kaggle и ключ API.
- Jupyter Notebook: Настрой среду Jupyter Notebook в Watsonx.ai для написания кода и обучения моделей.
Подробнее о настройке среды см. в нашем руководстве по установке Ultralytics.