Пошаговое руководство по обучению моделей 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, которая может ускорить проекты, направленные на решение бизнес-задач. Она предоставляет мощные инструменты для создания, обучения и развертывания моделей машинного обучения и облегчает подключение к различным источникам данных.
Удобный интерфейс и возможности для совместной работы упрощают процесс разработки и помогают эффективно управлять моделями и их развертыванием. Будь то компьютерное зрение, предиктивная аналитика, 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 файл и содержимое директории набора данных для обучения нашей модели обнаружения объектов. Вот пример изображения из нашего набора данных морского мусора.
Шаг 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") 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 без изменений.
# 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 по умолчанию.
!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: Тестирование модели
Теперь мы можем запустить вывод, чтобы протестировать производительность нашей дообученной модели:
!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:
График показывает экспоненциальный рост точности по мере повышения уровня достоверности модели для предсказаний. Однако точность модели еще не выровнялась на определенном уровне достоверности после двух эпохах.
Метод recallГрафик (R_curve.png) демонстрирует обратную тенденцию:
В отличие от точности, полнота движется в противоположном направлении, показывая большую полноту при экземплярах с низкой достоверностью и меньшую полноту при экземплярах с высокой достоверностью. Это наглядный пример компромисса между точностью и полнотой для классификационных моделей.
Шаг 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, выполни следующие шаги:
- Настрой свое окружение: Создай учетную запись IBM Cloud и настрой проект Watsonx.ai. Используй Jupyter Notebook в качестве своей среды разработки.
- Установка библиотек: Установи необходимые библиотеки, такие как
torch,opencvиultralytics. - Загрузка данных: Используй Kaggle API для загрузки своего набора данных в Watsonx.
- Предварительная обработка данных: Организуй свой набор данных в соответствии с требуемой структурой каталогов и обнови
.yamlфайл конфигурации. - Обучи модель: Используй командную строку YOLO (CLI) для обучения модели с определенными параметрами, такими как
epochs,batch sizeиlearning rate. - Тестирование и оценка: Запусти вывод для тестирования модели и оценки ее производительности с использованием таких метрик, как точность и полнота.
Для получения подробных инструкций обратись к нашему руководству по обучению моделей 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:
- Организация директорий: Убедись, что твой набор данных соответствует структуре директорий 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") 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 будет автоматически интегрирована для улучшения твоей модели..