File size: 6,575 Bytes
d55de36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
# 📁 Examples 目录配置指南

## 📍 Examples 目录位置

### 默认位置

Examples 目录应该放在:

```
workspace/gradio/examples/
```

### 完整路径说明

根据 `app.py` 的配置:

```python
workspace_dir = os.environ.get("DA3_WORKSPACE_DIR", "workspace/gradio")
examples_dir = os.path.join(workspace_dir, "examples")
# 结果: workspace/gradio/examples/
```

## 📂 目录结构

Examples 目录应该按以下结构组织:

```
workspace/gradio/examples/
├── scene1/              # 场景 1
│   ├── 000.png          # 图像文件
│   ├── 010.png
│   ├── 020.png
│   └── ...
├── scene2/              # 场景 2
│   ├── 000.jpg
│   ├── 010.jpg
│   └── ...
└── scene3/              # 场景 3
    ├── image1.png
    ├── image2.png
    └── ...
```

### 要求

1. **每个场景一个文件夹**:每个场景应该有自己的文件夹
2. **文件夹名称**:文件夹名称会显示为场景名称
3. **图像文件**:支持 `.jpg`, `.jpeg`, `.png`, `.bmp`, `.tiff`, `.tif` 格式
4. **第一张图像**:第一张图像(按文件名排序)会用作缩略图

## 🔧 配置方式

### 方式 1:使用默认路径(推荐)

直接创建目录:

```bash
mkdir -p workspace/gradio/examples
```

然后添加场景:

```bash
# 创建场景文件夹
mkdir -p workspace/gradio/examples/my_scene

# 复制图像文件
cp your_images/* workspace/gradio/examples/my_scene/
```

### 方式 2:使用环境变量

通过环境变量自定义位置:

```bash
# 设置环境变量
export DA3_WORKSPACE_DIR="/path/to/your/workspace"

# 然后 examples 会在 /path/to/your/workspace/examples
```

或在 `app.py` 中修改:

```python
workspace_dir = os.environ.get("DA3_WORKSPACE_DIR", "/custom/path/workspace")
```

### 方式 3:在 Hugging Face Spaces 中

在 Spaces 中,可以通过以下方式添加 examples:

1. **通过 Git 上传**```bash
   git add workspace/gradio/examples/
   git commit -m "Add example scenes"
   git push
   ```

2. **通过网页界面上传**   - 在 Spaces 的文件浏览器中创建 `workspace/gradio/examples/` 目录
   - 上传场景文件夹和图像

3. **使用持久存储**   - 如果使用持久存储,examples 会保存在持久存储中
   - 路径仍然是 `workspace/gradio/examples/`

## 📝 示例场景结构示例

### 示例 1:简单场景

```
workspace/gradio/examples/
└── indoor_room/
    ├── 000.png
    ├── 010.png
    ├── 020.png
    └── 030.png
```

### 示例 2:多个场景

```
workspace/gradio/examples/
├── outdoor_garden/
│   ├── frame_001.jpg
│   ├── frame_002.jpg
│   └── frame_003.jpg
├── office_space/
│   ├── img_000.png
│   ├── img_010.png
│   └── img_020.png
└── street_scene/
    ├── 000.png
    ├── 010.png
    └── 020.png
```

## 🔍 验证 Examples 目录

### 检查目录是否存在

```bash
# 检查默认位置
ls -la workspace/gradio/examples/

# 或使用 Python
python -c "
import os
workspace_dir = os.environ.get('DA3_WORKSPACE_DIR', 'workspace/gradio')
examples_dir = os.path.join(workspace_dir, 'examples')
print(f'Examples directory: {examples_dir}')
print(f'Exists: {os.path.exists(examples_dir)}')
if os.path.exists(examples_dir):
    scenes = [d for d in os.listdir(examples_dir) if os.path.isdir(os.path.join(examples_dir, d))]
    print(f'Found {len(scenes)} scenes: {scenes}')
"
```

### 检查场景信息

应用启动时会自动扫描 examples 目录,并在日志中显示:

```
Found 3 example scenes:
  - scene1 (5 images)
  - scene2 (10 images)
  - scene3 (8 images)
```

## 🚀 快速开始

### 1. 创建目录结构

```bash
# 在项目根目录
mkdir -p workspace/gradio/examples
```

### 2. 添加示例场景

```bash
# 创建场景文件夹
mkdir -p workspace/gradio/examples/my_first_scene

# 添加图像文件(复制你的图像)
cp /path/to/your/images/* workspace/gradio/examples/my_first_scene/
```

### 3. 验证

启动应用后,你应该能在 UI 中看到示例场景网格。

## 📊 在 Hugging Face Spaces 中

### 上传方式

1. **通过 Git**(推荐):
   ```bash
   # 在本地准备 examples
   mkdir -p workspace/gradio/examples
   # ... 添加场景 ...
   
   # 提交并推送
   git add workspace/gradio/examples/
   git commit -m "Add example scenes"
   git push
   ```

2. **通过网页界面**   - 在 Spaces 的文件浏览器中
   - 创建 `workspace/gradio/examples/` 目录
   - 上传场景文件夹

### 注意事项

- **文件大小限制**:确保图像文件不超过 Spaces 的文件大小限制
- **持久存储**:如果使用持久存储,examples 会持久保存
- **缓存**:示例场景的结果会缓存在 `workspace/gradio/input_images/`## 🔗 相关配置

### 环境变量

- `DA3_WORKSPACE_DIR`: 工作空间目录(默认:`workspace/gradio`- Examples 目录自动设置为:`{DA3_WORKSPACE_DIR}/examples`

### 代码中的配置

- `depth_anything_3/app/gradio_app.py`: `cache_examples()` 方法
- `depth_anything_3/app/modules/utils.py`: `get_scene_info()` 函数
- `depth_anything_3/app/modules/event_handlers.py`: `load_example_scene()` 方法

## ❓ 常见问题

### Q: Examples 目录不存在怎么办?

A: 应用会自动创建 `workspace/gradio/` 目录,但不会自动创建 `examples/` 子目录。你需要手动创建:

```bash
mkdir -p workspace/gradio/examples
```

### Q: 如何添加新的示例场景?

A: 只需在 `workspace/gradio/examples/` 下创建新文件夹并添加图像:

```bash
mkdir -p workspace/gradio/examples/new_scene
cp images/* workspace/gradio/examples/new_scene/
```

应用会在下次启动时自动检测新场景。

### Q: 场景名称如何显示?

A: 场景名称就是文件夹名称。例如:
- 文件夹:`workspace/gradio/examples/indoor_room/`
- 显示名称:`indoor_room`

### Q: 缩略图如何选择?

A: 缩略图是文件夹中按文件名排序后的第一张图像。

## 📝 总结

**Examples 目录位置:**
- **默认**`workspace/gradio/examples/`
- **可通过环境变量**`DA3_WORKSPACE_DIR` 自定义

**目录结构:**
```
workspace/gradio/examples/
├── scene1/
│   └── images...
├── scene2/
│   └── images...
└── scene3/
    └── images...
```

**快速创建:**
```bash
mkdir -p workspace/gradio/examples
# 然后添加场景文件夹和图像
```