1. Objectifs du Projet

ColoriZ est une application logicielle moderne conçue pour redonner vie aux photographies anciennes ou dégradées. Ses objectifs principaux sont :

  • Numérisation simplifiée : Offrir une interface directe pour piloter des scanners via le protocole WIA (Windows Image Acquisition).
  • Restauration IA : Améliorer la netteté et supprimer le bruit/grain des photos grâce à la technologie Real-ESRGAN.
  • Colorisation Intelligente : Transformer des images en noir et blanc en images couleur de haute qualité en utilisant les modèles DeOldify (Artistic et Stable).
  • Expérience Utilisateur (UX) Maximale : Proposer une interface épurée, sans onglets superflus, avec des outils de retouche immédiats (rotation fine, recadrage manuel et automatique).

2. Dépendances et Environnement

Le projet repose sur un environnement Python 3 et plusieurs bibliothèques de pointe :

Bibliothèques logicielles :

  • PyTorch & FastAI : Moteurs de calcul pour les modèles d’intelligence artificielle DeOldify.
  • OpenCV (cv2) : Utilisé pour tous les traitements d’image classiques (auto-cadrage, rotation, amélioration du contraste/couleur).
  • CustomTkinter : Bibliothèque de création d’UI moderne (Dark Mode, widgets premium).
  • Real-ESRGAN : Pour l’upscaling et la restauration de la netteté.
  • Pillow (PIL) : Gestion et affichage des images dans l’interface.
  • pywin32 : Interface avec le système Windows pour la numérisation WIA.

Modèles IA requis (pth) :

  • ColorizeArtistic_gen.pth / ColorizeStable_gen.pth (DeOldify)
  • realesr-general-x4v3.pth (Real-ESRGAN)

3. Mode Opératoire

Installation

  1. Configurer un environnement virtuel : python -m venv .venv.
  2. Installer les dépendances : pip install -r requirements.txt.
  3. Télécharger les modèles via le script dédié : python download_models.py.

Utilisation de l’Application

  1. Lancement : Exécuter python gui.py.
  2. Entrée des images :
    • Sélectionnez un Fichier unique ou un Dossier complet.
    • Ou utilisez le bouton « 📷 Démarrer le Scan » pour numériser directement une photo.
  3. Réglages (Barre latérale) :
    • Choisir le Style IA : Stable (naturel) ou Artistic (vibrant).
    • Configurer le scanner (DPI, Mode, Auto-cadrage).
  4. Retouche d’aperçu :
    • Dessinez un rectangle à la souris sur l’image pour un Recadrage manuel.
    • Utilisez les boutons ↺ -1° et +1° ↻ pour redresser l’image.
  5. Traitement : Cliquez sur « Coloriser » pour lancer le pipeline IA. Le résultat sera automatiquement enregistré dans output/colored.

4. Architecture et Maintenance

Pour faciliter la maintenance et l’évolution du projet, le code est segmenté comme suit :

  • gui.py : Cœur de l’application gérant l’interface, les événements utilisateur et le pilotage du scanner.
  • process_images.py : Pipeline d’exécution des modèles IA. C’est ici que sont gérés les chargements de Pytorch et les appels à DeOldify/Real-ESRGAN.
  • image_utils.py : Boîte à outils OpenCV. Contient les algorithmes de détection de contours (auto-crop) et de rotation intelligente.
  • gui_config.json : Stocke les préférences utilisateur (taille de fenêtre, scanner utilisé, derniers réglages).

Points de vigilance pour la maintenance :

  • Mémoire Vive (RAM) : Le traitement IA est gourmand. Le pipeline utilise un système de tuiles (fixes à 1000 pixels) pour éviter les plantages sur les GPU/CPU modestes.
  • Compatibilité Scanner : Le module WIA est spécifique à Windows. Pour un portage Linux/Mac, il faudra remplacer cette partie par une bibliothèque comme SANE.

5. Améliorations Possibles

  • Traitement GPU (CUDA) : Actuellement configuré par défaut sur CPU pour une compatibilité maximale, le passage au support CUDA accélérerait les traitements par 10.
  • Filtres Post-Traitement : Ajouter des curseurs de réglage manuel (Luminosité, Saturation, Température) après colorisation.
  • Export PDF : Pouvoir générer un album PDF à partir d’un dossier de photos restaurées.
  • Face Restoration Avancée : Intégrer GFPGAN ou CodeFormer pour une reconstruction des visages encore plus précise sur les photos très floues.

Source