Papel | Arxiv | Código NVS | Página do projeto
O MegaScenes Dataset é uma extensa coleção de cerca de 430 mil cenas e 9 milhões de imagens e geometrias epipolares, apresentando mais de 100 mil reconstruções de estrutura a partir de movimento de 2 milhões dessas imagens. As imagens dessas cenas são capturadas sob diversas condições, incluindo diferentes horas do dia, diversas condições climáticas e de iluminação, e a partir de diferentes dispositivos com características intrínsecas de câmera distintas.
Para visualizar as reconstruções no navegador, consulte nosso Web Viewer !
Fornecemos uma ficha técnica para MegaScenes aqui .
Se você achar nosso conjunto de dados ou artigo útil, considere citar
@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 }
}
O conjunto de dados MegaScenes está hospedado no Amazon S3 graças ao AWS Open Data Sponsorship Program.
Especificamente, MegaScenes usa o URL do bucket AWS S3 s3://megascenes/
na região US-West-2
da AWS.
Todos os arquivos podem ser baixados individualmente . Eles não são divididos em arquivos .tar
ou .zip
.
Os usuários podem acessar o conjunto de dados usando s5cmd ou AWS CLI. Estas são interfaces de linha de comando instaladas localmente que podem acessar conjuntos de dados na AWS. Ambas as CLI têm comandos muito semelhantes, portanto, um comando s5cmd normalmente pode ser convertido em um comando AWS CLI substituindo o prefixo s5cmd
por aws s3
.
Nesta seção, compartilharemos alguns comandos s5cmd.
Para copiar um arquivo ou diretório da AWS para o disco local, use este comando: s5cmd --no-sign-request cp
Alternativamente, sync
pode ser usado em vez de cp
. sync
verifica adicionalmente diferenças entre a AWS e o conjunto de dados baixado localmente.
Importante
Se o URL de origem for um diretório, ele deverá ter um curinga ( *
).
Este comando baixará todo o conjunto de dados para uma pasta local chamada MegaScenes/
.
s5cmd --no-sign-request cp s3://megascenes/* ./MegaScenes/
Este comando baixa recursivamente o conteúdo da pasta images
da AWS para a pasta local MegaScenes/images/
:
s5cmd --no-sign-request cp s3://megascenes/images/* ./MegaScenes/images/
Este comando baixa um arquivo database.db
específico da AWS em sua respectiva pasta local:
s5cmd --no-sign-request cp s3://megascenes/databases/main/000/000/database.db ./MegaScenes/databases/main/000/000/database.db
É possível usar s5cmd para definir subconjuntos de MegaScenes para download; isso é feito com s5cmd run
com um arquivo de texto de comandos s5cmd. Para obter mais informações, consulte a documentação do s5cmd sobre a execução de vários comandos em paralelo.
Liste o conteúdo do diretório na AWS: s5cmd --no-sign-request ls
Este comando é útil para ver quais itens estão em cada diretório antes de baixá-los para a máquina local.
Este comando lista o conteúdo do database/
subpasta na AWS.
Entrada:
s5cmd --no-sign-request ls s3://megascenes/databases/
Saída:
DIR descriptors/
DIR main/
O sinalizador --no-sign-request
serve para o usuário acessar o bucket da AWS sem a necessidade de criar e fornecer credenciais da AWS.
Para outros comandos, consulte a documentação do s5cmd ou da AWS CLI.
Arquivos singulares podem ser baixados por HTTP (via wget
ou curl
) usando a URL base https://megascenes.s3.us-west-2.amazonaws.com/
.
Por exemplo, https://megascenes.s3.us-west-2.amazonaws.com/metadata/subcat/000/007/subcats.json é um download direto para as informações da subcategoria para o ID de cena 7
.
A árvore de diretórios do bucket é a seguinte:
s3://megascenes/
ou 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
Uma cena é representada por seu número de identificação de cena de seis dígitos preenchido com zeros, conforme descrito em Pastas de cena nos subdiretórios aplicáveis. Um diretório que vincula o nome da cena ao ID da cena pode ser encontrado em: s3://megascenes/metadata/categories.json
. Para obter detalhes sobre o conteúdo das subpastas, consulte as respectivas seções abaixo.
databases/
diretórioEste diretório abriga bancos de dados COLMAP para cada cena. Os bancos de dados COLMAP contêm informações tabuladas sobre imagens, pontos-chave, descritores, correspondências e geometrias estimadas de duas visualizações. Os bancos de dados COLMAP usam o formato SQLite.
O diretório database/
é dividido em dois subdiretórios:
main/
(1,9 TB), que contém arquivos database.db
descriptors/
(6,8 TB compactado, 8,3 TB descompactado), que contém arquivos descriptors.db.gz
Nos dois subdiretórios acima, uma cena é representada por seu número de identificação de cena, conforme descrito em Pastas de cena.
Para cada cena, o banco de dados COLMAP é particionado em dois arquivos:
database.db
, que é o banco de dados COLMAP sem a tabela Descritores.descriptors.db.gz
, que é a tabela Descritores extraída do banco de dados COLMAP como seu próprio banco de dados SQLite. Ele é compactado com gzip.Separamos a tabela Descritores porque ela ocupa a maior parte do espaço do banco de dados COLMAP e pode não conter informações relevantes para determinadas aplicações.
Para uma cena com ID 1234
, os arquivos do banco de dados são os seguintes:
databases/main/001/234/database.db
databases/descriptors/001/234/descriptors.db.gz
images/
DiretórioEste diretório abriga imagens e metadados de imagem para cada cena. Uma cena é representada por seu número de identificação de cena conforme descrito em Pastas de cena.
O diretório images/
tem 3,2 TB.
Uma cena pode ter qualquer número de subcategorias. Cada subcategoria contém imagens, um raw_metadata.json
, um category.json
e um 0/category.json
.
Os metadados da imagem são representados em raw_metadata.json
. Este json contém uma chave para cada nome de imagem e contém informações de vários dados extraídos do Wikimedia Commons, incluindo dados EXIF e informações de licenciamento.
O nome da subcategoria da cena reside em subcategory_name/category.json
.
Uma lista de nomes de imagens reside em subcategory_name/0/category.json
.
Para uma cena com ID 1234
, os arquivos de imagem são os seguintes:
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/
diretórioEste diretório abriga metadados para o conjunto de dados.
O diretório metadata/
possui o seguinte conteúdo:
subcat/
(386 MB), que é um diretório que contém arquivos JSON de informações de subcategoria para cenas com pelo menos uma subcategoriawikidata/
(4,5 GB), que é um diretório que contém arquivos JSON para todas as entradas do Wikidata relacionadas a uma cena ou suas classes hierárquicascategories.json
(19,2 MB), que é um dicionário que mapeia o nome de uma categoria do Wikimedia Commons para um ID de cena.images_index.parquet
(~230 MB), que é um índice tabular de todas as imagens em MegaScenes As informações da subcategoria residem no diretório metadata/subcat/
. Este diretório é organizado por número de ID de cena conforme descrito em Pastas de cena.
Uma cena está presente em metadata/subcat/
somente se tiver pelo menos uma categoria além da categoria principal. Tal cena terá um subcats.json
para representar os dados da subcategoria.
Um arquivo subcats.json
é um dicionário que contém os seguintes campos:
main_category
: uma string com o nome da categoria de nível superior do Wikimedia Commons.graph
: um dicionário que mapeia uma categoria do Wikimedia Commons para uma lista de suas subcategorias diretas. Uma categoria será uma chave no graph
se tiver sido visitada. Uma lista vazia significa que a categoria não possui subcategorias.frontier
: uma lista de subcategorias presentes no graph
que não foram expandidas para ter sua própria chave no graph
. A categoria Arco degli Argentari possui um ID de cena de 7
. As informações da subcategoria para esta cena estão em s3://megascenes/metadata/subcat/000/007/subcats.json
e possuem o seguinte conteúdo:
{
"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": []
}
Aqui, o gráfico mostra que a categoria principal Arco degli Argentari possui duas subcategorias: Arco degli Argentari em arte e Imagens históricas do Arco degli Argentari. A categoria Arco degli Argentari em arte não possui subcategorias, daí a lista vazia. Já a categoria Imagens históricas do Arco degli Argentari possui a subcategoria Arco degli Argentari na arte.
A lista de fronteiras está vazia, o que significa que este gráfico de subcategoria está totalmente expandido.
Fornecemos uma tabela que indexa as imagens em MegaScenes em s3://megascenes/metadata/images_index.parquet
(download HTTPS) (~230 MB). Os arquivos Parquet armazenam dados tabulares como arquivos CSV, mas são mais compactos e rápidos de ler. Eles podem ser lidos usando bibliotecas de dataframe Python, como Polars (recomendado) ou Pandas. Esta tabela contém mais de 8 milhões de linhas, cada uma representando uma imagem no conjunto de dados. As colunas são:
A respectiva página do Wikimedia Commons para uma imagem está no URL https://commons.wikimedia.org/wiki/File:{image_name}
. Da mesma forma, a respectiva página do Wikimedia Commons para uma categoria está no URL https://commons.wikimedia.org/wiki/Category:{cat or subcat}
.
Embora esta tabela contenha as informações de licenciamento analisadas do Wikimedia Commons, encorajamos o usuário a verificar as licenças das imagens por conta própria.
A subcategoria wikidata/
é organizada pelo Wikidata Q-ID. Os primeiros três dígitos do Q-ID definem as três subpastas nas quais as informações JSON do Wikidata podem ser encontradas. Se o Q-ID tiver menos de três dígitos, então seu JSON reside na pasta other/
. Ao contrário dos IDs de cena, este número NÃO é preenchido com zeros.
O JSON para um item do Wikidata com Q-ID Q1234
está localizado em metadata/wikidata/1/2/3/Q1234.json
.
O JSON para um item do Wikidata com Q-ID Q12
está localizado em metadata/wikidata/other/Q12.json
.
Para documentação JSON, consulte esta página no Wikibase JSON.
Para ferramentas adicionais para analisar este JSON, consulte esta página do Wikidata sobre Acesso a dados.
reconstruct/
Diretório Este diretório contém as reconstruções de nuvem de pontos esparsos COLMAP para cada cena. O diretório reconstruct/
é organizado por cenas, de acordo com um número de ID de cena conforme descrito em Scene Folders. Cada reconstrução consiste em images.bin
, cameras.bin
e points3D.bin
conforme descrito aqui. Uma cena pode ter zero ou mais reconstruções; a pasta reconstruct/
contém apenas cenas com uma ou mais.
A pasta reconstruct/
tem 429 GB.
Suponha que uma cena com ID 1234
tenha três reconstruções. Na pasta sparses/
desta cena, haverá três pastas numeradas de 0
a 2
.
Especificamente, o formato é o seguinte:
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
As reconstruções esparsas em MegaScenes podem ser visualizadas usando nosso visualizador web.
Alternativamente, as reconstruções podem ser visualizadas localmente usando a GUI COLMAP (requer instalação do COLMAP).
As reconstruções podem ser carregadas em Python usando o script read_write_model.py do repositório COLMAP. Especificamente, as funções úteis são: read_model
, read_points3D_binary
, read_images_binary
, read_cameras_binary
O conjunto de dados usa um sistema de duas subpastas para dividir cenas, onde cada cena possui um número de identificação de cena. A primeira subpasta usa os três primeiros dígitos do ID de cena preenchido com zeros de 6 dígitos. A segunda subpasta usa os três últimos dígitos. Os dados associados à cena residem na última subpasta.
Por exemplo:
533
, ela será preenchida com zeros até 000533
. Este número é traduzido para o diretório 000/533/
.422678
, ela será traduzida para o diretório 422/678/
.Cada cena é baseada em uma categoria do Wikimedia Commons. Por exemplo, a cena "Arc_de_Triomphe_de_l'Étoile" usa imagens da Categoria:Arco do Triunfo de l'Étoile e suas subcategorias. MegaScenes usam sublinhados em vez de espaços para nomes de cenas, mas são intercambiáveis quando usados em URLs do Wikimedia Commons.
O arquivo s3://megascenes/metadata/categories.json
(HTTP Link) vincula o nome da categoria ao ID da cena.
Se você encontrar alguma reconstrução incorreta ou tiver melhorias no conjunto de dados, crie um problema no GitHub ou uma postagem de discussão.
Este conjunto de dados está licenciado sob a Licença Creative Commons Atribuição 4.0 Internacional. As fotos na pasta images/
possuem licenças próprias.