Пошаговое руководство по обучению моделей YOLOv8 с помощью IBM Watsonx
В настоящее время масштабируемые решения в области компьютерного зрения становятся все более распространенными и преобразуют то, как мы работаем с визуальными данными. Отличный пример - IBM Watsonx, продвинутая платформа ИИ и данных, которая упрощает разработку, развертывание и управление моделями ИИ. Она предлагает полный набор для всего жизненного цикла ИИ и бесшовную интеграцию с облачными сервисами IBM Cloud.
Ты можешь обучать моделиUltralytics YOLOv8 , используя IBM Watsonx. Это хороший вариант для предприятий, заинтересованных в эффективном обучении моделей, тонкой настройке под конкретные задачи и повышении производительности моделей с помощью надежных инструментов и удобной настройки. В этом руководстве мы проведем тебя через процесс обучения YOLOv8 с помощью 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, и собственным моделям IBM Granite. Он включает в себя лабораторию Prompt Lab для экспериментов с подсказками ИИ, студию Tuning Studio для улучшения производительности модели с помощью меченых данных и Flows Engine для упрощения разработки генеративных приложений ИИ. Кроме того, он предлагает комплексные инструменты для автоматизации жизненного цикла моделей ИИ и подключения к различным API и библиотекам.
Watsonx.data
Watsonx.data поддерживает как облачные, так и локальные развертывания благодаря интеграции с IBM Storage Fusion HCI. Его удобная консоль обеспечивает централизованный доступ к данным в разных средах и упрощает исследование данных с помощью обычного SQL. Она оптимизирует рабочие нагрузки с помощью эффективных движков запросов, таких как Presto и Spark, ускоряет понимание данных с помощью семантического слоя на базе ИИ, включает векторную базу данных для актуальности ИИ и поддерживает открытые форматы данных для простого обмена аналитикой и данными ИИ.
Ватсонкс.управление
Watsonx.governance упрощает соблюдение нормативных требований, автоматически определяя изменения в законодательстве и обеспечивая соблюдение политик. Она связывает требования с внутренними данными о рисках и предоставляет актуальные информационные бюллетени ИИ. Платформа помогает управлять рисками с помощью оповещений и инструментов для обнаружения таких проблем, как предвзятость и дрейф. Она также автоматизирует мониторинг и документирование жизненного цикла ИИ, организует разработку ИИ с помощью инвентаризации моделей и улучшает совместную работу с помощью удобных приборных панелей и инструментов отчетности.
Как обучать YOLOv8 с помощью IBM Watsonx
Ты можешь использовать IBM Watsonx, чтобы ускорить рабочий процесс обучения моделей YOLOv8 .
Пререквизиты
Чтобы создать проект watsonx.ai, тебе нужен аккаунт IBM Cloud, а чтобы загрузить набор данных, тебе также понадобится аккаунт Kaggle.
Шаг 1: Настрой свое окружение
Во-первых, тебе нужно будет настроить учетную запись IBM, чтобы использовать Jupyter Notebook. Войди на watsonx.ai, используя свой аккаунт IBM Cloud.
Затем создай проект watsonx.ai и Jupyter Notebook.
Как только ты это сделаешь, откроется среда блокнота, в которую ты сможешь загрузить свой набор данных. Ты можешь использовать код из этого руководства, чтобы решить простую задачу обучения модели обнаружения объектов.
Шаг 2: Установи и импортируй соответствующие библиотеки
Далее ты можешь установить и импортировать необходимые библиотеки Python .
Установка
Для получения подробных инструкций и лучших практик, связанных с процессом установки, ознакомься с нашим руководством по установкеUltralytics . Во время установки необходимых пакетов для YOLOv8, если у тебя возникнут какие-либо трудности, обратись к нашему руководству по общим проблемам, чтобы найти решения и советы.
Затем ты можешь импортировать необходимые пакеты.
Импорт соответствующих библиотек
Шаг 3: Загрузи данные
В этом уроке мы будем использовать набор данных по морскому мусору, доступный на Kaggle. С помощью этого набора данных мы обучим модель YOLOv8 для обнаружения и классификации мусора и биологических объектов на подводных изображениях.
Мы можем загрузить набор данных прямо в блокнот, используя API Kaggle. Для начала создай бесплатный аккаунт Kaggle. После того как ты создашь аккаунт, тебе нужно будет сгенерировать ключ API. Указания по генерации ключа можно найти в документации по API Kaggle в разделе "Учетные данные API".
Скопируй и вставь свое имя пользователя Kaggle и ключ API в следующий код. Затем запусти код, чтобы установить API и загрузить набор данных в Watsonx.
После установки 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", значит, она успешно загрузилась. Ты должен увидеть три файла/папки: a config.yaml
файл, а videos_for_testing
каталог, и dataset
Каталог. Мы будем игнорировать videos_for_testing
каталог, так что не стесняйся удалить его.
Мы будем использовать файл config.yaml и содержимое директории dataset для обучения нашей модели обнаружения объектов. Вот пример изображения из нашего набора данных о морском мусоре.
Шаг 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 пути к корневому каталогу в строке 4 на свой путь к рабочему каталогу, который мы получили ранее. Оставь определения подкаталогов train, val и test. Также не изменяй {work_dir} в строке 23 кода.
Отредактируй файл .yaml
# Contents of new confg.yaml file
def update_yaml_file(file_path):
data = {
"path": "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: Обучи модель YOLOv8
Выполни следующий код командной строки для тонкой настройки предварительно обученной модели YOLOv8 по умолчанию.
Обучи модель YOLOv8
Вот более подробный взгляд на параметры в команде обучения модели:
- Задача: Здесь указывается задача компьютерного зрения, для которой ты используешь указанную модель YOLO и набор данных.
- Режим: Обозначает цель, для которой ты загружаешь указанную модель и данные. Так как мы обучаем модель, то для нее установлено значение "train". Позже, когда мы будем проверять работу нашей модели, мы установим режим "predict".
- Эпохи: Это ограничивает количество раз, которое YOLOv8 будет проходить через весь наш набор данных.
- batch: Числовое значение задает размер тренировочной партии. Партии - это количество изображений, которые модель обрабатывает перед обновлением своих параметров.
- lr0: Задает начальную скорость обучения модели.
- plots: Направляет YOLO на генерацию и сохранение графиков метрик обучения и оценки нашей модели.
Для детального понимания процесса подготовки моделей и лучших практик обратись к руководствуYOLOv8 Model Training. Это руководство поможет тебе получить максимальную отдачу от своих экспериментов и убедиться в том, что ты эффективно используешь YOLOv8 .
Шаг 6: Проверь модель
Теперь мы можем запустить вывод, чтобы проверить производительность нашей точно настроенной модели:
Протестируй модель YOLOv8
Этот короткий скрипт генерирует предсказанные метки для каждого изображения в нашем тестовом наборе, а также новые выходные файлы изображений, которые накладывают предсказанные границы на исходное изображение.
Предсказанные метки в формате .txt для каждого изображения сохраняются через save_txt=True
аргумент, а выходные изображения с наложением ограничительных рамок генерируются через save=True
аргумент.
Параметр conf=0.5
Сообщает модели, что нужно игнорировать все предсказания с уровнем доверия менее 50%.
Наконец, iou=.5
Направляет модель на игнорирование боксов одного класса с перекрытием в 50% или больше. Это помогает уменьшить количество потенциальных дубликатов боксов, созданных для одного и того же объекта.
Мы можем загрузить изображения с наложением предсказанных ограничительных рамок, чтобы посмотреть, как наша модель работает с горсткой изображений.
Предсказания дисплея
Приведенный выше код отображает десять изображений из тестового набора с их предсказанными ограничительными рамками, сопровождаемыми метками названий классов и уровнями доверия.
Шаг 7: Оцени модель
Мы можем создать визуализацию точности и запоминания модели для каждого класса. Эти визуализации сохраняются в домашней директории, в папке train. Показатель точности отображается в файле P_curve.png:
На графике видно экспоненциальное увеличение точности с ростом уровня доверия к предсказаниям модели. Однако точность модели еще не выровнялась при определенном уровне доверия после двух эпох.
График отзыва (R_curve.png) демонстрирует обратную тенденцию:
В отличие от точности, recall движется в противоположном направлении, показывая больший recall с экземплярами с меньшим доверием и меньший recall с экземплярами с большим доверием. Это наглядный пример компромисса между точностью и отзывом для моделей классификации.
Шаг 8: Вычисление пересечения над союзом
Ты можешь измерить точность предсказания, вычислив IoU между предсказанной ограничительной рамкой и истинной ограничительной рамкой для одного и того же объекта. Подробнее об этом читай в руководстве IBM по обучению YOLOv8.
Резюме
Мы изучили основные возможности IBM Watsonx и то, как обучить модель YOLOv8 с помощью IBM Watsonx. Также мы увидели, как IBM Watsonx может улучшить твои рабочие процессы ИИ с помощью продвинутых инструментов для построения моделей, управления данными и соблюдения требований.
Подробнее об использовании читай в официальной документации IBM Watsonx.
Также не забудь заглянуть на страницу руководства по интеграцииUltralytics , чтобы узнать больше о различных интересных интеграциях.
ВОПРОСЫ И ОТВЕТЫ
Как обучить модель YOLOv8 с помощью IBM Watsonx?
Чтобы обучить модель YOLOv8 с помощью IBM Watsonx, выполни следующие шаги:
- Настрой свою среду: Создай аккаунт в IBM Cloud и создай проект Watsonx.ai. Используй Jupyter Notebook в качестве среды для кодинга.
- Установи библиотеки: Установи необходимые библиотеки, такие как
torch
,opencv
, иultralytics
. - Загрузи данные: Используй Kaggle API, чтобы загрузить свой набор данных в Watsonx.
- Предварительная обработка данных: Организуй свой набор данных в требуемую структуру каталогов и обнови
.yaml
файл конфигурации. - Обучи модель: Используй интерфейс командной строки YOLO , чтобы обучить свою модель с определенными параметрами, например
epochs
,batch size
, иlearning rate
. - Тестируй и оценивай: Запусти вывод, чтобы проверить модель и оценить ее производительность с помощью таких показателей, как точность и отзыв.
Подробные инструкции ты найдешь в нашем руководстве по обучению моделейYOLOv8 .
Каковы ключевые особенности IBM Watsonx для обучения моделей ИИ?
IBM Watsonx предлагает несколько ключевых функций для обучения моделей ИИ:
- Watsonx.ai: Предоставляет инструменты для разработки ИИ, включая доступ к поддерживаемым IBM пользовательским моделям и моделям сторонних разработчиков, например Llama 3. В него входят Prompt Lab, Tuning Studio и Flows Engine для комплексного управления жизненным циклом ИИ.
- Watsonx.data: Поддерживает облачные и локальные развертывания, предлагая централизованный доступ к данным, эффективные движки для запросов, такие как Presto и Spark, и семантический слой на основе ИИ.
- Watsonx.governance: Автоматизирует соблюдение норм, управляет рисками с помощью оповещений и предоставляет инструменты для выявления таких проблем, как предвзятость и смещение. В него также входят панели и инструменты отчетности для совместной работы.
Для получения дополнительной информации посети официальную документацию IBM Watsonx.
Почему мне стоит использовать IBM Watsonx для обучения Ultralytics YOLOv8 моделей?
IBM Watsonx - отличный выбор для обучения моделей Ultralytics YOLOv8 благодаря комплексному набору инструментов, которые упрощают жизненный цикл ИИ. К ключевым преимуществам относятся:
- Масштабируемость: Легко масштабируй обучение модели с помощью облачных сервисов IBM Cloud.
- Интеграция: Бесшовная интеграция с различными источниками данных и API.
- Удобный интерфейс: Упрощает процесс разработки благодаря совместной работе и интуитивно понятному интерфейсу.
- Продвинутые инструменты: Получи доступ к таким мощным инструментам, как Prompt Lab, Tuning Studio и Flows Engine для повышения производительности модели.
Узнай больше о том. Ultralytics YOLOv8 и о том, как обучать модели с помощью IBM Watsonx, в нашем руководстве по интеграции.
Как я могу предварительно обработать свой набор данных для обучения на YOLOv8 в IBM Watsonx?
Для предварительной обработки твоего набора данных для обучения YOLOv8 на 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)
Более подробную информацию ты найдешь в нашем руководстве по предварительной обработке данных.
Каковы предварительные условия для обучения модели YOLOv8 на IBM Watsonx?
Прежде чем приступить к обучению модели YOLOv8 на IBM Watsonx, убедись, что у тебя есть следующие предварительные условия:
- Учетная запись в IBM Cloud: Создай аккаунт на IBM Cloud, чтобы получить доступ к Watsonx.ai.
- Аккаунт Kaggle: Для загрузки наборов данных тебе понадобится аккаунт Kaggle и ключ API.
- Jupyter Notebook: Создай в Watsonx.ai среду Jupyter Notebook для кодирования и обучения моделей.
Чтобы узнать больше о настройке твоего окружения, посети наше руководство по установкеUltralytics .