見出し画像

Kaolin / データセット

3Dディープラーニングで最初に行うことは、PyTorchが操作できる形式で、データを読み込むことです。「Kaolin」を使えば、コード1行で読み込めます。
(元ネタはKaolinのドキュメント)

1. ShapeNet

画像1

ShapeNet」は、三角メッシュとしてエンコードされたオブジェクトのリポジトリで、3D深層学習でよく使用されます。ただし、最初にデータセットへのアクセスを取得する必要があります(使用条件に同意、ダウンロード、解凍)。次に「Kaolin」を使って「ShapeNet」のデータをいくつかの形式で読み込みます。

「Kaolin」は、ShapeNetのデータセットをShapeNetクラスで読み込みます。メッシュ、ポイントクラウド、ボクセル、符号付き距離関数など、複数の形式をサポートしています。通常、ShapeNetは通常メッシュとしてのみ利用できますが、「Kaolin」は内部的に他の表現に変換して利用できます。ShapeNetカテゴリを非ネイティブ(非メッシュ)形式で初めて読み込むときは、データを内部的に変換してからキャッシュするため、時間がかかります。

ShapeNetディレクトリがパスshapenet_dirにあると仮定すると、ShapeNetのplaneカテゴリからメッシュを読み込む方法は次のとおりです。

>>> from kaolin.datasets import shapenet
>>> from torch.utils.data import DataLoader
>>> meshes = shapenet.ShapeNet_Meshes(root=shapenet_dir, categories=['plane'])


複数のカテゴリの読み込みも簡単です。

>>> meshes = shapenet.ShapeNet_Meshes(root=shapenet_dir,
categories=['chair', 'bowl'])

プレーンテキスト名(例:chair、bowlなど)でカテゴリを指定するか、synset_id(例:03636649、02924116など)を使用できます。メッシュとは異なる表現が必要な時は、ボクセルやポイントクラウドなど、さまざまな表現を簡単にロードできます。

>>> voxels = shapenet.ShapeNet_Voxels(root=shapenet_dir, categories=['plane'])
>>> points = shapenet.ShapeNet_Points(root=shapenet_dir, categories=['plane'])

2Dデータの場合と同様に、PyTorchデータローダーを初期化するために使用できるようになりました。

>>> voxel_dataloader = DataLoader(voxels, batch_size=10, shuffle=True, num_workers=8)
>>> point_dataloader = DataLoader(points, batch_size=10, shuffle=True, num_workers=8)

画像3

2. ModelNet

「ModelNet」ボクセルは同様の方法でロードできます。

>>> from kaolin.datasets import modelnet
>>> voxels = modelnet.ModelNet(root=shapenet_dir, categories=['plane'])
>>> dataloader = DataLoader(voxels, batch_size=10, shuffle=True, num_workers=8)

3. SHREC16

画像2

「SHREC」は、「Eurographics 2016」での「ShapeNet Core55 Challenge」からの大規模3D取得のためにキュレーションされたデータセットです。「SHREC16」のメッシュデータローダーを実装します。

>>> from kaolin.datasets import shrec
>>> meshes = shrec.SHREC16(root=shapenet_dir, categories=['plane'])
>>> dataloader = DataLoader(meshes, batch_size=10, shuffle=True, num_workers=8)

この記事が気に入ったらサポートをしてみませんか?