Skip to content

Hank7890/footprints

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

旅游足迹地图 (Travel Footprints)

从手机照片/视频的 GPS 信息,自动生成一张可交互的旅游足迹地图。 点地图上的足迹点 → 看那个地点拍的所有照片/视频,风景 / 美食优先展示, 截图收据等杂图自动折叠。

离线本地工具。原始照片放在仓库之外,脚本只读不改;生成的缩略图与 数据(data/)和模型权重(models/)都不进 git。

目录

footprints/
├─ tools/
│  ├─ extract_geo.py       # 读照片(EXIF)+视频(ffprobe)的 GPS+时间
│  ├─ dedupe.py            # 按相似度去重(感知哈希,非破坏)
│  ├─ build_footprints.py  # 按定位聚类 + 反向地理编码 + 缩略图 → data/places.json
│  ├─ _downscale.py        # 生成更小的缩略图副本,供打分用
│  ├─ _score_clip.py       # 本地 CLIP(GPU/CPU)给每张图打分+分类,免费、不联网
│  ├─ _merge_scores.py     # 合并打分结果到主表
│  ├─ finalize.py          # 应用分数+类别加权,排序/折叠/选封面/推导主题标签
│  └─ serve.py             # 本地预览服务,按需把原图渲染成高清大图
├─ index.html              # 地图页面(Leaflet)
└─ .gitignore

依赖

  • Python 3 + Pillow、pillow-heif(HEIC 支持)
  • ffmpeg / ffprobe(读视频 GPS + 抽封面)
  • 打分用 PyTorch + open_clip_torch(有 NVIDIA 显卡装 CUDA 版可秒级,纯 CPU 也能跑)

用法

# 1. 读取 GPS + 时间(可断点续跑)
python tools/extract_geo.py "/path/to/photos"

# 2. 按相似度去重(--threshold 越小越严;不删原图,只标记)
python tools/dedupe.py --media-root "/path/to/photos" --threshold 5

# 3. 聚类成地点 + 地名 + 缩略图 → data/places.json
python tools/build_footprints.py --media-root "/path/to/photos" --geocode

# 4. 美学打分(本地 CLIP,免费):分类 + 0-10 好看度
python tools/_downscale.py
python tools/_score_clip.py --model ViT-L-14 --pretrained laion2b_s32b_b82k
python tools/_merge_scores.py
python tools/finalize.py

# 5. 本地预览(可点开看高清原图)
python tools/serve.py --media-root "/path/to/photos" --port 8765
#    浏览器打开 http://localhost:8765/

提示

  • 先小批量试:网盘压缩上传可能抹掉 GPS。先放 10~20 个文件跑第 1 步, 确认输出 with GPS > 0 再处理全部。
  • 打分全在本地跑,不调用任何云端 API、不产生费用。觉得折叠太多/太少, 调 finalize.py --hide-below(默认 6)重跑即可,无需重新打分。
  • 每个地点的 label(活动主题)由地名关键词 + 照片类别自动推导, 也可用 data/labels.json{place_id: 标签})手动覆盖。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors