Arxiv | Bibtex
Desarrollamos un nuevo enfoque para la ingeniería de imágenes que hace un mejor trabajo al reproducir regiones llenas que exhiben detalles finos inspirados en nuestra comprensión de cómo funcionan los artistas: líneas primero, color a continuación . Proponemos un modelo adversario de dos etapas edgeconnect que comprende un generador de borde seguido de una red de finalización de imágenes. El generador de borde alucina los bordes de la región faltante (tanto regular como irregular) de la imagen, y la red de finalización de la imagen llena las regiones faltantes utilizando bordes alucinados como priori. La descripción detallada del sistema se puede encontrar en nuestro documento.

git clone https://github.com/knazeri/edge-connect.git
cd edge-connectpip install -r requirements.txtUtilizamos los conjuntos de datos Places2, Celeba y Paris Street-View. Para capacitar un modelo en el conjunto de datos completo, descargue conjuntos de datos de los sitios web oficiales.
Después de descargar, ejecute scripts/flist.py para generar listas de archivos de conjunto de tren, prueba y validación. Por ejemplo, para generar la lista de archivos establecidos de capacitación en los lugares del conjunto de datos2 de lugares2 Ejecutar:
mkdir datasets
python ./scripts/flist.py --path path_to_places2_train_set --output ./datasets/places_train.flistNuestro modelo está capacitado en el conjunto de datos de máscara irregular proporcionado por Liu et al .. Puede descargar el conjunto de datos de máscara irregular disponible públicamente desde su sitio web.
Alternativamente, puede descargar un conjunto de datos de máscara irregular de dibujo rápido de Karim Iskakov, que es una combinación de 50 millones de golpes dibujados por la mano humana.
Utilice scripts/flist.py para generar listas de archivos de máscaras de tren, prueba y validación como se explicó anteriormente.
Descargue los modelos previamente capacitados utilizando los siguientes enlaces y copiarlos en el directorio ./checkpoints .
Lugares2 | Celeba | París-streetview
Alternativamente, puede ejecutar el siguiente script para descargar automáticamente los modelos previamente capacitados:
bash ./scripts/download_model.sh Para entrenar el modelo, cree un archivo config.yaml similar al archivo de configuración de ejemplo y copie en su directorio de puntos de control. Lea la guía de configuración para obtener más información sobre la configuración del modelo.
Edgeconnect está entrenado en tres etapas: 1) Entrenamiento del modelo de borde, 2) capacitar el modelo de inicio y 3) capacitar al modelo conjunto. Para entrenar el modelo:
python train.py --model [stage] --checkpoints [path to checkpoints] Por ejemplo, para entrenar el modelo de borde en el conjunto de datos de lugares2 en el directorio ./checkpoints/places2 :
python train.py --model 1 --checkpoints ./checkpoints/places2 La convergencia del modelo difiere del conjunto de datos al conjunto de datos. Por ejemplo, el conjunto de datos de lugares22 converge en una de dos épocas, mientras que los conjuntos de datos más pequeños como Celeba requieren casi 40 épocas para converger. Puede establecer el número de iteraciones de capacitación cambiando el valor de MAX_ITERS en el archivo de configuración.
Para probar el modelo, cree un archivo config.yaml similar al archivo de configuración de ejemplo y copie en su directorio de puntos de control. Lea la guía de configuración para obtener más información sobre la configuración del modelo.
Puede probar el modelo en las tres etapas: 1) Modelo de borde, 2) Modelo de inicio y 3) Modelo conjunto. En cada caso, debe proporcionar una imagen de entrada (imagen con una máscara) y un archivo de máscara en escala de grises. Asegúrese de que el archivo de máscara cubra toda la región de la máscara en la imagen de entrada. Para probar el modelo:
python test.py
--model [stage]
--checkpoints [path to checkpoints]
--input [path to input directory or file]
--mask [path to masks directory or mask file]
--output [path to the output directory] Proporcionamos algunos ejemplos de prueba en el directorio ./examples . Descargue los modelos previamente capacitados y ejecute:
python test.py
--checkpoints ./checkpoints/places2
--input ./examples/places2/images
--mask ./examples/places2/masks
--output ./checkpoints/results Este script inpreará todas las imágenes en ./examples/places2/images utilizando sus máscaras correspondientes en el directorio ./examples/places2/mask y guarda los resultados en el directorio ./checkpoints/results . Por defecto, el script test.py se ejecuta en la etapa 3 ( --model=3 ).
Para evaluar el modelo, primero debe ejecutar el modelo en modo de prueba en su conjunto de validación y guardar los resultados en el disco. Proporcionamos una utilidad ./scripts/metrics.py para evaluar el modelo utilizando PSNR, SSIM y error absoluto medio:
python ./scripts/metrics.py --data-path [path to validation set] --output-path [path to model output] Para medir la distancia de inicio de Fréchet (puntaje FID) ./scripts/fid_score.py Utilizamos la implementación de Pytorch de FID desde aquí, que utiliza los pesos previos al modelo del modelo de inicio de Pytorch.
python ./scripts/fid_score.py --path [path to validation, path to model output] --gpu [GPU id to use] Por defecto, usamos el detector de borde Canny para extraer información de borde de las imágenes de entrada. Si desea entrenar el modelo con una detección de borde externo (detección de bordes anidada holísticamente), por ejemplo), debe generar mapas de borde para los conjuntos de entrenamiento/prueba completos como un procesamiento previo y sus listas de archivos correspondientes usando scripts/flist.py como se explicó anteriormente. Asegúrese de que los nombres de archivo y la estructura del directorio coincidan con sus conjuntos de entrenamiento/prueba. Puede cambiar a la detección de borde externo especificando EDGE=2 en el archivo de configuración.
La configuración del modelo se almacena en un archivo config.yaml en su directorio de puntos de control. Las siguientes tablas proporcionan la documentación de todas las opciones disponibles en el archivo de configuración:
| Opción | Descripción |
|---|---|
| MODO | 1: tren, 2: prueba, 3: eval |
| MODELO | 1: Modelo de borde, 2: Modelo de inicio, 3: Modelo de bordes Inperpa, 4: Modelo conjunto |
| MASCARILLA | 1: bloque aleatorio, 2: mitad, 3: externo, 4: externo + bloque aleatorio, 5: externo + bloque aleatorio + mitad |
| BORDE | 1: astuto, 2: externo |
| Nms | 0: Sin supresión no max, 1: no supresión de max en los bordes externos |
| SEMILLA | semilla de generador de números aleatorios |
| GPU | Lista de ID de GPU, lista separada por comas, por ejemplo, [0,1] |
| DEPURAR | 0: Sin depuración, 1: modo de depuración |
| VERBOSO | 0: Sin deterioro, 1: Estadísticas detalladas de salida en la consola de salida |
| Opción | Descripción |
|---|---|
| Train_Flist | Archivo de texto que contiene la lista de archivos de capacitación |
| Val_flist | Archivo de texto que contiene la lista de archivos establecidos de validación |
| Test_flist | Archivo de texto que contiene la lista de archivos de prueba |
| Train_Edge_Flist | Archivo de texto que contiene capacitación Establecer la lista de archivos de bordes externos (solo con Edge = 2) |
| Val_edge_flist | Archivo de texto que contiene la lista de archivos de bordes externos (solo con Edge = 2) |
| Test_edge_flist | Archivo de texto que contiene Test Establece la lista de archivos de bordes externos (solo con Edge = 2) |
| Train_mask_flist | Archivo de texto que contiene la lista de archivos de máscaras de capacitación (solo con máscara = 3, 4, 5) |
| Val_mask_flist | Archivo de texto que contiene la lista de archivos de Masks de validación (solo con Mask = 3, 4, 5) |
| Test_mask_flist | Archivo de texto que contiene la lista de archivos de Masks de prueba (solo con Mask = 3, 4, 5) |
| Opción | Por defecto | Descripción |
|---|---|---|
| LR | 0.0001 | tasa de aprendizaje |
| D2g_lr | 0.1 | Ratio de tasa de aprendizaje discriminador/generador |
| Beta1 | 0.0 | Adam Optimizer Beta1 |
| Beta2 | 0.9 | Adam Optimizer Beta2 |
| Lote_size | 8 | tamaño por lotes de entrada |
| Input_size | 256 | Tamaño de imagen de entrada para entrenamiento. (0 para el tamaño original) |
| SIGMA | 2 | Desviación estándar del filtro gaussiano utilizado en el detector de borde canny (0: aleatorio, -1: sin borde) |
| Max_iters | 2E6 | Número máximo de iteraciones para entrenar el modelo |
| Edge_threshold | 0.5 | Umbral de detección de borde (0-1) |
| L1_loss_weight | 1 | Peso de pérdida de L1 |
| FM_LOSS_WEight | 10 | Peso de pérdida de combate de características |
| Style_loss_weight | 1 | Peso de pérdida de estilo |
| Content_loss_weight | 1 | peso de pérdida perceptiva |
| InPaint_Adv_Loss_Weight | 0.01 | peso de pérdida adversa |
| Gan_loss | nsgan | NSGAN : GaN no saturante, LSGAN : Gan de mínimos cuadrados, bisagra : Gan de pérdida de bisagra |
| Gan_pool_size | 0 | Tamaño de la piscina de imágenes falsas |
| Save_interval | 1000 | cuántas iteraciones esperar antes de guardar el modelo (0: nunca) |
| Eval_interval | 0 | cuántas iteraciones esperar antes de evaluar el modelo (0: nunca) |
| Log_interval | 10 | cuántas iteraciones esperar antes de registrar la pérdida de entrenamiento (0: nunca) |
| Sample_interval | 1000 | cuántas iteraciones esperar antes de guardar la muestra (0: nunca) |
| Sample_size | 12 | Número de imágenes para probar en cada intervalo de samling |
Licenciado bajo una atribución de los Comunes Creativos no comerciales 4.0 Internacional.
Excepto cuando se indique lo contrario, este contenido se publica bajo una licencia de CC BY-NC, lo que significa que puede copiar, remix, transformar y desarrollar el contenido siempre que no use el material para fines comerciales y brinde crédito apropiado y proporcionar un enlace a la licencia.
Si usa este código para su investigación, cite nuestros documentos edgeconnect: imagen generativa de imagen con aprendizaje de borde adversario o edgeconnect: estructura de imagen guiada de imagen de imagen usando predicción de borde:
@inproceedings{nazeri2019edgeconnect,
title={EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning},
author={Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},
journal={arXiv preprint},
year={2019},
}
@InProceedings{Nazeri_2019_ICCV,
title = {EdgeConnect: Structure Guided Image Inpainting using Edge Prediction},
author = {Nazeri, Kamyar and Ng, Eric and Joseph, Tony and Qureshi, Faisal and Ebrahimi, Mehran},
booktitle = {The IEEE International Conference on Computer Vision (ICCV) Workshops},
month = {Oct},
year = {2019}
}