Mejora de datos: recorte, borrado aleatorio, mezcla, mezcla de corte

0. Prefacio

  • Algunos métodos de mejora de datos de uso común
    • Recorte: luego elimine un área rectangular y rellénela con 0
    • Borrado aleatorio: luego elimine un área rectangular y rellénela con la media
    • Mezcla: los píxeles en cada posición de las dos imágenes se superponen de acuerdo con una cierta proporción, y la etiqueta se asigna de acuerdo con la proporción de superposición de píxeles.
    • Cutmix: elimine aleatoriamente un área rectangular y rellénela con el valor de píxel de la misma posición en otra imagen, y la etiqueta se asigna de acuerdo con la proporción de píxeles

1. Recorte

  • Informacion relevante:
  • Información básica del papel
    • Campo: mejora de datos
    • Unidad autora: Universidad de Guelph, Canadá
    • Hora de publicación: 2017
  • Resumen de una oración: elimine aleatoriamente un área rectangular en la imagen, puede obtener mejores resultados de entrenamiento

1.1. Qué problema resolver

  • El entrenamiento de aprendizaje profundo es muy fácil de provocar un ajuste excesivo, lo que requiere una gran cantidad de datos y varios métodos de regularización.
  • La mejora de datos puede verse como un método de regularización.

1.2. ¿Qué método se utilizó?

  • El recorte en sí es muy fácil, es decir, elimina aleatoriamente varias áreas rectangulares (cambia el valor de píxel a 0)
class Cutout(object):
    """Randomly mask out one or more patches from an image.
    Args:
        n_holes (int): Number of patches to cut out of each image.
        length (int): The length (in pixels) of each square patch.
    """
    def __init__(self, n_holes, length):
        self.n_holes = n_holes
        self.length = length

    def __call__(self, img):
        """
        Args:
            img (Tensor): Tensor image of size (C, H, W).
        Returns:
            Tensor: Image with n_holes of dimension length x length cut out of it.
        """
        h = img.size(1)
        w = img.size(2)

        mask = np.ones((h, w), np.float32)

        for n in range(self.n_holes):
            y = np.random.randint(h)
            x = np.random.randint(w)

            y1 = np.clip(y - self.length // 2, 0, h)
            y2 = np.clip(y + self.length // 2, 0, h)
            x1 = np.clip(x - self.length // 2, 0, w)
            x2 = np.clip(x + self.length // 2, 0, w)

            mask[y1: y2, x1: x2] = 0.

        mask = torch.from_numpy(mask)
        mask = mask.expand_as(img)
        img = img * mask

        return img
  • Antes de leer este artículo, tenía mucha curiosidad sobre lo que puede decir.
    • Realmente puedo contar una historia ...
  • Comparando el recorte y el abandono, piense que el recorte es una forma especial de abandono.
    • Es solo que el objeto del abandono se convierte en la imagen de entrada, no en el mapa de características.
    • Lo que se ignora es un área continua, no una selección aleatoria.
    • No hay cambio de escala.
  • La motivación de Cutout es la "oclusión", es decir, el área rectangular eliminada puede considerarse como una ubicación que está ocluida.
  • Cuando se diseñó originalmente Cutout, en realidad era muy complicado:
    • El área eliminada no es un área rectangular aleatoria, sino que se elimina una característica importante en la imagen de entrada.
    • El método es similar a maxdrop, el objetivo elimina áreas importantes, para obtener resultados de clasificación a través de otra información y lograr una mejor capacidad de generalización del modelo.
    • El método de implementación es registrar el mapa de características activado al máximo de cada imagen en cada ronda y luego eliminar el área especificada de acuerdo con el umbral en la siguiente ronda.
    • Pero más tarde descubrió que el efecto de eliminar áreas al azar es similar a este método complejo.
    • Por ejemplo, como se muestra a continuación

imagen-20210218024537604

1.3. ¿Qué tan efectivo es?

  • Resulta que el área del área eliminada es mucho más importante que la forma del área eliminada.
  • Después de usar Cutout, generalmente se menciona

、

  • Después de usar Cutout, ¿qué tipo de efecto causó?
    • El área roja es el resultado cuando no hay corte y el azul es el resultado después de agregar cotout.
    • La fuerza de activación (tamaño del valor del mapa de características) del mapa de características de poca profundidad (como se muestra en la Figura a) ha aumentado
    • El mapa de características profundas (Figura c) tiene un rango de distribución más amplio (vea más activaciones al final de la distribución)

imagen-20210218024948848

1.4. Cuáles son los problemas y qué se puede aprender

  • Primera reacción: ¿Se puede utilizar también como papel?
  • Se siente más como un informe de experimento y un resumen de proyecto.

2. Borrado de Rand

  • Informacion relevante:
  • Información básica del papel
    • Campo: mejora de datos
    • Unidad de autor: Universidad de Xiamen y Universidad de Tecnología de Sydney
    • Hora de publicación: 2017
  • Resumen de una oración: luego elimine un área rectangular y rellénela con la media

2.1. Qué problema resolver

  • Las redes neuronales convolucionales tienden a sobreajustarse y requieren una gran cantidad de datos para mejorar la capacidad de generalización del modelo.
  • El problema de la oclusión es muy importante para mejorar la capacidad de generalización del modelo.

2.2. ¿Qué método se utilizó?

  • Efecto de borrado aleatorio

imagen-20210218113542989

  • Código
class RandomErasing(object):
    def __init__(self, EPSILON = 0.5, sl = 0.02, sh = 0.4, r1 = 0.3, mean=[0.4914, 0.4822, 0.4465]):
        self.EPSILON = EPSILON
        self.mean = mean
        self.sl = sl
        self.sh = sh
        self.r1 = r1
       
    def __call__(self, img):

        if random.uniform(0, 1) > self.EPSILON:
            return img

        for attempt in range(100):
            area = img.size()[1] * img.size()[2]
       
            target_area = random.uniform(self.sl, self.sh) * area
            aspect_ratio = random.uniform(self.r1, 1/self.r1)

            h = int(round(math.sqrt(target_area * aspect_ratio)))
            w = int(round(math.sqrt(target_area / aspect_ratio)))

            if w < img.size()[2] and h < img.size()[1]:
                x1 = random.randint(0, img.size()[1] - h)
                y1 = random.randint(0, img.size()[2] - w)
                if img.size()[0] == 3:
                    #img[0, x1:x1+h, y1:y1+w] = random.uniform(0, 1)
                    #img[1, x1:x1+h, y1:y1+w] = random.uniform(0, 1)
                    #img[2, x1:x1+h, y1:y1+w] = random.uniform(0, 1)
                    img[0, x1:x1+h, y1:y1+w] = self.mean[0]
                    img[1, x1:x1+h, y1:y1+w] = self.mean[1]
                    img[2, x1:x1+h, y1:y1+w] = self.mean[2]
                    #img[:, x1:x1+h, y1:y1+w] = torch.from_numpy(np.random.rand(3, h, w))
                else:
                    img[0, x1:x1+h, y1:y1+w] = self.mean[1]
                    # img[0, x1:x1+h, y1:y1+w] = torch.from_numpy(np.random.rand(1, h, w))
                return img

        return img
  • El contenido es similar a un recorte
    • Se dice que la implementación es sencilla y logra mejores resultados
    • Todos dicen que han pedido prestado a los que abandonaron la escuela, pero hay una pequeña diferencia

2.3. ¿Qué tan efectivo es?

  • Además de la comparación de tareas de clasificación de imágenes, se comparan la detección y ReID.

imagen-20210218115041938

imagen-20210218115224988

  • Este artículo también compara los resultados de diferentes valores de llenado (el efecto de llenado de números aleatorios es el mejor), la comparación con el abandono y la comparación con otros métodos de mejora.

imagen-20210218115303212

2.4. Cuáles son los problemas y qué se puede aprender

  • Es lo mismo que Cutout, el tiempo de publicación de los dos trabajos está muy cerca
  • Siempre siento que está un poco mal para las tareas de detección y ReID, y el pequeño objetivo se perderá si no es un archivo.

3. Confusión

  • Informacion relevante:
  • Información básica del papel
    • Campo: mejora de datos
    • Unidad autora: MIT & FAIR
    • Hora de publicación: ICLR 2018
  • Resumen de una oración:

3.1. Qué problema resolver

  • Los ejemplos exitosos de redes neuronales tienen dos características en común
    • El modelo se entrena utilizando el principio ERM (Experienced Risk Minimization).
    • Cuantos más datos, mejor será el efecto.
  • Hay una contradicción en ERM
    • Por un lado, ERM permite que las grandes redes neuronales recuerden los datos de entrenamiento.
    • Por otro lado, ERM tiene un problema de muestra contradictorio (una pequeña diferencia puede llevar a una gran desviación de los resultados), y si los datos no están en la distribución de entrenamiento, es probable que ocurran problemas.
  • ¿Hay alguna forma de reemplazar ERM?

3.2. ¿Qué método se utilizó?

  • La definición de Mixup es muy simple
    • Cada píxel de la imagen de entrada se fusiona proporcionalmente y el resultado de salida se fusiona proporcionalmente (formato one-hot)

imagen-20210218135657551

  • El código oficial de Mixup es el siguiente, que consiste en mezclar y acumular en un lote.
def mixup_data(x, y, alpha=1.0, use_cuda=True):
    '''Returns mixed inputs, pairs of targets, and lambda'''
    if alpha > 0:
        lam = np.random.beta(alpha, alpha)
    else:
        lam = 1

    batch_size = x.size()[0]
    if use_cuda:
        index = torch.randperm(batch_size).cuda()
    else:
        index = torch.randperm(batch_size)

    mixed_x = lam * x + (1 - lam) * x[index, :]
    y_a, y_b = y, y[index]
    return mixed_x, y_a, y_b, lam
  • Análisis matemático de Mixup
    • El documento presenta cómo comprender desde una perspectiva de datos y evolucionar de ERM a Mixup
    • 大概 就是 从 riesgo esperado -> distribución empírica -> aproximación del riesgo esperado por el riesgo empírico -> VRM -> distribución vecina genérica
    • Realmente no lo entiendo, así que no publicaré la fórmula, solo la leeré en el periódico.
  • Alguna comprensión de Mixup
    • A \ Alpha Cuando A tiende a 0, Mixup degenera en ERM
    • El experimento encontró que el efecto de Mixup para> 2 muestras no mejoró.
    • La implementación de Mixup usa shuffle en el mismo mini-lote
    • Fomentar que el modelo se comporte linealmente entre muestras de entrenamiento. No sé cómo traducirlo. Cuando se transforma linealmente entre diferentes muestras, ¿la etiqueta también se transforma linealmente?
      • El artículo cree que los comportamientos lineales reducen la oscilación (perturbación, vacilación, ¿cómo traducir?) Al predecir otras muestras.
      • La linealidad también es una manifestación de la navaja de Occam.
    • Como se muestra en la Figura b a continuación, la combinación transforma linealmente los límites de decisión entre diferentes categorías.

imagen-20210218141218710

3.3. ¿Qué tan efectivo es?

  • El efecto de clasificación de la imagen es mejor y el efecto para los datos de voz (¿voz?) También es mejor (no se muestra)

imagen-20210218141321887

  • El efecto de las etiquetas correctas (etiquetas de error) y las muestras adversas ha mejorado

imagen-20210218141541796

  • También se han realizado muchos experimentos de ablación, lo que me preocupa es que el efecto de confusión entre muestras del mismo tipo no es bueno.

imagen-20210218141920182

3.4. Cuáles son los problemas y qué se puede aprender

  • Creo que el principal problema de Mixup es que no se ajusta a nuestros hábitos visuales humanos.
    • La sensación que siempre me ha dado CV es la de imitar la visión humana, si puedes hacer lo que los humanos pueden hacer, será genial.
    • Pero Mixup se siente diferente de lo que hice antes. Los datos de entrenamiento después de Mixup son aún más difíciles para nosotros, las personas.
  • También se puede utilizar en el reconocimiento de comportamientos, planear reproducir uno.

4. Cutmix

  • Informacion relevante:
  • Información básica del papel
    • Campo: mejora de datos
    • Unidad de autor: NAVER Crop (motor de búsqueda coreano) y LINE Plus Crop (¿versión coreana de WeChat? No estoy seguro) y Yonsei University, Corea
    • Hora de publicación: ICCV 2019
  • Resumen de una oración: elimine aleatoriamente un área rectangular y llene el área eliminada con el valor de píxel de la misma posición en otra imagen, y la etiqueta se asigna de acuerdo con la proporción de píxeles

4.1. Qué problema resolver

  • Las estrategias regionales de abandono son más efectivas (hacen que el modelo no solo se enfoque en un área pequeña), como el recorte y el borrado aleatorio mencionados anteriormente, sino que también hay problemas
    • Parte de la información se perderá y será ineficaz durante el entrenamiento (no sé cómo entender)
  • ¿Cómo hacer un mejor uso del área eliminada en el recorte?

4.2. ¿Qué método se utilizó?

  • ¿Qué es CutMix? La imagen de abajo es muy clara.

imagen-20210218143505710

  • La fórmula de Cutmix se define de la siguiente manera

imagen-20210218143605734

  • La clave del problema es λ \ lambdaλCómo obtener, cómo obtener el área eliminada

imagen-20210218143657432

4.3. ¿Qué tan efectivo es?

  • Mejor para tareas de clasificación

imagen-20210218143959087

imagen-20210218144024238

  • Buenos resultados para tareas de posicionamiento de aprendizaje poco supervisadas

imagen-20210218144058087

  • También funciona mejor cuando se usa para el aprendizaje por transferencia

imagen-20210218144151896

4.4. Cuáles son los problemas y qué se puede aprender

  • Hay un problema con estos métodos de mejora. Áreas eliminadas aleatoriamente. Si no hay información importante pero sí información de fondo, debería afectar los resultados, ¿verdad?
  • En otras palabras, estos métodos deberían tener mayores requisitos para los datos de entrada. .

Supongo que te gusta

Origin blog.csdn.net/irving512/article/details/113846570
Recomendado
Clasificación