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

克隆代码到DeOldify

git clone https://github.com/jantic/DeOldify.git DeOldify

DeOldify源码

安装依赖

这里会安装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) ...

这里可能会有几个依赖会失败

失败了再次执行

直到全部依赖下载完成

conda 激活deoldify

conda activate deoldify

下载模型

https://github.com/jantic/DeOldify

放在DeOldify/models目录下

启动脚本

想要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

启动问题

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

启动

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

Downloading: "https://download.pytorch.org/models/resnet34-b627a593.pth" to /root/.cache/torch/hub/checkpoints/resnet34-b627a593.pth

之后启动就不会再下载了

效果

docker 部署

8.1 已经部署好的镜像

bash版本: 启动后会直接进入容器,然后执行目录下的python start.py即可

docker run -it registry.cn-hangzhou.aliyuncs.com/zr-dev/deoldify:v1.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 \
    --source_path /workspace/DeOldify/test_images/202003091903023858a.jpg \
    --render_factor 35 \
    -v $(pwd)/input_images:/workspace/DeOldify/test_images \
    -v $(pwd)/output_images:/workspace/DeOldify/result_images \
    registry.cn-hangzhou.aliyuncs.com/zr-dev/deoldify:v2.0 

自己构建镜像

如果我构建的镜像不符合读者的需求,可以改动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

# 使用 bash -c 激活环境并执行 Python 脚本
# ENTRYPOINT ["bash", "-c", "python start.py"]
# 使用 bash 作为容器的入口
ENTRYPOINT ["/bin/bash"]

注意处理完成的图片是result_images不在output_images

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL递归查询

一、为什么要使用MySQL递归查询 在很多场景下有树形表需要去遍历&#xff0c;若通过编程语言去递归遍历树将多次进行与数据库的交互操作&#xff0c;相当于100个葡萄去楼下超市买100次&#xff0c;在路上多走了99次浪费了大量时间&#xff0c;肯定不如一次买100葡萄省事。所以与…

景联文科技:专业数据标注公司,推动AI技术革新

数据标注作为AI技术发展的重要支撑&#xff0c;对于训练高质量的机器学习模型以及推动应用领域的创新具有不可替代的作用。 景联文科技作为专业的数据标注公司&#xff0c;致力于提供专业的数据标注服务&#xff0c;帮助客户解决AI链条中的数据处理难题&#xff0c;共同推动人工…

2024霸王餐小程序cps,h5公众号小程序开源版系统搭建开发,外卖霸王餐小程序系统源码

目录 前言&#xff1a; 一、霸王餐小程序的操作是怎么样的&#xff1f; 二、霸王餐系统后台 三、怎么搭建部署? 前言&#xff1a; 霸王餐项目基于美团和饿了么平台开发的小程序。 一、霸王餐小程序的操作是怎么样的&#xff1f; 1、进入小程序后选择自己要下单的店铺&am…

RTMP播放器延迟最低可以做到多少?

技术背景 RTMP播放器的延迟可以受到多种因素的影响&#xff0c;包括网络状况、推流设置、播放器配置以及CDN分发等。因此&#xff0c;RTMP播放器的延迟并不是一个固定的数值&#xff0c;而是可以在一定范围内变化的。 正常情况下&#xff0c;网上大多看到的&#xff0c;针对R…

华为手机找不到wifi调试?不急,没有wifi调试一样可以进行局域网模式调试

最近小黄在使用uniapp启动无线调试的时候突然发现华为的手机突然找不到wifi调试了&#xff0c;那么我们怎么进行无线调试呢&#xff1f; 其实他只是找不到开关而已&#xff0c;正常使用就行。 1.使用数据线连接手机。 打开cmd命令行执行&#xff1a;adb tcpip 5555 2.再执行ad…

论文120:Giga-SSL: Self-supervised learning for gigapixel images (2023, CVPR, 开源)

文章目录 1 要点2 方法2.1 算法设计2.2 设计选择 1 要点 题目&#xff1a;用于千兆像素图像的自监督学习 (Giga-SSL: Self-Supervised Learning for Gigapixel Images) 代码&#xff1a;https://github.com/trislaz/gigassl 研究目的&#xff1a; 现有的WSI分类方法依赖于有…

云计算之大数据(上)

目录 一、Elasticsearch 1.1 产品组件 1.1.1 X-Pack 1.1.2 Beats数据采集中心 1.1.3 Logstash 1.1.4 Kibana 1.2 架构特性 1.2.1 性能 1.2.2 安全性 1.2.3 可用性 1.2.4 可扩展性 1.2.5 可维护性 1.2.6 国际化 1.3 综合检索分析 1.4 全观测 1.5 大数据检索加速…

PAT甲级-1029 Median

题目 题目大意 给定两个递增序列&#xff0c;求这两个序列合并为一个递增序列后的中位数。 思路 直接用一个数组接收两个数组的输入&#xff0c;然后用sort()暴力求解&#xff0c;也可以过&#xff0c;但是时间复杂度较高。 更好的方法是双指针法&#xff0c;两个数组各一个…

在线plotly绘制动态旭日图,展示复杂数据层次结构

探索数据的层次之美&#xff1a;旭日图&#xff0c;以环环相扣的视觉效果&#xff0c;清晰展现数据的层级关系。搭配Plotly的动态可视化技术&#xff0c;不仅让数据层次一目了然&#xff0c;更通过交互式操作&#xff0c;让用户轻松探索每个层级的详细信息&#xff0c;享受数据…

解决移动端1px 边框优化的8个方法

前言 您是否注意到 1px 边框在移动设备上有时会显得比预期的要粗&#xff1f;这种不一致源于移动屏幕的像素密度不同。 在 Web 开发中&#xff0c;我们使用 CSS 来设置页面样式。但是&#xff0c;CSS 中的 1px 并不总是转换为设备上的物理 1px。这种差异就是我们的“1px 边框…

如何在网上找客户资源

在网上寻找客户资源可以通过多种渠道和方法来实现&#xff0c;这些方法结合不同的工具和平台&#xff0c;可以帮助你快速定位目标客户。以下是一些常见且有效的途径&#xff1a; 1. 利用搜索引擎 使用搜索引擎&#xff08;如百度、Google&#xff09;通过关键词搜索目标客户或…

JAVA一键开启缘分之旅红娘相亲交友系统小程序源码

一键开启缘分之旅 —— 红娘相亲交友系统 &#x1f496; 初遇心动&#xff0c;一键启程 在这个快节奏的时代&#xff0c;找到那个对的人似乎成了一种奢侈。但别担心&#xff0c;有了“红娘相亲交友系统”&#xff0c;你的缘分之旅只需一键即可开启&#xff01;无需复杂的注册流…

张雪峰:物联网行业迎高光时刻!如何选择?我们诚聘销售工程师!

作为一间10多年的物联网公司&#xff0c;各位求职人士可以看看我们其中一个招聘要求&#xff0c;和自己需求结合分析分析&#xff0c;希望对你们有所帮助。 【公司实力底蕴】 盈电智控物联网科技&#xff08;广东&#xff09;有限公司&#xff0c;2024年7月成立&#xff0c;是…

git pull之后发现项目错误,如何回到之前的版本方法

目录 首先我们打开小程序的cmd的黑窗口&#xff0c;git reflog查看之前的版本 之后再git reset --hard main{1} 我这个就已经返回了之前的6daaa2e的版本了 首先我们打开小程序的cmd的黑窗口&#xff0c;git reflog查看之前的版本 之后再git reset --hard main{1} 我这个就已…

深度学习的发展历程

深度学习的起源 在机器学习中&#xff0c;我们经常使用两种方式来表示特征&#xff1a;局部表示&#xff08;Local Representation&#xff09;和分布式表示&#xff08;Distributed Representation&#xff09;。以颜色表示为例&#xff0c;见下图&#xff1a; 要学习到一种好…

自动驾驶ADAS算法--使用MATLBA和UE4生成测试视频

原文参考&#xff1a;金书世界 环境搭建参考&#xff1a;用MATLAB2020b和虚拟引擎&#xff08;Unreal Engine&#xff09;联合仿真输出AVM全景测试视频----Matlab环境搭建 matlab参考&#xff1a; https://ww2.mathworks.cn/help/driving/ug/simulate-a-simple-driving-sce…

分库分表核心理念

文章目录 分库&#xff0c;分表&#xff0c;分库分表什么时候分库&#xff1f;什么时候分表&#xff1f;什么时候既分库又分表&#xff1f;横向拆分 & 纵向拆分 分表算法Range 范围Hash 取模一致性 Hash斐波那契散列 严格雪崩标准&#xff08;SAC&#xff09;订单分库分表实…

导入word模板的数据到DB,偏自学,可自改套用

GetMapping("/importTestPeople")public void importTestPeople(RequestParam("file") MultipartFile multipartFile) throws IOException {InputStream inputStream null;File file null;try {// 创建临时文件file File.createTempFile("temp&quo…

从0开始深入理解并发、线程与等待通知机制

1、 从0开始深入理解并发、线程与等待通知机制 从上面两大互联网公司的招聘需求可以看到&#xff0c;大厂的Java岗的并发编程能力属于标配。 而在非大厂的公司&#xff0c;并发编程能力也是面试的极大加分项&#xff0c;而工作时善用并发编程则可以极大提升程序员在公司的技术…

前向渲染路径

1、前向渲染路径处理光照的方式 前向渲染路径中会将光源分为以下3种处理方式&#xff1a; 逐像素处理&#xff08;需要高等质量处理的光&#xff09;逐顶点处理&#xff08;需要中等质量处理的光&#xff09;球谐函数&#xff08;SH&#xff09;处理&#xff08;需要低等质量…