Подробное объяснение структуры модели YOLOv10 и реализации развертывания вывода.
Подробное объяснение структуры модели YOLOv10 и реализации развертывания вывода.

Модель YOLOv10

Сегодня утром я увидел кучу твитов, в которых говорилось, что вышел YOLOv10. Я был шокирован. Мир меняется так быстро.

Затем я бегло просмотрел соответствующие документы и нашел YOLOv10. По сравнению с YOLOv8 есть два самых больших изменения: Добавлен уровень PSA и уровень CIB.

Удален НМС

Экспорт и развертывание

Адрес YOLOv10 на github следующий:

Язык кода:javascript
копировать
https://github.com/THU-MIG/yolov10

Загрузите исходный код и напрямую используйте следующий код для экспорта модели формата ONNX. Я обнаружил, что прежде чем я успел выяснить формат после экспорта, выходные данные на самом деле представляли собой динамическое представление формата ONNX, но на самом деле.

Язык кода:javascript
копировать
Поддерживаемый формат ввода: 1x3x640x640.
Выходной формат: 1x300x6.

Выходной формат 300 относится к числу выходных блоков предсказания, 6 соответственно.

Язык кода:javascript
копировать
x1 y1 x2 y2 score classid

Потому что Модель YOLOv10 не требует NMS, поэтому он напрямую выводит окончательный результат прогнозирования. Максимальное поддерживаемое количество полей по умолчанию — 300. Это можно изменить, но я не изучал это внимательно, иначе он, очевидно, будет поддерживать слишком мало блоков прогнозов, что намного меньше, чем блок прогнозов YOLOv8. Код преобразования модели выглядит следующим образом:

Язык кода:javascript
копировать
from ultralytics import RTDETR, YOLO
"""Test exporting the YOLO model to ONNX format."""
f = YOLO("yolov10s.pt").export(format="onnx", dynamic=True)

С точки зрения чистого вывода YOLOv10 действительно намного проще, чем YOLOv8, и немного похож на модель SSD. Код вывода реализован следующим образом:

Язык кода:javascript
копировать
import cv2 as cv
import numpy as np
from openvino.runtime import Core


# load model
labels = load_classes()
ie = Core()
for device in ie.available_devices:
    print(device)
model = ie.read_model(model="yolov10n.onnx")
compiled_model = ie.compile_model(model=model, device_name="CPU")
output_layer = compiled_model.output(0)

frame = cv.imread("D:/images/1234.jpg")
image = format_yolov10(frame)

h, w, c = image.shape
x_factor = w / 640.0
y_factor = h / 640.0

# Обнаружение 2/255.0, NCHW = 1x3x640x640
blob = cv.dnn.blobFromImage(image, 1 / 255.0, (640, 640), swapRB=True, crop=False)

# Настройка сетевого входа
cvOut = compiled_model([blob])[output_layer]
# [left,top, right, bottom, score, classId]
print(cvOut.shape)
for row in cvOut[0,:,:]:
    score = float(row[4])
    objIndex = int(row[5])
    if score > 0.5:
        left, top, right, bottom = row[0].item(), row[1].item(), row[2].item(), row[3].item()

        left = int(left * x_factor)
        top = int(top * y_factor)
        right = int(right * x_factor)
        bottom = int(bottom * y_factor)
        # рисовать
        cv.rectangle(frame, (int(left), int(top)), (int(right), int(bottom)), (255, 0, 0), thickness=2)
        cv.putText(frame, "score:%.2f, %s"%(score, labels[objIndex]),
                (int(left) - 10, int(top) - 5), cv.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2, 8);

cv.imshow('YOLOv10 Object Detection', frame)
cv.imwrite("D:/result.png", frame)
cv.waitKey(0)
cv.destroyAllWindows()

Результаты бега следующие:

Резюме и мнения

Лично я считаю, что это модифицированная версия YOLOv8. Называть ее YOLOv10 немного излишне. Если модификация продолжится, YOLOv20 не за горами. Затем, загрузив исходный код, вы обнаружите, что многие пакеты YOLOv8 и комментарии к коду даже не изменили своих названий. Особенно код демонстрации вывода по-прежнему остается YOLOv8. Можете ли вы быть более профессиональнее?

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose