Мне всегда нравились новые технологии и все эти крутые словечки типа «машинное обучение», «большие языковые модели», «компьютерное зрение», «генеративные модели» и т. д.

В недалекие ковидные времена я попал в команду тогда еще Сберклауда в командy ML Space где пилилась платформа для дата‑сатанистов, там были и подключения к GPU посредством 2 строчек кода, инференс моделей, автомл и т. д. С этого времени начался мой путь в ML
Еще стоит отметить что мое хобби — это монтаж видео и всякого рода доски, так что примеры будут про CV модели, так и нагляднее и прикольнее я считаю)

Let's label & train


В начале я разметил небольшой датасет на Roboflow с лейблом где в кадре находится скейтборд и пакман и разделил картинки раскидав их по папочкам train‑test‑val

Labeling делается очень удобно в GUI
Labeling делается очень удобно в GUI

Проходим в раздел dataset и видим разбивку.
Тренировать будем YOLO

YOLO (You Only Look Once).
YOLO (You Only Look Once).

MLFlow

Не зря его называют стандартом трекинга метрик машинного обучения. Импортируем библиотеку mlflow и заводим командой mlflow server --backend-store-uri runs/mlflow. Так как тренировать мы детекцию объектов архитектуры YOLOv11 то импортируем и библиотеку ultralytics тоже + добавим библиотеку onnx для экспорта с формат ONNX.

from ultralytics 
import YOLO
import mlflow
import onnx

model = YOLO('yolo11s.pt')
 results = model.train(
 data='/CV_Project/skatedataset/data.yaml',
 epochs=10 
 imgsz=640
 )
#экпорт в формат ONNX.
model.export(format='onnx')

Далее по шаблону с ultralytics тренируем нашу модель на заранее размеченных lданных c Roboflow

Как видим при обучении отображаются слои нейросети
Как видим при обучении отображаются слои нейросети
Эпохи обучения YOLO (You Only Look Once) — это одна из наиболее распространенных задач в компьютерном зрении, связанная с обнаружением объектов на изображениях.
Эпохи обучения YOLO (You Only Look Once) — это одна из наиболее распространенных задач в компьютерном зрении, связанная с обнаружением объектов на изображениях.

Открываем MLFlow http://127.0.0.1:5000/ и кликаем на вкладку Experiments (Видим там появился путь /Shared/Ultralytics )

Присвоим ему тег testing
Присвоим ему тег testing

Можно выбрать несколько прогонов (runs) для оценки их эффективности и принятия решений о выборе оптимальной модели или настроек.

Runs
Runs
Выбираем прогоны и нажимаем кнопку Compare
Выбираем прогоны и нажимаем кнопку Compare

Сравнивая их, можно провести глубокий анализ различий между подходами, используемых параметрах, результатах обучения и оценке производительности моделей.

Сравнение 2 прогонов
Сравнение 2 прогонов

MLflow поддерживает построение графиков, отображающих эволюцию метрик (например, потерю или точность) на разных этапах обучения. Сравнение нескольких экспериментов на одном графике даёт четкое представление о прогрессе каждого подхода.

Переходим во вкладку Model metrics где можно посмотреть важные характеристики (гиперпараметры, метрики, артефакты), что очень удобно анализировать результаты и принимать обоснованные решения о дальнейшем развитии модели.

Далее перейдем во вкладку Artifacts и посмотрим на результаты нашего обучения более наглядно. Представленные здесь визуализации и численные показатели, мы сможем оценить эффективность нашей модели а также выявить возможные проблемы.

Доски и Пакман задетектировались на валидации
Доски и Пакман задетектировались на валидации

Эта страница позволяет нам лучше понять поведение модели и сделать выводы о том, насколько успешно наша модель справляется с поставленной задачей


Структура матрицы
Структура матрицы

Также стоить отметить что в интеграции YOLO от Ultralytics отсутствует возможность регистрации модели через GUI MLFlow,об этом пишется в данном обсуждении на гитхабе — https://github.com/ultralytics/ultralytics/issues/8214 — так что для дальнейших манипуляций с моделью экспортируем ее в формат ONNX.

Tensorboard

Мощный инструмент визуализации и анализа обучения модели, в обучении с YOLO11 запускается автоматом посредством команды yolo settings tensorboard=True и открывается локально на localhost на порту 6006.

На этот раз прогон продолжился в 20 эпох
На этот раз прогон продолжился в 20 эпох

После очередного прогона обучения нашей модели переходим по ссылке и открываем удобный интерфейс, который позволяет наблюдать за процессом обучения модели, отслеживать изменения метрик производительности и т. д.

Вкладка — Time Series


Она полезна для изучения динамических изменений метрических величин, зависящих от времени, и их анализа на протяжении всего обучения. Одновременно отображаются несколько серий (train_loss и val_loss). Как и в разделе Scalars, здесь доступно сглаживание графиков, что позволяет легче воспринимать общую тенденцию изменения метрик, что заметно улучшает понимание того, как меняется состояние модели во времени и позволяет находить причины ошибки или колебания в показателях.

Главная страница Time Series
Главная страница Time Series

Переходим на вкладку Scalars, здесь можно следить за такими важными показателями, как потери (loss), точность (accuracy), скорость обучения (learning rate). Можно легко сравнивать показатели разных экспериментов друг с другом. Например, полезно посмотреть разницу в обучении одной и той же модели на разных датасетах или с разными параметрами. В данном окне можно обнаружить признаки переобучения, можно даде одновременно смотреть на loss‑кривые тренировочных и валидных данных.

Также есть возможность экспорта сырых данных выбранного графика в.CSV файл для дальнейшего анализа вне TensorBoard.

Как выглядит сглаживание графиков в Scalars
Как выглядит сглаживание графиков в Scalars

Переходим во вкладку — Отображение структуры — Graphs:

Graphs
Graphs

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

Если кликнуть на узлы графа, чтобы увидеть дополнительную информацию, такую как размер входа-выхода, тип узла и т.д.
Если кликнуть на узлы графа, чтобы увидеть дополнительную информацию, такую как размер входа‑выхода, тип узла и т. д.

При обучении больших моделей можно видеть всю иерархию сверток, слоев и функций активации, проверить, а таже правильность соединений между ними.

Итак, подведем итог обзора 2-ух трекеров

MLflow — это прям как книга учёта экспериментов. Каждый раз, когда ты проводишь исследование, ты аккуратно заносишь туда всё подряд: дату, название модели, версию данных и этой модели, какой был алгоритм и даже ссылку на сам код скрипта. А ещё — ставишь оценки: получилось хорошо или нет, сохранился результат или оказался неудачным. Ты знаешь, как было сделано исследование, что использовалось и почему получился именно этот результат. Отлично подходит для командной разработки.

Минусы — неудобный интерфейс и настройка более трудная, даже с помощью ultralytics

TensorBoard это прям как стикеры, где ты расклеиваешь заметки о результатах твоих прогонов моделей. Каждая заметка‑стикер показывает красивые графики, таблицы и картинки. Можно быстро увидеть прогресс своего исследования, оценить качество своей модели и сравнить, как она работала раньше и сейчас. Почему это круто: Всё становится ясно буквально одним взглядом. Прекрасно подходит для быстрого анализа происходящего и понимания общих тенденций.

Минусы — Доска не следит за деталями — какая была версия твоей модели, какие были входные данные, какой конкретно компьютер использовался и какие библиотеки стояли. Она просто показывает красивую картинку, но ничего не сохраняет.

Лучший подход — комбинировать оба инструмента. Пусть TensorBoard покажет красивую картину, а MLflow запишет важные детали.

Cсылка на детекцию видео — https://cloud.mail.ru/public/D5kL/bAnrRrL4U

Оригинальное видео

Комментарии (0)