Примечания к исследованию: MobileNets: эффективные сверточные нейронные сети для Mobile Vision

https://zhuanlan.zhihu.com/p/35405071
论文 地址: MobileNetv1
Howard, Andrew G., et al. «Мобильные сети: эффективные сверточные нейронные сети для приложений мобильного зрения». Препринт arXiv arXiv: 1704.04861 (2017).

1. Введение

Mobilenet v1 - это сетевая архитектура, выпущенная Google в 2017 году. Она направлена ​​на то, чтобы в полной мере использовать ограниченные ресурсы мобильных устройств и встроенных приложений и эффективно максимизировать точность модели для удовлетворения различных случаев применения при ограниченных ресурсах. Mobilenet v1 также может использоваться для таких задач, как классификация, обнаружение, внедрение и сегментация, для извлечения функций свертки изображений, как и другие популярные модели (такие как VGG и ResNet).

Во-первых, глубина ядра отделяемой свертки Глубина cnn + Pointwise cnn

Вставьте описание изображения здесь
Вышеприведенное изображение представляет собой обычную свертку,
канал ядра = входной канал, соответствующую точку умножения для сканирования input-img (HW), а затем сумму для вычисления
коэффициента
умножения output-channel = num : F = [Ci x 3 x 3] x (H x W) x Co # Выход C здесь эквивалентен номеру ядра
Вставьте описание изображения здесь
. Вышеприведенная фигура представляет собой свертку по глубине. Каждый канал отделяется для свертки для получения HW C img, а затем свертки 1 * 1 Fusion)
Расчет умножения

  • 1 Свертка с разделением по глубине на левой картинке: F1 = [Ci x 3 x 3] x [H x W]
    Вставьте описание изображения здесь
  • 2 Правая картинка 1x1 свертка: F2 = [Ci 1 x 1 x 1] x [В x Ш] x Co
    Вставьте описание изображения здесь
    [по глубине + Piontwise] / обычный расчет CNN = 1 / Co + 1/9
    (Здесь Co - канал выходного изображения Число выглядит следующим образом: Отделимая по глубине свертка заменяет обычный CNN еще одним BN
    (Вставьте описание изображения здесь

2 Модельная сеть

Локальная структура
Следующий пакет, можно видеть , что подобное VGG сложены
Вставьте описание изображения здесь
vgg16
Вставьте описание изображения здесь
предусмотрены два параметра супер , чтобы контролировать размер и количество расчетной модели

  • Множитель ширины: используется для управления количеством каналов, Afa a, когда <1, модель будет сужена, а количество вычислений уменьшено до ²
  • Множитель разрешения: используется для управления размером карты объектов, обозначается как p, применение этого множителя на соответствующей карте объектов может уменьшить объем вычислений.

Для управления количеством каналов карты объектов добавлен гиперпараметр α∈ [0,1]: чем меньше альфа, тем меньше модель. Роль состоит в том, чтобы изменить количество входных и выходных каналов, уменьшить количество карт функций и сделать сеть более тонкой
  Вставьте описание изображения здесь
  .
  Вставьте описание изображения здесь
  Конечно, сжатие вычислений сети должно быть дорогим. На рисунке 11 показана производительность MobileSystem v1 [Formula] в ImageNet в разное время. Можно видеть, что даже с [Formula] Mobilenet v1 по-прежнему имеет точность 63,7% в ImageNet.
Вставьте описание изображения здесь
 Для контроля разрешения входного изображения добавлен гиперпараметр ρ: чем меньше ρ, тем меньше входное изображение.
Вставьте описание изображения здесь
Вставьте описание изображения здесь

достижение

1 Классификация

Исходя из предположения, что объем вычислений и размер параметров уменьшены во много раз, соотв. Эквивалентно
Вставьте описание изображения здесь
размеру входного изображения Googlenet и VGGnet.
Вставьте описание изображения здесь

2 Обнаружение цели, которая сильно отличается от карты большой сети, но объем вычислений значительно падает

Вставьте описание изображения здесь

3 Классификация лица

Вставьте описание изображения здесь
, 蒸馏 , Facenet 教 Mobilenet 学习 识别 人 脸
Модель FaceNet является современной моделью распознавания лиц [25]. Он строит вложения лица, основанные на потере триплета. Чтобы построить мобильную модель FaceNet, мы используем дистилляцию для обучения, сводя к минимуму возведенные в квадрат различия в результатах FaceNet и MobileNet по обучающим данным. Результаты для очень маленьких моделей MobileNet можно найти в таблице 14.
Вставьте описание изображения здесь

Интерлюдия: что такое хинтин дистилляции знаний, предложенный в 2015 году

Документы
, какие знания перегонки: То, что мы должны сделать SoftMax распределения новой модели и реального матч тега, и теперь просто нужно , чтобы новая модель и оригинальная модель согласована с SoftMax при заданном входных распределительной линии (новая функции аппроксимации исходной функции)
сырьевая модель продукции Определенные логиты - это [формула], логиты, генерируемые новой моделью, - это [формула], чтобы
Вставьте описание изображения здесьсделать эту функцию близкой к 0.
В химии алгоритма обратного распространения дистилляция является эффективным методом для разделения компонентов с различными точками кипения. Сначала температуру повышают для испарения низкокипящих компонентов, а затем охлаждают и конденсируют для достижения цели отделения целевого вещества. В процессе, упомянутом ранее, мы сначала позволяем температуре повышаться, а затем восстанавливаем «низкую температуру» во время фазы испытаний, чтобы извлечь знания из исходной модели, поэтому действительно полезно назвать ее дистилляцией.

class MobileNetv1(nn.Module):
    def __init__(self):
        super(MobileNetv1, self).__init__()

        def conv_bn(dim_in, dim_out, stride):
            return nn.Sequential(
                nn.Conv2d(dim_in, dim_out, 3, stride, 1, bias=False),
                nn.BatchNorm2d(dim_out),
                nn.ReLU(inplace=True)
            )

        def conv_dw(dim_in, dim_out, stride):
            return nn.Sequential(
                nn.Conv2d(dim_in, dim_in, 3, stride, 1, groups= dim_in, bias=False),
                nn.BatchNorm2d(dim_in),
                nn.ReLU(inplace=True),
                nn.Conv2d(dim_in, dim_out, 1, 1, 0, bias=False),
                nn.BatchNorm2d(dim_out),
                nn.ReLU(inplace=True),
            )
        self.model = nn.Sequential(
            conv_bn(  3,  32, 2),
            conv_dw( 32,  64, 1),
            conv_dw( 64, 128, 2),
            conv_dw(128, 128, 1),
            conv_dw(128, 256, 2),
            conv_dw(256, 256, 1),
            conv_dw(256, 512, 2),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 1024, 2),
            conv_dw(1024, 1024, 1),
            nn.AvgPool2d(7),
        )
        self.fc = nn.Linear(1024, 20)

    def forward(self, x):
        x = self.model(x)
        x = x.view(-1, 1024)
        x = self.fc(x)
        return x

резюме

  1. Используйте Depthwise и Pointwise для достижения глубокой отделимости и уменьшения объема вычислений и размера модели
    (низкая задержка и размер модели, упомянутые в статье неоднократно)
  2. Модель более ретро, ​​похожа на укладку vgg, без остатков, слияние функций и другие технологии
  3. Недостатки: каждый канал свертки с разложением по глубине независим, размерность ядра свертки мала, в выходной функции есть только несколько входных функций, плюс relu легко становится равным нулю, извлечение функций из репетитора завершается неудачно, а ядро ​​свертки избыточно

Ваш собственный результат эксперимента pytorch code (non-finetune)

6 mobilenetv1 2080 t-bs: 64 v-bs: 64 lr: 0.01 100 эпох

Классификация набора данных GHIM-20, в основном установленная в эпоху = 8000 x 64/9000 = 57 раундов
Вставьте описание изображения здесь
Вставьте описание изображения здесь
Вставьте описание изображения здесь
Вставьте описание изображения здесь

Кроме того: эксперимент по влияющим факторам классификации базового сетевого обучения заключается в следующем блоге, в котором изучается влияние частоты обучения ядра группового размера на модель обучения.
Https://blog.csdn.net/weixin_44523062/article/details/105457045

Опубликовано 63 оригинальных статей · похвалено 7 · просмотров 3396

рекомендация

отblog.csdn.net/weixin_44523062/article/details/105472219