Bienvenue dans la documentation du projet pour la segmentation d'objets et le changement de position. Ce référentiel contient le code permettant de segmenter un objet dans une image donnée en fonction d'une invite textuelle, puis de déplacer l'objet vers une nouvelle position dans la même scène. Il exploite des modèles d’IA générative de pointe pour accomplir cette tâche de manière conviviale.
Ce projet implique deux tâches clés visant l'édition post-production d'images de produits, notamment à des fins de commerce électronique.
Tâche 1 : segmente un objet dans l'image en fonction d'une invite textuelle (par exemple, « étagère ») et le met en surbrillance avec un masque rouge.
Tâche 2 : déplace l'objet dans la scène en le décalant dans les directions x et y, comme spécifié par l'utilisateur.
Par exemple, vous pouvez avoir une image contenant une « étagère ». Vous pouvez exécuter la segmentation pour mettre en évidence toutes les étagères de l'image. Ensuite, vous pouvez déplacer l'étagère identifiée dans la scène à l'aide de décalages de pixels.
Segmentation d'objets basée sur du texte : identifie les objets à l'aide d'invites de classe telles que « étagère » et les met en surbrillance.
Décalage de position : déplace l'objet par valeurs de pixels dans les directions x (horizontale) et y (verticale).
Modèles prédéfinis : exploite les modèles existants tels que SAM (Segment Anything Model) et Stable Diffusion Inpainting pour la manipulation d'objets sans nécessiter de recyclage.
Pour configurer le projet localement, procédez comme suit :
Clonez le référentiel :
git clone https://github.com/your-repo/object-segmentation-shift.git
cd object-segmentation-shift
Créez et activez un environnement virtuel :
python -m venv venv
source venv/bin/activate # On Windows, use `venvScriptsactivate`
Installer les dépendances :
pip install -r requirements.txt
Pour segmenter un objet dans une image en fonction d'une invite de classe :
python run.py --image ./example.jpg --class shelf --output ./generated.png
Cette commande prendra example.jpg
, segmentera toutes les instances de l'objet spécifié dans l'invite de classe (par exemple, "shelf") et affichera une image avec des masques rouges sur ces objets.
Pour déplacer l'objet segmenté dans l'image :
python run.py --image ./example.jpg --class shelf --x 80 --y 0
Cela déplacera l'étagère identifiée de 80 pixels vers la droite et de 0 pixel dans la direction verticale.
Voici les résultats de l’application de l’algorithme à des exemples d’images :
Image d'entrée | Segmentation (tâche 1) | Objet décalé (tâche 2) |
---|---|---|
Données | res1 | res2 |
Tâche 1 : L'objet est surligné en rouge.
Avant la segmentation
Après segmentation
Tâche 2 : l'objet est décalé selon les valeurs x et y définies par l'utilisateur.
Limites d'objets complexes : dans les cas où les objets ont des limites complexes ou sont partiellement obscurcis, la segmentation peut ne pas être parfaite.
Déplacement d'artefacts : lors du déplacement d'objets avec des arrière-plans complexes, s'assurer que l'arrière-plan se régénère naturellement pose des défis.
Modèles de réglage fin : expérimenter des techniques de réglage fin pour améliorer la précision de la segmentation.
Inpainting d'arrière-plan transparent : utilisation de techniques d'inpainting avancées pour gérer la reconstruction de l'arrière-plan après le mouvement de l'objet.
Si vous souhaitez contribuer à ce projet, veuillez suivre ces étapes :
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.