当前位置: 首页 > news >正文

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肉鸽视频一节调节)

现在以工作为中心&#xff0c;其他可以不做硬性要求。周一到周四&#xff0c;晚上每天300行freex源码抄写&#xff0c;周六日每天1000行。每周3200行&#xff0c;每天完成该完成的即可&#xff0c;早上有时间时进行一小节独立游戏相关的视频教程作为调节即可&#xff0c;不影响…...

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 列的移动 在现代网页设计中&#xff0c;布局是构建用户界面的基石。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、表格处理程序示例 表格处理程序是一个二维的“细胞”网格&#xff0c;每个格子包含了一个数字或者字符串。专业的表格处理程序比如微软的Excel提供了执行数学运算的能力&#xff0c;比如计算格子中的值的和。表格处理程序示例无意挑战微软的市场地位&#xff0c;但是对于演示…...

es6中set和map的区别

在ES6&#xff08;ECMAScript 2015&#xff09;中&#xff0c;Set 和 Map 是两种新的集合类型&#xff0c;它们提供了更高级的数据结构来存储唯一值或键值对集合。尽管它们在功能上有些相似&#xff0c;但它们在用途和内部机制上存在一些关键区别。 1. 基本概念 Set&#xff1…...

高级实时通信:基于 Python 的 WebSocket 实现与异步推送解决方案

高级实时通信&#xff1a;基于 Python 的 WebSocket 实现与异步推送解决方案 目录 &#x1f7e2; WebSocket 协议概述&#x1f535; 在 FastAPI 中实现 WebSocket&#x1f7e3; Django Channels 实现异步实时通信&#x1f534; 使用 Redis 实现实时推送 &#x1f7e2; 1. WebS…...

大二上学期详细学习计划

本学习完成目标&#xff1a; 项目&#xff1a; 书籍&#xff1a;《mysql必知必会》《java核心技术卷》&#xff08;暂时&#xff09;加强JavaSE的学习&#xff0c;掌握Java核心Mysqlsql&#xff08;把牛客上的那50道sql语句题写完&#xff09;gitmaven完成springboot项目&…...

Kafka【十四】生产者发送消息时的消息分区策略

【1】分区策略 Kafka中Topic是对数据逻辑上的分类&#xff0c;而Partition才是数据真正存储的物理位置。所以在生产数据时&#xff0c;如果只是指定Topic的名称&#xff0c;其实Kafka是不知道将数据发送到哪一个Broker节点的。我们可以在构建数据传递Topic参数的同时&#xff…...

SQL优化:执行计划详细分析

视频讲解&#xff1a;SQL优化&#xff1a;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版本 激活路径&#xff1a;More tool windows->Build Variants->Active Build Variant->releaseAPK路径&#xff1a;Project\app\build\intermediates\apk\app-release.apk Debug版本 激活路径&#xff1a;More tool w…...

基于 SpringBoot 的实习管理系统

专业团队&#xff0c;咨询送免费开题报告&#xff0c;大家可以来留言。 摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越…...

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 要说这个东西&#xff0c;其实和我们刚刚讲到的Lombok相类似。其是由我们的源代码加上MapStruct经过编译后得到.class文件&#xff0c;文件中自动补全了代码。那么补全了什么代码&#xff1f;实现了什么功能&#xff1f; MapStruct的产生&…...

35天学习小结

距离上次纪念日&#xff0c;已经过去了35天咯 算算也有5周了&#xff0c;在这一个月里&#xff0c;收获的也挺多&#xff0c;在这个过程中认识的大佬也是越来越多了hh 学到的东西&#xff0c;其实也没有很多&#xff0c;这个暑假多多少少还是有遗憾的~ 第一周 学习了一些有…...

【iOS】UIViewController的生命周期

UIViewController的生命周期 文章目录 UIViewController的生命周期前言UIViewController的一个结构UIViewController的函数的执行顺序运行代码viewWillAppear && viewDidAppear多个视图控制器跳转时的生命周期pushpresent 小结 前言 之前对于有关于UIViewControlller的…...

ELK在Linux服务器下使用docker快速部署(超详细)

ELK是什么&#xff1f; 首先说说什么是ELK ELK 是一个开源的日志管理和分析平台&#xff0c;由三个主要组件组成&#xff1a; Elasticsearch&#xff1a;一个分布式搜索和分析引擎&#xff0c;能够快速存储、搜索和分析大量数据。它是 ELK 堆栈的核心&#xff0c;负责数据的…...

unity导入半透明webm + AE合成半透明视频

有些webm的文件导入unity后无法正常播报&#xff0c;踩坑好久才知道需要webm中的&#xff1a;VP8 标准 现在手上有几条mp4双通道的视频&#xff0c;当然unity中有插件是可以支持这种视频的&#xff0c;为了省事和代码洁癖&#xff0c;毅然决然要webm走到黑。 mp4导入AE合成半透…...

力扣: 四数相加II

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

径向基函数神经网络RBFNN案例实操

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

Java-数据结构-二叉树-习题(一) (✪ω✪)

文本目录&#xff1a; ❄️一、习题一(检查两颗树是否相同)&#xff1a; ▶ 思路&#xff1a; ▶ 代码&#xff1a; ❄️二、习题二(另一棵树的子树)&#xff1a; ▶ 思路&#xff1a; ▶ 代码&#xff1a; ❄️三、习题三(翻转二叉树)&#xff1a; ▶ 思路&#xff1a; ▶ 代…...

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进行格式…...

基于人工智能的自动驾驶系统项目教学指南

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

[Linux#49][UDP] 2w字详解 | socketaddr | 常用API | 实操:实现简易Udp传输

目录 套接字地址结构&#xff08;sockaddr&#xff09; 1.Socket API 2.sockaddr结构 3. sockaddr、sockaddr_in 和 sockaddr_un 的关系 sockaddr 结构体 sockaddr_in 结构体&#xff08;IPv4 套接字地址&#xff09; sockaddr_un 结构体&#xff08;Unix域套接字地址&a…...

期权组合策略有什么风险?期权组合策略是什么?

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

从Zotero6到Zotero7的数据迁移尝试?(有错勿喷,多多指教!)

从Zotero6到Zotero7的数据迁移尝试 0 前言 之前在主机上一直用的Zotero6&#xff08;实验室主机&#xff09;&#xff0c;最近发现在个人笔记本上看论文更频繁&#xff0c;尝试重新部署Zotero&#xff0c;才发现竟然更新了&#xff01;所以这里简单记录一下数据迁移过程&…...

快速排序(分治思想)

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

JAVA相关知识

JAVA基础知识 说一下对象创建的过程&#xff1f; 类加载检查&#xff1a;当Java虚拟机&#xff08;JVM&#xff09;遇到一个类的new指令时&#xff0c;它首先检查这个类是否已经被加载、链接和初始化。如果没有&#xff0c;JVM会通过类加载器&#xff08;ClassLoader&#xff…...