De nombreuses personnes historiques n'ont été capturées que par des photos anciennes, fanées et blanches, qui sont déformées en raison des limites des premiers caméras et du passage du temps. Cet article simule le retour dans le temps avec une caméra moderne pour rephotographier des sujets célèbres. Contrairement aux filtres de restauration d'images conventionnels qui appliquent des opérations indépendantes telles que le débrotage, la colorisation et la superresolution, nous tirons parti du cadre Stylegan2 pour projeter de vieilles photos dans l'espace des photos de haute résolution modernes, réalisant tous ces effets dans un cadre unifié. Un défi unique avec cette approche consiste à conserver l'identité et la pose du sujet sur la photo originale, tout en rejetant les nombreux artefacts fréquemment observés sur des photos antiques de basse qualité. Nos comparaisons avec les filtres de restauration actuels de pointe montrent des améliorations significatives et des résultats convaincants pour une variété de personnes historiques importantes.
Rephotographie du voyage dans le temps
Xuan Luo, Xuaner Zhang, Paul Yoo, Ricardo Martin-Brualla, Jason Lawrence et Steven M. Seitz
Dans Siggraph Asia 2021.
Nous fournissons une démo facile à démarrer à l'aide de Google Colab! Le Colab vous permettra d'essayer notre méthode sur l'échantillon de photo d'Abraham Lincoln ou de vos propres photos à l'aide de GPU cloud sur Google Colab.
Ou vous pouvez exécuter notre méthode sur votre propre machine en suivant les instructions ci-dessous.
Tirez des forfaits tiers.
git submodule update --init --recursive
Installez les packages Python.
conda create --name rephotography python=3.8.5 conda activate rephotography conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch pip install -r requirements.txt
Exécutez notre méthode sur l'exemple de photo d'Abraham Lincoln.
Télécharger les modèles:
./scripts/download_checkpoints.sh
Courir:
./scripts/run.sh b "dataset/Abraham Lincoln_01.png" 0.75
Vous pouvez inspecter le processus d'optimisation par
tensorboard --logdir "log/Abraham Lincoln_01"
Vous pouvez trouver vos résultats comme ci-dessous.
results/ Abraham Lincoln_01/ # intermediate outputs for histogram matching and face parsing Abraham Lincoln_01_b.png # the input after matching the histogram of the sibling image Abraham Lincoln_01-b-G0.75-init(10,18)-s256-vgg1-vggface0.3-eye0.1-color1.0e+10-cx0.1(relu3_4,relu2_2,relu1_2)-NR5.0e+04-lr0.1_0.01-c32-wp(250,750)-init.png # the sibling image Abraham Lincoln_01-b-G0.75-init(10,18)-s256-vgg1-vggface0.3-eye0.1-color1.0e+10-cx0.1(relu3_4,relu2_2,relu1_2)-NR5.0e+04-lr0.1_0.01-c32-wp(250,750)-init.pt # the sibing latent codes and initialized noise maps Abraham Lincoln_01-b-G0.75-init(10,18)-s256-vgg1-vggface0.3-eye0.1-color1.0e+10-cx0.1(relu3_4,relu2_2,relu1_2)-NR5.0e+04-lr0.1_0.01-c32-wp(250,750).png # the output result Abraham Lincoln_01-b-G0.75-init(10,18)-s256-vgg1-vggface0.3-eye0.1-color1.0e+10-cx0.1(relu3_4,relu2_2,relu1_2)-NR5.0e+04-lr0.1_0.01-c32-wp(250,750).pt # the final optimized latent codes and noise maps Abraham Lincoln_01-b-G0.75-init(10,18)-s256-vgg1-vggface0.3-eye0.1-color1.0e+10-cx0.1(relu3_4,relu2_2,relu1_2)-NR5.0e+04-lr0.1_0.01-c32-wp(250,750)-rand.png # the result with the final latent codes but random noise maps
Cramez et alignez les régions de tête de vos images:
python -m tools.data.align_images <input_raw_image_dir> <aligned_image_dir>
Courir:
./scripts/run.sh <spectral_sensitivity> <input_image_path> <blur_radius>
Le spectral_sensitivity
peut être b
(sensible au bleu), gb
(orthochromatique) ou g
(panchromatique). Vous pouvez estimer grossièrement le spectral_sensitivity
de votre photo comme suit. Utilisez le modèle bleu-sensible pour les photos avant 1873, sélectionnez manuellement entre le bleu sensible au bleu et l'orthochromatique pour les images de 1873 à 1906 et parmi tous les modèles pour les photos prises par la suite.
Le blur_radius
est le rayon de flou gaussien estimé en pixels si le photot d'entrée est redimensionné à 1024x1024.
Chemin | Taille | Description |
---|---|---|
Ensemble de données sur le visage wiki historique.zip | 148 MB | Images |
Spectral_Sensibilité.json | 6 kb | Sensibilité spectrale ( b , gb ou g ). |
blur_radius.json | 6 kb | Rayon flou dans les pixels |
Les json
S sont des dictionnaires qui mappent les noms d'entrée à la sensibilité spectrale correspondante ou au rayon flou. En raison des contraintes de droits d'auteur, Historical Wiki Face Dataset.zip
contient toutes les images de l' ensemble de données historique du visage wiki qui ont été utilisés dans notre étude d'utilisateurs à l'exception de la photo de Mao Zedong. Vous pouvez le télécharger séparément et le recadrer comme ci-dessus.
Si vous trouvez notre code utile, veuillez envisager de citer notre article:
@article{Luo-Rephotography-2021, author = {Luo, Xuan and Zhang, Xuaner and Yoo, Paul and Martin-Brualla, Ricardo and Lawrence, Jason and Seitz, Steven M.}, title = {Time-Travel Rephotography}, journal = {ACM Transactions on Graphics (Proceedings of ACM SIGGRAPH Asia 2021)}, publisher = {ACM New York, NY, USA}, volume = {40}, number = {6}, articleno = {213}, doi = {https://doi.org/10.1145/3478513.3480485}, year = {2021}, month = {12} }
Ce travail est concédé sous licence MIT. Voir la licence pour plus de détails.
Les codes du modèle Stylegan2 proviennent de https://github.com/rosinality/stylegan2-pytorch.
Nous remercions Nick Brandreth d'avoir capturé les photos de la plaque sèche. Nous remercions Bo Zhang, Fan de Qingnan, Roy Or-El, Aleksander Holynski et Keunhong Park pour des conseils perspicaces. Nous remercions Xiaojie Feng pour ses contributions sur la démo Colab.