https://github.com/unmannedlab/RELLIS-3D
RELLIS-3D 는 학습을 위한 train dataset 으로 annotated ply 파일을 제공합니다. 다음 링크에서 해당 파일을 다운로드 받을 수 있습니다.
CloudCompare 에서 확인을 해 보면 이와 같이 포인트에 색깔이 칠해져 있는데, 라벨 정보에 관해서는 다음과 같이 설명이 되어 있습니다.
그런데, 딱히 찾아봐도 이걸 받아오는 코드는 별로 없어서...(너무 간단해서 그런지...) 코드를 공유합니다.
import os
def read_ply(filename):
""" read XYZ point cloud from filename PLY file """
plydata = PlyData.read(filename)
pc = plydata['vertex'].data
pc_array = np.array([[int(x), int(y), int(z), int(intensity), int(t), int(reflectivity), int(ring), int(noise), int(range), int(label), int(red), int(green), int(blue)] for x, y, z, intensity, t, reflectivity, ring, noise, range, label, red, green, blue in pc])
print(pc_array[300]) #for test
return pc_array
read_ply(ply 파일 경로)
#출력 결과
[ 14 -1 -1 201 194048 4345 44 708 14782 3
0 102 0]
array([[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0],
...,
[ 5, 0, -1, ..., 0, 102, 0],
[ 4, 0, -1, ..., 0, 102, 0],
[ 4, 0, -1, ..., 0, 102, 0]])
그러면 다음과 같이 ply 파일 내부의 정보를 포인트별로 읽어올 수 있습니다. 해당 숫자에 매치된 라벨은 논문에서도 확인할 수 있습니다.
(덧. 확인해보니 라벨이 논문에 나타난 숫자들과 맞지 않아서...
github issues 에 올라온 이 항목이 대체로 일치하는듯 합니다.)
간단하긴 한데, 찾아보니 아무도 이와 관련한 글을 써주지 않아서 남깁니다.