# Pix2pix

Pix2pix és un programa que encara està en prova que treballa l'anomenada “Image-to-Image Translation”. Aquest concepte es refereix a la tasca d'agafar imatges d'un domini i transformar-les perquè tinguin un estil o característiques de les imatges d'un altre domini sempre conservant la representació del contingut inicial.Pix2pix és considerat el millor model de transformació de l'anomenat “cityscapes labels” (conjunt de dades d'un paisatge urbà) a imatges.

## Funcionament

Pix2pix utilitza una xarxa generativa condicional adversària (cGAN) per aprendre sobre la generació de mapes d'una imatge dinput a una doutput.
Aquesta xarxa està formada per dues peces principals:
* el generador: Aplica les transformacions amb un vector de valors aleatoris a linput per generar la imatge doutput.
* el discriminador: A partir de les seves dades i les generades pel generador, compara la imatge d'input amb una imatge desconeguda (una de la seva base de dades o una creada pel generador) i intenta endevinar si aquesta ha estat produïda pel generador o si, altrament, és real.
Un exemple d'aquest sistema seria un intent del generador de acolorir una imatge en blanc i negre. El discriminador analitzaria els intents de posar color del generador i intentant diferenciar la manera en què ho ha fet i les imatges realment acolorides de la seva base de dades. D'aquesta manera, el generador i el discriminador farien els seus càlculs i els codis de transformació de manera completament autònoma sense necessitat de cap ésser humà.
D'aquesta manera, amb una base de dades que compta amb 50.000 fotografies de sabates i a partir de les seves siluetes, es podria introduir una silueta d'una sabata dibuixada a mà i sortiria un output d'una imatge generada digitalment d'un nou disseny de sabata, i el mateix podria fer amb milers d'objectes o éssers vius.

## El generador

L'estructura del generador s'anomena codificador-descodificador. A partir de linput, el generador intenta reduir-lo a una representació més petita a partir d'una sèrie de codificadors. Comprimint linput es pot arribar a un nivell més alt de representació de les dades després de la capa final de codificació. Les capes de descodificació fan el contrari, reverteixen l'acció de les capes de codificació.
Per millorar el procés de transformació d'una imatge, els creadors de pix2pix van utilitzar un “U-Net” en comptes d'un codificador-descodificador. U-Net és una xarxa de circumvolució per una segmentació ràpida i precisa d'imatges, és a dir, una xarxa que connecta directament les capes de codificació i les de descodificació.

## El discriminador

La seva estructura sembla la part codificadora del generador, però funciona diferent. Loutput és una imatge de 30x30 en la qual el valor dels píxels (0 a 1) representa com de real pot ser la secció de la imatge. Cada píxel d'aquesta imatge correspon a com de real una secció de la imatge dinput. Aquesta enginyeria s'anomena “PatchGAN”, un discriminador que només té en compte les imatges a partir de petites seccions d'aquestes.

## Validació

Una màquina de Linux va realitzar la validació del codi, però a causa d'una manca de potència de càlcul, la validació no és molt precisa i exhaustiva, i només va ser testejat el conjunt de dades de les façanes (l'opció que d'un input de línies o formes geomètriques bàsiques surti una imatge d'una façana realista d'output).

## Referències

* ↑ «Papers with Code - Image-to-Image Translation» (en anglès). [Consulta: 15 desembre 2021].
* ↑ Pang, Yingxue; Lin, Jianxin; Qin, Tao; Chen, Zhibo «Image-to-Image Translation: Methods and Applications». arXiv:2101.08629 [cs], 03-07-2021.
* ↑ «Papers with Code - Cityscapes Labels-to-Photo Benchmark (Image-to-Image Translation)» (en anglès). [Consulta: 15 desembre 2021].
* ↑ «Train Conditional Generative Adversarial Network (CGAN) - MATLAB & Simulink». [Consulta: 15 desembre 2021].
* 1 2 «Image-to-Image Translation in Tensorflow - Affine Layer». [Consulta: 15 desembre 2021].
* ↑ «Image-to-Image Demo - Affine Layer». [Consulta: 15 desembre 2021].
* ↑ «U-Net: Convolutional Networks for Biomedical Image Segmentation» (en alemany). [Consulta: 15 desembre 2021].
* ↑ «Papers with Code - PatchGAN Explained» (en anglès). [Consulta: 15 desembre 2021].