Papel | Arxiv | Código NVS | Página del proyecto
El conjunto de datos MegaScenes es una extensa colección de alrededor de 430.000 escenas y 9 millones de imágenes y geometrías epipolares, que presenta más de 100.000 reconstrucciones de estructura a partir de movimiento a partir de 2 millones de estas imágenes. Las imágenes de estas escenas se capturan en diferentes condiciones, incluidas diferentes horas del día, diferentes condiciones climáticas e iluminación, y desde diferentes dispositivos con distintas cámaras intrínsecas.
Para ver reconstrucciones en el navegador, consulte nuestro Visor web .
Proporcionamos una hoja de datos para MegaScenes aquí .
Si encuentra útil nuestro conjunto de datos o artículo, considere citarlo
@inproceedings {
tung2024megascenes,
title = { MegaScenes: Scene-Level View Synthesis at Scale } ,
author = { Tung, Joseph and Chou, Gene and Cai, Ruojin and Yang, Guandao and Zhang, Kai and Wetzstein, Gordon and Hariharan, Bharath and Snavely, Noah } ,
booktitle = { ECCV } ,
year = { 2024 }
}
El conjunto de datos MegaScenes está alojado en Amazon S3 gracias al programa de patrocinio de datos abiertos de AWS.
Específicamente, MegaScenes utiliza la URL del depósito AWS S3 s3://megascenes/
en la región de AWS US-West-2
.
Todos los archivos se pueden descargar individualmente . No están fragmentados en archivos .tar
o .zip
.
Los usuarios pueden acceder al conjunto de datos mediante s5cmd o AWS CLI. Se trata de interfaces de línea de comandos instaladas localmente que pueden acceder a conjuntos de datos en AWS. Ambas CLI tienen comandos muy similares, por lo que un comando s5cmd normalmente se puede convertir en un comando de AWS CLI reemplazando el prefijo s5cmd
con aws s3
.
En esta sección, compartiremos algunos comandos de s5cmd.
Para copiar un archivo o directorio de AWS al disco local, utilice este comando: s5cmd --no-sign-request cp <source_bucket_url> <local_dest>
Alternativamente, se puede usar sync
en lugar de cp
. sync
además comprueba las diferencias entre AWS y el conjunto de datos descargado localmente.
Importante
Si la URL de origen es un directorio, debe tener un comodín ( *
).
Este comando descargará todo el conjunto de datos a una carpeta local llamada MegaScenes/
.
s5cmd --no-sign-request cp s3://megascenes/* ./MegaScenes/
Este comando descarga recursivamente el contenido de la carpeta images
de AWS a la carpeta local MegaScenes/images/
:
s5cmd --no-sign-request cp s3://megascenes/images/* ./MegaScenes/images/
Este comando descarga un archivo database.db
específico de AWS en su carpeta local respectiva:
s5cmd --no-sign-request cp s3://megascenes/databases/main/000/000/database.db ./MegaScenes/databases/main/000/000/database.db
Es posible utilizar s5cmd para definir subconjuntos de MegaScenes para descargar; Esto se hace con s5cmd run
con un archivo de texto de comandos de s5cmd. Para obtener más información, consulte la documentación de s5cmd sobre la ejecución de varios comandos en paralelo.
Enumere el contenido del directorio en AWS: s5cmd --no-sign-request ls <bucket_url>
Este comando es útil para ver qué elementos hay en cada directorio antes de descargarlos en la máquina local.
Este comando enumera el contenido de la database/
subcarpeta en AWS.
Aporte:
s5cmd --no-sign-request ls s3://megascenes/databases/
Producción:
DIR descriptors/
DIR main/
El indicador --no-sign-request
sirve para que el usuario acceda al depósito de AWS sin la necesidad de crear y proporcionar credenciales de AWS.
Para otros comandos, consulte la documentación de s5cmd o AWS CLI.
Los archivos singulares se pueden descargar a través de HTTP (a través de wget
o curl
) utilizando la URL base https://megascenes.s3.us-west-2.amazonaws.com/
.
Por ejemplo, https://megascenes.s3.us-west-2.amazonaws.com/metadata/subcat/000/007/subcats.json es una descarga directa de la información de subcategoría para el ID de escena 7
.
El árbol de directorios del depósito es el siguiente:
s3://megascenes/
o https://megascenes.s3.us-west-2.amazonaws.com/
databases/
main/
000/000/
. . . 458/152/
descriptors/
000/000/
. . . 458/152/
images/
000/000/
. . . 458/152/
metadata/
subcat/
000/000/
. . . 458/148/
wikidata/
0/0/0/
. . . 9/9/9/
, other/
reconstruct/
000/000/
. . . 458/150/
README.md
Una escena está representada por su número de identificación de escena de seis dígitos rellenado con ceros, como se describe en Carpetas de escenas en los subdirectorios correspondientes. Puede encontrar un directorio que vincula el nombre de la escena con el ID de la escena en: s3://megascenes/metadata/categories.json
. Para obtener detalles sobre el contenido de las subcarpetas, consulte las secciones respectivas a continuación.
databases/
directorioEste directorio alberga bases de datos COLMAP para cada escena. Las bases de datos COLMAP contienen información tabulada sobre imágenes, puntos clave, descriptores, coincidencias y geometrías estimadas de dos vistas. Las bases de datos COLMAP utilizan el formato SQLite.
El directorio database/
se divide en dos subdirectorios:
main/
(1,9 TB), que contiene archivos database.db
descriptors/
(6,8 TB comprimidos, 8,3 TB sin comprimir), que contiene archivos descriptors.db.gz
En los dos subdirectorios anteriores, una escena está representada por su número de identificación de escena, como se describe en Carpetas de escenas.
Para cada escena, la base de datos COLMAP se divide en dos archivos:
database.db
, que es la base de datos COLMAP sin la tabla Descriptores.descriptors.db.gz
, que es la tabla de descriptores extraída de la base de datos COLMAP como su propia base de datos SQLite. Está comprimido con gzip.Separamos la tabla Descriptores ya que ocupa la mayor parte del espacio en la base de datos COLMAP y puede no contener información relevante para ciertas aplicaciones.
Para una escena con ID 1234
, los archivos de la base de datos son los siguientes:
databases/main/001/234/database.db
databases/descriptors/001/234/descriptors.db.gz
images/
directorioEste directorio alberga imágenes y metadatos de imágenes para cada escena. Una escena está representada por su número de ID de escena, como se describe en Carpetas de escenas.
El directorio images/
es de 3,2 TB.
Una escena puede tener cualquier número de subcategorías. Cada subcategoría contiene imágenes, raw_metadata.json
, category.json
y 0/category.json
.
Los metadatos de la imagen se representan en raw_metadata.json
. Este json contiene una clave para cada nombre de imagen y contiene información de diversos datos extraídos de Wikimedia Commons, incluidos datos EXIF e información de licencia.
El nombre de la subcategoría de la escena reside en subcategory_name/category.json
.
Una lista de nombres de imágenes reside en subcategory_name/0/category.json
.
Para una escena con ID 1234
, los archivos de imagen son los siguientes:
images/
001/234/
commons/
subcategory_name_1/
category.json
raw_metadata.json
0/
category.json
pictures/
image1.jpg
image2.jpg
subcategory_name_2/
category.json
raw_metadata.json
0/
category.json
pictures/
image1.jpg
image2.jpg
metadata/
directorioEste directorio alberga metadatos para el conjunto de datos.
El directorio metadata/
tiene el siguiente contenido:
subcat/
(386 MB), que es un directorio que contiene archivos JSON de información de subcategoría para escenas con al menos una subcategoríawikidata/
(4,5 GB), que es un directorio que contiene archivos JSON para todas las entradas de Wikidata relacionadas con una escena o sus clases jerárquicascategories.json
(19,2 MB), que es un diccionario que asigna un nombre de categoría de Wikimedia Commons a una ID de escena.images_index.parquet
(~230 MB), que es un índice tabular de todas las imágenes en MegaScenes La información de la subcategoría reside en el directorio metadata/subcat/
. Este directorio está organizado por número de ID de escena como se describe en Carpetas de escenas.
Una escena está presente en metadata/subcat/
solo si tiene al menos una categoría además de la categoría principal. Una escena de este tipo tendrá un subcats.json
para representar los datos de la subcategoría.
Un archivo subcats.json
es un diccionario que contiene los siguientes campos:
main_category
: una cadena del nombre de la categoría de nivel superior de Wikimedia Commons.graph
: un diccionario que asigna una categoría de Wikimedia Commons a una lista de sus subcategorías directas. Una categoría será clave en graph
si ha sido visitada. Una lista vacía significa que la categoría no tiene subcategorías.frontier
: una lista de subcategorías presentes en graph
que no se han ampliado para tener su propia clave en graph
. La categoría Arco degli Argentari tiene un ID de escena de 7
. La información de subcategoría para esta escena se encuentra en s3://megascenes/metadata/subcat/000/007/subcats.json
y tiene el siguiente contenido:
{
"main_category": "Arco_degli_Argentari",
"graph": {
"Arco_degli_Argentari": [
"Arco_degli_Argentari_in_art",
"Historical_images_of_the_Arco_degli_Argentari"
],
"Arco_degli_Argentari_in_art": [],
"Historical_images_of_the_Arco_degli_Argentari": [
"Arco_degli_Argentari_in_art"
]
},
"frontier": []
}
Aquí, el gráfico muestra que la categoría principal Arco degli Argentari tiene dos subcategorías: Arco degli Argentari en arte e Imágenes históricas del Arco degli Argentari. La categoría Arco degli Argentari en arte no tiene subcategorías, de ahí la lista vacía. En cambio, la categoría Imágenes históricas del Arco degli Argentari tiene la subcategoría Arco degli Argentari en arte.
La lista de fronteras está vacía, lo que significa que este gráfico de subcategoría está expandido en su totalidad.
Proporcionamos una tabla que indexa las imágenes en MegaScenes en s3://megascenes/metadata/images_index.parquet
(descarga HTTPS) (~230 MB). Los archivos Parquet almacenan datos tabulares como archivos CSV, pero son más compactos y rápidos de leer. Se pueden leer utilizando bibliotecas de marcos de datos de Python, como Polars (recomendado) o Pandas. Esta tabla contiene más de 8 millones de filas, cada una de las cuales representa una imagen del conjunto de datos. Las columnas son:
La página de Wikimedia Commons respectiva para una imagen se encuentra en la URL https://commons.wikimedia.org/wiki/File:{image_name}
. Asimismo, la página de Wikimedia Commons respectiva para una categoría se encuentra en la URL https://commons.wikimedia.org/wiki/Category:{cat or subcat}
.
Si bien esta tabla contiene la información de licencia analizada de Wikimedia Commons, recomendamos al usuario que verifique las licencias de imágenes por sí mismo.
La subcategoría wikidata/
está organizada por Wikidata Q-ID. Los primeros tres dígitos del Q-ID definen las tres subcarpetas en las que se puede encontrar la información JSON de Wikidata. Si el Q-ID tiene menos de tres dígitos, entonces su JSON reside en la other/
. A diferencia de los ID de escena, este número NO se rellena con ceros.
El JSON para un elemento de Wikidata con Q-ID Q1234
se encuentra en metadata/wikidata/1/2/3/Q1234.json
.
El JSON para un elemento de Wikidata con Q-ID Q12
se encuentra en metadata/wikidata/other/Q12.json
.
Para obtener documentación JSON, consulte esta página en Wikibase JSON.
Para obtener herramientas adicionales para analizar este JSON, consulte esta página de Wikidata sobre acceso a datos.
reconstruct/
directorio Este directorio contiene las reconstrucciones de nubes de puntos dispersas de COLMAP para cada escena. El directorio reconstruct/
está organizado por escenas, según un número de ID de escena como se describe en Carpetas de escenas. Cada reconstrucción consta de images.bin
, cameras.bin
y points3D.bin
como se describe aquí. Una escena puede tener cero o más reconstrucciones; la carpeta reconstruct/
solo contiene escenas con una o más.
La carpeta reconstruct/
es de 429 GB.
Supongamos que una escena con ID 1234
tiene tres reconstrucciones. En la carpeta sparses/
de esta escena, habrá tres carpetas numeradas del 0
al 2
.
En concreto, el formato es el siguiente:
reconstruct/
001/234/
sparses/
0/
images.bin
cameras.bin
points3D.bin
1/
images.bin
cameras.bin
points3D.bin
2/
images.bin
cameras.bin
points3D.bin
Las escasas reconstrucciones en MegaScenes se pueden ver usando nuestro visor web.
Alternativamente, las reconstrucciones se pueden ver localmente usando la GUI de COLMAP (requiere una instalación de COLMAP).
Las reconstrucciones se pueden cargar en Python usando el script read_write_model.py del repositorio COLMAP. Específicamente, las funciones útiles son: read_model
, read_points3D_binary
, read_images_binary
, read_cameras_binary
El conjunto de datos utiliza un sistema de dos subcarpetas para dividir escenas, donde cada escena tiene un número de identificación de escena. La primera subcarpeta utiliza los primeros tres dígitos de la ID de escena rellena con ceros de 6 dígitos. La segunda subcarpeta utiliza los últimos tres dígitos. Los datos asociados con la escena residen en esta última subcarpeta.
Por ejemplo:
533
, se rellena con ceros hasta 000533
. Este número se traduce al directorio 000/533/
.422678
, se traduce al directorio 422/678/
.Cada escena se basa en una categoría de Wikimedia Commons. Por ejemplo, la escena "Arc_de_Triomphe_de_l'Étoile" utiliza imágenes de Categoría:Arc de Triomphe de l'Étoile y sus subcategorías. MegaScenes usa guiones bajos en lugar de espacios para los nombres de las escenas, pero son intercambiables cuando se usan en las URL de Wikimedia Commons.
El archivo s3://megascenes/metadata/categories.json
(enlace HTTP) vincula el nombre de la categoría con el ID de la escena.
Si encuentra reconstrucciones incorrectas o tiene mejoras para el conjunto de datos, cree una publicación de discusión o problema en GitHub.
Este conjunto de datos tiene la licencia internacional Creative Commons Attribution 4.0. Las fotos de la carpeta images/
tienen sus propias licencias.