news 2026/8/16 15:46:41

DeOldify保姆级部署教程:Ubuntu20.04环境配置与模型推理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeOldify保姆级部署教程:Ubuntu20.04环境配置与模型推理

DeOldify保姆级部署教程:Ubuntu20.04环境配置与模型推理

想试试给老照片上色,让黑白记忆重现光彩吗?DeOldify这个项目最近挺火的,效果也确实惊艳。但很多朋友在第一步——环境部署上就卡住了,尤其是面对Ubuntu系统和各种依赖,感觉无从下手。

别担心,这篇教程就是为你准备的。我会手把手带你,在Ubuntu 20.04系统上,从零开始把DeOldify跑起来。咱们不聊复杂的原理,就聚焦一件事:怎么一步步操作,直到你能成功运行第一个上色脚本。过程中可能遇到的坑,比如驱动问题、依赖冲突,我都会提前告诉你解决方法。

跟着走一遍,你就能拥有自己的老照片修复工具了。

1. 环境准备:打好地基

在拉取和运行任何镜像之前,咱们得先把“地基”打好。对于DeOldify这类依赖GPU加速的AI应用,主要就是确保三件事:系统版本合适、显卡驱动装好、Docker环境就绪。

1.1 系统与硬件检查

首先,确认你的系统是否符合要求。打开终端,输入以下命令查看系统信息:

lsb_release -a

你应该能看到类似Ubuntu 20.04.x LTS的输出。20.04是一个长期支持版本,社区支持好,遇到问题也容易找到解决方案。

接着,检查你的显卡是否支持CUDA。DeOldify依赖CUDA进行GPU加速,这通常意味着你需要一块NVIDIA显卡。运行:

lspci | grep -i nvidia

如果能看到你的显卡型号(比如GeForce RTX 3060),那就没问题。如果没有任何输出,你可能使用的是集成显卡或AMD显卡,后续将无法使用GPU加速,运行速度会慢很多。

1.2 安装NVIDIA驱动与CUDA

这是最容易出错的环节。我的建议是,优先使用系统自带的“附加驱动”工具来安装,最简单稳定。

  1. 打开“软件和更新”应用。
  2. 切换到“附加驱动”标签页。
  3. 系统会自动检测可用的专有驱动,选择一个带有“proprietary, tested”字样的推荐版本(例如nvidia-driver-535),然后点击“应用更改”。系统会提示你输入密码,并需要重启电脑。

重启后,在终端验证驱动是否安装成功:

nvidia-smi

如果看到显卡信息、驱动版本和CUDA版本(例如CUDA Version: 12.2)的表格,恭喜你,驱动安装成功了。这里显示的CUDA版本是驱动支持的最高版本,我们还需要安装具体的CUDA工具包。

对于Ubuntu 20.04,安装CUDA 11.8是一个兼容性较好的选择。访问NVIDIA官网查看具体安装命令,但通常可以通过以下命令完成:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /" sudo apt-get update sudo apt-get -y install cuda-11-8

安装完成后,将CUDA路径添加到环境变量中。编辑你的~/.bashrc文件:

nano ~/.bashrc

在文件末尾添加:

export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

保存退出后,执行source ~/.bashrc使配置生效,并用nvcc --version验证CUDA安装。

1.3 安装与配置Docker

Docker能让我们免去配置复杂Python环境的烦恼。安装Docker引擎:

sudo apt-get update sudo apt-get install -y docker.io

安装后,将当前用户加入docker组,这样就不用每次都加sudo了:

sudo usermod -aG docker $USER

重要:执行此命令后,你需要完全退出当前终端会话并重新登录,或者重启电脑,这个改动才会生效。

最后,安装NVIDIA Container Toolkit,让Docker容器能使用GPU:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker

验证Docker和GPU支持是否正常:

docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi

如果能看到和宿主机运行nvidia-smi类似的输出,说明所有环境都已完美配置。

2. 获取与运行DeOldify镜像

环境准备好了,现在我们来获取DeOldify的镜像。这里我们使用一个预配置好的镜像,它已经包含了大部分依赖,省时省力。

2.1 拉取镜像

在终端中,使用docker pull命令拉取镜像。你可以从常见的镜像仓库(如Docker Hub)搜索“deoldify”相关的镜像。假设我们找到一个名为your_repo/deoldify:latest的镜像(请替换为实际可用的镜像名)。

docker pull your_repo/deoldify:latest

这个过程会下载镜像文件,时间取决于你的网速。完成后,可以用docker images命令查看已下载的镜像。

2.2 启动容器

镜像拉取后,我们需要以交互模式运行它,并挂载本地目录以便传入图片和保存结果。创建一个用于工作的本地文件夹,比如~/deoldify_workspace

mkdir -p ~/deoldify_workspace cd ~/deoldify_workspace

然后启动容器:

docker run -it --gpus all \ -v $(pwd):/workspace \ -p 8888:8888 \ --name deoldify_container \ your_repo/deoldify:latest \ /bin/bash

解释一下参数:

  • -it:以交互模式运行,并分配一个伪终端。
  • --gpus all:将宿主机的所有GPU资源分配给容器。
  • -v $(pwd):/workspace:把当前目录(~/deoldify_workspace)挂载到容器内的/workspace目录。这样容器内生成的文件在宿主机也能直接访问。
  • -p 8888:8888:将容器的8888端口映射到宿主机。如果镜像内置了Jupyter Notebook,可以通过浏览器访问。
  • --name:给容器起个名字,方便管理。
  • 最后的/bin/bash是启动容器后执行的命令,即进入bash shell。

执行后,你会发现终端提示符变了,说明你已经进入了容器内部。

3. 容器内配置与模型下载

现在我们在容器内部了。预制的镜像可能已经安装好了Python、PyTorch等,但DeOldify的模型权重文件通常需要单独下载。

3.1 下载模型权重

DeOldify主要提供三种模型:ArtisticStableVideoArtistic风格更艺术化,色彩可能更鲜艳;Stable更稳定、真实。我们以Stable模型为例。

在容器内的shell中,通常我们可以使用项目自带的下载脚本,或者直接使用wget下载。首先,进入项目目录(假设镜像中已预置在/deoldify):

cd /deoldify

然后,下载模型权重文件。你可以查看项目README找到模型文件的直链,或者使用如下方式(链接可能需要根据项目更新进行调整):

wget https://data.deepai.org/deoldify/ColorizeStable_gen.pth -P ./models/

这会将权重文件ColorizeStable_gen.pth下载到容器内的./models/目录。由于我们启动容器时挂载了卷,这个文件实际上也保存在你的~/deoldify_workspace里。

3.2 安装额外依赖(如果需要)

尽管是预置镜像,但为了运行我们自己的脚本,可能需要确保一些额外的Python包。在容器内安装:

pip install --upgrade pip pip install jupyterlab matplotlib opencv-python

如果遇到权限问题,可以加上--user参数。

4. 编写并运行第一个上色脚本

一切就绪,让我们写一个简单的Python脚本来测试上色效果。

4.1 准备测试图片

在宿主机上,也就是你的~/deoldify_workspace文件夹里,放一张你想上色的黑白或老旧照片,命名为old_photo.jpg。然后在容器内的/workspace目录下就能看到它。

4.2 编写推理脚本

在容器内,我们创建一个Python脚本。你可以使用vicat命令。这里我们用cat直接创建:

cd /workspace cat > colorize.py << 'EOF' import torch from deoldify import device from deoldify.device_id import DeviceId from deoldify.visualize import * # 设置设备为GPU(如果可用) device.set(device=DeviceId.GPU0) # 如果只有一块GPU,就用GPU0 torch.backends.cudnn.benchmark = True # 初始化着色器 colorizer = get_image_colorizer(artistic=False) # artistic=False 使用Stable模型 # 设置渲染参数(可选) render_factor = 35 # 这个值影响细节和速度,通常在15-40之间尝试 # 对图片进行上色 source_path = '/workspace/old_photo.jpg' result_path = '/workspace/colorized_photo.jpg' try: # 执行上色 result = colorizer.get_transformed_image( path=source_path, render_factor=render_factor, watermarked=False # 是否添加水印 ) if result is not None: # 保存结果 result.save(result_path) print(f"上色成功!结果已保存至: {result_path}") else: print("上色失败,未得到有效结果。") except Exception as e: print(f"处理过程中发生错误: {e}") EOF

这个脚本做了几件事:

  1. 导入必要的DeOldify模块。
  2. 设置使用GPU。
  3. 初始化Stable模型着色器。
  4. 设置render_factor参数,这个值越小,处理越快但可能丢失细节;越大,细节越丰富但更慢。
  5. 指定输入图片路径和输出路径,然后调用着色函数。
  6. 最后保存并打印成功信息。

4.3 运行脚本并查看结果

在容器内运行这个脚本:

cd /workspace python colorize.py

第一次运行会加载模型,可能需要一两分钟。加载完成后,处理图片就很快了。你会在终端看到一些进度信息。

处理完成后,回到你的宿主机~/deoldify_workspace目录,就能看到新生成的colorized_photo.jpg。打开对比一下,看看黑白照片是不是焕然一新了!

5. 常见问题与解决思路

部署过程中难免会遇到问题,这里列举几个常见的:

  • docker: Error response from daemon: could not select device driver...这说明NVIDIA Container Toolkit没有正确安装或Docker服务未重启。请重新执行安装NVIDIA Container Toolkit的命令,并确保执行了sudo systemctl restart docker

  • RuntimeError: CUDA out of memory.GPU内存不足。可以尝试:1) 减小render_factor值;2) 处理分辨率更小的图片;3) 确保没有其他程序占用大量显存。

  • ModuleNotFoundError: No module named 'deoldify'容器内Python路径可能未包含DeOldify项目目录。在脚本开头或容器内尝试添加:

    import sys sys.path.append('/deoldify') # 根据镜像实际路径调整
  • 上色效果不理想(颜色怪异、渗色)这是模型本身的问题。可以尝试:1) 切换到Artistic模型 (artistic=True);2) 调整render_factor参数;3) 原始图片质量太差,可以尝试先用其他工具进行初步的降噪、修复。

  • 如何退出和重新进入容器?

    • 在容器内终端按Ctrl+D或输入exit可以退出并停止容器。
    • 如果只是暂时退出(保持容器运行),按Ctrl+P然后Ctrl+Q
    • 要重新进入正在运行的容器:docker exec -it deoldify_container /bin/bash

6. 总结

走完整个流程,你会发现部署DeOldify其实并没有想象中那么复杂,关键是把环境依赖一步步理顺。从检查系统、安装驱动CUDA和Docker,到拉取镜像、下载模型,最后写一个简单的脚本跑起来,每一步都有明确的目标。

用下来感觉,基于Docker镜像的方式确实省心,避免了在本地配置Python环境可能带来的各种包冲突问题。第一次成功给老照片上色的时候,还是挺有成就感的。你可以多试试不同的render_factor参数,或者换用Artistic模型,看看哪种风格更适合你的照片。

如果遇到问题,别慌,回头检查一下对应的步骤,大部分错误信息在网上都能找到解决方案。接下来,你可以尝试用这个工具处理更多照片,或者探索一下它的视频上色功能,让老录像也动起来。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 16:08:05

HY-Motion 1.0显存优化:--num_seeds=1配置下24GB显存稳定运行教程

HY-Motion 1.0显存优化&#xff1a;--num_seeds1配置下24GB显存稳定运行教程 1. 为什么你需要这篇教程 你刚下载了HY-Motion 1.0&#xff0c;满怀期待地准备生成一段3D动作动画——结果显存爆了。 CUDA out of memory 错误弹出来&#xff0c;24GB显卡直接卡死&#xff0c;连最…

作者头像 李华
网站建设 2026/7/14 16:07:49

Tiktokenizer:解决OpenAI令牌计算难题的可视化方案

Tiktokenizer&#xff1a;解决OpenAI令牌计算难题的可视化方案 【免费下载链接】tiktokenizer Online playground for OpenAPI tokenizers 项目地址: https://gitcode.com/gh_mirrors/ti/tiktokenizer 在AI开发过程中&#xff0c;精准控制令牌数量是确保API调用成功和成…

作者头像 李华
网站建设 2026/7/14 16:08:02

ChatGPT无法加载对话的故障排查与性能优化实战

ChatGPT无法加载对话的故障排查与性能优化实战 当ChatGPT无法加载对话时&#xff0c;开发者常面临响应延迟、连接中断等痛点。本文深入分析网络层、API调用限制及缓存策略等核心因素&#xff0c;提供一套完整的诊断工具链和优化方案。通过代码示例演示如何实现自动重试机制、连…

作者头像 李华
网站建设 2026/7/14 16:07:49

Phi-3-vision-128k-instruct企业实操:文档图表自动解析与摘要生成方案

Phi-3-vision-128k-instruct企业实操&#xff1a;文档图表自动解析与摘要生成方案 1. 模型介绍与核心能力 Phi-3-Vision-128K-Instruct 是当前最先进的轻量级开放多模态模型&#xff0c;专注于高质量的文本和视觉数据处理能力。作为Phi-3模型家族成员&#xff0c;它支持128K超…

作者头像 李华
网站建设 2026/7/14 16:08:03

实测对比:Qwen3-4B写作大师与普通AI在逻辑写作上的差距有多大?

实测对比&#xff1a;Qwen3-4B写作大师与普通AI在逻辑写作上的差距有多大&#xff1f; 1. 当AI写作不再“东拉西扯”&#xff1a;一次真实的逻辑能力对决 你有没有过这样的经历&#xff1f;让某个AI助手帮你写一份项目方案&#xff0c;结果它前言不搭后语&#xff0c;论点之间…

作者头像 李华