File size: 2,520 Bytes
f8cd119
017676c
f8cd119
 
 
 
017676c
f8cd119
 
 
017676c
f8cd119
 
017676c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
---
title: LayerD API
emoji: 👀
colorFrom: yellow
colorTo: indigo
sdk: gradio
sdk_version: 5.44.1
python_version: '3.12'
app_file: app.py
pinned: false
short_description: LayerD raster design decomposition API
---

# LayerD API

这个 Space 调用 CyberAgent 官方 [LayerD](https://github.com/CyberAgentAILab/LayerD),把一张海报或设计图拆成可编辑图层,并同时导出 PSD 和自包含 SVG。

## 使用方式

在页面上传 PNG、JPG 或 WEBP 图片,等待 GPU 任务完成后分别下载两个结果:

- `layerd-output.psd`:可在 Photoshop 等软件中继续编辑的分层文件。
- `layerd-output.svg`:内嵌图像数据的单文件 SVG,不依赖额外资源。

Space 的 Gradio API 名称是 `/process`,可以用 `gradio_client` 调用:

```python
from gradio_client import Client, handle_file

client = Client("chinazz/layerd-api")
psd_file, svg_file = client.predict(
    handle_file("design.png"),
    api_name="/process",
)
print(psd_file, svg_file)
```

也可以先运行 `client.view_api()` 查看当前 Space 的 API 描述。

## 部署说明

Space 使用 ZeroGPU。模型在模块加载阶段放到 `cuda`,推理函数使用 `@spaces.GPU(duration=120)`,并通过队列串行处理任务。首次启动会下载约 0.9 GB 的 BiRefNet 权重和约 200 MB 的 LaMa 权重;BiRefNet 加载到内存后占用约 1.7 GB,第一次启动或重启可能需要更长时间。

`requirements.txt` 固定了 LayerD 的已验证提交、`gradio==5.44.1` 和 `transformers==4.57.5`。Gradio 6.x 需要 `huggingface-hub>=1.x`,而 LayerD 使用的 BiRefNet 远程模型尚不兼容 Transformers 5.x,因此这组版本约束必须一起保留。

默认资源边界如下,均可通过 Space 的 Variables 设置调整:

| 变量 | 默认值 | 作用 |
| --- | ---: | --- |
| `LAYERD_MAX_SIDE` | `2048` | 输入图片最长边上限,超出会等比缩小 |
| `LAYERD_MAX_PIXELS` | `4194304` | 输入像素数上限 |
| `LAYERD_MATTING_SIZE` | `1024` | BiRefNet 推理尺寸 |
| `LAYERD_MAX_ITERATIONS` | `3` | LayerD 最大分解轮数 |
| `LAYERD_OUTPUT_TTL_SECONDS` | `7200` | 临时下载文件保留时间 |

本地仅用于调试时可以设置 `LAYERD_DEVICE=cpu`;在这个 ZeroGPU Space 中不要把默认设备改为 CPU。

## 相关项目

- [LayerD 官方仓库](https://github.com/CyberAgentAILab/LayerD)
- [LayerD BiRefNet 模型](https://huggingface.co/cyberagent/layerd-birefnet)
- [ZeroGPU 文档](https://huggingface.co/docs/hub/spaces-zerogpu)