Papier | Arxiv | NVS-Code | Projektseite
Der MegaScenes-Datensatz ist eine umfangreiche Sammlung von rund 430.000 Szenen und 9 Millionen Bildern und epipolaren Geometrien mit über 100.000 Struktur-aus-Bewegungs-Rekonstruktionen aus 2 Millionen dieser Bilder. Die Bilder dieser Szenen werden unter unterschiedlichen Bedingungen aufgenommen, darunter zu unterschiedlichen Tageszeiten, unterschiedlichem Wetter und unterschiedlicher Beleuchtung sowie von unterschiedlichen Geräten mit unterschiedlichen Kamerafunktionen.
Um Rekonstruktionen im Browser anzuzeigen, nutzen Sie unseren Web Viewer !
Ein Datenblatt für MegaScenes stellen wir hier zur Verfügung.
Wenn Sie unseren Datensatz oder unser Papier nützlich finden, ziehen Sie bitte eine Zitierung in Betracht
@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 }
}
Der MegaScenes-Datensatz wird dank des AWS Open Data Sponsorship-Programms auf Amazon S3 gehostet.
Insbesondere verwendet MegaScenes die AWS S3-Bucket-URL s3://megascenes/
in der AWS-Region US-West-2
.
Alle Dateien können einzeln heruntergeladen werden. Sie sind nicht in .tar
oder .zip
Dateien aufgeteilt.
Benutzer können über s5cmd oder AWS CLI auf den Datensatz zugreifen. Hierbei handelt es sich um lokal installierte Befehlszeilenschnittstellen, die auf Datensätze in AWS zugreifen können. Beide CLIs verfügen über sehr ähnliche Befehle, daher kann ein s5cmd-Befehl normalerweise in einen AWS CLI-Befehl umgewandelt werden, indem das Präfix s5cmd
durch aws s3
ersetzt wird.
In diesem Abschnitt stellen wir einige s5cmd-Befehle vor.
Um eine Datei oder ein Verzeichnis von AWS auf die lokale Festplatte zu kopieren, verwenden Sie diesen Befehl: s5cmd --no-sign-request cp
Alternativ kann sync
anstelle von cp
verwendet werden. sync
prüft zusätzlich auf Unterschiede zwischen AWS und dem lokal heruntergeladenen Datensatz.
Wichtig
Wenn es sich bei der Quell-URL um ein Verzeichnis handelt, muss sie einen Platzhalter ( *
) enthalten.
Dieser Befehl lädt den gesamten Datensatz in einen lokalen Ordner namens MegaScenes/
herunter.
s5cmd --no-sign-request cp s3://megascenes/* ./MegaScenes/
Dieser Befehl lädt den Inhalt des images
rekursiv von AWS in den lokalen Ordner MegaScenes/images/
herunter:
s5cmd --no-sign-request cp s3://megascenes/images/* ./MegaScenes/images/
Dieser Befehl lädt eine bestimmte database.db
Datei von AWS in den entsprechenden lokalen Ordner herunter:
s5cmd --no-sign-request cp s3://megascenes/databases/main/000/000/database.db ./MegaScenes/databases/main/000/000/database.db
Es ist möglich, s5cmd zu verwenden, um Teilmengen von MegaScenes zum Herunterladen zu definieren; Dies geschieht mit s5cmd run
. Weitere Informationen finden Sie in der Dokumentation von s5cmd zur parallelen Ausführung mehrerer Befehle.
Verzeichnisinhalte auf AWS auflisten: s5cmd --no-sign-request ls
Dieser Befehl ist hilfreich, um zu sehen, welche Elemente sich in den einzelnen Verzeichnissen befinden, bevor Sie sie auf den lokalen Computer herunterladen.
Dieser Befehl listet den Inhalt der database/
des Unterordners in AWS auf.
Eingang:
s5cmd --no-sign-request ls s3://megascenes/databases/
Ausgabe:
DIR descriptors/
DIR main/
Mit dem Flag --no-sign-request
kann der Benutzer auf den AWS-Bucket zugreifen, ohne AWS-Anmeldeinformationen erstellen und bereitstellen zu müssen.
Weitere Befehle finden Sie in der Dokumentation zu s5cmd oder AWS CLI.
Einzelne Dateien können über HTTP (über wget
oder curl
) mit der Basis-URL https://megascenes.s3.us-west-2.amazonaws.com/
heruntergeladen werden.
Beispielsweise ist https://megascenes.s3.us-west-2.amazonaws.com/metadata/subcat/000/007/subcats.json ein direkter Download für die Unterkategorieinformationen für Szenen-ID 7
.
Der Verzeichnisbaum des Buckets sieht wie folgt aus:
s3://megascenes/
oder 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
Eine Szene wird durch ihre mit Nullen aufgefüllte sechsstellige Szenen-ID-Nummer dargestellt, wie unter Szenenordner in den entsprechenden Unterverzeichnissen beschrieben. Ein Verzeichnis, das den Szenennamen mit der Szenen-ID verknüpft, finden Sie unter: s3://megascenes/metadata/categories.json
. Einzelheiten zum Inhalt der Unterordner finden Sie in den entsprechenden Abschnitten weiter unten.
databases/
VerzeichnisDieses Verzeichnis enthält COLMAP-Datenbanken für jede Szene. COLMAP-Datenbanken enthalten tabellarische Informationen zu Bildern, Schlüsselpunkten, Deskriptoren, Übereinstimmungen und geschätzten Zwei-Ansicht-Geometrien. COLMAP-Datenbanken verwenden das SQLite-Format.
Das Verzeichnis database/
“ ist in zwei Unterverzeichnisse unterteilt:
main/
(1,9 TB), das database.db
Dateien enthältdescriptors/
(6,8 TB komprimiert, 8,3 TB unkomprimiert), das die Dateien descriptors.db.gz
enthältIn den beiden oben genannten Unterverzeichnissen wird eine Szene durch ihre Szenen-ID-Nummer dargestellt, wie unter Szenenordner beschrieben.
Für jede Szene wird die COLMAP-Datenbank in zwei Dateien aufgeteilt:
database.db
, die COLMAP-Datenbank ohne die Deskriptorentabelle.descriptors.db.gz
, die Deskriptorentabelle, die aus der COLMAP-Datenbank als eigene SQLite-Datenbank extrahiert wurde. Es wird mit gzip komprimiert.Wir trennen die Deskriptorentabelle, da sie den größten Teil des Platzes in der COLMAP-Datenbank einnimmt und möglicherweise keine relevanten Informationen für bestimmte Anwendungen enthält.
Für eine Szene mit der ID 1234
lauten die Datenbankdateien wie folgt:
databases/main/001/234/database.db
databases/descriptors/001/234/descriptors.db.gz
images/
VerzeichnisDieses Verzeichnis enthält Bilder und Bildmetadaten für jede Szene. Eine Szene wird durch ihre Szenen-ID-Nummer dargestellt, wie unter Szenenordner beschrieben.
Das Verzeichnis images/
ist 3,2 TB groß.
Eine Szene kann beliebig viele Unterkategorien haben. Jede Unterkategorie enthält Bilder, eine raw_metadata.json
, eine category.json
und eine 0/category.json
.
Bildmetadaten werden in raw_metadata.json
dargestellt. Dieses JSON enthält einen Schlüssel für jeden Bildnamen und Informationen zu verschiedenen aus Wikimedia Commons extrahierten Daten, einschließlich EXIF-Daten und Lizenzinformationen.
Der Name der Szenenunterkategorie befindet sich in subcategory_name/category.json
.
Eine Liste der Bildnamen befindet sich in subcategory_name/0/category.json
.
Für eine Szene mit der ID 1234
lauten die Bilddateien wie folgt:
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/
VerzeichnisDieses Verzeichnis enthält Metadaten für den Datensatz.
Das Verzeichnis metadata/
hat folgenden Inhalt:
subcat/
(386 MB), ein Verzeichnis, das JSON-Dateien mit Unterkategorieinformationen für Szenen mit mindestens einer Unterkategorie enthältwikidata/
(4,5 GB), ein Verzeichnis, das JSON-Dateien für alle Wikidata-Einträge enthält, die sich auf eine Szene oder ihre hierarchischen Klassen beziehencategories.json
(19,2 MB), ein Wörterbuch, das einen Wikimedia Commons-Kategorienamen einer Szenen-ID zuordnet.images_index.parquet
(~230 MB), ein tabellarischer Index aller Bilder in MegaScenes Unterkategorieinformationen befinden sich im Verzeichnis metadata/subcat/
. Dieses Verzeichnis ist nach Szenen-ID-Nummer organisiert, wie unter Szenenordner beschrieben.
Eine Szene ist nur dann in metadata/subcat/
vorhanden, wenn sie neben der Hauptkategorie mindestens eine Kategorie hat. Eine solche Szene verfügt über eine subcats.json
zur Darstellung der Unterkategoriedaten.
Eine subcats.json
-Datei ist ein Wörterbuch, das die folgenden Felder enthält:
main_category
: eine Zeichenfolge mit dem Namen der Wikimedia Commons-Kategorie der obersten Ebene.graph
: ein Wörterbuch, das eine Wikimedia-Commons-Kategorie einer Liste ihrer direkten Unterkategorien zuordnet. Eine Kategorie ist ein Schlüssel im graph
, wenn sie besucht wurde. Eine leere Liste bedeutet, dass die Kategorie keine Unterkategorien hat.frontier
: Eine Liste der im graph
vorhandenen Unterkategorien, die nicht erweitert wurden, um einen eigenen Schlüssel im graph
zu haben. Die Kategorie Arco degli Argentari hat die Szenen-ID 7
. Die Unterkategorieinformationen für diese Szene finden Sie unter s3://megascenes/metadata/subcat/000/007/subcats.json
und haben den folgenden Inhalt:
{
"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": []
}
Hier zeigt die Grafik, dass die Hauptkategorie Arco degli Argentari zwei Unterkategorien hat: Arco degli Argentari in der Kunst und Historische Bilder des Arco degli Argentari. Die Kategorie Arco degli Argentari in der Kunst hat keine Unterkategorien, daher die leere Liste. Im Gegensatz dazu gibt es in der Kategorie „Historische Bilder des Arco degli Argentari“ die Unterkategorie „Arco degli Argentari in der Kunst“.
Die Grenzliste ist leer, was bedeutet, dass dieses Unterkategoriediagramm vollständig erweitert ist.
Wir stellen eine Tabelle bereit, die die Bilder in MegaScenes unter s3://megascenes/metadata/images_index.parquet
(HTTPS-Download) (~230 MB) indiziert. Parquet-Dateien speichern tabellarische Daten wie CSV-Dateien, sind jedoch kompakter und schneller zu lesen. Sie können mit Python-Datenrahmenbibliotheken wie Polars (empfohlen) oder Pandas gelesen werden. Diese Tabelle enthält über 8 Millionen Zeilen, von denen jede ein Bild im Datensatz darstellt. Die Spalten sind:
Die entsprechende Wikimedia Commons-Seite für ein Bild befindet sich unter der URL https://commons.wikimedia.org/wiki/File:{image_name}
. Ebenso befindet sich die entsprechende Wikimedia Commons-Seite für eine Kategorie unter der URL https://commons.wikimedia.org/wiki/Category:{cat or subcat}
.
Obwohl diese Tabelle die analysierten Lizenzinformationen von Wikimedia Commons enthält, empfehlen wir dem Benutzer, die Bildlizenzen selbst zu überprüfen.
Die Unterkategorie wikidata/
wird nach Wikidata Q-ID organisiert. Die ersten drei Ziffern der Q-ID definieren die drei Unterordner, in denen die Wikidata-JSON-Informationen zu finden sind. Wenn die Q-ID weniger als drei Ziffern hat, befindet sich ihr JSON im Ordner other/
. Im Gegensatz zu den Szenen-IDs wird diese Nummer NICHT mit Nullen aufgefüllt.
Der JSON-Code für ein Wikidata-Element mit der Q-ID Q1234
befindet sich unter metadata/wikidata/1/2/3/Q1234.json
.
Der JSON für ein Wikidata-Element mit der Q-ID Q12
befindet sich unter metadata/wikidata/other/Q12.json
.
Die JSON-Dokumentation finden Sie auf dieser Seite auf Wikibase JSON.
Weitere Tools zum Parsen dieses JSON finden Sie auf dieser Wikidata-Seite zum Datenzugriff.
reconstruct/
Verzeichnis Dieses Verzeichnis enthält die COLMAP-Rekonstruktionen der spärlichen Punktwolke für jede Szene. Das reconstruct/
-Verzeichnis ist nach Szenen organisiert, entsprechend einer Szenen-ID-Nummer, wie unter Szenenordner beschrieben. Jede Rekonstruktion besteht aus einer images.bin
, cameras.bin
und points3D.bin
, wie hier beschrieben. Eine Szene kann null oder mehr Rekonstruktionen haben; Der Ordner reconstruct/
enthält nur Szenen mit einer oder mehreren.
Der Ordner reconstruct/
ist 429 GB groß.
Angenommen, eine Szene mit der ID 1234
hat drei Rekonstruktionen. Im sparses/
-Ordner dieser Szene gibt es drei Ordner, die von 0
bis 2
nummeriert sind.
Konkret sieht das Format wie folgt aus:
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
Die spärlichen Rekonstruktionen in MegaScenes können mit unserem Webviewer betrachtet werden.
Alternativ können Rekonstruktionen lokal über die COLMAP-GUI angezeigt werden (erfordert eine COLMAP-Installation).
Die Rekonstruktionen können in Python mit dem Skript read_write_model.py aus dem COLMAP-Repository geladen werden. Im Einzelnen sind die hilfreichen Funktionen: read_model
, read_points3D_binary
, read_images_binary
, read_cameras_binary
Der Datensatz verwendet ein System aus zwei Unterordnern zur Unterteilung der Szenen, wobei jede Szene eine Szenen-ID-Nummer hat. Der erste Unterordner verwendet die ersten drei Ziffern der 6-stelligen, mit Nullen aufgefüllten Szenen-ID. Der zweite Unterordner verwendet die letzten drei Ziffern. Die mit der Szene verknüpften Daten befinden sich im letztgenannten Unterordner.
Zum Beispiel:
533
hat, wird sie mit Nullen auf 000533
aufgefüllt. Diese Nummer wird in das Verzeichnis 000/533/
übersetzt.422678
hat, wird sie in das Verzeichnis 422/678/
übersetzt.Jede Szene basiert auf einer Kategorie von Wikimedia Commons. Beispielsweise verwendet die Szene „Arc_de_Triomphe_de_l'Étoile“ Bilder aus der Kategorie:Arc de Triomphe de l'Étoile und ihren Unterkategorien. MegaScenes verwenden Unterstriche anstelle von Leerzeichen für Szenennamen, sie sind jedoch austauschbar, wenn sie in Wikimedia Commons-URLs verwendet werden.
Die Datei s3://megascenes/metadata/categories.json
(HTTP-Link) verknüpft den Kategorienamen mit der Szenen-ID.
Wenn Sie fehlerhafte Rekonstruktionen finden oder Verbesserungen für den Datensatz haben, erstellen Sie bitte ein GitHub-Problem oder einen Diskussionsbeitrag.
Dieser Datensatz ist unter der Creative Commons Attribution 4.0 International License lizenziert. Die Fotos im Ordner images/
verfügen über eigene Lizenzen.