layerd-api / README.md
chinazz's picture
fix: stabilize LayerD Space deployment
017676c verified
|
Raw History Blame Contribute Delete
2.52 kB
---
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)