首页
/ 使用Ansible自动化部署Bringing-Old-Photos-Back-to-Life项目指南

使用Ansible自动化部署Bringing-Old-Photos-Back-to-Life项目指南

2025-07-06 01:20:33作者:钟日瑜

项目概述

Bringing-Old-Photos-Back-to-Life是一个由微软开发的基于深度学习的照片修复项目,能够自动修复老照片中的各种缺陷,包括划痕、褪色、模糊等问题。该项目结合了多种计算机视觉和深度学习技术,为老照片提供高质量的修复效果。

Ansible自动化部署方案

Ansible是一种强大的自动化运维工具,可以帮助我们快速、一致地部署复杂的软件系统。下面将详细介绍如何使用Ansible自动化部署Bringing-Old-Photos-Back-to-Life项目。

基础环境准备

部署前需要确保目标系统满足以下要求:

  • 操作系统:Ubuntu 18.04/20.04或Debian 10
  • 管理员权限(用于安装系统级软件包)

系统依赖安装

Ansible脚本首先会安装所有必要的系统依赖:

- name: install packages
  package:
    name:
      - python3
      - python3-pip
      - python3-venv
      - git
      - unzip
      - tar
      - lbzip2
      - build-essential
      - cmake
      - ffmpeg
      - libsm6
      - libxext6
      - libgl1-mesa-glx
    state: latest
  become: yes

这些依赖包括:

  • Python 3及相关工具:项目运行的基础环境
  • Git:用于克隆代码仓库
  • 压缩工具:用于处理下载的压缩文件
  • 构建工具:编译部分依赖项
  • 多媒体库:图像处理所需

项目代码获取

通过Git克隆项目主仓库:

- name: git clone repo
  git:
    repo: 'https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git'
    dest: Bringing-Old-Photos-Back-to-Life
    clone: yes

Python虚拟环境配置

项目使用Python虚拟环境隔离依赖:

- name: requirements setup
  pip:
    requirements: "~/Bringing-Old-Photos-Back-to-Life/requirements.txt"
    virtualenv: "~/Bringing-Old-Photos-Back-to-Life/.venv"
    virtualenv_command: /usr/bin/python3 -m venv .venv

同时补充安装一些必要的额外包:

- name: additional pip packages
  pip:
    name: 
        - setuptools 
        - wheel
        - scikit-build
    virtualenv: "~/Bringing-Old-Photos-Back-to-Life/.venv"

同步批归一化模块安装

项目依赖Synchronized-BatchNorm-PyTorch库,需要单独安装:

- name: git clone batchnorm-pytorch
  git:
    repo: 'https://github.com/vacancy/Synchronized-BatchNorm-PyTorch'
    dest: Synchronized-BatchNorm-PyTorch
    clone: yes

然后将相关模块复制到项目指定位置:

- name: copy sync_batchnorm to face_enhancement
  copy:
    src: Synchronized-BatchNorm-PyTorch/sync_batchnorm
    dest: Bringing-Old-Photos-Back-to-Life/Face_Enhancement/models/networks/
    remote_src: yes

- name: copy sync_batchnorm to global
  copy:
    src: Synchronized-BatchNorm-PyTorch/sync_batchnorm
    dest: Bringing-Old-Photos-Back-to-Life/Global/detection_models
    remote_src: yes

人脸检测模型准备

项目需要dlib的人脸特征点检测模型:

- name: check if shape_predictor_68_face_landmarks.dat
  stat:
    path: Bringing-Old-Photos-Back-to-Life/Face_Detection/shape_predictor_68_face_landmarks.dat
  register: p

- name: get shape_predictor_68_face_landmarks.dat.bz2
  get_url:
    url: http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2
    dest: Bringing-Old-Photos-Back-to-Life/Face_Detection/
  when: p.stat.exists == False

- name: unarchive shape_predictor_68_face_landmarks.dat.bz2
  shell: 'bzip2 -d Bringing-Old-Photos-Back-to-Life/Face_Detection/shape_predictor_68_face_landmarks.dat.bz2'
  when: p.stat.exists == False

预训练模型下载

项目需要下载两个预训练模型:

  1. 人脸增强模型:
- name: check if face_enhancement
  stat:
    path: Bringing-Old-Photos-Back-to-Life/Face_Enhancement/checkpoints/Setting_9_epoch_100/latest_net_G.pth
  register: fc

- name: unarchive Face_Enhancement/checkpoints.zip
  unarchive:
    src: https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Face_Enhancement/checkpoints.zip
    dest: Bringing-Old-Photos-Back-to-Life/Face_Enhancement/
    remote_src: yes
  when: fc.stat.exists == False
  1. 全局修复模型:
- name: check if global
  stat:
    path: Bringing-Old-Photos-Back-to-Life/Global/checkpoints/detection/FT_Epoch_latest.pt
  register: gc

- name: unarchive Global/checkpoints.zip
  unarchive:
    src: https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Global/checkpoints.zip
    dest: Bringing-Old-Photos-Back-to-Life/Global/
    remote_src: yes
  when: gc.stat.exists == False

部署后注意事项

部署完成后,在使用项目前需要激活Python虚拟环境:

source ~/Bringing-Old-Photos-Back-to-Life/.venv/bin/activate

技术要点解析

  1. 批归一化同步:项目使用Synchronized BatchNorm来确保在多GPU训练时批归一化层的统计信息能够正确同步。

  2. 模块化设计:项目分为全局修复和面部增强两个主要模块,分别处理不同类型的照片缺陷。

  3. 预训练模型:项目依赖预训练模型,这些模型已经在大规模数据集上训练完成,可以直接用于推理。

  4. 人脸特征点检测:使用dlib的68点人脸特征点检测器来精确定位面部区域,实现更精准的面部修复。

常见问题解决

  1. 依赖安装失败:确保系统已更新(sudo apt update && sudo apt upgrade)后再运行Ansible脚本。

  2. 模型下载缓慢:可以考虑手动下载模型文件并放到指定位置,跳过自动下载步骤。

  3. 虚拟环境问题:如果虚拟环境创建失败,检查Python3和venv模块是否已正确安装。

通过这套Ansible自动化部署方案,可以快速、一致地在多台机器上部署Bringing-Old-Photos-Back-to-Life项目,大大减少了手动配置的工作量和出错的可能性。