Imagem de demonstração e Docker no Replicate
Removedor automatizado de objetos Inpainter é um projeto que combina segmentação semântica e arquiteturas EdgeConnect com pequenas alterações para remover objetos específicos de fotos. Para Segmentação Semântica, o código do pytorch foi adaptado, enquanto para EdgeConnect, o código foi adaptado de https://github.com/knazeri/edge-connect.
Este projeto é capaz de remover objetos de uma lista de 20 diferentes. Pode ser usado como ferramenta de edição de fotos e também para aumento de dados.
Python 3.8.5 e pytorch 1.5.1 foram usados neste projeto.
O modelo de segmentação semântica do deeplabv3/fcn resnet 101 foi combinado com o EdgeConnect. Uma rede de segmentação pré-treinada foi usada para segmentação de objetos (gerando uma máscara em torno do objeto detectado), e sua saída é alimentada em uma rede EdgeConnect junto com a imagem de entrada com parte da máscara removida. EdgeConnect usa arquitetura adversária de dois estágios, onde o primeiro estágio é o gerador de borda seguido pela rede de conclusão de imagem. O artigo EdgeConnect pode ser encontrado aqui e o código neste repositório
git clone https://github.com/sujaykhandekar/Automated-objects-removal-inpainter.git
cd Automated-objects-removal-inpainter
ou, alternativamente, baixe o arquivo zip.
conda install pytorch==1.5.1 torchvision==0.6.1 -c pytorch
pip install -r requirements.txt
ou alternativamente você pode usar este comando:
bash ./scripts/download_model.sh
Para uma previsão rápida, você pode executar este comando. Se você não possui cuda/gpu, execute o segundo comando.
python test.py --input ./examples/my_small_data --output ./checkpoints/resultsfinal --remove 3 15
Ele pegará imagens de amostra no diretório ./examples/my_small_data e criará e produzirá resultados no diretório ./checkpoints/resultsfinal. Você pode substituir esses diretórios de entrada/saída pelos desejados. números após --remove especifica objetos a serem removidos nas imagens. O comando acima removerá 3 (pássaros) e 15 (pessoas) das imagens. Verifique segmentation-classes.txt para todas as opções de remoção junto com seu número.
As imagens de saída serão todas de 256x256. Demora cerca de 10 minutos para 1000 imagens na NVIDIA GeForce GTX 1650
para melhor qualidade, mas tempo de execução mais lento, você pode usar este comando
python test.py --input ./examples/my_small_data --output ./checkpoints/resultsfinal --remove 3 15 --cpu yes
Ele executará o modelo de segmentação na CPU. Será 5 vezes mais lento do que em gpu (padrão) Para outras opções, incluindo modelo de segmentação diferente e parâmetros EdgeConnect para alteração, faça as modificações correspondentes no arquivo .checkpoints/config.yml
Para treinar seu próprio modelo de segmentação, você pode consultar este repositório e substituir .src/segmentor_fcn.py pelo seu modelo.
Para treinar o modelo Edgeconnect, consulte o repositório original do EdgeConnect. Após o treinamento, você pode copiar os pesos do modelo em .checkpoints/
Licenciado sob Creative Commons Attribution-NonCommercial 4.0 International.
Salvo indicação em contrário, este conteúdo é publicado sob uma licença CC BY-NC, o que significa que você pode copiar, remixar, transformar e desenvolver o conteúdo, desde que não use o material para fins comerciais e dê o devido crédito e forneça um link para a licença.
@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}
}