克隆代码到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