depth-anything-3 / EXAMPLES_DIRECTORY.md
linhaotong
update examples
d55de36
|
raw
history blame
6.58 kB
# 📁 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
# 然后添加场景文件夹和图像
```