news 2026/9/10 2:42:12

DeOldify部署教程:Ubuntu 22.04环境下DeOldify服务完整安装步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeOldify部署教程:Ubuntu 22.04环境下DeOldify服务完整安装步骤

DeOldify部署教程:Ubuntu 22.04环境下DeOldify服务完整安装步骤

1. 项目简介

DeOldify是一个基于深度学习技术的黑白图像上色工具,它使用U-Net架构的神经网络模型,能够自动将黑白照片转换为自然色彩的彩色图像。这个服务特别适合处理老照片修复、历史图片上色等场景。

1.1 技术特点

  • 深度学习驱动:采用先进的U-Net深度学习模型
  • 简单易用:提供友好的Web界面和API接口
  • 高性能处理:支持快速图像上色处理
  • 多格式支持:兼容JPG、PNG、BMP等多种图片格式
  • 自动管理:内置服务监控和自动重启功能

2. 环境准备

在开始安装之前,请确保你的Ubuntu 22.04系统满足以下要求:

2.1 系统要求

  • 操作系统:Ubuntu 22.04 LTS
  • 内存:至少8GB RAM(推荐16GB)
  • 存储空间:至少10GB可用空间
  • Python版本:Python 3.8或更高版本
  • 网络连接:稳定的互联网连接以下载依赖包

2.2 安装基础依赖

首先更新系统并安装必要的依赖包:

# 更新系统包列表 sudo apt update sudo apt upgrade -y # 安装基础开发工具 sudo apt install -y python3-pip python3-venv git curl wget # 安装图像处理依赖 sudo apt install -y libgl1-mesa-glx libglib2.0-0 # 创建项目目录 mkdir -p ~/ai-projects/deoldify cd ~/ai-projects/deoldify

3. 安装DeOldify服务

3.1 创建Python虚拟环境

# 创建虚拟环境 python3 -m venv deoldify-env # 激活虚拟环境 source deoldify-env/bin/activate # 升级pip pip install --upgrade pip

3.2 安装Python依赖

创建requirements.txt文件:

# 创建依赖文件 cat > requirements.txt << 'EOF' torch>=1.9.0 torchvision>=0.10.0 numpy>=1.21.0 pillow>=8.3.0 flask>=2.0.0 gunicorn>=20.1.0 requests>=2.25.0 opencv-python>=4.5.0 imageio>=2.9.0 scikit-image>=0.18.0 EOF # 安装依赖 pip install -r requirements.txt

3.3 下载DeOldify模型

# 创建模型目录 mkdir -p models/deoldify # 下载预训练模型(这里以示例方式展示,实际需要获取正确的模型文件) wget -O models/deoldify/ColorizeArtistic_gen.pth https://example.com/path/to/model # 注意:实际使用时需要替换为真实的模型下载链接 # 或者使用git克隆DeOldify项目 git clone https://github.com/jantic/DeOldify.git cd DeOldify

4. 配置DeOldify服务

4.1 创建应用代码

创建主要的Flask应用文件:

# app.py from flask import Flask, request, jsonify, render_template import torch from PIL import Image import io import base64 import numpy as np import cv2 import os app = Flask(__name__) class DeOldifyProcessor: def __init__(self): self.model = None self.device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') self.load_model() def load_model(self): """加载DeOldify模型""" try: # 这里应该是实际的模型加载代码 # 示例代码,实际需要根据DeOldify的API进行调整 print("模型加载中...") # 模拟模型加载 print("模型加载完成") except Exception as e: print(f"模型加载失败: {e}") def colorize_image(self, image_path): """对图像进行上色处理""" try: # 这里是实际的上色处理代码 # 返回处理后的图像 return Image.open(image_path) except Exception as e: print(f"图像处理失败: {e}") return None # 初始化处理器 processor = DeOldifyProcessor() @app.route('/') def index(): return render_template('index.html') @app.route('/health') def health_check(): return jsonify({ 'status': 'healthy', 'model_loaded': processor.model is not None, 'service': 'deoldify-colorization' }) @app.route('/colorize', methods=['POST']) def colorize(): if 'image' not in request.files: return jsonify({'error': '没有上传图片'}), 400 file = request.files['image'] if file.filename == '': return jsonify({'error': '没有选择文件'}), 400 # 保存上传的图片 input_path = '/tmp/input_image.jpg' file.save(input_path) # 处理图片 result_image = processor.colorize_image(input_path) if result_image: # 转换为base64 buffered = io.BytesIO() result_image.save(buffered, format="JPEG") img_str = base64.b64encode(buffered.getvalue()).decode() return jsonify({ 'success': True, 'image_data': img_str, 'format': 'jpeg' }) else: return jsonify({'error': '图像处理失败'}), 500 if __name__ == '__main__': app.run(host='0.0.0.0', port=7860, debug=True)

4.2 创建Web界面模板

创建templates目录和index.html文件:

<!-- templates/index.html --> <!DOCTYPE html> <html> <head> <title>DeOldify 图像上色服务</title> <style> body { font-family: Arial, sans-serif; max-width: 1200px; margin: 0 auto; padding: 20px; } .upload-area { border: 2px dashed #ccc; padding: 40px; text-align: center; margin: 20px 0; } .result-container { display: flex; gap: 20px; margin-top: 20px; } .image-box { flex: 1; border: 1px solid #ddd; padding: 10px; } img { max-width: 100%; height: auto; } button { background: #007bff; color: white; border: none; padding: 10px 20px; cursor: pointer; } </style> </head> <body> <h1>🎨 DeOldify 图像上色服务</h1> <div class="upload-area" id="uploadArea"> <p>点击或拖拽图片到这里上传</p> <p>支持 JPG、PNG、JPEG 格式,最大 50MB</p> <input type="file" id="fileInput" accept="image/*" style="display: none;"> <button onclick="document.getElementById('fileInput').click()">选择图片</button> </div> <div> <button id="processBtn" disabled>开始上色</button> </div> <div class="result-container"> <div class="image-box"> <h3>原始图片</h3> <img id="originalImg" src="" alt="原始图片"> </div> <div class="image-box"> <h3>上色结果</h3> <img id="resultImg" src="" alt="上色结果"> </div> </div> <script> // 这里添加JavaScript代码来处理文件上传和显示 </script> </body> </html>

5. 配置进程管理

5.1 安装和配置Supervisor

# 安装Supervisor sudo apt install -y supervisor # 创建Supervisor配置文件 sudo tee /etc/supervisor/conf.d/deoldify.conf > /dev/null << 'EOF' [program:deoldify] directory=/home/ubuntu/ai-projects/deoldify command=/home/ubuntu/ai-projects/deoldify/deoldify-env/bin/gunicorn -w 4 -b 0.0.0.0:7860 app:app user=ubuntu autostart=true autorestart=true stopasgroup=true killasgroup=true stderr_logfile=/var/log/deoldify/error.log stdout_logfile=/var/log/deoldify/out.log environment=PYTHONPATH="/home/ubuntu/ai-projects/deoldify" EOF # 创建日志目录 sudo mkdir -p /var/log/deoldify sudo chown ubuntu:ubuntu /var/log/deoldify # 重新加载Supervisor配置 sudo supervisorctl reread sudo supervisorctl update

5.2 创建管理脚本

创建管理脚本以便于服务操作:

# 创建scripts目录 mkdir -p scripts # 创建启动脚本 cat > scripts/start.sh << 'EOF' #!/bin/bash echo "启动DeOldify服务..." sudo supervisorctl start deoldify echo "服务启动完成" EOF # 创建停止脚本 cat > scripts/stop.sh << 'EOF' #!/bin/bash echo "停止DeOldify服务..." sudo supervisorctl stop deoldify echo "服务已停止" EOF # 创建重启脚本 cat > scripts/restart.sh << 'EOF' #!/bin/bash echo "重启DeOldify服务..." sudo supervisorctl restart deoldify echo "服务重启完成" EOF # 创建状态检查脚本 cat > scripts/status.sh << 'EOF' #!/bin/bash echo "=== DeOldify服务状态 ===" sudo supervisorctl status deoldify echo "" echo "=== 端口检查 ===" netstat -tlnp | grep 7860 || echo "端口7860未监听" EOF # 设置脚本可执行权限 chmod +x scripts/*.sh

6. 测试服务

6.1 启动服务

# 启动服务 ./scripts/start.sh # 检查状态 ./scripts/status.sh

6.2 测试API接口

# 健康检查 curl http://localhost:7860/health # 测试图片处理(需要准备测试图片) curl -X POST http://localhost:7860/colorize \ -F "image=@test_image.jpg"

6.3 访问Web界面

打开浏览器访问:http://你的服务器IP:7860

7. 常见问题解决

7.1 端口冲突问题

如果7860端口被占用,可以修改服务配置:

# 修改app.py中的端口号 sed -i 's/port=7860/port=7870/g' app.py # 修改Supervisor配置 sudo sed -i 's/7860/7870/g' /etc/supervisor/conf.d/deoldify.conf # 重新加载配置 sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl restart deoldify

7.2 模型加载失败

如果模型加载失败,检查模型文件路径和权限:

# 检查模型文件 ls -la models/deoldify/ # 设置正确的文件权限 chmod -R 755 models/

7.3 内存不足问题

如果遇到内存不足错误,可以调整处理参数:

# 在app.py中调整处理参数 @app.route('/colorize', methods=['POST']) def colorize(): # 添加内存优化处理 # 例如调整图像大小或批量处理参数

8. 服务管理

8.1 日常管理命令

# 查看服务状态 sudo supervisorctl status deoldify # 查看日志 tail -f /var/log/deoldify/out.log tail -f /var/log/deoldify/error.log # 重启服务 sudo supervisorctl restart deoldify # 停止服务 sudo supervisorctl stop deoldify # 启动服务 sudo supervisorctl start deoldify

8.2 日志管理

设置日志轮转以防止日志文件过大:

# 创建logrotate配置 sudo tee /etc/logrotate.d/deoldify > /dev/null << 'EOF' /var/log/deoldify/*.log { daily missingok rotate 7 compress delaycompress notifempty copytruncate } EOF

9. 安全配置

9.1 防火墙设置

# 启用防火墙 sudo ufw enable # 允许SSH连接 sudo ufw allow ssh # 允许HTTP端口 sudo ufw allow 7860/tcp # 查看防火墙状态 sudo ufw status

9.2 使用Nginx反向代理(可选)

# 安装Nginx sudo apt install -y nginx # 创建Nginx配置 sudo tee /etc/nginx/sites-available/deoldify > /dev/null << 'EOF' server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:7860; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } EOF # 启用配置 sudo ln -s /etc/nginx/sites-available/deoldify /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx

10. 总结

通过本教程,你已经成功在Ubuntu 22.04系统上部署了DeOldify图像上色服务。这个服务提供了:

  1. Web界面:用户友好的图形化操作界面
  2. API接口:支持程序化调用
  3. 进程管理:使用Supervisor确保服务稳定运行
  4. 自动重启:服务异常时自动恢复

现在你可以通过浏览器访问服务,开始使用这个强大的图像上色工具了。如果遇到任何问题,可以参考常见问题部分或者查看服务日志来排查问题。


获取更多AI镜像

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

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

拖延症福音!继续教育专属AI论文平台 —— 千笔

你是否曾为论文选题发愁&#xff0c;反复修改却仍不满意&#xff1f;是否在深夜面对空白文档无从下笔&#xff0c;又担心查重率过高&#xff1f;继续教育的学生们常常面临时间紧张、资料繁杂、格式复杂等难题&#xff0c;论文写作成了难以逾越的难关。而如今&#xff0c;一款专…

作者头像 李华
网站建设 2026/9/6 23:48:05

NCM音频格式限制突破方案:ncmdump工具全方位应用指南

NCM音频格式限制突破方案&#xff1a;ncmdump工具全方位应用指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 当你在车载音响中想播放下载的网易云音乐却显示格式不支持&#xff0c;或是更换手机后发现多年积累的NCM音乐无法迁移…

作者头像 李华
网站建设 2026/9/2 14:26:42

论文写不动?AI论文平台,千笔·专业学术智能体 VS WPS AI

随着人工智能技术的迅猛发展&#xff0c;AI辅助写作工具正逐步成为高校学生完成毕业论文的重要助手。尤其是在专科生群体中&#xff0c;面对繁重的论文任务和时间压力&#xff0c;越来越多的学生开始借助AI工具提升写作效率、降低创作难度。然而&#xff0c;市场上AI写作工具种…

作者头像 李华
网站建设 2026/9/2 14:32:54

Elsevier智能审稿追踪系统:自动化监控与效率提升解决方案

Elsevier智能审稿追踪系统&#xff1a;自动化监控与效率提升解决方案 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 在学术出版领域&#xff0c;稿件评审周期的不确定性一直是科研工作者面临的主要挑战之一。传统的…

作者头像 李华
网站建设 2026/9/2 14:25:30

Verilog实战:从零搭建74HC283超前进位加法器(附完整仿真代码)

Verilog实战&#xff1a;从零搭建74HC283超前进位加法器&#xff08;附完整仿真代码&#xff09; 如果你刚开始接触FPGA或者数字电路设计&#xff0c;加法器可能是你遇到的第一个“复杂”模块。很多教程会教你用Verilog写一个简单的串行进位加法器&#xff0c;代码简洁&#xf…

作者头像 李华