Restauration d'Images Anciennes par Réseaux de Neurones : Guide Technique

Introduction à la Restauration d'Images par Deep Learning

Le projet Bringing Old Photos Back to Life, présenté lors de la conférence CVPR 2020, propose une approche basée sur l'apprentissage profond pour restaurer les photographies anciennes. Ce système est capable de corriger automatiquement les dégradations structurelles (rayures, déchirures) et non structurelles (décoloration, bruit) en utilisant des architectures de réseaux de neurones avancées.

Configuration de l'Environnement

Pour déployer localement cette solution, commencez par récupérer le code source et installer les dépendances Python requises :

git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git
cd Bringing-Old-Photos-Back-to-Life
pip install -r requirements.txt

Ensuite, téléchargez les modèles pré-entraînés nécessaires pour l'amélioration faciale et la restauration globale :

# Téléchargement des checkpoints pour l'amélioration des visages
cd Face_Enhancement/
wget https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/face_checkpoints.zip
unzip face_checkpoints.zip && rm face_checkpoints.zip
cd ..

# Téléchargement des checkpoints pour la restauration globale
cd Global/
wget https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/global_checkpoints.zip
unzip global_checkpoints.zip && rm global_checkpoints.zip
cd ..

Exécution et Modules Principaux

Le piepline de restauration peut être lancé via le script principal. Voici comment structurer les commandes en utilisant des variables d'environnement pour plus de fleixbilité :

# Définition des chemins et paramètres
INPUT_PATH="./samples/clean_photos"
OUTPUT_PATH="./results/restored"
DEVICE_ID=0

# Traitement des photos sans rayures
python run.py --input_folder "$INPUT_PATH" --output_folder "$OUTPUT_PATH" --GPU "$DEVICE_ID"

# Traitement des photos endommagées (avec rayures)
python run.py --input_folder "$INPUT_PATH" --output_folder "$OUTPUT_PATH" --GPU "$DEVICE_ID" --with_scratch

1. Détection et Correction des Rayures

Un algorithme dédié identifie les dommages physiques. Vous pouvez isoler cette étape via le module global :

cd Global/
python detection.py --test_path ./samples/damaged --output_dir ./results/masks

2. Restauration de la Qualité Globale

Le module de restauration globale utilise un réseau de translation de domaine pour traiter simultanément le bruit et la décoloration :

cd Global/
python test.py --Quality_restore --test_input ./samples/faded --outputs_dir ./results/global_restored

3. Amélioration des Visages

Un générateur progressif est employé dans le répertoire Face_Enhancement/ pour affiner spécifiquement les traits faciaux détectés.

Résolution des Problèmes Courants

  • Dépassement de mémoire GPU (OOM) : Le traitement par défaut est optimisé pour 256x256. Pour les images haute résolution, utilisez le paramètre --HR, réduisez la résolution d'entrée, ou passez en mode CPU avec --GPU -1.
  • Modèle de détection faciale manquant : Le module nécessite le modèle de points de repère de dlib. Téléchargez-le ainsi : ``` cd Face_Detection/ wget http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2 bzip2 -d shape_predictor_68_face_landmarks.dat.bz2 cd ..
  • Formats supportés : Les formats standards (JPG, PNG, BMP) sont acceptés, avec une préférence pour le PNG afin d'éviter les artefacts de compression.
  • Traitement par lots : Placez simplement toutes les images dans un répertoire source et pointez le paramètre --input_folder vers ce dossier.

Fonctionnalités Avancées

Interface Graphique (GUI)

Une interface graphique est disponible pour une utilisation interactive :

python GUI.py

Elle permet de charger une image, de lancer le processus de modification et de visualiser le résultat directement.

Entraînement de Modèles Personnalisés

Pour adapter le modèle à un nouveau domaine de dégradation, vous devez entraîner les réseaux VAE et de mappage :

cd Global/data/
python Create_Bigfile.py

# Entraînement des domaines A et B
python train_domain_A.py --use_v2_degradation --continue_train --training_dataset domain_A --name domainA_custom ...
python train_domain_B.py --continue_train --training_dataset domain_B --name domainB_custom ...

# Entraînement du réseau de mappage
python train_mapping.py --use_v2_degradation --training_dataset mapping --use_vae_which_epoch 200 ...

Optimisation des Performances

Pour maximiser l'efifcacité du pipeline :

  • Gestion de la mémoire : Utilisez --input_size resize_256 pour les grandes images et exploitez le multi-GPU via --GPU 0,1.
  • Accélération : Assurez-vous d'utiliser les dernières versions de PyTorch et CUDA, et automatisez le traitement par lots via des scripts shell ou Python.

Architecture Technique

Le code est structuré de manière modulaire :

  • Global/models/ : Contient les architectures pour la restauration globale.
  • Face_Enhancement/models/ : Dédié à l'amélioration des régions faciales.
  • Face_Detection/ : Outils pour la localisation des visages et des points clés.
  • Global/options/ : Gestion des hyperparamètres et configurations d'entraînement et de test.

Étiquettes: deep-learning image-restoration Computer-Vision PyTorch neural-networks

Publié le 12 juillet à 05h36