www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

3 маленьких, но мощных сверточных сети

Дата публикации May 13, 2018

Многие архитектуры CNN были разработаны для достижения максимальной точности в ImageNet. Вычислительная мощность не ограничена для этого конкурса, зачем?

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


MobileNet

Arxiv ссылка:(Говард и др., 2017)

MobileNet используетотделимый по глубинеизвилины, Этот сверточный блок был сначала введенXception, Отделимая по глубине свертка состоит из двух операций: глубокой свертки и поточечной свертки.

стандартная сверткаработает с пространственным измерением карт объектов, а также с входными и выходными каналами. Это имеет вычислительную стоимостьDf² * M * N * Dk²; с Df - размерность карт входных объектов, M и N - количество входных и выходных каналов, а Dk - размер ядра.

глубина сверткисопоставляет одну свертку на каждом входном канале отдельно. Поэтому его номер выходного канала совпадает с номером входного канала. Это вычислительная стоимостьDf² * M * Dk²,

Последняя операцияточечная свертка, Это свертка с размером ядра 1x1, которая просто объединяет функции, созданные глубокой сверткой. Это вычислительная стоимостьM * N * Df²,

Вычислительная стоимость отделимой по глубине свертки представляет собой сумму затрат по глубинной и точечной операциям. По сравнению с обычной сверткой он предлагает сокращение вычислений на1 / N + 1 / Dk², С размером ядра 3х3 это приводит к уменьшению количества операций в 8 раз!

MobileNet также предоставляет два параметра, позволяющих еще больше сократить количество операций:множитель ширины(от 0 до 1) уменьшает количество каналов. На каждом слое вместо создания N каналов будет производиться альфа * N. Этот множитель может использоваться для обработки компромисса между желаемой задержкой и производительностью. Существует еще один множитель:множитель разрешения, Он масштабирует входной размер изображения от 224 до 128. Поскольку MobileNet использует глобальный средний пул вместо сглаживания, вы можете обучить свою MobileNet 224x224 изображениям, а затем использовать его для изображений 128x128! Действительно, при глобальном пуле полностью подключенный классификатор в конце сети зависит только от количества каналов, а не от пространственного измерения карт объектов.


ShuffleNet

Arxiv ссылка:(Чжан и др., 2017)

ShuffleNet представляет три варианта устройства Shuffle. Он состоит изгрупповые сверткиа такжеканал тасует,

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

Это было сначала введено AlexNet(Крижевский и др., 2012)разделить сеть на два графических процессора.

Это значительно уменьшает вычислительные затраты. Давайте возьмем практический пример: если есть 4 входных канала и 8 выходных каналов, и мы выбираем две группы, каждая из которых принимает 2 входных канала и 4 выходных канала.

С одной группой вычислительные затраты будутDf² * Dk² * 4 * 8в то время как для двух групп стоимость составляет (Df² * Dk² * 2 * 4) * 2 илиDf² * Dk² * 4 * 4, В два раза меньше операций! Авторы достигли лучших результатов с 8 группами, таким образом, сокращение еще более важно.

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


EffNet

Arxiv ссылка:(Freeman et al, 2018)

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

Разделяемой глубинной сверткой является прямоугольник, окрашенный синим цветом для блока EffNet. Он состоит из глубокой свертки с ядром строки (1x3), за которым следует разделимое объединение, и завершается глубинной сверткой с ядром столбца (3x1).

Давайте посмотрим на вычислительную выгоду. Обычное углубление с ядром 3x3 будет иметь стоимость 3 ² * Df² * M. Первое углубление с ядром 1x3 будет иметь вычислительную стоимость 3 * Df² * M. Разделяемое объединение делит пополам высоту карт объектов и имеет предельные затраты. Вторая глубина, с ядром 3x1, имеет стоимость 3 * Df² / 2 * M. Таким образом, вся стоимость1,5 * (3 * Df² * M), На половину меньше нормы по глубине!

Еще одна оптимизация, выполненная EffNet через MobileNet и ShuffleNet, - это отсутствие «нормальной свертки» в начале:

Цитирую авторов:

И MobileNet, и ShuffleNet избегали замены первого уровня утверждением, что этот уровень уже довольно дешев с самого начала. Мы уважительно не согласны с этим утверждением и считаем, что каждая оптимизация имеет значение После оптимизации остальных уровней в сети первый уровень становится пропорционально больше. В наших экспериментахзамена первого слоя нашим блоком EffNet экономит ∼ 30% вычислений для соответствующего слоя,


TL; DR

MobileNet, ShuffleNet и EffNet - это архитектуры CNN, разработанные для оптимизации количества операций. Каждый заменил классическую свертку своей версией.

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

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

в заключениеEffNet(GitHub) использует пространственную отделимую свертку, которая представляет собой просто глубинную свертку, разделенную вдоль осей x и y с разделяемым пулом между ними.

Тест на CIFAR 10

Эта статья была переведена на китайский язык!Вот,

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map