Обзор
YOLO11 анонсирован на мероприятии YOLO Vision 2024 27 сентября 2024 г.: https://www.youtube.com/watch?v=rfI5vOo3-_A.
YOLO11 — это новейшая версия семейства YOLO от Ultralytics, сочетающая в себе высочайшую точность, скорость и эффективность для обнаружения объектов, сегментации, классификации, ориентированных ограничивающих рамок и оценки позы. По сравнению с YOLOv8 он имеет меньше параметров и лучшие результаты. Нетрудно предвидеть, что YOLO11 более эффективен и быстрее на периферийных устройствах и будет часто появляться в новейших технологиях (SOTA) в области компьютеров. зрение.
Основные особенности
Действия, описанные в этом руководстве
Настройки среды
Для использования Google Colab вам нужна учетная запись Google. Мы используем Colab для ресурсоемких задач, таких как глубокое обучение. Поскольку графического процессора моего компьютера недостаточно, мне нужно активировать поддержку графического процессора Colab.
После этого проверяем активность графического процессора.
Он поддерживает до 16 ГБ памяти и 2560 ядер CUDA для ускорения широкого спектра современных приложений. Затем этот код выполняется для динамического определения рабочего каталога и гибкого управления путями к файлам.
import os
HOME = os.getcwd()
Далее вам необходимо скачать пакет Ultralytics для загрузки и обработки модели и пакет Roboflow для набора данных.
!pip install ultralytics supervision roboflow
from ultralytics import YOLO
from roboflow import Roboflow
Подготовить набор данных
Для этого проекта я использовал набор данных о паразитах, включенный в RF100. Я обучу модель обнаружения объектов на этом наборе данных с 8 различными классами паразитов. Я буду обрабатывать помеченные классифицированные изображения с помощью Roboflow. Я часто использую эту платформу с открытым исходным кодом в своих личных проектах. Работая с готовыми наборами данных, вы можете быстро получить много информации о своих данных в разделе анализа работоспособности набора данных. Например, в разделе баланса классов, показанном ниже, мы видим, что класс Hymenolepis недостаточно представлен.
Ссылки, связанные с набором данных:
https://universe.roboflow.com/roboflow-100/parasites-1s07h
https://universe.roboflow.com/roboflow-100
https://universe.roboflow.com/roboflow-100/parasites-1s07h/health
Чтобы повысить точность этого класса, вам необходимо применить увеличение, передискретизацию или отрегулировать веса классов. В этой статье мы не будем затрагивать эти темы, не волнуйтесь, но если вас интересуют данные задачи, смело обращайтесь ко мне. Если будет достаточный спрос, я также могу поделиться своими подробными работами по этим темам. Вы можете загрузить и использовать любой проект с открытым исходным кодом в среде Roboflow, следуя формату. После подготовки или выбора набора данных мы будем работать в среде Colab. Причина, по которой мы перешли на Colab, заключается в том, что он предлагает бесплатное использование графического процессора NVIDIA T4 объемом 16 ГБ. Я упомянул об этой проблеме ниже. Нам нужно импортировать наши данные в формате YOLOv8 с помощью API Roboflow. Получим готовые фрагменты кода и форматы данных.
rf = Roboflow(api_key="your-api-key")
project = rf.workspace("roboflow-100").project("parasites-1s07h")
version = project.version(2)
dataset = version.download("yolov8")
!sed -i '$d' {dataset.location}/data.yaml # Delete the last line
!sed -i '$d' {dataset.location}/data.yaml # Delete the second-to-last line
!sed -i '$d' {dataset.location}/data.yaml # Delete the third-to-last line
!echo 'test: ../test/images' >> {dataset.location}/data.yaml
!echo 'train: ../train/images' >> {dataset.location}/data.yaml
!echo 'val: ../valid/images' >> {dataset.location}/data.yaml
Нам нужно обновить формат data.yaml, как показано ниже, для обучения в формате YOLO11.
!sed -i '$d' {dataset.location}/data.yaml # Delete the last line
!sed -i '$d' {dataset.location}/data.yaml # Delete the second-to-last line
!sed -i '$d' {dataset.location}/data.yaml # Delete the third-to-last line
!echo 'test: ../test/images' >> {dataset.location}/data.yaml
!echo 'train: ../train/images' >> {dataset.location}/data.yaml
!echo 'val: ../valid/images' >> {dataset.location}/data.yaml
Модель обучения
Давайтесуществоватьнасизданныеустановить на Модель обучения 40 цикл. В рамках этого проекта я прошел CLI Команда демонстрирует тренировку. Обучение начинается после его определения с помощью простой команды, показанной ниже.
!yolo task=detect mode=train model=yolo11s.pt data={dataset.location}/data.yaml epochs=40 imgsz=640 plots=True
Вы также можете создать его с помощью Python для более гибких сценариев. Пример обучающего кода Python показан ниже:
from ultralytics import YOLO
# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Train the model on the COCO8 example dataset for 40 epochs
results = model.train(data="coco8.yaml", epochs=40, imgsz=640)
Обученная модель сохраняется в best.pt в файле /runs/detect/train/weights.
После того как ваша модель завершит обучение, вы сможете оценить результаты обучения, используя графики, созданные YOLO11.
Показатели эффективности
матрица путаницы
Уведомление:существовать Модель обучение, обзор Ultralytics Полезны параметры в разделе документации «Настройки обучения». Эта часть имеет решающее значение для вашего тренировочного процесса.
Проверить модель
Вот преимущества использования режима Val YOLO11:
!yolo task=detect mode=val model={HOME}/runs/detect/train/weights/best.pt data={dataset.location}/data.yaml
Результаты Вал
Общая оценка:
Запустите вывод на тестовом наборе данных
Давайте оценим способность модели к обобщению и посмотрим ее прогнозы на ранее невиданном наборе тестовых данных.
# predict mode for test data
!yolo task=detect mode=predict model={HOME}/runs/detect/train/weights/best.pt conf=0.25 source={dataset.location}/test/images save=True
# for visualization
latest_folder = max(glob.glob('/content/runs/detect/predict*/'), key=os.path.getmtime)
for img in glob.glob(f'{latest_folder}/*.jpg')[:1]:
display(IPyImage(filename=img, width=600))
print("\n")