Démo et image Docker sur Replica
Suppresseur d'objets automatisé Inpainter est un projet qui combine les architectures de segmentation sémantique et EdgeConnect avec des modifications mineures afin de supprimer les objets spécifiés des photos. Pour la segmentation sémantique, le code de pytorch a été adapté, tandis que pour EdgeConnect, le code a été adapté de https://github.com/knazeri/edge-connect.
Ce projet est capable de supprimer des objets d'une liste de 20 objets différents. Il peut être utilisé comme outil de retouche photo ainsi que pour l'augmentation des données.
Python 3.8.5 et pytorch 1.5.1 ont été utilisés dans ce projet.
Le modèle de segmentateur sémantique de deeplabv3/fcn resnet 101 a été combiné avec EdgeConnect. Un réseau de segmentation pré-entraîné a été utilisé pour la segmentation d'objets (générant un masque autour de l'objet détecté) et sa sortie est transmise à un réseau EdgeConnect avec l'image d'entrée avec une partie du masque supprimée. EdgeConnect utilise une architecture contradictoire en deux étapes où la première étape est un générateur de contours suivi d'un réseau de complétion d'image. Le document EdgeConnect peut être trouvé ici et le code dans ce référentiel
git clone https://github.com/sujaykhandekar/Automated-objects-removal-inpainter.git
cd Automated-objects-removal-inpainter
ou bien téléchargez le fichier zip.
conda install pytorch==1.5.1 torchvision==0.6.1 -c pytorch
pip install -r requirements.txt
ou alternativement, vous pouvez utiliser cette commande :
bash ./scripts/download_model.sh
Pour une prédiction rapide, vous pouvez exécuter cette commande. Si vous n'avez pas cuda/gpu, veuillez exécuter la deuxième commande.
python test.py --input ./examples/my_small_data --output ./checkpoints/resultsfinal --remove 3 15
Il prendra des exemples d'images dans le répertoire ./examples/my_small_data et créera et produira des résultats dans le répertoire ./checkpoints/resultsfinal. Vous pouvez remplacer ces répertoires d'entrée/sortie par ceux de votre choix. les nombres après --remove spécifient les objets à supprimer dans les images. La commande ABove supprimera 3 (oiseau) et 15 (personnes) des images. Vérifiez segmentation-classes.txt pour toutes les options de suppression ainsi que leur numéro.
Les images de sortie seront toutes au format 256x256. Il faut environ 10 minutes pour 1000 images sur NVIDIA GeForce GTX 1650
pour une meilleure qualité mais une exécution plus lente, vous pouvez utiliser cette commande
python test.py --input ./examples/my_small_data --output ./checkpoints/resultsfinal --remove 3 15 --cpu yes
Il exécutera le modèle de segmentation sur le processeur. Ce sera 5 fois plus lent que sur GPU (par défaut). Pour d'autres options, y compris différents modèles de segmentation et paramètres EdgeConnect à modifier, veuillez apporter les modifications correspondantes dans le fichier .checkpoints/config.yml.
Pour former votre propre modèle de segmentation, vous pouvez vous référer à ce référentiel et remplacer .src/segmentor_fcn.py par votre modèle.
Pour la formation du modèle Edgeconnect, veuillez vous référer au référentiel EdgeConnect d'origine après la formation, vous pouvez copier les poids de votre modèle dans .checkpoints/
Sous licence Creative Commons Attribution-NonCommercial 4.0 International.
Sauf indication contraire, ce contenu est publié sous une licence CC BY-NC, ce qui signifie que vous pouvez copier, remixer, transformer et développer le contenu tant que vous n'utilisez pas le matériel à des fins commerciales et que vous accordez le crédit approprié et fournissez un lien vers la licence.
@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}
}