jantic/DeOldify部署(图片上色)附带Dockerfile和镜像
1. 克隆代码到DeOldify
git clone https://github.com/jantic/DeOldify.git DeOldify

DeOldify源码

2. 安装依赖
这里会安装python以及创建deoldify环境
cd DeOldify
conda env create -f environment.yml
(base) root@DESKTOP-1FOD6A8:~/DeOldify# conda env create -f environment.yml
Retrieving notices: ...working... Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)')': /pkgs/r/notices.jsonRetrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)')': /pkgs/r/notices.jsondone
Channels:- fastai- conda-forge- defaults- pytorch
Platform: linux-64
Collecting package metadata (repodata.json): - Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)')': /pkgs/main/linux-64/repodata.json.zst| Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)')': /fastai/linux-64/repodata.json.zst\ Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)')': /fastai/linux-64/repodata.json.zstdone
Solving environment: doneDownloading and Extracting Packages:
pytorch-1.11.0 |Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)')': /conda-forge/linux-64/mkl-2024.0.0-ha957f24_49657.conda2024.0.0 | 120.2 MB | | 0%
mysql-5.7.20 | 79.2 MB | | 0%
pytorch-1.11.0 | 1.20 GB | 1 | 0%Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)')': /conda-forge/linux-64/mkl-2024.0.0-ha957f24_49657.conda | 0%
mysql-5.7.20 | 79.2 MB | 4 | 0% pytorch-1.11.0 | 1.20 GB | ####################################################################################################9 | 100% cudatoolkit-11.5.2 | 566.5 MB | ##################################################################################################### | 100% mkl-2024.0.0 | 120.2 MB | ##################################################################################################### | 100% mysql-5.7.20 | 79.2 MB | ##################################################################################################### | 100% llvm-openmp-18.1.7 | 55.9 MB | ##################################################################################################### | 100% libllvm14-14.0.6 | 30.0 MB | ##################################################################################################### | 100% torchvision-0.12.0 | 27.6 MB | ##################################################################################################### | 100% python-3.10.14 | 24.3 MB | ##################################################################################################### | 100% scipy-1.14.1 | 16.1 MB | ##################################################################################################### | 100% pandas-2.2.2 | 12.4 MB | ##################################################################################################### | 100% icu-73.2 | 11.5 MB | ##################################################################################################### | 100% libopenvino-intel-cp | 10.4 MB | ##################################################################################################### | 100% ffmpeg-7.0.1 | 9.6 MB | ##################################################################################################### | 100% libclang13-14.0.6 | 8.8 MB | ##################################################################################################### | 100% libopenvino-intel-gp | 8.1 MB | ##################################################################################################### | 100% cython-blis-0.7.10 | 7.4 MB | ##################################################################################################### | 100% babel-2.14.0 | 7.3 MB | ##################################################################################################### | 100% jupyterlab-4.2.5 | 7.0 MB | ##################################################################################################### | 100% matplotlib-base-3.9. | 6.7 MB | ##################################################################################################### | 100% numpy-1.26.4 | 6.7 MB | ##################################################################################################### | 100% pyqt-5.15.4 | 6.1 MB | ##################################################################################################### | 100% torchaudio-0.11.0 | 5.3 MB | ##################################################################################################### | 100% spacy-3.7.5 | 5.2 MB | ##################################################################################################### | 100% libopenvino-2024.1.0 | 4.9 MB | ##################################################################################################### | 100% p11-kit-0.24.1 | 4.5 MB | ##################################################################################################### | 100% libcups-2.3.3 | 4.3 MB | ##################################################################################################### | 100% language-data-1.2.0 | 4.0 MB | ##################################################################################################### | 100% libglib-2.80.2 | 3.7 MB | ##################################################################################################### | 100% libstdcxx-14.1.0 | 3.7 MB | ##################################################################################################### | 100% x265-3.5 | 3.2 MB | ##################################################################################################### | 100% tk-8.6.13 | 3.2 MB | ##################################################################################################### | 100%
openssl-3.3.2 | 2.8 MB | ##################################################################################################### | 100% libprotobuf-4.25.3 | 2.7 MB | ##################################################################################################### | 100% gettext-tools-0.22.5 | 2.6 MB | ##################################################################################################### | 100% aom-3.9.1 | 2.6 MB | ##################################################################################################### | 100% ... (more hidden) ...
这里可能会有几个依赖会失败

失败了再次执行

直到全部依赖下载完成


3. conda 激活deoldify
conda activate deoldify

4. 下载模型
https://github.com/jantic/DeOldify

放在DeOldify/models目录下

5. 启动脚本
想要cpu执行可以修改下图位置为CPU,就算是GPU,没有GPU的情况下也会使用CPU执行,所以我没有修改
import argparse
from deoldify import device
from deoldify.device_id import DeviceId
from deoldify.visualize import *
import matplotlib.pyplot as plt
import torch
import warnings
import os# 设置命令行参数
parser = argparse.ArgumentParser(description="DeOldify Image Colorization")
parser.add_argument('--source_path', type=str, required=True, help="Path to the input image")
parser.add_argument('--render_factor', type=int, default=35, help="Render factor for the image colorizer (default: 35)")args = parser.parse_args()# 设置设备 (CPU 或 GPU0)
device.set(device=DeviceId.GPU0)# 设置样式和性能优化
plt.style.use('dark_background')
torch.backends.cudnn.benchmark = True# 忽略某些警告
warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")# 初始化颜色化工具
colorizer = get_image_colorizer(artistic=True)# 获取运行时参数
render_factor = args.render_factor
source_path = args.source_path# 动态设置 result_path,例如保存到 'output_images' 目录中
result_dir = 'output_images'
if not os.path.exists(result_dir):os.makedirs(result_dir)# 自动根据 source_path 生成输出文件路径
file_name = os.path.basename(source_path)
result_path = os.path.join(result_dir, file_name)# 显示颜色化处理后的图像并进行对比
colorizer.plot_transformed_image(path=source_path, render_factor=render_factor, compare=True)
- –source_path /mnt/c/Users/admin/Pictures/202003091903023858a.jpg
- 需要上色的图片路径
- –render_factor 35
render_factor决定了输入图像被缩小多少来处理颜色化,影响图像处理速度和生成的质量。- 较低的
render_factor速度快,但细节少;较高的render_factor细节更多,但可能速度慢且颜色可能不够自然。- 可以不传,默认35
python start.py --source_path /mnt/c/Users/admin/Pictures/202003091903023858a.jpg --render_factor 35
6. 启动问题

python start.py --source_path /mnt/c/Users/admin/Pictures/202003091903023858a.jpg --render_factor 35
需要安装libtiff5
sudo apt-get update
sudo apt-get install libtiff5
如果apt-get update如下

换源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo bash -c 'cat > /etc/apt/sources.list << EOF
deb http://mirrors.aliyun.com/ubuntu/ jammy main universe restricted multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main universe restricted multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main universe restricted multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main universe restricted multiverse
EOF'
sudo apt-get update
sudo apt-get upgrade

7. 启动
第一次启动会下载这个预处理模型,启动的时候下载失败,可以手动下载,然后放在对应文件目录下

Downloading: "https://download.pytorch.org/models/resnet34-b627a593.pth" to /root/.cache/torch/hub/checkpoints/resnet34-b627a593.pth
之后启动就不会再下载了

效果

8. docker 部署
8.1 已经部署好的镜像
bash版本: 启动后会直接进入容器,然后执行目录下的python start.py即可
此版本为deoldify:v1.0
docker run -it registry.cn-hangzhou.aliyuncs.com/zr-dev/deoldify:v1.0

容器启动时就会自动启动脚本,但是需要传入参数
- 此版本为deoldify:v2.0
- –source_path /workspace/DeOldify/test_images/202003091903023858a.jpg \
- 需要上色的图片路径
- 此文件的路径必须在输入目录下
- –render_factor 35
render_factor决定了输入图像被缩小多少来处理颜色化,影响图像处理速度和生成的质量。- 较低的
render_factor速度快,但细节少;较高的render_factor细节更多,但可能速度慢且颜色可能不够自然。- 可以不传,默认35
- -v $(pwd)/input_images:/workspace/DeOldify/test_images
- 输入目录挂载
- -v $(pwd)/output_images:/workspace/DeOldify/result_images
- 输出目录挂载
docker run registry.cn-hangzhou.aliyuncs.com/zr-dev/deoldify:v2.0 --source_path /workspace/DeOldify/resource_images/watermark.png --render_factor 35 -v $(pwd)/input_images:/workspace/DeOldify/test_images -v $(pwd)/output_images:/workspace/DeOldify/result_images

9. 自己构建镜像
如果我构建的镜像不符合读者的需求,可以改动Dockerfile自行构建
9.1 部署模型以及脚本

下载地址:链接:https://share.weiyun.com/lpsjQ5Pc 密码:7rfys7
9.2 Dockerfile
# 使用 Miniconda 基础镜像
FROM registry.cn-hangzhou.aliyuncs.com/zr-dev/miniconda3:v1.0# 设置工作目录
WORKDIR /home/ai# 将本地的 GFPGAN 文件夹复制到容器中
COPY ./DeOldify /workspace/DeOldify# 设置工作目录为 GFPGAN 文件夹
WORKDIR /workspace/DeOldify# 安装和相关依赖(CPU 版本)
RUN conda env update -n base -f environment.yml
# 将启动脚本复制到容器内
COPY ./start.py /workspace/DeOldify/start.py# 将预训练模型从本地复制到容器中
COPY ./ColorizeArtistic_gen.pth /workspace/DeOldify/models/ColorizeArtistic_gen.pth# 安装 libGL 和其他 OpenCV 所需的依赖
RUN apt-get update && apt-get install -y \libgl1-mesa-glx \libglib2.0-0 \libsm6 \libxrender1 \libxext6# 将本地下载的 resnet34 预训练模型复制到容器中
COPY ./resnet34-b627a593.pth /root/.cache/torch/hub/checkpoints/resnet34-b627a593.pth# 执行 Python 脚本
# ENTRYPOINT ["python", "start.py"]
# 使用 bash 作为容器的入口
ENTRYPOINT ["/bin/bash"]
注意处理完成的图片是result_images不在output_images

相关文章:
jantic/DeOldify部署(图片上色)附带Dockerfile和镜像
1. 克隆代码到DeOldify git clone https://github.com/jantic/DeOldify.git DeOldifyDeOldify源码 2. 安装依赖 这里会安装python以及创建deoldify环境 cd DeOldify conda env create -f environment.yml(base) rootDESKTOP-1FOD6A8:~/DeOldify# conda env create -f environm…...
2024年9月9日--9月15日(freex源码抄写+ue5肉鸽视频一节调节)
现在以工作为中心,其他可以不做硬性要求。周一到周四,晚上每天300行freex源码抄写,周六日每天1000行。每周3200行,每天完成该完成的即可,早上有时间时进行一小节独立游戏相关的视频教程作为调节即可,不影响…...
CLIP官方github代码详解
系列文章目录 文章目录 系列文章目录一、Usage1、conda install --yes -c pytorch pytorch1.7.1 torchvision cudatoolkit11.02、代码3、 二、1、2、3、 三、1、2、3、 四、1、2、3、 五、1、2、3、 六、1、2、3、 七、1、2、3、 八、1、2、3、 一、Usage 1、conda install --…...
ElementUI 布局——行与列的灵活运用
ElementUI 布局——行与列的灵活运用 一 . 使用 Layout 组件1.1 注册路由1.2 使用 Layout 组件 二 . 行属性2.1 栅格的间隔2.2 自定义元素标签 三 . 列属性3.1 列的偏移3.2 列的移动 在现代网页设计中,布局是构建用户界面的基石。Element UI 框架通过其强大的 <e…...
Docker快速部署Apache Guacamole
Docker快速部署Apache Guacamole ,实现远程访问 git clone "https://github.com/boschkundendienst/guacamole-docker-compose.git" cd guacamole-docker-compose ./prepare.sh docker-compose up -dhttps://IP地址:8443/ 用户名:guacadmin 密码:guacadmin docker …...
C++学习笔记----7、使用类与对象获得高性能(一)---- 书写类(1)
1、表格处理程序示例 表格处理程序是一个二维的“细胞”网格,每个格子包含了一个数字或者字符串。专业的表格处理程序比如微软的Excel提供了执行数学运算的能力,比如计算格子中的值的和。表格处理程序示例无意挑战微软的市场地位,但是对于演示…...
es6中set和map的区别
在ES6(ECMAScript 2015)中,Set 和 Map 是两种新的集合类型,它们提供了更高级的数据结构来存储唯一值或键值对集合。尽管它们在功能上有些相似,但它们在用途和内部机制上存在一些关键区别。 1. 基本概念 Set࿱…...
高级实时通信:基于 Python 的 WebSocket 实现与异步推送解决方案
高级实时通信:基于 Python 的 WebSocket 实现与异步推送解决方案 目录 🟢 WebSocket 协议概述🔵 在 FastAPI 中实现 WebSocket🟣 Django Channels 实现异步实时通信🔴 使用 Redis 实现实时推送 🟢 1. WebS…...
大二上学期详细学习计划
本学习完成目标: 项目: 书籍:《mysql必知必会》《java核心技术卷》(暂时)加强JavaSE的学习,掌握Java核心Mysqlsql(把牛客上的那50道sql语句题写完)gitmaven完成springboot项目&…...
Kafka【十四】生产者发送消息时的消息分区策略
【1】分区策略 Kafka中Topic是对数据逻辑上的分类,而Partition才是数据真正存储的物理位置。所以在生产数据时,如果只是指定Topic的名称,其实Kafka是不知道将数据发送到哪一个Broker节点的。我们可以在构建数据传递Topic参数的同时ÿ…...
SQL优化:执行计划详细分析
视频讲解:SQL优化:SQL执行计划详细分析_哔哩哔哩_bilibili 1.1 执行计划详解 id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1.1.1 ID 【概…...
Android Studio -> Android Studio 获取release模式和debug模式的APK
Android Studio上鼠标修改构建类型 Release版本 激活路径:More tool windows->Build Variants->Active Build Variant->releaseAPK路径:Project\app\build\intermediates\apk\app-release.apk Debug版本 激活路径:More tool w…...
基于 SpringBoot 的实习管理系统
专业团队,咨询送免费开题报告,大家可以来留言。 摘 要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,实习管理也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越…...
vmware workstation 17 linux版
链接: https://pan.baidu.com/s/1F3kpNEi_2GZW0FHUO-8p-g?pwd6666 提取码: 6666 1 先安装虚拟机 不管什么错误 先安装vmware workstation 17 2 编译 覆盖安装vmware-host-modules-workstation-17.5.1 只需这样就可以 # sudo apt install dkms build-essential bc iw…...
Windows环境本地部署Oracle 19c及卸载实操手册
前言: 一直在做其他测试,貌似都忘了Windows环境oracle 19c的部署,这是一个很早很早的安装记录了,放上来做个备录给到大家参考。 Oracle 19c:进一步增强了自动化功能,并提供了更好的性能和安全性。这个版本在自动化、性能和安全性方面进行了重大改进,以满足现代企业对数…...
MapStruct介绍
一、MapStruct 1.1何为MapStruct 要说这个东西,其实和我们刚刚讲到的Lombok相类似。其是由我们的源代码加上MapStruct经过编译后得到.class文件,文件中自动补全了代码。那么补全了什么代码?实现了什么功能? MapStruct的产生&…...
35天学习小结
距离上次纪念日,已经过去了35天咯 算算也有5周了,在这一个月里,收获的也挺多,在这个过程中认识的大佬也是越来越多了hh 学到的东西,其实也没有很多,这个暑假多多少少还是有遗憾的~ 第一周 学习了一些有…...
【iOS】UIViewController的生命周期
UIViewController的生命周期 文章目录 UIViewController的生命周期前言UIViewController的一个结构UIViewController的函数的执行顺序运行代码viewWillAppear && viewDidAppear多个视图控制器跳转时的生命周期pushpresent 小结 前言 之前对于有关于UIViewControlller的…...
ELK在Linux服务器下使用docker快速部署(超详细)
ELK是什么? 首先说说什么是ELK ELK 是一个开源的日志管理和分析平台,由三个主要组件组成: Elasticsearch:一个分布式搜索和分析引擎,能够快速存储、搜索和分析大量数据。它是 ELK 堆栈的核心,负责数据的…...
unity导入半透明webm + AE合成半透明视频
有些webm的文件导入unity后无法正常播报,踩坑好久才知道需要webm中的:VP8 标准 现在手上有几条mp4双通道的视频,当然unity中有插件是可以支持这种视频的,为了省事和代码洁癖,毅然决然要webm走到黑。 mp4导入AE合成半透…...
OpenClaw备份策略:Qwen3.5-9B重要数据自动同步到私有云盘
OpenClaw备份策略:Qwen3.5-9B重要数据自动同步到私有云盘 1. 为什么需要自动化备份方案 作为一个经常需要处理大量文档和代码的技术写作者,我经历过太多次因为系统崩溃或误操作导致工作成果丢失的惨痛教训。传统的备份方案要么需要手动操作(…...
Kubernetes集群的搭建与DevOps实践(下)- 部署实践篇
需求清单: 100张数据表要迁移(还要支持后续动态新增) 双链路同步:MySQL到MySQL、MongoDB到PostgreSQL 不能写死配置,要能灵活扩展 工期不到1个月 技术约束: 源环境(塔外)和目标环境&…...
LeetCode知识点总结 - 524
LeetCode 524. Longest Word in Dictionary through Deleting考点难度ArrayMedium题目 Given a string s and a string array dictionary, return the longest string in the dictionary that can be formed by deleting some of the given string characters. If there is mor…...
2026年家用投影仪品牌怎么选?聚焦画质准度的工程师推荐
2026年高端家用投影仪哪个品牌最好?基于评分卡模型的权威品牌排行备选标题:2026年高端家用投影仪哪个品牌最好?四大品牌量化评分终极排行从色彩科学到口碑:2026年高端家用投影仪品牌深度评测榜预算2万到5万:2026年明基…...
ubuntu安装openclaw接入智谱大模型和微信QQ通道配置
前置系统准备 虚拟机安装ubuntu 24.04.3 LTS server版 无需GUI 智谱api注册 注册方式如下 智谱AI 国内版 https://open.bigmodel.cn/ 也可以用我的带邀请 https://www.bigmodel.cn/invite?icodeK2pjkdweVsRYJySj5DADo0jPr3uHog9F4g5tjuOUqno%3D添加apikey https://www.bigm…...
Mod5实战:从零构建大气辐射传输模拟与辐照度计算全流程
1. 从零开始:为什么需要大气辐射传输模拟? 第一次接触大气辐射传输模拟的朋友可能会问:这玩意儿到底有什么用?简单来说,就像给地球大气层做CT扫描。我在做光伏电站选址评估时,就深刻体会到它的价值——通过…...
PyTorch训练二分类模型时,你的损失函数为什么突然变成NaN了?排查BCELoss的5个坑
PyTorch训练二分类模型时,你的损失函数为什么突然变成NaN了?排查BCELoss的5个坑 深夜的调试台前,咖啡杯早已见底,屏幕上那个刺眼的"nan"却依然顽固地停留在损失值的位置。这不是第一次,也不会是最后一次——…...
3大核心功能打造专业级开源服装设计解决方案
3大核心功能打造专业级开源服装设计解决方案 【免费下载链接】Seamly2D Open source patternmaking software to democratize fashion. 项目地址: https://gitcode.com/gh_mirrors/se/Seamly2D Seamly2D作为一款开源服装制版软件,通过参数化设计、精确测量管…...
计算机毕业设计springboot鲜花在线商城 基于SpringBoot的园艺花卉网络销售系统 基于Java Web的线上花店订购管理平台
计算机毕业设计springboot鲜花在线商城911yt9 (配套有源码 程序 mysql数据库 论文)本套源码可以先看具体功能演示视频领取,文末有联xi 可分享近年来,互联网技术的迅猛发展和智能终端设备的全面普及,为传统零售行业带来…...
解决企业知识孤岛挑战:Outline多平台文档迁移架构与技术实现方案
解决企业知识孤岛挑战:Outline多平台文档迁移架构与技术实现方案 【免费下载链接】outline Outline 是一个基于 React 和 Node.js 打造的快速、协作式团队知识库。它可以让团队方便地存储和管理知识信息。你可以直接使用其托管版本,也可以自己运行或参与…...

