На прошлой неделе Voxel51 провел в январе 2023 года Встречу компьютерного зрения. В этом сообщении блога вы найдете записи итогов, основные моменты презентаций и вопросы и ответы, а также расписание предстоящих встреч, чтобы вы могли присоединиться к нам на будущем мероприятии. Надеюсь увидеть вас в ближайшее время!

Во-первых, спасибо за голосование за вашу любимую благотворительную организацию!

Вместо халявы мы дали участникам Meetup возможность помочь направить наши ежемесячные пожертвования на благотворительные цели. Благотворительной организацией, набравшей наибольшее количество голосов в этом месяце, стал Фонд борьбы со слепотой. Мы рады сделать им пожертвование в размере 200 долларов от имени сообщества компьютерного зрения!

Краткий обзор встречи по компьютерному зрению

Кэмерон Р. Вульф // Планирование гиперпараметров для компьютерного зрения

Жюльен Саймон // Введение в компьютерное зрение с трансформерами, обнимающими лица

Следующие шаги

Планирование гиперпараметров для компьютерного зрения

Видео повтор

Управляющее резюме

Кэмерон Р. Вулф, научный сотрудник Alegion и доктор философии. студент Университета Райса, делится некоторыми своими исследованиями по теме планирования гиперпараметров для компьютерного зрения. Для начала Кэмерон объясняет, что настройка гиперпараметров важна, потому что глубокое обучение может быть дорогостоящим в вычислительном отношении. Когда вы тренируетесь с набором данных, вы просматриваете все данные из нескольких эпох и в конце проверяете, хорошо ли работает ваша модель. Если это не так, то вам придется вернуться к первому этапу. Это создает петлю, в которой, если вы неправильно выбираете свои гиперпараметры, вы постоянно переобучаете свою сеть, пытаясь получить ту, которая работает хорошо. В то время как многие люди связывают вычислительные затраты на глубокое обучение с большими наборами данных и большими моделями, проблема усугубляется с неправильными гиперпараметрами, потому что вам приходится нести расходы на обучение вашей глубокой нейронной сети несколько раз.

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

Скорость обучения

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

Почему важен бюджет? Возможно, у вас есть вычислительный и/или денежный бюджет, и вам нужно тренироваться в его рамках; или, может быть, у вас есть крайний срок, и вы не можете тратить слишком много времени на обучение своей сети. Один из самых эффективных способов работы в рамках бюджета — просто сократить количество эпох обучения. Например, вместо того, чтобы обучать модель на 200 эпох в ImageNet, вы можете сократить ее до 90 и, вероятно, получить довольно хорошую производительность, если правильно установите гиперпараметры. В исследовании Кэмерона рассматривается, как правильно установить скорость обучения при обучении нейронных сетей в условиях ограниченного бюджета.

Чтобы изучить различные варианты скорости обучения в условиях ограниченного бюджета, Кэмерон разбивает графики скорости обучения на два компонента: профиль (непрерывная функция, которая моделирует снижение скорости обучения; классические примеры — косинусный, линейный, экспоненциальный и ступенчатый графики) и частота дискретизации (как часто вы хотите обновлять скорость обучения из этого профиля).

Чтобы задать сцену, Кэмерон показывает два классических примера — пошаговое расписание и линейное расписание.

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

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

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

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

  • Пошаговые расписания (обычно используемые в компьютерном зрении) хорошо работают только в высокобюджетном режиме.
  • REX действительно хорошо работает в разных доменах и бюджетах.
  • Существует множество вариантов расписания скорости обучения; выбрать лучший на основе ваших настроек — количество эпох, домен или проблема (классификация, обнаружение и т. д.)

Точность обучения

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

Идея обучения с низкой точностью заключается в том, что вместо обучения вашей нейронной сети с обычной 32-битной точностью вы можете снизить ее до 16 бит, 8 бит или, может быть, даже ниже, что сэкономит затраты на вычисления. Как это работает, когда вы выполняете прямой проход, вы квантуете свою активацию и веса с более низкой точностью, прежде чем выполнять умножение матрицы в прямом проходе, который быстрее. Вы можете сделать то же самое в обратном проходе, который имеет два матричных умножения (одно для вычисления вашего обновления веса и одно для распространения градиента на предыдущий слой), что экономит вдвое больше вычислений.

Вопрос, который решает исследование Кэмерона, заключается в следующем: каковы наилучшие графики гиперпараметров для CPT для достижения выгод (снижение затрат или повышение производительности)? Это исследование следует подходу, аналогичному исследованию REX, путем разложения точных графиков на части (в данном случае на три).

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

В исследовании Кэмерона 10 расписаний объединены в три группы (большие расписания, средние расписания и малые расписания) в зависимости от того, какое влияние они оказывают на величину экономии вычислительных ресурсов, которую вы получаете. Вот сопоставление -> большой = RR и RTH; среда = LR, LT, CR, CT, RTV, ETV; маленький = ER, ETH. (Возможно, вы захотите вернуться к этим сопоставлениям позже, когда будете рассматривать выводы о точности позже в этом посте.)

Кэмерон рассказывает нам о некоторых основных моментах исследования:

  • Как правило, существует корреляция между производительностью модели и объемом обучающих вычислений, которые мы используем. Кэмерон добавляет: «Если мы используем меньше вычислительных ресурсов или больше экономим вычислительные ресурсы, мы, как правило, получаем немного худшую производительность, и наоборот. Таким образом, несмотря на то, что мы можем использовать эти альтернативные графики точности, во многих случаях мы не получаем эти вычислительные преимущества бесплатно. Если мы хотим, чтобы наше обучение проходило быстрее, мы, вероятно, получим модель, которая работает не так хорошо».
  • В некоторых случаях использование альтернативных графиков (кроме косинусных графиков) может быть полезным. Например, при обучении ResNet 18 в ImageNet наилучшая производительность достигается при экспоненциальном графике.
  • Некоторые настройки чувствительны к большому количеству квантований, поэтому вы не всегда можете обучить сеть с очень низкой точностью; это зависит от домена. Поэтому будьте осторожны с низкой точностью, с которой вы собираетесь тренироваться.

Ключевые выводы для точности обучения:

  • Вы можете многого добиться, исследуя альтернативные графики гиперпараметров для циклической тренировки точности.
  • Вот руководство Кэмерона о том, как выбрать один:
  • Используйте небольшие расписания, чтобы минимизировать затраты на обучение
  • Используйте большие расписания, чтобы максимизировать производительность модели
  • Используйте средние графики, чтобы найти баланс

А теперь подвох: ни один из них на самом деле не может быть использован практически прямо сейчас, потому что текущее оборудование поддерживает обучение с низкой точностью только на определенных уровнях. Кэмерон рекомендует: Сейчас лучше всего использовать для обучения с низкой точностью то, что называется Apex, которое реализует обучение с 16-битной точностью с минимальными изменениями кода. Для получения дополнительной информации ознакомьтесь со статьей Кэмерона: Quantized Training with Deep Networks.

Видео глубокое обучение

Последняя часть презентации Кэмерона посвящена глубокому обучению видео и тому, как циклические размеры пакетов могут ускорить время обучения настенных часов. В этом разделе Кэмерон знакомит нас с некоторыми предысториями из статьи Сети SlowFast для распознавания видео. Идея состоит в том, что вместо одной 3D CNN, которую мы свернем по всему входному видео на нескольких слоях, мы разделим нашу сеть на два разных модуля: Медленный путь, который отвечает за захват пространственных или семантических характеристик; и Fast Pathway, который отвечает за захват движущихся объектов.

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

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

Заключение

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

Резюме вопросов и ответов

Вот краткий обзор живых вопросов и ответов из этой презентации во время виртуальной встречи Computer Vision Meetup:

В: Есть ли какие-либо комментарии относительно REX в отношении переноса обучения?

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

В: В дополнение к проблемной области и бюджету, видите ли вы, что только сам набор данных (размер, разнообразие и т. д.) может заставить один LR работать лучше или хуже?

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

В: Как вы думаете, когда мы увидим выпуклые оптимизаторы для произвольных нейронных сетей?

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

В: Как мы инициируем REX?

С REX вы выбираете начальную скорость обучения, у вас есть график, по которому эта скорость обучения варьируется, а затем от начала до конца вашего обучения вы уменьшаете скорость обучения от первоначального выбора до примерно в 10 раз ниже, чем это первоначальный выбор или, может быть, 100x в соответствии с этим графиком. Таким образом, инициация не требуется, это просто фиксированный профиль функции, из-за которого мы снижаем скорость обучения.

В: В дополнение к рандомизации тренировочных наборов, добавляете ли вы преднамеренные «помехи»?

О: Нет, на самом деле все, что мы делаем здесь, — это выбираем кучу разных доменов, кучу разных общедоступных наборов данных, а затем запускаем обучение по всем этим, чтобы увидеть, какие графики скорости обучения работают лучше всего. Я бы сказал, что все настройки довольно стандартны; мы не делаем ничего лишнего, просто проводим обучение на общедоступных наборах данных.

Вопрос. Обучение с низкой точностью также называется обучением с учетом квантования?

О: Обучение с учетом квантования относится к методам, которые повышают производительность вашей сети, когда вы делаете ее меньше в конце, чтобы вы могли развернуть ее, например, на пограничном устройстве. Целью этого является обучение сети таким образом, чтобы при ее квантовании она по-прежнему хорошо работала на границе, потому что при преобразовании ее в представление с низкой точностью используется меньше памяти, чтобы ее можно было развернуть. Разница между этим и тем, что я делаю здесь, заключается в том, что циклическое точное обучение (CPT) не сосредоточено на попытке создать меньшую нейронную сеть в конце, оно сосредоточено на попытке снизить затраты на обучение в целом. Мы выполняем процесс обучения с низкой точностью, чтобы сэкономить вычислительные затраты во время обучения. Мы не обязательно пытаемся квантовать сеть, чтобы в конце сделать ее меньше. Тем не менее, может существовать взаимосвязь между обучением с низкой точностью и обучением с учетом квантования, так что выполнение обучения с низкой точностью, подобное этому, может быть хорошим методом обучения с учетом квантования, когда эти сети легче квантовать в конце.

Является ли CPT теоретическим (например, полностью реализованным в программном обеспечении)?

A: Верно, аппаратной поддержки для этого пока нет. Я надеюсь, что аппаратное обеспечение в конечном итоге догонит его, но сейчас лучше всего использовать Apex, потому что вы можете обучить его с точностью до 16 с плавающей запятой, его легко реализовать, и он увеличит скорость без потери производительности, хотя проверить Чтобы убедиться.

В: Есть ли компромиссы/недостатки низкой точности обучения?

Да. Существует корреляция между производительностью модели и обучающими вычислениями. Поэтому, если вы слишком сильно снижаете точность, вы поплатитесь за это — производительность вашей сети ухудшится. Это относительно обучения с фиксированным, но более низким уровнем точности. Но если вы выберете другую стратегию, которая не так агрессивно квантизирует, вы можете повысить производительность модели при одновременной экономии вычислительных ресурсов. В своем выступлении я поделился примером случая ImageNet по сравнению с базовыми показателями, где график экспоненциальной точности обеспечивает как сокращение объема вычислений по сравнению с базовыми уровнями, так и повышение производительности. Так что это зависит; есть компромисс, если вы слишком много квантоваете, но есть определенные случаи, когда вы действительно можете повысить производительность и сэкономить затраты на обучение. Это просто зависит от сценария.

Дополнительные ресурсы

Ознакомьтесь с дополнительными ресурсами в презентации:

Спасибо Кэмерон от имени всего сообщества Computer Vision Meetup за то, что поделились своим исследованием и помогли нам лучше понять, как подходить к настройке гиперпараметров!

Введение в компьютерное зрение с трансформерами, обнимающими лица

Видео повтор

Управляющее резюме

Доклад Жюльена Саймона дает обзор того, что значит работать с моделями компьютерного зрения, особенно с теми, которые размещены на хабе Hugging Face. Жюльен начинает с краткой истории компьютерного зрения в области глубокого обучения (на самом деле то, что привело его к глубокому обучению, было компьютерным зрением!).

Долгое время работа над приложениями компьютерного зрения подразумевала работу со сверточными нейронными сетями (CNN). Но, отмечает Жюльен, золотой век CNN, вероятно, уже позади. Почему? Войдите в Vision Transformer (ViT), первоначально опубликованный Google в 2021 году и описанный в статье: Изображение стоит 16 × 16 слов: трансформеры для распознавания изображений в масштабе.

Жюльен резюмирует, как работает ViT: ViT разбивает изображение на фрагменты, которые сглаживаются и обрабатываются как последовательность токенов. Это приводит к нескольким ключевым преимуществам. Во-первых, Жюльен делится эталоном из исследовательской работы, в частности, сравнивающим преобразователь зрения с ResNet-152, который был современным в то время и работал немного лучше. Также в этой статье ViT требовал в четыре раза меньше вычислительных ресурсов, чем обучение ResNet-152. Кроме того, встроено трансферное обучение, что означает, что вы можете сначала обучить свою модель на одном наборе данных, изучить вложения, а затем специализировать эту модель для последующих задач. Наконец, ViT предлагает высочайшую точность.

Преобразователи CV набирают популярность, но исторически с ними было трудно работать. Это открыло возможность для Hugging Face создавать библиотеки с открытым исходным кодом, веб-сайт и коммерческие инструменты, которые упрощают поиск, совместное использование и работу с современными моделями, даже если вы не являетесь экспертом. .

Вот выборка Hugging Face в цифрах:

  • 120 000+ моделей
  • 18 000+ наборов данных
  • Более 25 моделей машинного обучения, включая модели Keras, Scikit-Learn, fastai и другие.

Говоря о компьютерном зрении, Жюльен отмечает, что Hugging Face содержит около 4000 моделей компьютерного зрения, охватывающих различные задачи в четырех широких категориях.

Затем Жюльен направляется в Hugging Face Hub, чтобы показать нам, как легко загружать, обучать и развертывать модели. Он также показывает виджет вывода, где вы можете предсказывать изображения в концентраторе, а также ссылки на наборы данных, на которых была обучена модель, и пространства, где вы можете быстро создавать, размещать и делиться своими приложениями машинного обучения.

Живое демонстрационное время! Начиная с ~16:49 в презентации, Жульен показывает приложение, которое он создал в Spaces, которое предсказывает изображение (предсказание выполняется всего двумя строками кода Python!) с более чем 10 моделями и отображает результаты.

А как же более продвинутые модели? Жюльен выбирает три — подписи к изображениям, сегментацию нулевого кадра с помощью текстовой подсказки и классификацию аудио с помощью спектрограммы — и показывает несколько интерактивных демонстраций в прямом эфире на Spaces. Затем он рассказывает о мультимодальных преобразователях и диффузорах с демонстрационными примерами и фрагментами кода. Никогда еще экспериментировать с моделями не было так просто!

Помимо работы с выводами и моделями, вы также можете обучать и развертывать с помощью Hugging Face. Жюльен знакомит нас с «семейной фотографией», которая включает в себя все вкусности, доступные сегодня в Hugging Face.

Прежде чем перейти к вопросам и ответам, Жульен делится несколькими ссылками, которые помогут вам начать работу:

Резюме вопросов и ответов

В: ViT уже где-то использует продакшн?

О: Да, у нас есть клиенты, которые используют преобразователь зрения в производстве. Если вас интересуют потенциальные проблемы в производстве, я вижу две. Первый — это тонкая настройка модели на ваших собственных данных, но это достаточно легко сделать. Вторая проблема, с которой вы можете столкнуться, — это задержка логического вывода. Если у вас очень низкие требования к задержке или вы развертываете модели на периферии, то преобразователи могут быть слишком большими (по сравнению с CNN). Хотя в пространстве классификаторов вы найдете модели размером всего в несколько мегабайт; у них есть небольшие мобильные совместимые версии преобразователей зрения.

В: Можем ли мы настроить таргетинг на пограничные устройства для моделей Hugging Face?

О: Да. Несмотря на то, что аппаратные требования для некоторых моделей-трансформеров по-прежнему могут быть непосильными для периферийных устройств, в настоящее время ведется большая работа по уменьшению размеров моделей (например, вы можете найти модели размером 2–3 мегабайта). Сокращение происходит за счет использования меньших архитектур или с помощью таких методов, как квантование, сокращение или с помощью инструментов оптимизации и т. д. Кроме того, если вам нужно рассмотреть модели трансформаторов на периферии, ищите аппаратное решение, которое будет соответствовать вашим потребностям и соответствовать вашим требованиям. ваш аппаратный бюджет.

Вопрос: при игре с приложениями в Hugging Face Spaces загруженные пользователем изображения в конечном итоге архивируются, удаляются или что-то еще?

О: Ничего не хранится в пространстве; нет хранения данных, нет использования данных, и никакие данные, которые вы отправляете либо в Spaces, либо в виджеты вывода и т. д., не сохраняются. Если вы не хотите, чтобы ваше пространство хранило что-то где-то там, нет другого кода, кроме кода, который вы можете увидеть в пространстве.

В: Вы упомянули о 4-кратном повышении эффективности ViT по сравнению с ResNet. Это обучение? Если да, то это обучение с нуля или перенос обучения с предварительно обученной модели или и то, и другое?

О: Да, в исследовательской работе они сообщили о 4-кратном ускорении обучения по сравнению с ResNet-152, и это было обучение с нуля. В целом, кажется, существует некоторый консенсус, основанный на том, что я читал в нескольких статьях, что трансформаторы подходят, когда у вас есть тонна данных. Например, если у вас есть более 10 миллионов изображений и вы тренируетесь с нуля, вы получите лучшие результаты с преобразователями, чем с CNN. С другой стороны, если у вас есть только, скажем, сто тысяч изображений для первоначального обучения, CNN, как правило, работают лучше. Тем не менее, одним из больших преимуществ трансформеров является трансферное обучение. Итак, если у вас нет супер экзотического домена, я бы посоветовал вам начать с одной из этих предварительно обученных моделей, оценить их на ваших собственных данных и немного настроить.

В: Можете ли вы сравнить размер трансформаторов с эквивалентными CNN?

Трансформатор зрения (из памяти) занимает от 300 до 400 мегабайт, что довольно много. Но, как я уже сказал, вы можете найти несколько уменьшенных версий, даже до десятков мегабайт или меньше; достаточно маленький, чтобы вы могли поместиться на маленьком устройстве.

Дополнительные ресурсы

Ознакомьтесь с этими дополнительными ресурсами:

Большое спасибо Жюльену от имени всего сообщества Computer Vision Meetup за то, что он познакомил нас с Hugging Face Transformers!

Места встречи компьютерного зрения

Всего за несколько месяцев число участников Computer Vision Meetup выросло до более чем 2500+ участников! Цель встреч — объединить сообщества специалистов по данным, инженеров по машинному обучению и энтузиастов открытого исходного кода, которые хотят поделиться и расширить свои знания в области компьютерного зрения и дополнительных технологий.

Оповещение о новой встрече — мы только что добавили место проведения встречи Computer Vision в Сингапуре! Присоединяйтесь к одному из (сейчас) 13 мест Meetup, ближайших к вашему часовому поясу.

Предстоящие спикеры и расписание встречи Computer Vision Meetup

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

9 февраля

9 марта

  • Освещение изображений в эпоху глубокого обучения — Soumik Rakshit, инженер машинного обучения (Weights & Biases)
  • Эффективное обучение и тонкая настройка Vision Transformers с помощью Colossal AI — Sumanth P (ML Engineer)
  • Увеличить ссылку

Втягиваться!

Есть много способов принять участие в встречах Computer Vision Meetups. Обратитесь, если вы идентифицируете себя с любым из них:

  • Вы хотите выступить на предстоящей встрече
  • У вас есть физическое пространство для собраний в одном из мест Meetup, и вы хотели бы сделать его доступным для Meetup.
  • Вы хотите стать соорганизатором Meetup
  • Вы хотите стать соспонсором Meetup

Свяжитесь с одним из организаторов Meetup Джимми Герреро на Meetup.com или свяжитесь с ним через LinkedIn, чтобы обсудить, как подключиться.

Сеть Computer Vision Meetup спонсируется , компанией, разработавшей набор инструментов компьютерного зрения с открытым исходным кодом. FiftyOne позволяет группам специалистов по обработке и анализу данных повысить производительность своих моделей компьютерного зрения, помогая им выбирать высококачественные наборы данных, оценивать модели, находить ошибки, визуализировать встраивания и быстрее приступать к работе. Легко начать, всего за несколько минут.

Первоначально опубликовано на https://voxel51.com 17 января 2023 г.