FiftyOne 快速上手带地理位置数据集 quickstart-geo:加载、浏览与地理空间分析实战
【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyone
导读
quickstart-geo是 FiftyOne Dataset Zoo 内置的一个轻量级地理空间示例数据集,用于帮助开发者快速体验「带 GPS 位置信息的图像数据」在 FiftyOne 中的加载、可视化与地理空间查询能力。它由 BDD100K 数据集中纽约市区验证集(validation split)的 500 张道路场景图像构成,每张图像都带有目标检测标注与 GPS 时间戳。阅读本文后,你将掌握如何通过 Python API 与 CLI 一键加载该数据集、理解其底层 ZooDataset 实现原理,并学会使用geo_near()等地理空间视图操作完成按地理位置排序、距离过滤等实战任务。
数据集一览:quickstart-geo 的核心信息
根据 quickstart_geo.rst 文档的说明,quickstart-geo是一个「小体积、带地理定位数据」的快速上手数据集,其关键元信息如下:
| 项目 | 值 |
|---|---|
| 数据集名称 | quickstart-geo |
| 数据集大小 | 33.50 MB |
| 标签(Tags) | image, location, quickstart |
| 支持的分割(Splits) | N/A(不区分 train/validation/test) |
| ZooDataset 类 | QuickstartGeoDataset(定义于 fiftyone/zoo/datasets/base.py) |
| 可用版本 | OSS 0.8.0 起,Enterprise 1.0 起 |
数据集的内容构成:
- 来源:BDD100K 数据集中纽约市(New York City)区域的验证集图像;
- 样本规模:共 500 张图像;
- 标注类型:每张图像附带目标检测(object detections)标注以及 GPS 时间戳;
- 典型用途:快速体验 FiftyOne 的
location字段处理、地图类可视化与地理空间查询。
由于数据集体积仅 33.50 MB,非常适合作为入门地理空间数据工作流的试验场,无需大规模下载即可跑通「加载 → 浏览 → 分析」全链路。
快速加载:Python API 与 CLI 双通道
Python 方式
quickstart-geo由fiftyone.zoo.datasets模块注册,直接通过foz.load_zoo_dataset()即可加载,然后使用fo.launch_app()在 FiftyOne App 中打开浏览:
import fiftyone as fo import fiftyone.zoo as foz dataset = foz.load_zoo_dataset("quickstart-geo") session = fo.launch_app(dataset)CLI 方式
不写代码同样可以完成加载与启动 App,两条命令等价于上面的 Python 片段:
fiftyone zoo datasets load quickstart-geo fiftyone app launch quickstart-geo其中fiftyone zoo datasets load负责将数据集下载并导入 FiftyOne,fiftyone app launch则启动本地 App 会话用于交互式浏览。
load_zoo_dataset 的常用参数
从 load_zoo_dataset 签名 可以看到,该入口函数支持丰富的参数以控制加载行为。对quickstart-geo而言,由于它没有 split 划分,核心常用参数包括:
dataset_name:为返回的 Dataset 自定义名称。不指定时,FiftyOne 会根据数据集名与 split 自动构造;若此前已用同一名称加载过该数据集,会直接返回已存在的 Dataset 而不会重复下载。download_if_necessary(默认True):若本地数据集目录中不存在该数据集,则自动下载。drop_existing_dataset(默认False):是否丢弃同名已存在数据集后再加载。persistent(默认False):是否将数据集持久化(不随进程退出而释放)。overwrite/cleanup:控制重复下载时是否覆盖、下载后是否清理临时文件。
首次调用时,FiftyOne 会自动从官方托管位置下载约 33.50 MB 的归档文件并完成导入,之后再次加载将直接使用本地缓存。
底层实现:QuickstartGeoDataset 源码解析
quickstart-geo在代码中的完整定义位于 fiftyone/zoo/datasets/base.py,其类层次为QuickstartGeoDataset(FiftyOneDataset),而FiftyOneDataset又是fozd.ZooDataset的子类,是「FiftyOne 原生提供」的动物园数据集基类(base.py#L45)。
从源码结构可以梳理出以下实现事实:
- 归档来源:类中声明了
_GDRIVE_ID = "1B2msoc3ej2RD0zVHoXNQmuJIjsPxLTfz"、_ARCHIVE_NAME = "quickstart-geo.zip"与_DIR_IN_ARCHIVE = "quickstart-geo",表明数据集以 zip 归档形式托管,下载后解压到quickstart-geo目录。 - 元数据属性:
name返回"quickstart-geo";license指向 BDD 数据集官方下载页(http://bdd-data.berkeley.edu/download.html),说明其数据版权遵循 BDD100K 的使用条款;tags返回("image", "location", "quickstart"),与文档卡片完全一致;supported_splits返回None,印证了「无分割」的说明。 - 下载与准备流程:
_download_and_prepare()先调用_download_and_extract_archive()完成下载解压,随后以fot.FiftyOneDataset()作为数据集类型、foud.FiftyOneDatasetImporter作为导入器来解析元数据——包括读取类别(_get_classes)与样本数(_get_num_samples),最终返回(dataset_type, num_samples, classes)供上层完成导入。
这意味着quickstart-geo是一个「FiftyOne 原生格式(FiftyOneDataset)」的数据集:下载即得、导入零转换成本,非常适合作为教学示例。
在 App 中浏览:地图与位置字段
加载并启动 App 后,即可在 docs/source/images/dataset_zoo/quickstart-geo.png 所示的界面中看到数据集全貌:左侧为字段筛选面板(ground_truth目标检测标签、location位置字段等),中间为 500 张道路场景图像的缩略图网格(涵盖白天/夜晚的城市街道、车辆等,并叠加了青色检测框),数据集总样本数为 500。
这里的location字段正是该数据集的核心特色——它承载了每张图像的 GPS 坐标与时间戳,使数据从「纯图像」升级为「可做地理空间分析」的样本。这也是其标签中出现location的原因。
地理空间实战:用 geo_near 做位置排序与距离过滤
quickstart-geo最具实战价值的一点,是它可以直接配合 FiftyOne 的地理空间视图操作geo_near()使用。该方法的完整文档与示例位于 fiftyone/core/collections.py,其核心语义是:按样本到指定地理坐标点的距离对样本排序。
需要特别注意两点使用前提:
geo_near必须作为 DatasetView 中的第一个 stage出现;- 它要求在指定 location 字段上存在球形索引(spherical index),可通过
create_index=True自动创建。
以下是官方文档中针对quickstart-geo的完整示例(以纽约时报广场为例):
import fiftyone as fo import fiftyone.zoo as foz TIMES_SQUARE = [-73.9855, 40.7580] dataset = foz.load_zoo_dataset("quickstart-geo") # 按样本到时报广场的距离排序(自动创建球形索引) view = dataset.geo_near(TIMES_SQUARE, create_index=True) # 仅保留距时报广场 5km 以内的样本 view = dataset.geo_near( TIMES_SQUARE, max_distance=5000, create_index=True, ) # 只查看位于曼哈顿的样本 import fiftyone.utils.geojson as fouggeo_near()的主要参数包括:
point:目标地理坐标点,形如[经度, 纬度];location_field:使用的 location 字段名(数据集默认字段即可);min_distance/max_distance:距离过滤范围(单位:米),用于实现「距某点 X 米到 Y 米之间」的环形筛选;query:可选的 GeoJSON 查询对象,用于更复杂的地理区域限定;create_index:是否自动在 location 字段上创建球形地理索引(首次使用建议开启以加速查询)。
由此可以看出,quickstart-geo不仅是展示数据的「花瓶」示例,更是一套可以直接复制运行的地理空间分析教学样例:从「加载数据」到「按位置排序」「距离圈选」「区域过滤」一气呵成。
小结
quickstart-geo是 FiftyOne Dataset Zoo 内置的 500 张图像、33.50 MB 的地理空间快速上手数据集,源自 BDD100K 纽约市验证集,含目标检测标注与 GPS 时间戳;- 通过
foz.load_zoo_dataset("quickstart-geo")或 CLI 的fiftyone zoo datasets load quickstart-geo均可一键加载,其底层由 QuickstartGeoDataset 以 FiftyOne 原生格式提供,下载即用; - 结合
geo_near()等地理空间视图操作,可以用它快速验证按地理位置排序、距离过滤等分析流程,是学习 FiftyOne 地理空间功能的理想入门数据集。
如需了解 Zoo Dataset 机制的完整说明,可进一步阅读 dataset_zoo 总览 与 数据集卡片索引。
【免费下载链接】fiftyoneRefine high-quality datasets and visual AI models项目地址: https://gitcode.com/GitHub_Trending/fi/fiftyone
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考