Диссертация (1137108), страница 11
Текст из файла (страница 11)
Изображения взяты из выборки ImageNet.Определение 13. Определим важность пространственной позиции (x, y) ∈ Ω для определённоговыхода V как сумму важностей по каналам:T ∑ ∂L(V )G(x, y; V ) =V (x,y,t)∂V(x,y,t)t=1(2.8)Примеры значений G(x,y; V ) приведены на рис. 2.3. Заметим, что регионы с высоким значением G(x,y; V ) обычно содержат наиболее информативные регионы изображения с точки зрениязадачи классификации.Определение 14.
Важностью пространственной позиции (x, y) ∈ Ω назовём среднее значениеважности этой позиции по изображениям обучающей выборки. Обозначим выходы свёрточногослоя на объектах обучающей выборки через V 1 , . . . , V M . ТогдаM1 ∑B(x,y) =G(x, y; V i )M i=1(2.9)Примеры значений B(x,y) и важностной маски приведены на рис. 2.4.
Усреднённые весаB(x,y), как правило, выше в центре изображения, что связанно с особенностями выборки данныхImageNet, а именно тем, что искомый объект обычно центрирован. Также заметим, что решётка,характерная для структурной маски перфорации, автоматически появляется в предложенной маске.Определение 15. Важностная маска перфорации содержит P пространственных позиций с наибольшими значениями величины B(x,y).Поскольку перфорация слоя меняет значения важности во всех слоях, в экспериментах мыитеративно увеличиваем степень перфорации слоя и пересчитываем важности. Это улучшает результаты за счёт взаимной подстройки масок перфорации различных свёрточных слоёв.2.3.3Выбор степеней перфорацииПерейдём к задаче ускорения всей сети целиком.
Для её решения требуется выбрать комбинацию степеней перфорации отдельных слоёв, которые бы обеспечили высокую скорость при460.40.090.350.080.30.070.060.250.050.20.040.150.030.10.020.050.010а) B(x,y), исходнаясетьб) B(x,y),в) Важностнаяперфорированнаямаска, r = 90%сетьРисунок 2.4 — Примеры значений B(x,y) и маски перфорации.
Сеть AlexNet, слой conv2,выборка данных ImageNet.низком увеличении ошибки. Будем использовать простой жадный алгоритм для выбора степеней перфорации. Выберем один тип масок перфорации (например, важностную) и зафиксируемсетку степеней перфорации, упорядоченных по возрастанию.
Обозначим через t время выполнения ускоренной сети, а через e величину функционала качества (такого как отрицательное логправдоподобие на подмножестве обучающей выборки). Через t0 и e0 обозначим соответствующиевеличины для исходной сети. На каждом шаге по очереди увеличивается степень перфорации каждого из слоёв. Выбирается тот слой, для которого увеличение степени перфорации приводит кминимальному значению величиныe − e0.(2.10)t0 − tСтепень перфорации выбранного слоя увеличивается, и процедура повторяется.2.3.4 Эффективная реализация перфорированного свёрточного слояВычисление перфорированного свёрточного слоя требует подсчёта значений тензораV (x,y,t) в пространственных позициях из маски перфорации (x,y) ∈ I.
Эти значения могутбыть эффективно вычислены при помощи сведения к матричному умножению, описанному в подразделе 1.1.6 и проиллюстрированному на рис. 1.1. В матрицу M при этом будут помещены лишьте подтензоры входного тензора, которые соответствуют неперфорированным выходным значениям. За счёт того матрица будет содержать лишь P = |I| строк, вместо исходных X ′ Y ′ = |Ω| строк.1раз. Заметим, чтоЭто приводит к теоретическому ускорению (снижению числа операций) в 1−rперфорация может быть использована и при других реализациях свёрточного слоя, в частности,т.н. прямой свёртки (direct convolution), используемой в cuda-convnet2 [119].В предлагаемой реализации перфорированного свёрточного слоя в памяти хранятся лишьвыходные значения V (x,y,t) для (x,y) ∈ I. Интерполяция производится неявно, путём применения функции ℓ(x,y; I) к индексам при операциях чтения в следующем слое СНС, имеющем неединичный пространственный размер, например, слое пулинга или свёрточном слое с ядром больше47×10+11×10+121, 01, 60, 81, 40, 61, 21, 00, 40,00,20,40,60,80,00,20,40,60,8а) CPUб) GPUРисунок 2.5 — Эффективность (число операций скалярных операций сложения и умножения всекунду) при умножении матрицы данных M на матрицу ядра K для различных степенейперфорации.
Сеть AlexNet, слой conv2. Процессор (CPU) –– Intel Core i5-4460, видеоускоритель(GPU) –– nVidia GTX 980.1 × 1. К примеру, при ускорении слоя conv3 сети AlexNet интерполяция производится при чтенияхв слое conv4. При использовании GPU интерполяция не приводит к замедлению слоя conv4. Прииспользовании CPU наблюдается замедление на 0-3%.Описанная реализация имеет несколько преимуществ. Во-первых, объём памяти, требуемый1раз. Во-вторых, непосредственно следующие слои нелидля хранения выходов, сокращается в 1−rнейности и свёрточные слои размера 1 × 1 ускоряются «автоматически», поскольку они применяются к меньшему числу элементов.Как правило, свёрточный слой последовательно применяется к каждому изображению минибатча.
На рис. 2.5 показано число операций в секунду, достигаемых процессором и видеоускорителем, на самом трудозатратном этапе выполнения свёрточного слоя, умножении матрицы данныхM на матрицу ядра K. Увеличение степени перфорации снижает эффективность этой операции,особенно на видеоускорителе, что ожидаемо, поскольку видеоускорители обладают высокой степенью параллелизма и эффективней работают на массивах большого размера. Чтобы компенси1ровать этот эффект будем конкатенировать матрицы данных M для групп из ⌊ 1−r⌋ изображенийминибатча, чтобы размер полученной матрицы данных был близок к размеру матрицы данныхдля неускоренного слоя. После матричного умножения требуется операция транспозиции тензора, однако на практике её стоимость незначительна.
Аналогичная идея используется в библиотекеMShadow [134]. Мы также выполняем конкатенацию матриц данных для базовых методов размер,шаг и дробный шаг.2.4 ЭкспериментыДля экспериментальной валидации предложенного метода мы используем три СНС различной сложности: Network in Network (NIN) [85], AlexNet [11] и VGG-16 [28]. Их краткое описание48Таблица 1 — Описание СНС, используемых в экспериментах. Время работы, потреблениепамяти и число операций сложения и умножения поделено на размер батча.
Измеряется объёмпамяти, занимаемый активациями слоёв сети во время прямого распространения.СетьВыборка данныхВалидационная ошибкаОбъектов в батчеВремя (CPU)Время (GPU)Память для хранения активацийЧисло операцийЧисло перфорируемых слоёвNIN [85]AlexNet [11]VGG-16 [28]CIFAR-10 [135] ImageNet [97] ImageNet [97]top-1 10,4%top-5 19,6%top-5 10,1%128256164,6 мс16,7 мс300 мс0,8 мс2,0 мс29 мс5,1 Мбайт6,6 Мбайт110 Мбайт894,4 · 101,0 · 103,0 · 10103513приведено в таблице 1. Заметим, что под число операций везде понимается число операций скалярного сложения и скалярного умножения, при этом операция умножения-и-сложения считаетсядвумя операциями.
Во всех сетях перфорируются всё свёрточные слои, кроме слоёв размера 1 × 1,присутствующих в NIN. Измерения скорости проводились на компьютере с четырёхядерным процессором Intel Core i5-4460, 16 Гбайт ОЗУ и видеоускорителем nVidia Geforce GTX 980. Веса сетейбыли получены с веб-ресурса Caffe Model Zoo [136]. Мы использовали реализацию сети AlexNetиз библиотеки Caffe, которая незначительно отличается от описанной в [11], а именно, слои пулинга и нормализации контраста поменяны местами.
Для проведения большинства экспериментовиспользовалась модифицированная библиотека MatConvNet. Исходный код доступен по ссылкеhttps://github.com/mfigurnov/perforated-cnn-matconvnet. Для дообучения сетей AlexNet и VGG-16 использовалась модифицированная библиотека Caffe, исходный код которой доступен по ссылке https://github.com/mfigurnov/perforated-cnn-caffe.В первой части экспериментов мы сравниваем предложенные маски перфорации на стандартной задаче ускорения одного свёрточного слоя сети AlexNet. Затем мы сравниваем результатускорения всей сети при использовании наилучших типов масок перфорации с результатами базовых методов, таких как уменьшение размера входных изображений и увеличение шага свёрток.Наконец, мы применяем перфорацию к ускорению сетей NIN, AlexNet и VGG-16 целиком, такимобразом демонстрируя, что перфорация позволяет ускорить СНС различной сложности.
В концераздела рассматриваются альтернативные способы интерполяции пропущенных значений, а также сравнивается теоретическое и эмпирическое ускорение предлагаемой реализации перфорированного свёрточного слоя.2.4.1 Ускорение одного свёрточного слояВ этом подразделе исследуется соотношение между ускорением и увеличением ошибки длядвух наиболее трудозатратных свёрточных слоёв сети AlexNet, conv2 и conv3. Структурная маска4910(%)(%)108866442201234CPU ()56012а) conv2, CPU)565610(%)(%)4GPU (б) conv2, GPU1088664422031234CPU ()5601234GPU ()в) conv3, CPUг) conv3, GPUРисунок 2.6 — Ускорение одного слоя сети AlexNet для различных типов масок. В этомэксперименте дообучение не проводилось. Результаты усреднены по 5 запускам.перфорации применима лишь для слоя conv2, поскольку непосредственно после него идёт слойпулинга, тогда как после слоя conv3 следует другой свёрточный слой.
Результаты эксперимента приведены на рис. 2.6. Можно заметить, что важностная маска работает лучше всего на слоеconv2, а решётчатая маска хорошо работает на слое conv3. Стандартное отклонение результатовмало для всех масок перфорации, кроме равномерной маски при высоких степенях ускорения, гдееё результаты превосходит решётчатая маска перфорации. Результаты близки для CPU и GPU, чтопоказывает применимость предлагаемого метода для обеих платформ. Если выбрать лучшую маску перфорации для каждой степени ускорения, то можно увидеть, что слой conv2 проще ускорить,чем слой conv3. Эта закономерность прослеживается и в других экспериментах: слои, непосредственно после которых идёт пулинг, проще ускоряются, чем слои, после которых идёт другойсвёрточный слой.Приведём результаты ускорения трёх свёрточных слоёв (размером больше 1 × 1) Network inNetwork для выборки CIFAR-10.