Faster Neural Networks Straight from JPEG

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

            Faster Neural Networks Straight from JPEG

Более быстрые нейронные сети напрямую из JPEG

Abstract

Простые и элегантные методы обучения сверточных нейронных сетей (CNN) непосредственно из пикселей RGB достигли ошеломляющего эмпирического успеха. Но можно ли улучшить производительность сети, используя различные входные представления?В этой статье мы предлагаем и исследуем простую идею: научить CNN напрямую вычислять коэффициенты блочного дискретного косинусного преобразования (DCT), которые можно закодировать в формате JPEG middle декодера. Интуитивно понятно, что при обработке изображения JPEG с помощью CNN кажется, что нет необходимости распаковывать частоту блока, чтобы переместить его из CPU в GPU, а затем обработать его с помощью CNN, он научится чему-то вроде преобразования частоты представление обратно на первый слой. Почему бы не пропустить эти два шага и передать частотную область непосредственно в сеть?В этой статье мы модифицируем libjpeg, чтобы напрямую генерировать DCT-коэффициенты, модифицируем сеть ResNet-50 для размещения входных данных разных размеров и диапазонов, а также оценим производительность ImageNet. . Мы нашли более быструю и точную сеть, а ResNet-50 с аналогичной точностью, но в 1,77 раза быстрее.

1 Introduction

Удивительный прогресс в обучении нейронных сетей, особенно сверточных нейронных сетей [14], для достижения хороших результатов в различных задачах [13, 19, 20, 10] привел к широкому внедрению этой модели в научных кругах и промышленности. Когда CNN использует данные изображения в качестве входных данных для обучения, данные обычно предоставляются в виде массива пикселей красно-зелено-синего цвета (RGB). Сверточные слои начинают вычислять функции с пикселей, ранние слои обычно изучают фильтры Габора, а более поздние слои изучают более абстрактные функции более высокого уровня [13, 27].

В этой статье мы предлагаем и исследуем простую идею ускорения обучения и вывода нейронной сети в распространенных сценариях, где сеть применяется для кодирования изображений в формате JPEG. В этом случае изображение обычно декодируется из сжатого формата в массив пикселей RGB, который затем подается в нейронную сеть. Здесь мы предлагаем и исследуем более прямой подход. Во-первых, мы модифицируем библиотеку libjpeg для частичного декодирования изображений JPEG, что приводит к представлению изображения, состоящему из трех тензоров, содержащих коэффициенты дискретного косинусного преобразования (DCT). Из-за того, как работает кодек JPEG, эти тензоры имеют разное пространственное разрешение. Затем мы проектируем и обучаем сеть, работающую непосредственно из этого представления, что, как можно подозревать, оказалось достаточно эффективным.

Related Work

Когда критична скорость обучения и/или логического вывода, большая часть работы была сосредоточена на ускорении вычислений за счет уменьшения количества параметров или использования более эффективных в вычислительном отношении операций на графических процессорах (GPU) [12, 3, 9]. В некоторых исследованиях используется пространственно-частотная декомпозиция и другие сжатые представления для обработки изображений без глубокого обучения [22, 18, 8, 5, 7]. Другие исследования объединили глубокое обучение со сжатыми представлениями, отличными от JPEG, с многообещающими результатами [24, 1]. Больше всего похоже на нашу Из [6] и [25]. [6] Сжатие коэффициентов DCT последовательностью осуществляется не кодировщиком JPEG, а более простым методом усечения. [25] обучает аналогичное входное представление, но не использует полный ранний стек JPEG, в частности, не включает шаг субдискретизации Cb/Cr. Таким образом, наша рабочая станция строится на основе многих предыдущих исследований, расширяя их от полных ранних стеков JPEG до более глубоких сетей и обучения на больших наборах данных и более сложных задачах. Мы тщательно рассчитали время соответствующих процедур и провели необходимые исследования абляции, чтобы понять, откуда взялись улучшения производительности.

1.jpgРисунок 1: (a) Три шага кодирования изображения JPEG: сначала преобразование изображения RGB в цветовое пространство YCbCr, понижение дискретизации каналов цветности, затем проецирование и квантизация каналов с помощью DCT и, наконец, квантизация квантованных коэффициентов без сжатия с потерями. Подробнее см. в разделе 2. (b) Декодирование JPEG происходит в обратном порядке. В этой статье мы выполняем только первый шаг декодирования, а затем передаем коэффициенты DCT непосредственно в нейронную сеть. Это экономит время по трем причинам: пропуская последний этап обычного декодирования JPEG, данные, передаваемые от ЦП к ГП, в два раза меньше, а изображение уже находится в частотной области. В некоторой степени более ранние слои нейронной сети научились преобразованию в частотную область, что позволяет использовать меньшее количество слоев нейронной сети.

Остальная часть этой статьи делает следующие вклады. Мы рассмотрим кодек JPEG более подробно, давая интуитивное понимание этапов процесса с функциями, подходящими для обучения нейронной сети (раздел 2). Поскольку блоки DCT Y и Cb/Cr имеют разное разрешение, мы рассматриваем различные архитектуры, вдохновленные resnet-50 [10], с помощью которых можно комбинировать информацию из этих разных каналов, каждая из которых отличается скоростью и производительностью (раздел 3, раздел 5). . Оказывается, некоторые комбинации дают более быстрые сети с той же производительностью, что и у базовой модели RGB, или лучшую производительность при более скромной скорости (рис. 5). В более быстром и точном обнаружении DCT сетевого пространства мы спрашиваем, можно ли просто найти соседние архитектуры ResNet, работающие в пространстве RGB, которые демонстрируют такую ​​​​же производительность или улучшение скорости. Мы обнаружили, что простые мутации ResNet-50 не создают конкурирующих сетей (раздел 4). Наконец, учитывая превосходную производительность представления DCT, мы проводим исследование абляции, чтобы выяснить, связано ли это с другим цветовым пространством или с конкретным фильтром первого слоя. Мы обнаружили, что точное преобразование DCT работает очень хорошо, даже лучше, чем попытки изучить преобразование тех же размерностей (раздел 4.3, раздел 5.3)! вGitHub.com/UB И — горячо, горячо, горячо…Опубликовал наш код.

2 JPEG Compression

2.1 The JPEG Encoder

Стандарт JPEG (ISO/IEC 10918) был создан в 1992 г. в результате усилий, начатых в 1986 г. [11]. Стандарт JPEG поддерживает 8-битные изображения в градациях серого и 24-битные цветные изображения, и, несмотря на то, что ему уже более 30 лет, он остается доминирующим представлением изображений в бытовой электронике и Интернете. В этой статье мы рассматриваем только 24-битную цветовую версию, которая начинается с пикселей RGB, закодированных с 8 битами на цветовой канал.

3 Designing CNN models for DCT input

2.jpgРисунок 2: (a) 64 стандартных ортогональных базисных вектора DCT, используемых в стандарте JPEG [26] для разложения одноканального блока 8 × 8 пикселей. (б) 64 сверточных фильтра первого слоя размером 7 × 7, обученных базовой сетью ResNet-50, работающей на пикселях RGB [10]. (c) 64 сверточных фильтра размером 8 × 8 изучаются из случайных весов через сеть DCT-Learn, описанную в разделе 4.3. (d) 64 сверточных фильтра из сети DCT-Ortho, аналогичные (c), но с добавлением стандартной ортогональной регуляризации.

В этом разделе мы опишем преобразования, которые удобно используют коэффициенты DCT через традиционные архитектуры CNN, такие как ResNet-50 [10]. Требуется некоторый тщательный расчет, поскольку коэффициенты DCT из канала Y, DY, обычно имеют большие размеры, чем коэффициенты из каналов цветности, DCb и DCr, как показано на рисунке 1a, где фактическая форма вычисляется на основе размера входного изображения. 224×224 оф. Следовательно, необходимы специальные преобразования для обработки сопоставления пространственных измерений, прежде чем результирующие активации будут объединены и переданы в обычную CNN. Мы рассматриваем два абстрактных преобразования (T1, T2), которые воздействуют на разные каналы коэффициентов соответственно, чтобы получить соответствие пространственного размера между тремя активациями aY, aCb и aCr, где aY = T1(DY), aCb = T2(DCb) , aCr = T2(DCr). Рисунок 3 иллюстрирует этот процесс.

В дополнение к обеспечению того, чтобы размеры карт сверточных признаков были выровнены, важно учитывать окончание преобразования, а также размер рецептивного поля и шаг (обозначаемый R и S ниже) каждой единицы во всей сети. В то время как для типичной сети с входом RGB восприимчивое поле и шаг каждой единицы одинаковы для каждого входного канала (красный, зеленый, синий), здесь для информации, восприимчивое поле, рассматриваемое в необработанном пространстве пикселей, может быть другим. Через канал Y вместо каналов Cb и Cr, что, вероятно, не то, что нам нужно. Мы исследуем полученное представление размера операции DCT, когда resNet-50 с тем же набором параметров в разных блоках (таблица ниже), мы находим, что пространственная размерность DY соответствует размерности активации блока 3, в то время как пространственная размерность DCb и DCb соответствуют размерности активации блока 4. Это побудило нас пропустить некоторые блоки ResNet при проектировании сети. архитектуре, но пропуск без дальнейших изменений приводит к менее мощной сети (меньше слоев и меньшему количеству параметров) и последнему сетевому слою с меньшим рецептивным полем.

Преобразования (T1, T2) являются общими и позволяют нам создавать коэффициенты DCT совместимого размера. При определении перехода мы учитывали следующие концепции дизайна. Преобразования могут быть (1) непараметрическими и/или спроектированными вручную, такими как повышающая или понижающая дискретизация исходных коэффициентов DCT, (2) заученными и могут быть просто представлены в виде сверточных слоев или (3) комбинацией слоев, Как и сам блок ResNet. Мы начали с самого простого и изучили семь различных методов трансформации (T1, T2). Повышение дискретизации до деконволюции и комбинирование с различными вариантами последующих стеков блоков ResNet. Мы подробно описываем каждый элемент в разделе S1 дополнительной информации:

  • Повышение дискретизации. Коэффициенты DCT цветности DCb и DCr повышают дискретизацию путем копирования высоты и ширины пикселя в размерность DY. Затем эти три узла каскадируются и проходят через уровень пакетной нормализации, но с шагом 1 перед входом в ResNet ConvBlock 3 (CB3), за которым следуют стандартные CB4 и CB5.

  • UpSampling-RFA. Эта настройка аналогична UpSampling, но здесь мы сохраняем ResNet CB2 (вместо того, чтобы удалить его), а также CB2 и CB3, чтобы они имитировали увеличение R и S, наблюдаемое в исходном блоке ResNet-50; мы называем это «перцептивным восприятием» Wild "или РФА. Как показано на рисунке 4, без этой модификации скачок от входа к первому блоку в R велик, а R за сетью никогда не бывает таким большим, как в базовой версии ResNet (зеленая линия). И наоборот, при сохранении CB2, но уменьшении его шага переход к большому R происходит более постепенно, и когда достигается CB3, R и S соответствуют базовому ResNet через оставшиеся слои. Архитектура показана на рисунке 3b и рисунке S1.

  • Деконволюция-РЧА. Другой вариант повышения дискретизации — обучаемый слой деконволюции. В этом проекте мы используем два независимых слоя деконволюции на DCb и DCr для увеличения пространственного измерения. В остальном дизайн такой же, как у UpSampling-RFA.

3.jpgРисунок 3: (а) Первый уровень исходной архитектуры ResNet-50 [10]. (b) Архитектура UpSampling-RFA проиллюстрирована коэффициентами DY, DCb и DCr 28 × 28 × 64 и 14 × 14 × 64. Аббревиатуры NT и U обозначают операции без преобразования и повышения частоты дискретизации соответственно. (c) Архитектура Late-Concat описывает, что коэффициенты яркости DY проходят через ResNet Block 3, в то время как коэффициенты цветности проходят через одну свертку. Это приводит к дополнительным общим вычислениям вдоль пути яркости по сравнению с путем цветности и, как правило, работает нормально.

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

  • Поздний конкат. В этом дизайне мы запускаем DY по отдельности с двумя конблоками (CB) и тремя блоками идентификации (IB) ResNet-50. DCb и DCr подключаются параллельно через CB перед подключением к пути DY. Затем, после CB4, объединенное представление передается в стандартный стек ResNet. Архитектура показана на рисунке 3c и рисунке S1. Эффект заключается в дополнительных общих вычислениях на пути яркости, чем на пути цветности, что приводит к быстрой сети с хорошей производительностью.

  • Поздний Concat-RFA. Эта версия воспринимающего рецептивного поля Late-Concat пропускает DY через три CB с размером ядра и настроена таким образом, чтобы увеличение R имитировало увеличение в исходном ResNet-50. Параллельные DCb и DCr проходят тот же путь, что и Late-Concat, прежде чем объединяться с результатом пути DY. Сравнение средних рецептивных полей показано на рис. 4, видно, что рецептивное поле Late-Concat-rfa увеличивается более плавно по сравнению с Late-Concat-rfa. Как показано на рисунке S1, мы используем больше каналов в ранних блоках из-за меньшего пространственного размера, чем стандартный ResNet.

  • Поздний Concat-RFA-разбавитель. Эта архитектура такая же, как Late-Concat-RFA, но с измененным количеством каналов. Количество каналов уменьшилось в первых двух CB пути DY и увеличилось в третьих CB, изменив количество каналов с {1024, 512, 512} до {384, 384 и 768}. Компоненты DCb и DCr подаются по 256 каналам CB вместо 512 каналов. Все остальные части сети такие же, как Late-Concat-RFA. Эти изменения должны сохранить производительность модели Late-Concat-rfa, но при этом получить некоторые преимущества скорости Late-Concat. Как показано на рисунке 5, он обеспечивает привлекательный баланс.

4.jpgРисунок 4: Средние значения размеров рецептивных полей в каждом блоке ResNet и соответствующих шагах блоков. Обе оси масштабируются логарифмически. Сообщается о некоторых измерениях архитектуры на основе DCT, которые сравниваются с принимающей дикой длиной, наблюдаемой в ResNet-50. На этих рисунках показано, как принимающая полевая (RFA) версия инфраструктуры на основе DCT позволяет проводить преобразования, аналогичные наблюдаемым в базовой сети.

4 RGB Network Controls

Как мы увидим в разделе 5 и на рисунке 5, многие сети с DCT в качестве входных данных имеют меньшую ошибку и/или более высокую скорость, чем эталонный ResNet-50 RGB. В этом разделе мы рассмотрим, связано ли это просто с рядом настроек архитектуры, некоторые из которых работают лучше, чем базовая версия ResNet. Здесь мы начинаем с базовой ResNet и пытаемся немного изменить архитектуру для снижения количества ошибок и/или повышения скорости выполнения. На вход подается RGB-изображение размером 224 × 224 × 3.

4.1 Reducing the Number of Layers

Сначала тестируем простую идею удаления сверточных слоев в ResNet-50. Мы последовательно удаляем блоки Identity из блоков 2 и 3, в результате получается 6 экспериментов при удалении 6 слоев. Мы никогда не удаляем сверточные слои между блоками 2 и 3, чтобы количество каналов и размер представления в каждом блоке оставались неизменными.

В этой серии экспериментов сначала удаляется первый идентификационный слой (ID) в блоке 2. Во-вторых, удаляются первый и второй слои ID. Эксперимент продолжался до тех пор, пока не были удалены все 3 ID-слоя Блока 2 и Блока 3. В окончательной конфигурации сеть работает с архитектурой повышающей дискретизации, где сигнал RGB преобразуется в размер представления 28 × 28 × 512 после нескольких сверток. Вход RGB проходит через следующую серию слоев: свертка, максимальное объединение, последний слой идентичности блока 3. Мы можем видеть компромисс между скоростью вывода и точностью в условных обозначениях «Исходный уровень, удалить блоки идентификаторов» (6 серых квадратов) на рисунке 5. Как показано, сеть будет немного быстрее, но точность значительно снизится.

4.2 Reducing the Number of Channels

Поскольку уменьшение количества слоев не работает, мы также исследуем усовершенствование сети: уменьшение количества каналов на слой для ускорения логического вывода. Последний полносвязный слой модифицируется, чтобы соответствовать размеру его входного слоя, сохраняя при этом количество выходов прежним. Мы предлагаем уменьшить количество каналов, разделив исходное количество каналов на фиксированный коэффициент. Мы проводим три эксперимента с {1.1, √2, 2}. Компромисс между скоростью или GFLOPS и точностью показан под условным обозначением «Reduced Channels #» на рис. 5. По мере уменьшения количества слоев сеть будет немного быстрее, но точность будет значительно снижена. Возможно, оба эти результата были сомнительными, так как авторы ResNet-50, возможно, точно настроили глубину и ширину сети, однако важно убедиться, что наблюдаемое улучшение производительности не может быть достигнуто с помощью этого гораздо более простого подхода.

4.3 Learning the DCT Transform

Последний набор экспериментов, показанный на рисунке 5 в виде четырех ромбов «пиксели YCbCr, слои DCT», показывает, можем ли мы получить аналогичные преимущества архитектуры DCT, но начиная с пикселей RGB, используя сверточные слои, чтобы быть точным или приблизительным для воспроизведения Преобразование ДКП. Изображение RGB сначала преобразуется в пространство YCbCr, а затем каждый канал независимо проходит через сверточный слой. Для имитации DCT размер сверточного фильтра устанавливается равным 8×8, а шаг равен 8. Используется 64 выходных канала (или в некоторых случаях: больше). Результирующие активации объединяются перед подачей в ResNet Block 2. В DCT-Learn мы случайным образом инициализируем фильтры и обучаем их стандартным образом. В DCT-orth мы нормализуем сверточные веса к канонической ортонормализации, как описано в [2], чтобы побудить их не отбрасывать информацию, вдохновленную канонической ортонормированностью преобразований DCT. В DCT-frozen мы используем только точные коэффициенты DCT без обучения, а в DCT-Frozenx2 мы изменяем шаг до 4 вместо 8, чтобы увеличить размер представления этого слоя и разрешить перекрытие фильтров. Удивительно, но, несмотря на отсутствие ускорения от метода деконволюционной RFA, сеть работает наравне с другими лучшими методами (6,98%) в среднем за три прогона. Это интересно, потому что противоречит преобладающим принципам проектирования сети: фильтры первого уровня большие, а не маленькие, жестко запрограммированные, а не заученные, работают с пространством YCbCr вместо RGB и обрабатывают каналы в глубину (по отдельности), а не все вместе. Будущая работа могла бы оценить, в какой степени мы должны принять этот нетипичный выбор в качестве стандартной практики.

5.jpg

5.1.jpg