Пошаговое руководство по обучению моделей 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 поддерживает развертывание как в облаке, так и локально (on-premises) благодаря интеграции с IBM Storage Fusion HCI. Его удобная консоль обеспечивает централизованный доступ к данным в разных средах и упрощает исследование данных с помощью привычного SQL. Он оптимизирует рабочие нагрузки с помощью эффективных движков запросов, таких как Presto и Spark, ускоряет получение инсайтов с помощью семантического слоя на базе ИИ, включает векторную базу данных для актуальности ИИ и поддерживает открытые форматы данных для удобного обмена аналитикой и данными ИИ.
Watsonx.governance#
Watsonx.governance упрощает соблюдение нормативных требований, автоматически выявляя изменения в законодательстве и обеспечивая соблюдение политик. Она связывает требования с внутренними данными о рисках и предоставляет актуальные паспорта данных (factsheets) ИИ. Платформа помогает управлять рисками с помощью оповещений и инструментов для обнаружения таких проблем, как предвзятость и дрифт. Она также автоматизирует мониторинг и документирование жизненного цикла ИИ, организует разработку ИИ с помощью реестра моделей и повышает эффективность совместной работы благодаря удобным панелям мониторинга и инструментам отчетности.
Как обучить 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 для обнаружения и классификации мусора и биологических объектов на подводных изображениях.
Мы можем загрузить набор данных напрямую в блокнот с помощью API Kaggle. Сначала создай бесплатный аккаунт на Kaggle. После создания аккаунта тебе потребуется сгенерировать ключ API. Инструкции по генерации ключа можно найти в документации по API Kaggle в разделе «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 и содержимое каталога с датасетом для обучения нашей модели обнаружения объектов. Вот пример изображения из нашего набора данных морского мусора.
Шаг 4: Предобработка данных#
К счастью, все метки в наборе данных о морском мусоре уже отформатированы как .txt-файлы YOLO. Однако нам нужно изменить структуру директорий с изображениями и метками, чтобы модель могла корректно их обрабатывать. Сейчас наш загруженный набор данных имеет следующую структуру:
Но модели 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-файле. Идентификаторы классов (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 без изменений.
# 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 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: Тестирование модели#
Теперь мы можем запустить инференс для тестирования производительности нашей дообученной модели:
!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: Оценка модели#
Мы можем построить визуализации точности (precision) и полноты (recall) модели для каждого класса. Эти визуализации сохраняются в каталоге запуска обучения ({work_dir}/runs/detect/train/). Оценка точности отображается в файле BoxP_curve.png:
График показывает экспоненциальный рост точности по мере увеличения уровня уверенности модели в предсказаниях. Тем не менее, точность модели еще не вышла на плато при определенном уровне уверенности после двух эпох.
График полноты (BoxR_curve.png) демонстрирует обратную тенденцию:
В отличие от точности, полнота движется в противоположном направлении, показывая большую полноту при низких значениях уверенности и меньшую при высоких. Это отличный пример компромисса между точностью и полнотой для моделей классификации.
Шаг 8: Вычисление пересечения над объединением (IoU)#
Ты можешь измерить точность предсказаний, рассчитав метрику IoU между предсказанной ограничивающей рамкой и эталонной рамкой для одного и того же объекта. Подробности см. в туториале IBM по обучению YOLO26.
Резюме#
Мы изучили основные возможности IBM Watsonx и то, как обучить модель YOLO26 с помощью IBM Watsonx. Мы также увидели, как IBM Watsonx может улучшить твои рабочие процессы ИИ с помощью передовых инструментов для создания моделей, управления данными и соблюдения нормативных требований.
Дополнительную информацию об использовании см. в официальной документации IBM Watsonx.
Кроме того, обязательно загляни на страницу руководств по интеграции Ultralytics, чтобы узнать больше о различных интересных интеграциях.
FAQ#
Чтобы обучить модель YOLO26 с использованием IBM Watsonx, выполни следующие шаги:
- Настройка среды: Создай учетную запись IBM Cloud и настрой проект Watsonx.ai. Используй Jupyter Notebook в качестве среды для написания кода.
- Установка библиотек: установи необходимые библиотеки, такие как
torch,opencvиultralytics. - Загрузка данных: Используй Kaggle API для загрузки набора данных в 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.