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合成半透…...

力扣: 四数相加II
文章目录 需求代码结尾 需求 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1: 输入…...

径向基函数神经网络RBFNN案例实操
简介 (来自ChatGPT的介绍,如有更正建议请指出) 径向基函数神经网络(Radial Basis Function Neural Network, RBFNN)是一种特殊的前馈神经网络,其结构和特点与其他常见的神经网络有所不同,主要表现在以下几个方面: 网络结构三层结构:RBF神经网络通常由三层组成:输入层…...

Java-数据结构-二叉树-习题(一) (✪ω✪)
文本目录: ❄️一、习题一(检查两颗树是否相同): ▶ 思路: ▶ 代码: ❄️二、习题二(另一棵树的子树): ▶ 思路: ▶ 代码: ❄️三、习题三(翻转二叉树): ▶ 思路: ▶ 代…...

js 时间戳转日期格式
timestampToDate(obj.project_time), import moment from “moment”; const timestampToDate (timestamp: any) > { const date new Date(timestamp * 1000); const newDate moment(date).format(“YYYY-MM-DD”); return newDate; // 使用Intl.DateTimeFormat进行格式…...

基于人工智能的自动驾驶系统项目教学指南
自动驾驶系统是人工智能的一个核心应用领域,涉及多个学科的交叉:从计算机视觉、深度学习、传感器融合到控制系统,自动驾驶项目可以提供高度的挑战性和实践意义。在这篇文章中,我们将构建一个基于深度学习的自动驾驶系统的简化版本…...

[Linux#49][UDP] 2w字详解 | socketaddr | 常用API | 实操:实现简易Udp传输
目录 套接字地址结构(sockaddr) 1.Socket API 2.sockaddr结构 3. sockaddr、sockaddr_in 和 sockaddr_un 的关系 sockaddr 结构体 sockaddr_in 结构体(IPv4 套接字地址) sockaddr_un 结构体(Unix域套接字地址&a…...

期权组合策略有什么风险?期权组合策略是什么?
今天期权懂带你了解期权组合策略有什么风险?期权组合策略是什么?期权组合策略是通过结合不同期权合约(如看涨期权和看跌期权),以及标的资产(如股票)来实现特定投资目标的策略。 期权组合策略市…...

从Zotero6到Zotero7的数据迁移尝试?(有错勿喷,多多指教!)
从Zotero6到Zotero7的数据迁移尝试 0 前言 之前在主机上一直用的Zotero6(实验室主机),最近发现在个人笔记本上看论文更频繁,尝试重新部署Zotero,才发现竟然更新了!所以这里简单记录一下数据迁移过程&…...

快速排序(分治思想)
什么是快速排序 快速排序(Quick Sort)是一种广泛使用的高效排序算法,由计算机科学家托尼霍尔在1960年提出。它采用分治法(Divide and Conquer)策略,将一个大数组分为两个小数组,然后递归地对这两…...

JAVA相关知识
JAVA基础知识 说一下对象创建的过程? 类加载检查:当Java虚拟机(JVM)遇到一个类的new指令时,它首先检查这个类是否已经被加载、链接和初始化。如果没有,JVM会通过类加载器(ClassLoaderÿ…...