Requisitos :
- Una imagen donde se transferirá el estilo (la imagen de contenido)
- Una imagen de estilo
- Una red neuronal de convolución ya entrenada.
Visualización desde la respuesta de la red neuronal
Como ya sabrá, es posible visualizar la información en diferentes etapas de procesamiento en la CNN al reconstruir la imagen de entrada a partir de solo conocer las respuestas de la red en una capa particular.
- ¿Tengo que hacer programación competitiva si estoy aprendiendo la estructura de datos y los algoritmos, mientras que la programación competitiva me distrae o primero tengo que aprender la estructura de datos y el algoritmo por completo y luego saltar a la programación competitiva?
- ¿Cómo funciona el algoritmo de Amazon?
- ¿Encontrar XOR de pares ordenados en una matriz que está incluso con O (n)?
- ¿Cuáles son las aplicaciones de la estructura de datos de conjuntos disjuntos?
- ¿Cuál es el algoritmo más poderoso en el mundo de las aplicaciones?
Esta respuesta se definirá como [math] F ^ l \ en R ^ {N_l \ cdot M_l} [/ math], donde [math] N_l [/ math] es el número de mapas de entidades en la capa l, cada mapa de entidades que tiene un tamaño de [matemáticas] M_l [/ matemáticas] (número de neuronas).
Aquí hay un ejemplo del artículo original.
Como puede ver, la reconstrucción de contenido de las capas inferiores es casi perfecta. En las capas superiores de la red, se pierde información detallada de píxeles mientras se conserva el contenido de alto nivel de la imagen. Es casi lo contrario para la reconstrucción de estilo. Recuerde que las activaciones de la CNN están organizadas como una serie de mapas de características que reflejan la presencia de diferentes características dentro de la imagen, donde las características tienen una composición progresivamente de mayor nivel en cada capa de la CNN.
Transferencia de estilo
Para transferir el estilo a una imagen, deberá definir dos pérdidas:
- Pérdida de reconstrucción de contenido :
[matemáticas] L_ {contenido} (p, x, l) = \ frac {1} {2} \ sum_ {i, j} (F_ {i, j} ^ l – P_ {i, j} ^ l) ^ 2 [/ matemáticas],
donde [math] p [/ math] es la imagen original, [math] P_ {i, j} ^ l [/ math] la activación del filtro [math] i ^ {th} [/ math] en la posición [math ] j [/ math] en la capa [math] l [/ math], y [math] x [/ math] es la imagen generada.
- Pérdida de reconstrucción de estilo :
Es casi lo mismo que la pérdida de contenido, excepto que [math] F_ {i, j} ^ l [/ math] se reemplaza en la fórmula por la matriz de Gramian – Wikipedia.
Por lo tanto, la función de pérdida en cada capa es: [matemáticas] L_ {estilo \ _loss} (s, x, l) = \ frac {1} {4N_l ^ 2M_l ^ 2} \ sum_ {i, j} (\ sum_kF_ {i , k} ^ lF_ {k, j} ^ l – \ sum_kS_ {i, k} ^ lS_ {k, j} ^ l) ^ 2, [/ math]
donde [matemática] F [/ matemática], [matemática] p [/ matemática] y [matemática] x [/ matemática] ya están definidas anteriormente, y [matemática] S [/ matemática] es lo mismo que [matemática] P [/ math] pero para la imagen [math] s [/ math].
La pérdida de reconstrucción final es un promedio ponderado de todas las [matemáticas] L_ {s, x, l} [/ matemáticas] en todas las capas. [matemática] L_ {estilo} (s, x) = \ sum_ {l = 0} ^ L w_lL_ {estilo \ _loss} (s, x, l) [/ matemática].
Formación
Ahora puede definir la pérdida para entrenar su red neuronal.
Comienza con una imagen ruidosa [matemática] x [/ matemática], una imagen de estilo [matemática] s [/ matemática], una imagen de contenido [matemática] p [/ matemática] y una capa [matemática] l [/ matemática] que captura el contenido de su imagen [math] p [/ math]:
[matemáticas] L_ {total} (x, s, p) = \ alpha L_ {contenido} (p, x, l) + \ beta L_ {estilo} (s, x) [/ matemáticas],
donde [math] \ alpha [/ math] y [math] \ beta [/ math] son los factores de ponderación para la reconstrucción de contenido y estilo, respectivamente.