Познакомьтесь со стратегией увеличения данных CutMix, а также ознакомьтесь с некоторыми другими дополнениями.

Поскольку мы знаем, что для повышения производительности модели машинного обучения нам необходимо выполнить некоторые шаги предварительной обработки данных перед фактическим обучением модели. Одним из этапов предварительной обработки данных является Увеличение данных. За последние годы увеличение объема данных привело к значительному повышению производительности модели. Поскольку методы увеличения данных, как правило, повышают производительность моделей, также были предприняты усилия по их улучшению. Одна из таких недавно появившихся методик - CutMix, которую мы собираемся обсудить в этой статье.

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

Оглавление -

  1. Потребность в CutMix
  2. Катмикс и другие дополнения
  3. "Алгоритм"
  4. Визуализация САМ
  5. Исполнение моделей
  6. "Вывод"
  7. "Использованная литература"

Потребность в CutMix

До появления CutMix стратегии Regional Dropout использовались в качестве этапа увеличения данных для повышения производительности CNN. Эти дополнения удаляют информативные пиксели в обучающих изображениях путем наложения на них участка либо черных пикселей, либо случайного шума. Это приводит к потере информации и, следовательно, к снижению эффективности моделей. Однако это также заставляет модель фокусироваться на недискриминационных частях объекта. Следовательно, должна была быть внедрена стратегия, которая имела бы эффект регионального исключения, но также должна была иметь возможность сохранять эффект регуляризации, и поэтому был введен CutMix. Примером региональной стратегии отсева может быть -

CutMix и другие дополнения

Давайте кратко расскажем о CutMix и некоторых других методах увеличения.

CutMix

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

Смешивать

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

Отрезать

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

Все три дополнения (CutMix, Mixup и Cutout) улучшили результаты стандартной модели Resnet-50 для классификации ImageNet , но Mixup и Cutout, как правило, снижают оценку в задачах Локализация ImageNet и обнаружение объектов. Однако CutMix по-прежнему улучшает оценку в этих задачах и, следовательно, может считаться хорошим выбором для увеличения объема данных.

Алгоритм

Давайте обсудим алгоритм, лежащий в основе этого дополнения, и код для его реализации.

Пусть x будет изображением формы W * H * C, где W, H и C - ширина, высота и количество каналов соответственно, а y быть меткой истины. Мы объединяем два образца (x_a, y_a) и (x_b, y_b), чтобы создать новый образец (x_c, y_c). Уравнение можно представить как -

Здесь M ∈ {0,1} представляет собой двоичную маску (форма - W * H), показывающую, где выпадать и заполнять из x_a и x_b. 1 - это матрица единиц. λ - коэффициент комбинации, полученный из β-распределения.

Двоичная маска M выбирается путем взятия координат ограничивающего прямоугольника B из обоих изображений, что указывает на область, которая должна быть обрезана на обоих изображениях. Область B в x_a удаляется и заполняется патчем, вырезанным из области B в x_b.

Соотношение сторон маски M пропорционально исходному изображению. Координаты ограничивающей рамки B равномерно выбираются в соответствии с -

Теперь соотношение обрезанной площади становится -

На каждой итерации образец CutMix-ed формируется путем случайного объединения двух изображений в мини-пакете. CutMix увеличивает вычислительные затраты, поэтому для использования с ним рекомендуется использовать GPU / TPU.

Следующий код Python для реализации дополнений CutMix был взят из ядра Крисом Деоттом здесь.

def cutmix(image, label, PROBABILITY = 1.0):
    # input image - is a batch of images of size [n,dim,dim,3] not a single image of [dim,dim,3]
    # output - a batch of images with cutmix applied
    
    DIM = IMAGE_SIZE[0]
    CLASSES = 104
    
    imgs = []; labs = []
    for j in range(AUG_BATCH):
        # AUG_BATCH - size for the augmentation batch.
        # DO CUTMIX WITH PROBABILITY DEFINED ABOVE
        
        P = tf.cast( tf.random.uniform([],0,1)<=PROBABILITY, tf.int32)
        
        # CHOOSE RANDOM IMAGE TO CUTMIX WITH
        k = tf.cast( tf.random.uniform([],0,AUG_BATCH),tf.int32)
        
        # CHOOSE RANDOM LOCATION
        x = tf.cast( tf.random.uniform([],0,DIM),tf.int32)
        y = tf.cast( tf.random.uniform([],0,DIM),tf.int32)
        b = tf.random.uniform([],0,1) # this is beta dist with alpha=1.0
        WIDTH = tf.cast( DIM * tf.math.sqrt(1-b),tf.int32) * P
        ya = tf.math.maximum(0,y-WIDTH//2)
        yb = tf.math.minimum(DIM,y+WIDTH//2)
        xa = tf.math.maximum(0,x-WIDTH//2)
        xb = tf.math.minimum(DIM,x+WIDTH//2)
        
        # MAKE CUTMIX IMAGE
        one = image[j,ya:yb,0:xa,:]
        two = image[k,ya:yb,xa:xb,:]
        three = image[j,ya:yb,xb:DIM,:]
        middle = tf.concat([one,two,three],axis=1)
        img = tf.concat([image[j,0:ya,:,:],middle 
                             ,image[j,yb:DIM,:,:]],axis=0)
        imgs.append(img)
        
        # MAKE CUTMIX LABEL
        a = tf.cast(WIDTH*WIDTH/DIM/DIM,tf.float32)
        if len(label.shape)==1:
            lab1 = tf.one_hot(label[j],CLASSES)
            lab2 = tf.one_hot(label[k],CLASSES)
        else:
            lab1 = label[j,]
            lab2 = label[k,]
        labs.append((1-a)*lab1 + a*lab2)
            
    image2 = tf.reshape(tf.stack(imgs),(AUG_BATCH,DIM,DIM,3))
    label2 = tf.reshape(tf.stack(labs),(AUG_BATCH,CLASSES))
    return image2,label2

Визуализация CAM

Дополнение CutMix помогает модели классифицировать два объекта по их частичным видам на одном изображении. Чтобы визуализировать это, давайте посмотрим на карты активации классов (CAM) двух изображений для CutMix, Mixup и Вырезанные аугментации.

Из CAM для Mixup видно, что модель немного запуталась при выборе сигналов для распознавания. Cutout, с другой стороны, позволяет сфокусировать модель на менее различимых частях объекта, но снижает точность из-за неиспользуемых пикселей и, наконец, из-за CAM для CutMix можно сказать, что он использует полные пиксели изображения и по-прежнему может фокусировать модель на недискриминационных частях объекта.

Производительность моделей

Наконец, давайте посмотрим на график ошибок проверки t op-1 для моделей PyramidNet-200 и Resnet-50, обученных на CIFAR100 и ImageNet соответственно с помощью & без использования CutMix.

Рейтинг Top-1 - это оценка, полученная при проверке того, совпадает ли класс, прогнозируемый с наибольшей вероятностью, с целевой меткой.

Вывод

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

Надеюсь, вам понравилось это объяснение, ~ Удачного обучения ~.

использованная литература