Imagen de demostración y Docker en Replicate
Eliminador automatizado de objetos Inpainter es un proyecto que combina segmentación semántica y arquitecturas EdgeConnect con cambios menores para eliminar objetos específicos de las fotos. Para la segmentación semántica, se adaptó el código de pytorch, mientras que para EdgeConnect, el código se adaptó de https://github.com/knazeri/edge-connect.
Este proyecto es capaz de eliminar objetos de una lista de 20 diferentes. Puede usarse como herramienta de edición de fotografías y para aumento de datos.
En este proyecto se han utilizado Python 3.8.5 y pytorch 1.5.1.
El modelo segmentador semántico de deeplabv3/fcn resnet 101 se ha combinado con EdgeConnect. Se ha utilizado una red de segmentación previamente entrenada para la segmentación de objetos (generando una máscara alrededor del objeto detectado) y su salida se envía a una red EdgeConnect junto con la imagen de entrada con una parte de la máscara eliminada. EdgeConnect utiliza una arquitectura adversaria de dos etapas donde la primera etapa es el generador de borde seguido de la red de finalización de imágenes. El documento de EdgeConnect se puede encontrar aquí y el código en este repositorio.
git clone https://github.com/sujaykhandekar/Automated-objects-removal-inpainter.git
cd Automated-objects-removal-inpainter
o, alternativamente, descargue el archivo zip.
conda install pytorch==1.5.1 torchvision==0.6.1 -c pytorch
pip install -r requirements.txt
o alternativamente puedes usar este comando:
bash ./scripts/download_model.sh
Para una predicción rápida, puede ejecutar este comando. Si no tiene cuda/gpu, ejecute el segundo comando.
python test.py --input ./examples/my_small_data --output ./checkpoints/resultsfinal --remove 3 15
Tomará imágenes de muestra en el directorio ./examples/my_small_data y creará y producirá resultados en el directorio ./checkpoints/resultsfinal. Puede reemplazar estos directorios de entrada/salida por los que desee. Los números después de --remove especifican los objetos que se eliminarán en las imágenes. El comando anterior eliminará 3 (pájaro) y 15 (personas) de las imágenes. Consulte segmentation-classes.txt para conocer todas las opciones de eliminación junto con su número.
Todas las imágenes de salida serán de 256x256. Se necesitan alrededor de 10 minutos para 1000 imágenes en NVIDIA GeForce GTX 1650
para una mejor calidad pero un tiempo de ejecución más lento, puede usar este comando
python test.py --input ./examples/my_small_data --output ./checkpoints/resultsfinal --remove 3 15 --cpu yes
Ejecutará el modelo de segmentación en la CPU. Será 5 veces más lento que en la GPU (predeterminado). Para cambiar otras opciones, incluido el modelo de segmentación diferente y los parámetros de EdgeConnect, realice las modificaciones correspondientes en el archivo .checkpoints/config.yml.
Para entrenar su propio modelo de segmentación, puede consultar este repositorio y reemplazar .src/segmentor_fcn.py con su modelo.
Para entrenar el modelo Edgeconnect, consulte el repositorio original de EdgeConnect. Después del entrenamiento, puede copiar los pesos de su modelo en .checkpoints/
Licenciado bajo Creative Commons Atribución-No Comercial 4.0 Internacional.
Salvo que se indique lo contrario, este contenido se publica bajo una licencia CC BY-NC, lo que significa que puede copiar, remezclar, transformar y desarrollar el contenido siempre y cuando no utilice el material con fines comerciales y dé el crédito y proporcione el crédito apropiado. un enlace a la licencia.
@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}
}