Skip to main content

CityGaze

Street view landmark detection and urban analysis toolkit.
街景地标检测与城市分析工具包。发布到 PyPI 后,任何人都可通过 pip install citygaze 安装,与 numpy 一样。

功能概览

功能 模块 说明
1 streetview 下载 Mapillary 街景或使用用户自己的街景
2 deepgaze DeepGaze IIE 眼动模拟,提取显著性注视点
3 segment OneFormer 全景语义分割
4 depth DepthAnything v3 相对/绝对深度估计
5 locate 绝对深度 + 街景源数据对 landmark 进行地理定位
6 ghs 下载 GHS 数据,与街景进行统计分析

安装

从 PyPI 安装(仅需基础功能)

pip install citygaze

从源码安装(开发或使用 Conda)

# 克隆后安装
git clone https://github.com/your-org/citygaze && cd citygaze
pip install -e .

Conda 环境(推荐)

# 从源码目录执行
conda env create -f environment.yml
conda activate citygaze
pip install -e .

完整功能依赖(按需安装)

# DeepGaze 眼动模拟(一次性装齐依赖:DeepGaze + CLIP + einops 等)
pip install -r requirements-deepgaze.txt

# 下载 centerbias 文件
# https://github.com/matthias-k/DeepGaze/releases/download/v1.0.0/centerbias_mit1003.npy

# Depth Anything v3 深度估计
pip install git+https://github.com/ByteDance-Seed/Depth-Anything-3.git
pip install py360convert

# OneFormer 分割(需单独克隆并安装)
git clone https://github.com/SHI-Labs/OneFormer
cd OneFormer && pip install -e .

快速开始

1. 下载街景

from citygaze import download_road_network, fetch_mapillary_metadata, download_images_fast

place = "Boston, Massachusetts, USA"
data_root = "./data"

# 下载路网
download_road_network(place, data_root)

# 获取元数据(需 Mapillary Token)
df = fetch_mapillary_metadata(edges, token="YOUR_TOKEN", place=place, data_root=data_root)

# 下载图片
download_images_fast(df, token="YOUR_TOKEN", place=place, data_root=data_root)

2. DeepGaze 眼动模拟

from citygaze import run_deepgaze_pipeline

run_deepgaze_pipeline(
    images_dir="./data/Boston_Massachusetts_USA/images",
    output_dir="./output/deepgaze",
    centerbias_path="./centerbias_mit1003.npy",
    gpu_ids="0,1",
)

3. 深度估计

from citygaze import run_depth_pipeline

run_depth_pipeline(
    input_csv_path="./output/deepgaze/deepgaze_raw/deepgaze_raw_results.csv",
    image_root="./data/Boston_Massachusetts_USA/images",
    output_csv_path="./output/deepgaze_with_depth.csv",
)

4. 语义标注与地标定位

from citygaze import label_gaze_with_segment, merge_filter_and_locate

# 将眼动点与分割结果结合(需先运行 OneFormer 分割)
label_gaze_with_segment(
    gaze_csv_path="./output/deepgaze_raw_results.csv",
    segment_output_root="./output/segment",
    output_csv_path="./output/deepgaze_segment.csv",
)

# 地标地理定位
merge_filter_and_locate(
    segment_csv_path="./output/deepgaze_segment.csv",
    depth_csv_path="./output/deepgaze_with_depth.csv",
    meta_csv_path="./data/mapillary_Boston_Massachusetts_USA_images_meta.csv",
    image_dir="./data/Boston_Massachusetts_USA/images",
    output_csv_path="./output/landmark_geo_located.csv",
)

5. GHS 统计分析

from citygaze import download_ghs_data, run_ghs_analysis

# 下载 GHS 数据(可选,也可手动下载)
download_ghs_data(output_dir="./data/GHS_time", years=(1975, 2000, 2025))

# 运行分析
run_ghs_analysis(
    landmark_csv_path="./output/landmark_clustered.csv",
    output_dir="./output/GHS_analysis",
    edges_path="./data/edges.gpkg",
    all_pano_meta_path="./data/mapillary_meta.csv",
    ghs_root="./data/GHS_time",
)

命令行使用

# 1. 街景下载(或使用自定义街景)
citygaze-streetview --place "Singapore" --data-root ./data --token YOUR_TOKEN \
  --download-network --fetch-metadata --download-images

# 2. DeepGaze 眼动模拟
citygaze-deepgaze --images-dir ./images --output-dir ./out --centerbias ./centerbias.npy

# 3. OneFormer 分割
citygaze-segment --input ./images --output ./segment_out

# 4. 眼动点语义标注
citygaze-label --gaze-csv ./deepgaze_raw_results.csv --segment-root ./segment_out \
  --output-csv ./deepgaze_segment.csv

# 5. DepthAnything 深度估计
citygaze-depth --input-csv ./deepgaze.csv --image-root ./images --output-csv ./depth.csv

# 6. 地标地理定位
citygaze-locate --segment-csv ./deepgaze_segment.csv --depth-csv ./depth.csv --meta-csv ./meta.csv \
  --image-dir ./images --output-csv ./located.csv

# 7. 地标空间聚类
citygaze-cluster --input-csv ./located.csv --output-csv ./landmark_clustered.csv --min-votes 3

# 8. GHS 统计分析
citygaze-ghs --landmark-csv ./landmark_clustered.csv --output-dir ./ghs_out --ghs-root ./GHS_time

使用自定义街景

若您已有街景图片和元数据:

from citygaze import use_custom_streetview

place_dir, meta_df = use_custom_streetview(
    images_dir="/path/to/your/images",
    meta_csv_path="/path/to/meta.csv",  # 需含 image_id, lon, lat, compass_angle
    place_name="my_city",
    data_root="./data",
)
# 后续流程使用 place_dir 和 meta_df

维护者:发布到 PyPI(供大家 pip 安装)

发布后,用户可直接 pip install citygaze,无需克隆仓库。

  1. 注册 PyPI 账号:https://pypi.org/account/register/
  2. 创建 API Token:PyPI → Account settings → API tokens → Add API token(范围选整个账号或仅此项目)。
  3. 构建并上传:
pip install build twine
python -m build
twine upload dist/*

按提示输入用户名 __token__、密码为你的 API token。
首次发布后,更新版本时只需在 pyproject.toml 和 citygaze/__init__.py 里改 version,再执行上述 build 与 twine upload 即可。

数据流程

街景下载/自定义 → DeepGaze 眼动 → OneFormer 分割 → 语义标注
                                    ↓
              DepthAnything 深度 ← 合并
                                    ↓
              地标定位 (经纬度) → 聚类 → GHS 统计分析

许可证

MIT,详见 LICENSE。

Metadata

Release files for citygaze 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for citygaze 0.1.0
File Size Uploaded
citygaze-0.1.0.tar.gz 29.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for citygaze 0.1.0
File Interpreter ABI Platform
citygaze-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 61.7 kB

Release files / citygaze-0.1.0.tar.gz

Download URL citygaze-0.1.0.tar.gz
Size 29.9 kB
Tags Source
SHA-256 checksum
How to use checksums
0d72da26381ae8b9296a9878b1d7c9bb8bfc62461b36b30e2ef982cfd42b0a59
BLAKE2b-256 checksum
How to use checksums
582cdac68c1c84de74f4da1d335f513952f71f65b0df469b4b2feafbf06bbc17
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.19

Release files / citygaze-0.1.0-py3-none-any.whl

Download URL citygaze-0.1.0-py3-none-any.whl
Size 31.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
20ce93238b42d614545165f89b3a07328a4a0ea1485183ece86b601da4a250b6
BLAKE2b-256 checksum
How to use checksums
d6f925e719374a6139839dff1b83664ed7b37181e3f64514f4d73bc8e259fd51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.19

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page