
1. Présentation du Projet
Objectifs
Cartoonify-Me est une application de bureau conçue pour transformer des photographies en images artistiques (style cartoon, manga, esquisse ou pixel art).
L’objectif principal est de fournir une interface simple et moderne (Glisser-Déposer) permettant aux utilisateurs de créer des avatars ou des visuels stylisés sans compétences techniques, tout en exploitant la puissance de l’Intelligence Artificielle (Deep Learning) et du traitement d’image classique.
Public Cible
- Créateurs de contenu (avatars réseaux sociaux, miniatures).
- Utilisateurs souhaitant styliser leurs photos personnelles.
- Développeurs souhaitant étudier l’intégration de PyTorch avec une interface GUI Python.
2. Fonctionnalités & Mode Opératoire
Fonctionnalités Clés
- Transformation Multi-Style :
- Styles Classiques (OpenCV) : Effet « Comics » (Bande dessinée), « Crayon » (Sketch noir et blanc), « Pixel Art ».
- Styles IA (AnimeGANv2) : « Manga » (Style K-ON), « Ghibli » (Style Paprika), « Shinkai » (Paysages détaillés).
- Styles Personnalisés : Possibilité d’importer ses propres modèles
.pt.
- Traitement Haute Définition (HD) : Option pour traiter les images avec une résolution supérieure pour plus de détails.
- Ajustements en Temps Réel : Sliders pour régler l’intensité du lissage (Comics), la taille des pixels (Pixel Art) ou la correction des couleurs (Styles IA).
- Traitement par Lot (Batch) : Conversion automatique de tout un dossier d’images.
- Vidéo « Reveal » : Génération automatique d’une vidéo MP4 montrant une animation de transition (rideau) entre l’image originale et le résultat.
- Mode Hors-Ligne : L’application fonctionne entièrement sans internet une fois les modèles téléchargés.
Mode Opératoire (Guide Utilisateur)
A. Installation et Lancement
- Assurez-vous d’avoir installé Python 3.8+.
- Installez les dépendances :
pip install -r requirements.txt - Pour une première utilisation, téléchargez les modèles IA :
python setup_offline.py - Lancez l’application : Double-cliquez sur
run.batou viapython src/app.py.
B. Utilisation Standard
- Importer : Cliquez sur le bouton « Importer une photo » ou glissez-déposez une image directement dans la fenêtre.
- Choisir : Sélectionnez un style dans le menu latéral (ex: « Manga (K-ON) »).
- Paramétrer :
- Activez le « Mode HD » pour une meilleure qualité (plus lent).
- Ajustez le slider si disponible (ex: Intensitè).
- Transformer : Cliquez sur le bouton vert « Transformer ! ».
- Sauvegarder :
- « Sauvegarder » : Enregistre l’image finale (JPG/PNG).
- « Créer Vidéo » : Génère une animation MP4 de la transformation.
C. Traitement par Lot (Batch)
- Cliquez sur le bouton bleu « Traitement par Lot ».
- Sélectionnez un dossier contenant vos images.
- Validez le style choisi. L’application créera un sous-dossier (ex:
cartoon_batch_20231025...) avec toutes les images converties.
3. Architecture Technique et Dépendances
Structure des Fichiers
Le projet est organisé pour séparer l’interface graphique de la logique métier.
src/app.py: Point d’entrée de l’application. Gère l’interface utilisateur (CustomTkinter), les événements (boutons, sliders) et le threading (pour ne pas figer l’interface pendant les calculs).engine.py: Cœur du système. Contient la classeCartoonEnginequi gère :- Le chargement des modèles PyTorch (avec cache local).
- Les algorithmes OpenCV (filtre bilatéral, détection de contours).
- L’inférence des réseaux de neurones (redimensionnement, pré-traitement, post-traitement).
- La génération de vidéo (via
cv2.VideoWriter).
anime_gan_v2.py: Définition de l’architecture du modèle neuronal (utilisée en fallback pour certains poids.pt).
models/: Stockage local des fichiers de poids (.pt) téléchargés partorch.hub.setup_offline.py: Script utilitaire pour pré-télécharger tous les modèles requis et configurer l’environnement hors-ligne.
Dépendances (requirements.txt)
- Interface Graphique :
customtkinter: Wrapper moderne pour Tkinter (Design sombre/moderne).tkinterdnd2: Gestion du Drag & Drop natif.
- Traitement d’Image & IA :
opencv-python: Algorithmes de vision par ordinateur classiques.Pillow(PIL) : Manipulation basique d’images (redimensionnement, I/O).torch&torchvision: Framework Deep Learning pour exécuter les modèles AnimeGANv2.numpy: Calculs matriciels.
Maintenance et Extensibilité
- Ajouter un style IA : Déposez simplement un fichier
.pt(checkpoint AnimeGAN) dans le dossiermodels/custom/. Il sera automatiquement détecté au redémarrage ou via le bouton « Importer un Style ». - Ajouter un style OpenCV : Modifiez
src/engine.pypour ajouter une méthode (ex:process_sepia) et mettez à jour la liste des styles danssrc/app.py(get_style_list).
4. Améliorations Possibles
Pour faire évoluer le projet, voici quelques pistes d’amélioration identifiées :
- Support GPU (CUDA) :
- Actuellement, le moteur est forcé en mode CPU (
device='cpu'dansengine.py) pour assurer la compatibilité universelle. - Amélioration : Ajouter une détection automatique de CUDA pour accélérer le traitement (x10) sur les PC équipés de cartes NVIDIA.
- Actuellement, le moteur est forcé en mode CPU (
- Prévisualisation Live :
- Implémenter un aperçu basse résolution en temps réel lors du déplacement des sliders (actuellement, le slider met à jour l’image seulement si elle a déjà été traitée, ou nécessite un re-calcul).
- Formats de Sortie :
- Ajouter le support pour WebP ou TIFF.
- Ajouter plus d’options pour la vidéo (durée, FPS configurables).
- Version Web :
- La logique étant isolée dans
engine.py, il serait aisé de créer une interface Web (Flask/FastAPI) pour utiliser ce moteur sur un serveur ou dans le cloud.
- La logique étant isolée dans
- Détection de Visage :
- Intégrer un crop automatique sur les visages avant le traitement pour améliorer les résultats sur les portraits (les modèles AnimeGAN fonctionnent mieux sur les gros plans).