部署微软的Bringing-Old-Photos-Back-to-Life,实战和踩坑

2023-05-16

在Windows 10上部署 微软的 Bringing-Old-Photos-Back-to-Life

  • 关于 Bringing-Old-Photos-Back-to-Life
  • 部署的步骤
    • 1.下载源代码
    • 2.下载组件
      • 2.1 [下载PyTorch](https://github.com/vacancy/Synchronized-BatchNorm-PyTorch) (https://github.com/vacancy/Synchronized-BatchNorm-PyTorch)
      • 2.2 [下载地标检测预训练模型](http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2) (http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2)
      • 2.3 下载预先训练好的模型,把文件face _ Enhancement/check points . zip下面的/Face _ enhance,并把文件Global/checkpoints.zip下面的。
    • 3. 安装依赖项
    • 4. 部署过程中的坑
      • 4.1 python版本的坑
      • 4.2 dlib的坑
      • 4.3 '--use-pep517' 选项的坑
      • 4.4 源码中的坑
      • 4.5 另外可能的坑

关于 Bringing-Old-Photos-Back-to-Life

微软的 Bringing-Old-Photos-Back-to-Life 是一个开源的项目,它可以实现旧照片修复清晰和去除照片上的划痕。

部署的步骤

在GitHub上有Bringing-Old-Photos-Back-to-Life这个开源项目的部署步骤:
经过实验,在Windows10上部署的过程与在LINUX上部署的过程是类似的,本文主要记述笔者在Windows10上部署的和调试的过程和经验,记录所踩过的坑和出坑的方法。

1.下载源代码

从 Github上下载Bringing-Old-Photos-Back-to-Life开源项目的源码,并解压缩(假设解压缩在E:\Bringing-Old-Photos-Back-to-Life目录中)。

2.下载组件

2.1 下载PyTorch (https://github.com/vacancy/Synchronized-BatchNorm-PyTorch)

将这个项目的代码下载下来,解压缩,将 sync_batchnorm目录 拷贝到:E:\Bringing-Old-Photos-Back-to-Life\Global\detection_models 和 E:\Bringing-Old-Photos-Back-to-Life\Face_Enhancement\models\networks 两个目录下。

2.2 下载地标检测预训练模型 (http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2)

将下载的压缩包解压缩,拷贝到:E:\Bringing-Old-Photos-Back-to-Life\Face_Detection 目录下。

2.3 下载预先训练好的模型,把文件face _ Enhancement/check points . zip下面的/Face _ enhance,并把文件Global/checkpoints.zip下面的。

下载face_checkpoints.zip
( https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/face_checkpoints.zip),展开到E:\Bringing-Old-Photos-Back-to-Life\Face_Enhancement目录下。

下载global_checkpoints.zip
(https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life/releases/download/v1.0/global_checkpoints.zip),展开到E:\Bringing-Old-Photos-Back-to-Life\Global目录下。

3. 安装依赖项

在资源管理器中,打开E:\Bringing-Old-Photos-Back-to-Life目录,在地址栏中输入cmd并回车,直接进入命令符窗口,并转入到E:\Bringing-Old-Photos-Back-to-Life目录。然后输入以下命令,并回车运行:
pip install -r requirements.txt

4. 部署过程中的坑

4.1 python版本的坑

我先前用的python版本是3.11,多次尝试未成功后,我依次降低python的版本,直到python3.7.9,才终于安装成功,先前安装不成功的错误提示一直是 ERROR: CMake must be installed,即提示我cmake没有安装,而实际上我反复安装了若干次cmake。

4.2 dlib的坑

安装依赖项时,前面一切下载都正常,当Building wheels for collected packages: dlib 时,提示Building wheel for dlib (pyproject.toml) … error,然后安装进程中止。
在网上查看了很多文章,最后按照文章《Py之dlib:Python库之dlib库的简介、安装、使用方法详细攻略》( 作者 一个处女座的程序猿)中的建议,直接在dlib压缩包集合:Index of /files中下载了dblib,并安装(安装命令为:pip install dlib-19.17.99-cp37-cp37m-win_amd64.whl),然后重新运行 pip install -r requirements.txt,重新开始安装。

4.3 ‘–use-pep517’ 选项的坑

安装后最后,会出现一个黄色的提示信息:
DEPRECATION: easydict is being installed using the legacy ‘setup.py install’ method, because it does not have a ‘pyproject.toml’ and the ‘wheel’ package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the ‘–use-pep517’ option. Discussion can be found at https://github.com/pypa/pip/issues/8559
尝试在安装命令后面加上 --use-pep51 参数(即命令行为:pip install -r requirements.txt --use-pep51 ),终于成功完成了安装。

4.4 源码中的坑

终于安装上了,自然是要测试一下,于是,将需要处理的照片放到E:\目录中,然后运行了命令(),然而最后的成果照片似乎并没改善,看了下命令行窗口,发现有提示:
Running Stage 4: Blending
Traceback (most recent call last):
File “align_warp_back_multiple_dlib.py”, line 428, in
blended = blur_blending_cv2(warped_back, blended, backward_mask)
File “align_warp_back_multiple_dlib.py”, line 219, in blur_blending_cv2
mask *= 255.0
numpy.core._exceptions.UFuncTypeError: Cannot cast ufunc ‘multiply’ output from dtype(‘float64’) to dtype(‘uint8’) with casting rule ‘same_kind’

找到文件align_warp_back_multiple_dlib.py的428行,将代码 mask *= 255.0 改为:mask = mask * 255.0,清空output,再次运行,这一次output中的成果照片终于有了明显的改善。

4.5 另外可能的坑

我由于在先就看了 《让老照片重现光彩:Bringing Old Photos Back to Life(实战)》(作者 hs6605015 )一文,并按照其中所说,修改了源码,所以,如果没有修改而跑起来又出现了问题,可以参考一下此文。

修改几个文件

run.py,加入一行代码:

	os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"

.\global\detection_models\networks.py,修改第七、八行的
	from detection_models.sync_batchnorm import DataParallelWithCallback
	from detection_models.antialiasing import Downsample
为:
	from .sync_batchnorm.replicate import DataParallelWithCallback
	from .antialiasing import Downsample

.\Face_Enhancement\models\networks\normalization.py,修改第八行的
	from models.networks.sync_batchnorm import SynchronizedBatchNorm2d
为:
	from .sync_batchnorm import SynchronizedBatchNorm2d
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

部署微软的Bringing-Old-Photos-Back-to-Life,实战和踩坑 的相关文章

随机推荐

  • 多神经网络轨迹跟随控制(MATLAB实现)

    多神经网络轨迹跟随控制 xff08 MATLAB实现 xff09 本文是我基于自己的理解实现的多神经轨迹跟随控制 xff0c 可能不太正确 xff0c 但仍记录下来 此题目当我刚看到的时候一头雾水 xff0c 经过看PPT和自己实践貌似搞出
  • turtlebot3 Slam建图和导航仿真

    turtlebot3 Slam建图和导航仿真 使用RViz仿真Turtlebot3 RViz简介 RViz是ROS的三维可视化工具 它的主要目的是以三维方式显示ROS消息 xff0c 可以将数据进行可视化表达 例如无需编程即可表达激光测距仪
  • 【MATLAB APPdesigner ui设计实现软件动态页面启动 】(启动无标题栏)

    MATLAB APPdesigner实现软件动态页面启动 xff08 启动无标题栏 xff09 前言实现实现动态界面启动隐藏动态界面启动的标题栏 前言 最近需要验收利用MATLAB所实现的控制系统 xff0c 为了更好的展示 xff0c 因
  • 激光雷达方程推导与激光器参数指标

    激光雷达方程推导与激光器参数指标 激光雷达方程推导多种目标类型下的激光雷达方程激光器的参数指标 激光雷达方程推导 设定目标与激光雷达的距离为 R R R xff0c 发射激光束的发散角为
  • mpc模型预测控制原理详解

    mpc模型预测控制原理详解 前言mpc算法步骤mpc算法推导 前言 本文是对mpc模型预测控制学习的记录 xff0c 主要参照了DR CAN老师的视频进行学习 视频专栏链接 xff1a DR CAN老师mpc视频专栏 在这篇博客中博主也针对
  • C++基础回顾(上)

    C 43 43 基础回顾 xff08 上 xff09 目录 C 43 43 基础回顾 xff08 上 xff09 前言关键字和标识符运算符数据类型函数类 前言 C 43 43 之前学过一点 xff0c 但是很长时间都没用过 xff0c 翻出
  • 自适应控制专栏目录及介绍

    目录 自适应控制专栏目录及介绍第一篇 xff1a 具有不确定参数系统的自适应跟踪控制设计 ADi hhh的博客 CSDN博客 https blog csdn net qq 45830323 article details 129713051
  • 【五一创作】Qt quick基础1(包含基本元素Text Image Rectangle的使用)

    Qt quick基础1 xff08 包含基本元素Text Image Rectangle的使用 xff09 目录 Qt quick基础1 xff08 包含基本元素Text Image Rectangle的使用 xff09 前言qt中有直接设
  • 网站使用微信登录接口,所踩的坑...

    一 如何开通微信公众号 微信开发平台 授权认证 接口权限申请等等 xff0c 这些不在本文描述 xff0c 请参考官方资料 二 假设已顺利完成第一步的工作 xff0c 现在需要在自己开发的网站 xff08 PC端 移动端 xff0c 注意两
  • Qt quick基础2(包含平移旋转放缩以及qml控件大写开头啊)

    Qt quick基础2 xff08 包含平移旋转放缩以及qml控件大写开头啊 xff09 目录 Qt quick基础2 xff08 包含平移旋转放缩以及qml控件大写开头啊 xff09 前言简单的平移 旋转和放缩其他元素的一些基本使用qml
  • 虚幻引擎配置物体水面浮力的简便方法

    虚幻引擎配置物体水面浮力的简便方法 目录 虚幻引擎配置物体水面浮力的简便方法前言前期工作配置水面浮力针对一个立方体的水面浮力配置针对船3D模型的水面浮力配置 小结 前言 在使用虚幻引擎配置导入的3D模型时 xff0c 如何快速地将水面浮力配
  • 用栈实现回文字符串的判断

    用栈实现回文字符串的判断 栈是一种后进先出的数据结构 xff0c 它只能在一段进行插入和删除操作 例如一个字符串 34 12321 34 像这种 xff0c 无论正读反读均相同的字符序列 xff0c 就叫做回文字符串 首先 xff0c 我们
  • 安装diffuse 解决dpkg依赖问题

    安装diffuse报错 xff0c 缺少依赖 xff0c 安装地址 flynnsin 64 flynnsin Downloads span class token function sudo span dpkg span class tok
  • 软件工程整理

    软件工程总结 第一章1 软件2 软件工程3 软件工程环境4 三种编程范例 第二章1 软件生存周期2 软件生存周期的主要活动 3 软件过程 第三章1 结构化分析SA2 DFD xff08 数据流 xff09 图3 结构化设计SD xff08
  • TCP客户端增加多线程与TCP服务端增加多线程

    TCP客户端增加多线程 xff08 ps xff1a 仅有代码 xff0c 小伙伴们利用百度 xff0c 冲啊 xff01 xff01 xff01 xff09 span class token comment coding 61 utf 8
  • 梯度下降与矩阵分解

    1 梯度下降 梯度下降属于迭代法的一种 xff0c 所谓迭代法就是不断用变量的旧值得到新值的方法 在求解损失函数最小值的时候 xff0c 可以通过梯度下降法来一步步迭代求出最小化的损失函数和模型参数值 梯度 xff1a 对于一元函数来说 x
  • 求解gcd最大公约数的两种算法

    文章目录 1 更相减损术2 辗转相除法3 两种算法的比较 1 更相减损术 即 xff1a 辗转相减法 是由我国古代 九章算术 提出的一种求解最大公约数 Grand Central Dispatch 的算法 代码示例 xff1a span c
  • 【AWVS】python调AWVS接口 新建扫描并导出扫描报告(一)

    文章目录 前言一 先上完整python代码二 AWVS介绍三 准备工作1 获取 API KEY2 Header 设置1 接口介绍2 python代码 3 屏蔽警告 四 接口验证1 查看Targets扫描队列1 接口介绍2 python代码3
  • Echarts中国地图与世界地图实战

    文章目录 前言一 先上代码1 中国地图2 世界地图 二 图示1 中国地图2 世界地图 二 Echarts简介1 介绍2 实战流程1 引入echarts js2 定义一个图表容器DIV xff0c 定义id 61 xxx3 初始化echart
  • 部署微软的Bringing-Old-Photos-Back-to-Life,实战和踩坑

    在Windows 10上部署 微软的 Bringing Old Photos Back to Life 关于 Bringing Old Photos Back to Life部署的步骤1 下载源代码2 下载组件2 1 下载PyTorch h