Перейти к содержанию

Лучшие практики машинного обучения и советы по обучению моделей

Введение

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



Смотреть: Советы по обучению моделей | Как работать с большими массивами данных | Размер пакета, использование GPU и Смешанная точность

Итак, что такое обучение модели? Обучение модели - это процесс обучения модели распознаванию визуальных паттернов и составлению прогнозов на основе ваших данных. Оно напрямую влияет на производительность и точность вашего приложения. В этом руководстве мы рассмотрим лучшие практики, методы оптимизации и советы по устранению неполадок, которые помогут вам эффективно обучать модели компьютерного зрения.

Как обучить модель машинного обучения

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

В процессе обучения модель итеративно делает предсказания, вычисляет ошибки и обновляет свои параметры с помощью процесса, называемого обратным распространением (backpropagation). В ходе этого процесса модель корректирует свои внутренние параметры (weights and biases), чтобы уменьшить ошибки. Повторяя этот цикл много раз, модель постепенно повышает свою точность. Со временем она учится распознавать сложные модели, такие как формы, цвета и текстуры.

Что такое обратное распространение?

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

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

Обучение на больших массивах данных

Если вы планируете использовать большой набор данных для обучения модели, необходимо продумать несколько различных аспектов. Например, вы можете настроить размер партии, контролировать использование GPU , выбрать многомасштабное обучение и т. д. Давайте подробно рассмотрим каждый из этих вариантов.

Размер партии и использование GPU

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

На сайте YOLO11 вы можете установить batch_size параметр в конфигурация обучения в соответствии с возможностями вашего сайта GPU . Кроме того, установка batch=-1 в вашем учебном сценарии автоматически определит размер партии которые могут быть эффективно обработаны с учетом возможностей вашего устройства. Точная настройка размера партии позволяет максимально эффективно использовать ресурсы сайта GPU и улучшить процесс обучения в целом.

Обучение подмножеств

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

Когда речь идет о YOLO11, вы можете легко реализовать обучение по подмножествам, используя fraction параметр. Этот параметр позволяет указать, какую часть набора данных использовать для обучения. Например, задав fraction=0.1 обучит вашу модель на 10% данных. Эту технику можно использовать для быстрых итераций и настройки модели, прежде чем приступать к обучению модели на полном наборе данных. Обучение на подмножествах поможет вам быстро добиться прогресса и выявить потенциальные проблемы на ранних этапах.

Многомасштабное обучение

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

Например, при обучении YOLO11 можно включить многомасштабное обучение, установив scale параметр. Этот параметр изменяет размер учебных изображений на заданный коэффициент, имитируя объекты на разных расстояниях. Например, установка scale=0.5 уменьшит размер изображения вдвое, в то время как scale=2.0 увеличит его в два раза. Настройка этого параметра позволяет модели использовать различные масштабы изображения и улучшать возможности обнаружения объектов разных размеров и сценариев.

Кэширование

Кэширование - важная техника, позволяющая повысить эффективность обучения моделей машинного обучения. Благодаря хранению предварительно обработанных изображений в памяти, кэширование сокращает время, которое GPU тратит на ожидание загрузки данных с диска. Модель может непрерывно получать данные без задержек, вызванных операциями ввода-вывода с диска.

Кэшированием можно управлять при обучении YOLO11 с помощью cache параметр:

  • cache=True: Хранит изображения наборов данных в оперативной памяти, обеспечивая самую высокую скорость доступа, но за счет повышенного потребления памяти.
  • cache='disk': Хранит изображения на диске, медленнее, чем в оперативной памяти, но быстрее, чем каждый раз загружать свежие данные.
  • cache=False: Отключает кэширование, полностью полагаясь на дисковый ввод-вывод, что является самым медленным вариантом.

Смешанная точная подготовка

При обучении со смешанной точностью используются как 16-битные (FP16), так и 32-битные (FP32) типы плавающей точки. Сильные стороны FP16 и FP32 используются путем применения FP16 для более быстрых вычислений и FP32 для поддержания точности там, где это необходимо. Большинство операций нейронной сети выполняются в FP16, чтобы получить преимущество от более быстрых вычислений и меньшего использования памяти. Однако мастер-копия весов модели хранится в FP32, чтобы обеспечить точность на этапах обновления весов. При тех же аппаратных ограничениях можно обрабатывать более крупные модели и большие объемы партий.

Обзор смешанных точных тренировок

Чтобы реализовать обучение со смешанной точностью, вам нужно будет изменить скрипты обучения и убедиться, что ваше оборудование (например, GPU) поддерживает эту функцию. Многие современные фреймворки глубокого обучения, такие как Tensorflow, предлагают встроенную поддержку смешанной точности.

Смешанное точное обучение очень просто при работе с YOLO11. Вы можете использовать amp флаг в конфигурации обучения. Установка amp=True позволяет проводить автоматическое обучение со смешанной точностью (AMP). Обучение со смешанной точностью - это простой, но эффективный способ оптимизировать процесс обучения модели.

Предварительно обученные веса

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

Сайт pretrained Параметр упрощает обучение переносу с помощью YOLO11. Настройка pretrained=True будут использоваться предварительно обученные веса по умолчанию, или вы можете указать путь к пользовательской предварительно обученной модели. Использование предварительно обученных весов и трансферного обучения эффективно повышает возможности вашей модели и снижает затраты на обучение.

Другие методы, которые следует учитывать при работе с большими массивами данных

При работе с большим набором данных необходимо учитывать еще несколько приемов:

  • Планировщики скорости обучения: Планировщики скорости обучения динамически регулируют скорость обучения в процессе обучения. Хорошо настроенная скорость обучения может предотвратить выход модели за пределы минимумов и повысить стабильность. При обучении YOLO11 lrf Параметр помогает управлять планированием скорости обучения, задавая конечную скорость обучения как долю от начальной скорости.
  • Распределенное обучение: Для работы с большими массивами данных распределенное обучение может стать решающим фактором. Вы можете сократить время обучения, распределив рабочую нагрузку по нескольким GPU или машинам.

Количество эпох для тренировки

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

Часто возникает вопрос о том, как определить количество эпох для обучения модели. Хорошей отправной точкой является 300 эпох. Если модель перестраивается раньше, вы можете уменьшить количество эпох. Если после 300 эпох оверфиттинг не происходит, можно продлить обучение до 600, 1200 или более эпох.

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

Ранняя остановка

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

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

Обзор ранних остановок

Для YOLO11 можно включить раннюю остановку, задав параметр patience в конфигурации обучения. Например, patience=5 означает, что обучение прекращается, если в течение 5 эпох подряд не происходит улучшения показателей валидации. Использование этого метода обеспечивает эффективность процесса обучения и достижение оптимальной производительности без чрезмерных вычислений.

Выбор между облачным и локальным обучением

Существует два варианта обучения модели: облачное обучение и локальное обучение.

Облачное обучение обеспечивает масштабируемость и мощное оборудование и идеально подходит для работы с большими массивами данных и сложными моделями. Такие платформы, как Google Cloud, AWS и Azure, предоставляют доступ по требованию к высокопроизводительным GPU и TPU, ускоряя время обучения и позволяя проводить эксперименты с большими моделями. Однако облачное обучение может быть дорогостоящим, особенно в течение длительного времени, а передача данных может увеличивать расходы и задержки.

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

Выбор оптимизатора

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

Вы также можете точно настроить параметры оптимизатора для улучшения работы модели. Настройка скорости обучения задает размер шагов при обновлении параметров. Для стабильности можно начать с умеренной скорости обучения и постепенно снижать ее со временем, чтобы улучшить долгосрочное обучение. Кроме того, настройка импульса определяет, насколько сильно прошлые обновления влияют на текущие. Обычное значение импульса - около 0,9. В целом это хороший баланс.

Общие оптимизаторы

Различные оптимизаторы имеют разные достоинства и недостатки. Давайте рассмотрим несколько распространенных оптимизаторов.

  • SGD (стохастический градиентный спуск):

    • Обновляет параметры модели, используя градиент функции потерь относительно параметров.
    • Простой и эффективный, но может медленно сходиться и застревать в локальных минимумах.
  • Adam (Adaptive Moment Estimation):

    • Сочетает в себе преимущества SGD с импульсом и RMSProp.
    • Регулирует скорость обучения для каждого параметра на основе оценок первого и второго моментов градиентов.
    • Хорошо подходит для работы с зашумленными данными и разреженными градиентами.
    • Он эффективен и обычно требует меньше настроек, что делает его рекомендуемым оптимизатором для YOLO11.
  • RMSProp (Root Mean Square Propagation):

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

На сайте YOLO11 optimizer Параметр позволяет выбрать один из различных оптимизаторов, включая SGD, Adam, AdamW, NAdam, RAdam и RMSProp, или вы можете установить его на auto для автоматического выбора на основе конфигурации модели.

Связь с обществом

Участие в сообществе энтузиастов компьютерного зрения поможет вам решать проблемы и быстрее учиться. Вот несколько способов подключиться, получить помощь и поделиться идеями.

Общественные ресурсы

  • Вопросы на GitHub: Посетите репозиторийYOLO11 GitHub и используйте вкладку Issues, чтобы задавать вопросы, сообщать об ошибках и предлагать новые возможности. Сообщество и сопровождающие очень активны и готовы помочь.
  • Ultralytics Сервер Discord: Присоединяйтесь к серверуUltralytics Discord, чтобы общаться с другими пользователями и разработчиками, получать поддержку и делиться своим опытом.

Официальная документация

  • Ultralytics YOLO11 Документация: Ознакомьтесь с официальной документацией YOLO11 для получения подробных руководств и полезных советов по различным проектам в области компьютерного зрения.

Использование этих ресурсов поможет вам решать проблемы и быть в курсе последних тенденций и практик в сообществе специалистов по компьютерному зрению.

Основные выводы

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

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Как повысить эффективность использования GPU при обучении большого набора данных с помощью Ultralytics YOLO ?

Чтобы улучшить использование GPU , установите batch_size параметр в конфигурации обучения на максимальный размер, поддерживаемый вашим GPU. Это позволит полностью использовать возможности GPU и сократить время обучения. Если вы столкнулись с ошибками памяти, постепенно уменьшайте размер пакета до тех пор, пока обучение не будет проходить гладко. Для YOLO11 установите batch=-1 в сценарии обучения автоматически определит оптимальный размер партии для эффективной обработки. Для получения дополнительной информации обратитесь к конфигурация обучения.

Что такое смешанное точное обучение и как включить его на сайте YOLO11?

При обучении со смешанной точностью используются 16-битные (FP16) и 32-битные (FP32) типы с плавающей запятой, чтобы сбалансировать скорость и точность вычислений. Такой подход ускоряет обучение и сокращает расход памяти без ущерба для модели точность. Чтобы включить обучение со смешанной точностью в YOLO11, установите amp параметр к True в конфигурации обучения. Это активирует автоматическое обучение со смешанной точностью (AMP). Для получения более подробной информации об этой технике оптимизации см. конфигурация обучения.

Как многомасштабное обучение повышает производительность модели YOLO11 ?

Многомасштабное обучение повышает производительность модели за счет обучения на изображениях разного размера, что позволяет модели лучше обобщать данные в разных масштабах и на разных расстояниях. В YOLO11 можно включить многомасштабное обучение, установив параметр scale параметр в конфигурации обучения. Например, scale=0.5 уменьшает размер изображения вдвое, а scale=2.0 удваивает. Эта техника имитирует объекты на разных расстояниях, что делает модель более надежной в различных сценариях. Настройки и более подробную информацию можно найти на сайте конфигурация обучения.

Как использовать предварительно обученные веса для ускорения обучения в YOLO11?

Использование предварительно обученных весов позволяет значительно сократить время обучения и повысить производительность модели, поскольку в начале обучения модель уже понимает основные характеристики. На сайте YOLO11 можно задать pretrained параметр к True или укажите путь к пользовательским предварительно обученным весам в конфигурации обучения. Этот подход, известный как трансферное обучение, использует знания из больших наборов данных для адаптации к конкретной задаче. Узнайте больше о предварительно обученных весах и их преимуществах здесь.

Количество эпох - это количество полных проходов по обучающему набору данных во время обучения модели. Типичная начальная точка - 300 эпох. Если на ранних этапах модель не справляется с задачей, вы можете уменьшить это число. В противном случае, если перебор не наблюдается, можно продлить обучение до 600, 1200 или более эпох. Для настройки этого параметра в YOLO11, используйте epochs параметр в сценарии обучения. Дополнительные советы по определению идеального количества эпох см. в этом разделе количество эпох.

📅 Создано 5 месяцев назад ✏️ Обновлено 1 месяц назад

Комментарии