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
这是最容易出错的环节。我的建议是,优先使用系统自带的“附加驱动”工具来安装,最简单稳定。
- 打开“软件和更新”应用。
- 切换到“附加驱动”标签页。
- 系统会自动检测可用的专有驱动,选择一个带有“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主要提供三种模型:Artistic、Stable和Video。Artistic风格更艺术化,色彩可能更鲜艳;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脚本。你可以使用vi或cat命令。这里我们用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这个脚本做了几件事:
- 导入必要的DeOldify模块。
- 设置使用GPU。
- 初始化
Stable模型着色器。 - 设置
render_factor参数,这个值越小,处理越快但可能丢失细节;越大,细节越丰富但更慢。 - 指定输入图片路径和输出路径,然后调用着色函数。
- 最后保存并打印成功信息。
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星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。