jantic/DeOldify部署(图片上色)附带Dockerfile和镜像

news2025/1/12 4:46:05

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.json

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)')': /pkgs/r/notices.json

done
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.zst

done
Solving environment: done

Downloading 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2131246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java开发安全及防护

目录 一、开发安全 二、XSS介绍及防范措施 2.1何为XSS 2.2XSS分类 2.3常用方法 三、SQL注入介绍及防范措施 3.1何为SQL注入 3.2常用方法 四、重放介绍及防范措施 4.1何为重放 4.2常用方法 一、开发安全 在学习安全之前&#xff0c;我们首先学习漏洞&#xff0c;知道漏…

JavaScript控制语句和函数的使用

文章目录 前言一、控制语句 1.if条件语句2.switch多分支语句3.for循环语句4.while循环语句5.do...while循环语句6.break 与 continue 关键字二、函数 1.函数的定义2.函数的调用总结 前言 JavaScript 的控制语句和函数的使用&#xff0c;基本上同理于 Java。该篇文章主要展示如何…

力扣之1783.大满贯数量

文章目录 1. 1783.大满贯数量1.1 题干1.2 建表1.3 题解1.4 结果截图 1. 1783.大满贯数量 1.1 题干 表&#xff1a;Players ----------------------- | Column Name | Type | ----------------------- | player_id | int | | player_name | varchar | ----------------------…

深度学习实战89-基于改造后的长短期记忆网络LSTM 的猪肉价格预测模型研究

大家好,我是微学AI,今天给大家介绍一下深度学习实战89-基于改造后的长短期记忆网络LSTM 的猪肉价格预测模型研究。本文围绕基于改造后的长短期记忆网络 LSTM 的猪肉价格预测模型展开研究。首先介绍项目背景,阐述进行猪肉价格预测的重要性。接着详细讲解改造后的 LSTM 模型原…

LibSVM介绍及使用

介绍 LibSVM 是一个广泛使用的开源库&#xff0c;用于支持向量机&#xff08;SVM&#xff09;的实现。它由台湾大学的 Chih-Chung Chang 和 Chih-Jen Lin 开发。LibSVM 提供了一种简单易用的接口&#xff0c;支持多种 SVM 变体&#xff0c;包括分类、回归和分布估计。以下是一些…

【数据库】MySQL-基础篇-事务

专栏文章索引&#xff1a;数据库 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、事务简介 二、事务操作 1.未控制事务 1.1 测试正常情况 1.2 测试异常情况 2.控制事务一 1.1 查看/设置事务提交方式 1.2 提交事务 1.3 回滚事务 3.控制事务二 1.1 开启事…

C++ namespace(域)

个人主页&#xff1a;Jason_from_China-CSDN博客 所属栏目&#xff1a;C系统性学习_Jason_from_China的博客-CSDN博客 namespace的价值 避免命名冲突&#xff1a;在大型项目或使用多个库的情况下&#xff0c;不同部分可能会定义相同名称的实体&#xff08;如变量、函数、类等&a…

fpga系列 HDL:简化的FIFO实现

CODE 下面是一个简化的FIFO实现示例&#xff0c;基于Verilog HDL&#xff1a; module fifo (input wire clk, // 时钟信号input wire reset, // 异步复位信号input wire wr_en, // 写使能信号input wire rd_en, // 读使能…

CSS中的位置定位总结

文章目录 静态定位相对定位绝对定位固定定位 静态定位 静态定位(position:static)/默认的文档流布局 块级元素按照书写顺序从上往下依次排列行内/行内块元素按照书写顺序从左到右依次排列&#xff0c;一行放不下才换行文档流中的元素都是紧密排布的&#xff0c;没有大的空隙&…

【机器学习】9 ——最大熵模型的直观理解

系列文章目录 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前奏例子硬币垃圾邮件代码 前奏 【机器学习】6 ——最大熵模型 例子 硬币 假设我们有一枚硬币&#xff0c;可能是公平的&#xff0c;…

哪些软件可以监控电脑屏幕?四款优秀的屏幕电脑监控软件

你是否曾好奇&#xff0c;员工们在电脑前的忙碌究竟是在提高公司业绩&#xff0c;还是在成为“网上冲浪”高手&#xff1f; 或者&#xff0c;作为家长&#xff0c;你是否想知道孩子们的学习状态是如火如荼&#xff0c;还是在和游戏“斗智斗勇”&#xff1f;不管是办公还是家庭…

图纸加密软件哪个最好用?2024年好用的6款图纸加密软件分享!好用不踩雷!

某知名设计公司的年度发布会上&#xff0c;管理层突然被一个坏消息打断——公司的一份核心图纸被泄露到互联网上&#xff0c;导致重要的合作项目搁浅&#xff0c;直接损失数百万。 这样的事件不是个例&#xff0c;为此&#xff0c;很多企业意识打破图纸加密对保护企业知识产权和…

机械设计基础知识---材料硬度

一、定义 硬度&#xff0c;物理学专业术语&#xff0c;材料局部抵抗硬物压入其表面的能力称为硬度。固体对外界物体入侵的局部抵抗能力&#xff0c;是比较各种材料软硬的指标。由于规定了不同的测试方法&#xff0c;所以有不同的硬度标准。各种硬度标准的力学含义不同&#xf…

业务资源管理模式语言13

解决方案&#xff1a; 创建一个与“Resource”类相关的“Resource Delivery”类来控制资源交付的确认过程。因为交货是与交易相关的&#xff0c;“Resource”类与“Resource Delivery”类是“1 to 1”关系。如果你采用了子模式“Resource Measurement”或者采用了“ItemizeThe…

动手学深度学习(pytorch土堆)-04torchvision中数据集的使用

CIFAR10 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成&#xff0c;每个类有 6000 张图像。有 50000 张训练图像和 10000 张测试图像。 数据集分为 5 个训练批次和 1 个测试批次&#xff0c;每个批次有 10000 张图像。测试批次包含每个类中随机选择的 1000 张图像…

Unity 给模型贴上照片

Unity将真实世界的照片贴图到模型上 原因 模拟仿真&#xff0c;直接使用照片肯定是效果最好的&#xff0c;省下做材质了 直接拖动即可 导入图片到Unity中将图片修改为Sprite模式直接将图片拖动到Scene面板的物体上即可 注意&#xff1a;是将图片拖动到Scene面板的物体上&a…

【Ubuntu】安装常用软件包

安装java 直接输入java&#xff0c;如果没有安装的话会提醒你输入命令安装&#xff0c;类似 Command java not found, but can be installed with: sudo apt install jdkxxxxxxxxxxxxxx然后选一个版本安装就好&#xff0c;我这里选的jdk17,安装完确认一下 ubuntuVM-4-13-ubu…

【深度学习】注意力机制介绍,了解什么是注意力计算规则以及常见的计算规则,知道注意力机制的工作流程

1注意力机制介绍 1.1 注意力概念 我们观察事物时&#xff0c;之所以能够快速判断一种事物(当然允许判断是错误的), 是因为我们大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断&#xff0c;而并非是从头到尾的观察一遍事物后&#xff0c;才能有判断结果. 正是基于…

动物检测系统源码分享

动物检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

el-tree父子不互相关联时,手动实现全选、反选、子级全选、清空功能

el-tree父子不互相关联时&#xff0c;手动实现全选、反选、子级全选、清空功能 1、功能实现图示 2、实现思路 当属性check-strictly为true时&#xff0c;父子节点不互相关联&#xff0c;如果需要全部选中或选择某一节点下的全部节点就必须手动选择每个节点&#xff0c;十分麻…