首页
/ 基于Docker部署Bringing-Old-Photos-Back-to-Life老照片修复项目

基于Docker部署Bringing-Old-Photos-Back-to-Life老照片修复项目

2025-07-06 01:16:31作者:韦蓉瑛

项目概述

Bringing-Old-Photos-Back-to-Life是一个由微软开发的老照片修复项目,它利用深度学习技术对老旧、破损的照片进行自动修复和增强。该项目能够处理多种照片退化问题,包括划痕、噪点、褪色等,并能显著提升照片质量。

Docker部署优势

使用Docker部署该项目具有以下优势:

  1. 环境隔离:避免与主机环境产生依赖冲突
  2. 可重复性:确保在不同机器上获得一致的运行结果
  3. 便捷性:简化复杂的依赖安装和环境配置过程
  4. GPU支持:直接利用NVIDIA GPU加速计算

Dockerfile解析

基础镜像选择

FROM nvidia/cuda:11.1-base-ubuntu20.04

选择基于CUDA 11.1的Ubuntu 20.04镜像,确保项目能够充分利用GPU加速。这个基础镜像已经包含了NVIDIA驱动和CUDA运行时环境。

系统依赖安装

RUN apt update && DEBIAN_FRONTEND=noninteractive apt install git bzip2 wget unzip python3-pip python3-dev cmake libgl1-mesa-dev python-is-python3 libgtk2.0-dev -yq

安装项目运行所需的各种系统依赖:

  • git:用于克隆代码仓库
  • bzip2/wget/unzip:用于下载和解压模型文件
  • python3-pip/python3-dev:Python开发环境
  • cmake:编译某些Python包所需
  • libgl1-mesa-dev/libgtk2.0-dev:图形界面相关依赖

项目代码和依赖模型

ADD . /app
WORKDIR /app

将当前目录下的项目代码复制到容器的/app目录,并设置为工作目录。

同步批归一化模块安装

RUN cd Face_Enhancement/models/networks/ &&\
  git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch &&\
  cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm . &&\
  cd ../../../

RUN cd Global/detection_models &&\
  git clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch &&\
  cp -rf Synchronized-BatchNorm-PyTorch/sync_batchnorm . &&\
  cd ../../

项目使用了同步批归一化(Synchronized Batch Normalization)技术,这在分布式训练中特别重要。这部分代码从原仓库克隆并复制到指定位置。

人脸检测模型下载

RUN 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 ../

下载dlib库使用的68点人脸特征点检测模型,这对于人脸增强环节至关重要。

预训练模型下载

RUN cd Face_Enhancement/ &&\
  wget https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Face_Enhancement/checkpoints.zip &&\
  unzip checkpoints.zip &&\
  cd ../ &&\
  cd Global/ &&\
  wget https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Global/checkpoints.zip &&\
  unzip checkpoints.zip &&\
  rm -f checkpoints.zip &&\
  cd ../

下载项目所需的两组预训练模型:

  1. 人脸增强模型
  2. 全局修复模型

这些模型是项目能够实现高质量修复效果的关键。

Python依赖安装

RUN pip3 install numpy
RUN pip3 install dlib
RUN pip3 install -r requirements.txt

安装Python依赖:

  • 首先单独安装numpy,因为它是许多其他包的基础依赖
  • 安装dlib,用于人脸检测
  • 安装requirements.txt中列出的所有其他依赖

SPADE模块安装

RUN git clone https://github.com/NVlabs/SPADE.git
RUN cd SPADE/ && pip3 install -r requirements.txt
RUN cd ..

SPADE(Spatially-Adaptive Normalization)是一种先进的图像生成技术,项目可能使用了相关技术或借鉴了其实现。

启动命令

CMD ["python3", "run.py"]

设置容器启动时默认执行的命令,即运行项目的run.py主程序。

构建和运行指南

  1. 构建Docker镜像:
docker build -t old-photo-restoration .
  1. 运行容器(假设要修复的照片在本地./input目录):
docker run --gpus all -v ./input:/app/input -v ./output:/app/output old-photo-restoration

参数说明:

  • --gpus all:启用GPU支持
  • -v ./input:/app/input:将本地input目录挂载到容器内
  • -v ./output:/app/output:将容器输出目录挂载到本地

技术要点总结

  1. 该项目结合了多种计算机视觉技术,包括人脸检测、图像修复和增强等
  2. 使用同步批归一化确保模型在分布式环境下的稳定性
  3. 依赖预训练模型实现高质量的修复效果
  4. Docker封装简化了复杂的依赖管理过程
  5. GPU加速显著提升了处理速度

通过这个Dockerfile,我们可以一键部署完整的老照片修复环境,无需手动处理各种复杂的依赖关系和环境配置问题。