Recherche de site Web

OmniGen2 - un puissant modèle d'édition d'images


La génération multimodale est l'une des directions vers lesquelles le développement de l'IA semble se diriger. En résumé, il s'agit de la capacité de l'IA à absorber et à générer du contenu à partir de tous différents supports, comme l'audio, l'image ou le texte. Nous avons déjà vu cela avec des modèles comme BAGEL et Ming-lite, et plus particulièrement dans la communauté plus large des utilisateurs d'IA avec GPT-4o et les autres modèles Omni d'OpenAI.

Ce mois dernier, une pléthore de nouveaux modèles any-to-any ont gagné en importance pour de bonnes raisons. Des modèles comme Ovis U1 à Show O2 montrent par exemple un sérieux potentiel dans cette direction. Mais le modèle qui a le plus attiré notre attention se distingue : OmniGen2.

Nous avons couvert le premier OmniGen au moment de sa sortie en 2024, et nous avons suivi de près la prochaine itération du projet. Ce modèle « any to any » diffère de l'original en reposant sur deux voies de décodage distinctes pour les modalités texte et image, en utilisant des paramètres non partagés et un tokenizeur d'image découplé. En pratique, cela lui confère des capacités dans des domaines tels que la compréhension d'image, la génération d'image, l'édition d'image et la génération en contexte (en combinant des entrées à travers les modalités).

Dans cet article, nous expliquons comment OmniGen2 fonctionne en coulisses avant de passer à une démonstration de codage en utilisant un Droplet GPU Linux-Console.net. Suivez le guide pour des conseils sur l'utilisation du modèle à son plein potentiel.

OmniGen2 : Sous le capot

L'architecture d'OmniGen2 est une évolution de son prédécesseur de plusieurs manières. Tout d'abord, contrairement à OmniGen, OmniGen2 repose sur un processus de diffusion découplé avec des paramètres initialisés aléatoirement. En pratique, les données d'image et de texte sont introduites dans un module transformeur autorégressif. Les états cachés du modèle AR sont ensuite introduits dans un transformeur de diffusion séparé pour générer la sortie. Pour faciliter cela, ils utilisent des encodeurs d'image distincts et séparés pour chaque étape. Le tokenizer Vision Transformer (ViT) encode les images pour l'entrée dans le transformeur de texte, tandis que l'encodeur automatique variationnel (VAE) encode simultanément les images pour le transformeur de diffusion. Il exploite les états cachés des conditions entrelacées multimodales produites par le LLM multimodal, au lieu de se baser sur un ensemble fixe de tokens de requête apprenables, comme entrée pour le décodeur de diffusion.

Pour faciliter cet encodage, ils utilisent Omni-RoPE pour l'Embedding de Position Rotatif Multimodal, illustré ci-dessus. « Il décompose l'information de position en trois composants : (1) un Identifiant de Séquence et de Modalité (idseq) qui est constant pour tous les tokens au sein d'une seule image (en la considérant comme une unité sémantique) mais unique entre différentes images ; et (2) et (3) les coordonnées spatiales 2D (h, w) qui sont calculées localement à partir de (0,0) pour chaque entité de l'image. » En pratique, c'est ce qui permet au modèle de modifier l'entrée de l'image en ajustant les coordonnées spatiales.

Regardons maintenant comment exécuter OmniGen2 sur une Droplet GPU Linux-Console.net.

Exécution d'OmniGen2 sur un Droplet GPU Linux-Console.net

Pour exécuter OmniGen2, nous avons besoin d'un GPU suffisamment puissant. Pour cela, nous recommandons d'utiliser un Droplet GPU équipé d'un GPU NVIDIA H100 ou AMD MI300X. Pour ce tutoriel, nous allons nous appuyer sur l'infrastructure CUDA pour l'installation. Il peut y avoir quelques étapes différentes nécessaires pour l'installation des bibliothèques requises avec AMD et ROCm.

Pour commencer, lancez votre Droplet GPU et configurez l'environnement selon les instructions indiquées dans cet article. Une fois cela terminé, clonez le dépôt dans le répertoire et installez les packages requis. Vous pouvez le faire en utilisant les commandes shell suivantes dans le terminal.

git clone https://github.com/VectorSpaceLab/OmniGen2
cd OmniGen2
python3 -m venv venv_omnigen2
source venv_omnigen2/bin/activate
pip install -r requirements.txt

Une fois que cela est terminé, nous pouvons utiliser l'application OmniGen2 Gradio pour commencer ! Il suffit d'exécuter le code ci-dessous pour lancer l'application.

python3 app.py --share

Ce processus prendra quelques minutes car il télécharge et charge le modèle. Utilisez le lien URL partagé fourni pour continuer dans la démo web sur n'importe quel navigateur avec accès à Internet. Cela vous amènera à une page qui ressemble à ceci :

À partir d'ici, nous sommes prêts à commencer !

Utiliser OmniGen2 pour éditer des photos

OmniGen2 est incroyablement performant avec des entrées d'une seule photo ou de plusieurs photos pour générer des images de haute qualité en respectant à la fois l'image d'origine et le texte de l'invite. Il peut éditer une seule image, combiner des images, unifier des concepts et des objets à travers plusieurs images, et bien plus encore.

Nous recommandons d'utiliser l'une des 4 pages d'exemples fournies pour vraiment mettre en valeur les capacités d'OmniGen2. Par exemple, le tout dernier exemple combine des concepts issus de trois images en un seul résultat, et cela nous a beaucoup impressionnés.

Lorsque vous travaillez sur nos propres images, nous avons quelques suggestions pour obtenir les meilleurs résultats. Tout d'abord, utilisez des images d'entrée de la plus haute qualité possible. Cela garantira que le plus grand nombre de détails de l'image originale soient capturés. Ensuite, utilisez des textes d'entrée de la plus haute qualité possible. Cela peut sembler simple, mais nous recommandons d'être aussi détaillé que possible et d'utiliser un langage clair. Cela fera vraiment une différence notable. Enfin, n'hésitez pas à ajuster les paramètres avancés. Le modèle peut monter jusqu'à 2048 x 2048, mais la fidélité graphique à cette échelle est sensiblement réduite. Nous avons trouvé que 512 - 832 pixels est la meilleure plage pour la largeur et la hauteur. Nous pouvons également augmenter le nombre d'étapes d'inférence (et ajuster le type de planificateur) pour obtenir des résultats plus précis, si nécessaire.

Pensées de clôture

Dans l'ensemble, OmniGen2 est un VLLM de génération d'images et de texte impressionnant. Dans nos expériences, il est plus capable que même BAGEL pour les tâches de retouche d'images. Nous avons été très impressionnés par ses performances par rapport aux modèles de retouche de premier plan comme Flux Kontext et GPT-4o, et nous attendons avec impatience la prochaine itération de cette expérience à mesure qu'elle se développe.

Merci d'apprendre avec la communauté Linux-Console.net.