TUM-Facade・Semantic3D:点群データセットの概要とダウンロード用Pythonコード
1. エグゼクティブサマリー
本記事は,点群データセット2種(TUM-Facade,Semantic3D)の概要と,それぞれのダウンロードを行うPythonコードを掲載する。
各データセットは静的地上レーザースキャナおよび車載MLSにより取得された屋外点群データであり,ファサードセグメンテーション,セマンティックセグメンテーションなどの研究・教育用途に用いることができる。総点数は約3億3,300万点から40億点以上まで異なり,クラス数・座標系・フォーマット・ライセンスもデータセットごとに異なる。
Pythonコードは,大学アーカイブサーバなどの各データセットの公式配布元からファイルをダウンロードする。ダウンロード済みファイルのスキップ機能とファイルサイズ表示機能を備えている。ダウンロード対象のファイル数・推定サイズ・必要ツールの一覧は第4章冒頭に掲載している。
2. 前準備(必要ソフトウェアの入手)
本記事のPythonコードは標準ライブラリ(os,base64,subprocess,urllib.request)で動作する。
7-Zipは、Paris-Lille-3D,TUM-Facade,Semantic3D で使用する。
s5cmdは、Argoverse 2 で使用する。
以下のいずれかの方法で Python 3.12 をインストールする。Python がインストール済みの場合、この手順は不要である。 方法1:winget によるインストール 管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「 方法2:インストーラーによるインストール インストールの確認 コマンドプロンプトで以下を実行する。 バージョン番号(例: Pythonプログラムの編集・実行には、AIエディタの利用を推奨する。ここでは、Windsurfのインストールを説明する。Windsurf がインストール済みの場合、この手順は不要である。 管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「
【関連する外部ページ】
Windsurf の公式ページ: https://windsurf.com/
管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「Python 3.12 のインストール(Windows 上) [クリックして展開]
cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。winget install -e --id Python.Python.3.12 --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 AssociateFiles=1 InstallLauncherAllUsers=1"--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。
python コマンドを実行できない。python --versionPython 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。AIエディタ Windsurf のインストール(Windows 上) [クリックして展開]
cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。winget install -e --id Codeium.Windsurf --scope machine --accept-source-agreements --accept-package-agreements --custom "/SUPPRESSMSGBOXES /MERGETASKS=!runcode,addtopath,associatewithfiles,!desktopicon"
powershell -Command "$env:Path=[System.Environment]::GetEnvironmentVariable('Path','Machine')+';'+[System.Environment]::GetEnvironmentVariable('Path','User'); windsurf --install-extension MS-CEINTL.vscode-language-pack-ja --force; windsurf --install-extension ms-python.python --force; windsurf --install-extension Codeium.windsurfPyright --force"--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。7-Zip のインストール [クリックして展開]
cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。REM 7-Zip をシステム領域にインストール
winget install --scope machine --id 7zip.7zip -e --silent --accept-source-agreements --accept-package-agreements --force
REM 7-Zip のパス設定
powershell -NoProfile -Command "$p='C:\Program Files\7-Zip'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and $c -notlike \"*$p*\"){[Environment]::SetEnvironmentVariable('Path',\"$p;$c\",'Machine')}"
3. 実行のための準備とその確認手順(Windows 前提)
3.1 プログラムファイルの準備
第5章に掲載するソースコードをテキストエディタ(メモ帳,Windsurf 等)に貼り付け実行する(文字コード:UTF-8)。
3.2 動作確認チェックリスト
| 確認項目 | 期待される結果 |
|---|---|
| ダウンロード開始時 | 「ダウンロード中...」または「ダウンロード中: (ファイル名)」と表示される |
| ダウンロード完了後 | 「完了」と表示され,ファイルサイズ(GB単位)が出力される |
| 再実行時(ファイル既存) | 「スキップ」を含むメッセージが表示され,再ダウンロードされない |
| 保存先ディレクトリ | ./datasets/ 以下にファイルと展開済みデータが存在する |
4. 概要・使い方・実行上の注意
各データセットの概要,属性,ライセンス,注意点を以下に記載する。ソースコードは第5章に掲載している。
4.0 ダウンロード一覧
以下の表は,第5章の各ソースコードが実際にダウンロードするファイルの一覧である。データセット自体の総点数やクラス数ではなく,コードを実行した際に取得されるファイル数・推定サイズ・必要ツールをまとめている。
| データセット | ダウンロードファイル数 | ダウンロード内容 | 推定合計サイズ(圧縮時) | 展開後の形式 | 保存先 | 必要ツール |
|---|---|---|---|---|---|---|
| TUM-Facade | 1 | tum_facade.zip(TUM mediaTUM経由,内部に24ファイル) | 約16 GB | .pcd | ./datasets/tum_facade/ |
7-Zip |
| Semantic3D | 21 | 訓練データ15個(.7z),訓練ラベル1個(.7z),テストデータ4個(.7z),テストラベル1個(.zip) | 約20 GB(ファイルにより0.2〜2.7 GB) | ASCII テキスト(.txt + .labels) | ./datasets/semantic3d/ |
7-Zip |
補足:
- 「推定合計サイズ」はダウンロード時(圧縮状態)の目安であり,展開後はこれより大きくなる。実際のサイズはコード実行時のコンソール出力で確認できる。
- Semantic3D の個別ファイルサイズはスキャンごとに大きく異なる(例: bildstein_station1 は約0.2 GB,sg27_station2 は約2.7 GB)。
- TUM-Facade,Semantic3D はダウンロード済みファイルが存在する場合,自動的にスキップされる。
4.1 TUM-Facade
TUM-Facadeは,ミュンヘン工科大学(TUM)キャンパス周辺の建物ファサードに対するセグメンテーション用点群データセットである。窓,ドア,バルコニー,モールディング等のファサード要素にラベルが付与されている。
| 項目 | 内容 |
|---|---|
| 総点数 | 約3億3,300万点(アノテーション済み) |
| 対象 | 33棟のアノテーション済みファサード+8棟の未アノテーション |
| クラス数 | ファサード要素クラス(Wall, Window, Door, Balcony, Molding, Deco, Column, Arch, Stair, Ground surface, Terrain, Roof, Blinds, Outer ceiling surface, Interior, Other) |
| フォーマット | .pcd |
| 座標系 | ローカル座標系およびUTM座標系 |
| ライセンス | CC BY 4.0 |
4.2 Semantic3D
Semantic3Dは,ETH Zurichが提供した大規模点群分類ベンチマークである。静的地上レーザースキャナで取得された高密度点群で,教会,街路,鉄道,広場など多様なシーンを含む。2025年8月にベンチマークが終了し,テストラベルを含む全データが公開された。
| 項目 | 内容 |
|---|---|
| 総点数 | 40億点以上 |
| クラス数 | 8(man-made terrain, natural terrain, high vegetation, low vegetation, buildings, hard scape, scanning artefacts, cars)+unlabeled |
| フォーマット | ASCII(x, y, z, intensity, r, g, b),7zip圧縮 |
| ライセンス | CC BY-NC-SA 3.0 |
reduced-8(縮小テストセット版)の全ファイルをダウンロードする。展開に7-Zipが必要である。
5. ソースコード
5.1 TUM-Facade
"""TUM-Facade ダウンロード(TUM mediaTUM経由)"""
import os
import subprocess
import urllib.request
DOWNLOAD_DIR = "./datasets/tum_facade"
URL = "https://dataserv.ub.tum.de/index.php/s/m1636761.003/download"
os.makedirs(DOWNLOAD_DIR, exist_ok=True)
path = os.path.join(DOWNLOAD_DIR, "tum_facade.zip")
if not os.path.exists(path):
print("ダウンロード中...")
urllib.request.urlretrieve(URL, path)
print(f"完了({os.path.getsize(path) / 1e9:.2f} GB)")
subprocess.run(["7z", "x", path, f"-o{DOWNLOAD_DIR}", "-y"])
else:
print("スキップ: tum_facade.zip(ダウンロード済み)")
5.2 Semantic3D
"""Semantic3D ダウンロード(reduced-8,ETH Zurich アーカイブ経由)"""
import os
import subprocess
import urllib.request
DOWNLOAD_DIR = "./datasets/semantic3d"
BASE = "https://share.phys.ethz.ch/~pf/semantic3d/data"
TRAIN = [
"bildstein_station1_xyz_intensity_rgb",
"bildstein_station3_xyz_intensity_rgb",
"bildstein_station5_xyz_intensity_rgb",
"domfountain_station1_xyz_intensity_rgb",
"domfountain_station2_xyz_intensity_rgb",
"domfountain_station3_xyz_intensity_rgb",
"neugasse_station1_xyz_intensity_rgb",
"sg27_station1_intensity_rgb",
"sg27_station2_intensity_rgb",
"sg27_station4_intensity_rgb",
"sg27_station5_intensity_rgb",
"sg27_station9_intensity_rgb",
"sg28_station4_intensity_rgb",
"untermaederbrunnen_station1_xyz_intensity_rgb",
"untermaederbrunnen_station3_xyz_intensity_rgb",
]
TEST = [
"MarketplaceFeldkirch_Station4_rgb_intensity-reduced.txt",
"StGallenCathedral_station6_rgb_intensity-reduced.txt",
"sg27_station10_rgb_intensity-reduced.txt",
"sg28_Station2_rgb_intensity-reduced.txt",
]
os.makedirs(DOWNLOAD_DIR, exist_ok=True)
def dl(url, dest):
if os.path.exists(dest):
print(f" スキップ: {os.path.basename(dest)}(ダウンロード済み)")
return False
print(f" ダウンロード中: {os.path.basename(dest)}")
urllib.request.urlretrieve(url, dest)
print(f" 完了({os.path.getsize(dest) / 1e9:.2f} GB)")
return True
print("訓練データ:")
for name in TRAIN:
p = os.path.join(DOWNLOAD_DIR, f"{name}.7z")
if dl(f"{BASE}/point-clouds/training1/{name}.7z", p):
subprocess.run(["7z", "x", p, f"-o{DOWNLOAD_DIR}", "-y"])
print("訓練ラベル:")
p = os.path.join(DOWNLOAD_DIR, "sem8_labels_training.7z")
if dl(f"{BASE}/sem8_labels_training.7z", p):
subprocess.run(["7z", "x", p, f"-o{DOWNLOAD_DIR}", "-y"])
print("テストデータ(reduced-8):")
for name in TEST:
p = os.path.join(DOWNLOAD_DIR, f"{name}.7z")
if dl(f"{BASE}/point-clouds/testing2/{name}.7z", p):
subprocess.run(["7z", "x", p, f"-o{DOWNLOAD_DIR}", "-y"])
print("テストラベル:")
p = os.path.join(DOWNLOAD_DIR, "reduced-8-test.zip")
if dl(f"{BASE}/reduced-8-test.zip", p):
subprocess.run(["7z", "x", p, f"-o{DOWNLOAD_DIR}", "-y"])
print("完了")
6. まとめ
6.1 取得方式と規模
本記事の2つのデータセットは,車載MLSおよび静的地上レーザースキャナにより収集されており,約3億3,300万点(TUM-Facade)から40億点以上(Semantic3D)の規模を持つ。
6.2 セマンティックラベルとベンチマーク
各データセットには建物,植生,車両,ファサード要素などのクラスが付与されている。Semantic3Dでは2025年8月のベンチマーク終了後にテストラベルが公開された。
6.3 座標系とデータ前処理
TUM-Facadeではローカル座標系とUTM座標系の両方が提供されている。
6.4 配布形式とダウンロード手段
配布元はTUM mediaTUM,ETH Zurichアーカイブサーバである。ダウンロード対象の一覧(ファイル数・推定サイズ・必要ツール)は第4章冒頭の表を参照されたい。
6.5 ライセンス
各データセットのライセンスはCC BY 4.0(TUM-Facade),CC BY-NC-SA 3.0(Semantic3D)である。Semantic3Dには非商用条件が付されている。商用利用を検討する場合は個別に条件を確認する必要がある。