codeformer 中文文档 下载 App

API 服务调用:Replicate / Fal.ai / Sieve 三平台实测对比

为什么需要 API

本地跑 CodeFormer 适合个人使用或批量处理,但如果要:

就需要把模型部署成网络 API——调用方发图片过来,API 返回修复后的图片 URL。

三平台对比

平台是否官方参数完整度价格速度输入支持
Replicate✅ 官方完整(w、对齐、背景、上采样)~$0.003/张中(共享 GPU)图片 + 视频
Fal.ai❌ 非官方中等~$0.002/张快(专用 GPU)图片
Sieve❌ 非官方完整~$0.004/张中图片 + 视频

官方推荐 Replicate(作者维护)。

Replicate 完整调用示例

Python

import replicate
import requests

client = replicate.Client(api_token="r8_xxx")  # 在 replicate.com/account 创建

# 运行(CodeFormer 官方端点)
result = client.run(
    "sczhou/codeformer",
    input={
        "image": open("photo.jpg", "rb"),
        "w": 0.7,
        "upscale": 2,
        "has_aligned": False,
        "bg_upsampler": "realesrgan",  # 字符串类型
        "face_upsample": True,
    }
)

# result 是输出图的 URL
print(result)  # 例如 "<URL>

# 下载
resp = requests.get(result)
open("restored.png", "wb").write(resp.content)

Node.js

import Replicate from "replicate";

const replicate = new Replicate({ auth: process.env.REPLICATE_API_TOKEN });

const output = await replicate.run(
    "sczhou/codeformer",
    {
        input: {
            image: fs.createReadStream("photo.jpg"),
            w: 0.7,
            upscale: 2,
            has_aligned: false,
            bg_upsampler: "realesrgan",
            face_upsample: true,
        }
    }
);

cURL

curl -s -X POST "<API_URL>" \
  -H "Authorization: Token r8_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "version": "sczhou/codeformer",
    "input": {
      "image": "data:image/jpeg;base64,...",
      "w": 0.7,
      "upscale": 2
    }
  }'

API 参数对照

CLI 参数Replicate 参数类型说明
-w / --fidelity_weightwfloat, 0-1w 权重
-s / --upscaleupscaleint, 2/4上倍倍率
--has_alignedhas_alignedboolean是否跳过检测对齐
--bg_upsampler realesrganbg_upsamplerstring"realesrgan" 或 "none"
--face_upsampleface_upsampleboolean是否再上采样人脸
--input_pathimagefile输入图片/视频

自建 API 服务(高级)

如果调用量很大、想完全掌控数据隐私,可以自己搭 API:

方案一:Replicate 自建端点

Replicate 支持把你的模型打包成专用端点(Dedicated Endpoint),按小时计费 GPU(T4 ~ $0.6/小时)。适合日均调用 > 10000 次。

方案二:自建 FastAPI + Docker

# api.py —— 简化示例
from fastapi import FastAPI, UploadFile, File
import torch
from basicsr.utils import img2tensor, tensor2img
import cv2
import numpy as np

app = FastAPI()

# 启动时加载模型(只加载一次)
from basicsr.archs.codeformer_arch import CodeFormer
model = CodeFormer(...)
model.load_state_dict(torch.load("weights/CodeFormer/codeformer.pth"))
model.cuda().eval()

@app.post("/restore")
async def restore_face(file: UploadFile = File(...), w: float = 0.5):
    # 1. 接收图片
    contents = await file.read()
    arr = np.frombuffer(contents, dtype=np.uint8)
    img = cv2.imdecode(arr, cv2.IMREAD_COLOR)

    # 2. 预处理(检测人脸 + 对齐到 512×512)
    # ...(省略)

    # 3. 推理
    with torch.no_grad():
        input_tensor = img2tensor(cropped_face, bgr2rgb=True, float32=True) / 255.0
        output = model(input_tensor.unsqueeze(0), w=w)

    # 4. 后处理 + 返回
    result_img = tensor2img(output)
    _, buffer = cv2.imencode(".png", result_img)
    return StreamingResponse(BytesIO(buffer), media_type="image/png")

Dockerfile + 部署到云 GPU(AutoDL / Lambda Labs / 阿里云 ECS)。

隐私和数据安全

费用估算

假设 10000 张图片/月:

方案月成本
Replicate 按量~$30
Replicate 专用端点(T4)~$430(0.6 × 24 × 30)
自建 AutoDL(RTX 3090)~¥800(2 元/小时 × 400 小时)
自建(有自己的 GPU)电费

小量用 Replicate 按量划算,大量自建更便宜。