基于Docker部署Bringing-Old-Photos-Back-to-Life老照片修复项目
2025-07-06 01:16:31作者:韦蓉瑛
项目概述
Bringing-Old-Photos-Back-to-Life是一个由微软开发的老照片修复项目,它利用深度学习技术对老旧、破损的照片进行自动修复和增强。该项目能够处理多种照片退化问题,包括划痕、噪点、褪色等,并能显著提升照片质量。
Docker部署优势
使用Docker部署该项目具有以下优势:
- 环境隔离:避免与主机环境产生依赖冲突
- 可重复性:确保在不同机器上获得一致的运行结果
- 便捷性:简化复杂的依赖安装和环境配置过程
- 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 ../
下载项目所需的两组预训练模型:
- 人脸增强模型
- 全局修复模型
这些模型是项目能够实现高质量修复效果的关键。
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主程序。
构建和运行指南
- 构建Docker镜像:
docker build -t old-photo-restoration .
- 运行容器(假设要修复的照片在本地./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
:将容器输出目录挂载到本地
技术要点总结
- 该项目结合了多种计算机视觉技术,包括人脸检测、图像修复和增强等
- 使用同步批归一化确保模型在分布式环境下的稳定性
- 依赖预训练模型实现高质量的修复效果
- Docker封装简化了复杂的依赖管理过程
- GPU加速显著提升了处理速度
通过这个Dockerfile,我们可以一键部署完整的老照片修复环境,无需手动处理各种复杂的依赖关系和环境配置问题。