Bem-vindo à documentação do projeto para segmentação de objetos e mudança de posição. Este repositório contém o código para segmentar um objeto em uma determinada imagem com base em um prompt de texto e, em seguida, mover o objeto para uma nova posição na mesma cena. Ele aproveita modelos de IA generativos de última geração para realizar essa tarefa de maneira fácil de usar.
Este projeto envolve duas tarefas principais voltadas para a edição pós-produção de imagens de produtos, principalmente para fins de comércio eletrônico.
Tarefa 1: Segmenta um objeto na imagem com base em um prompt de texto (por exemplo, “prateleira”) e destaca-o com uma máscara vermelha.
Tarefa 2: Move o objeto dentro da cena, deslocando-o nas direções x e y, conforme especificado pelo usuário.
Por exemplo, você pode ter uma imagem contendo uma “prateleira”. Você pode executar a segmentação para destacar todas as estantes da imagem. Em seguida, você pode mover a prateleira identificada dentro da cena usando deslocamentos de pixel.
Segmentação de objetos baseada em texto: identifica objetos usando prompts de classe como "prateleira" e os destaca.
Mudança de posição: move o objeto por valores de pixel nas direções x (horizontal) e y (vertical).
Modelos pré-construídos: aproveita modelos existentes como SAM (Segment Anything Model) e Stable Diffusion Inpainting para manipulação de objetos sem exigir novo treinamento.
Para configurar o projeto localmente, siga estas etapas:
Clone o repositório:
git clone https://github.com/your-repo/object-segmentation-shift.git
cd object-segmentation-shift
Crie e ative um ambiente virtual:
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Instalar dependências:
pip install -r requirements.txt
Para segmentar um objeto em uma imagem com base em um prompt de classe:
python run.py --image ./example.jpg --class shelf --output ./generated.png
Este comando pegará example.jpg
, segmentará todas as instâncias do objeto especificado no prompt da classe (por exemplo, "prateleira") e gerará uma imagem com máscaras vermelhas nesses objetos.
Para deslocar o objeto segmentado na imagem:
python run.py --image ./example.jpg --class shelf --x 80 --y 0
Isso moverá a prateleira identificada 80 pixels para a direita e 0 pixels na direção vertical.
Aqui estão os resultados da aplicação do algoritmo a imagens de amostra:
Imagem de entrada | Segmentação (Tarefa 1) | Objeto deslocado (Tarefa 2) |
---|---|---|
Dados | res1 | res2 |
Tarefa 1: O objeto é destacado em vermelho.
Antes da segmentação
Depois da segmentação
Tarefa 2: O objeto é deslocado de acordo com os valores x e y definidos pelo usuário.
Limites de objetos complexos: nos casos em que os objetos têm limites complexos ou estão parcialmente obscurecidos, a segmentação pode não ser perfeita.
Mudança de artefatos: ao mover objetos com planos de fundo complexos, garantir que o plano de fundo se regenere naturalmente representa desafios.
Modelos de ajuste fino: experimentar técnicas de ajuste fino para melhorar a precisão da segmentação.
Pintura de fundo contínua: Usando técnicas avançadas de pintura para lidar com a reconstrução do fundo após o movimento do objeto.
Se você gostaria de contribuir com este projeto, siga estas etapas:
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter detalhes.