timm 표준을 따르는 3D 포인트 클라우드 사전 학습 모델 PyTorch 라이브러리 구축 [P]
요약
이 프로젝트는 PyTorch 기반의 `torch-pointcloud` 라이브러리를 구축하여, timm 표준을 따르는 포인트 클라우드 모델 아키텍처와 사전 학습 체크포인트를 통합 제공합니다. 이 라이브러리는 PointNet++, DGCNN 등 다양한 최신 3D 모델들을 하나의 인터페이스로 재사용 가능하게 만들어 개발 편의성과 표준화를 높이는 데 중점을 두었습니다.
핵심 포인트
- timm 표준을 따르는 포인트 클라우드 모델 아키텍처 제공
- 다양한 3D 모델(PointNet++, PointNeXt 등) 통합 및 표준화
- 재사용성 향상을 위해 핵심 구성 요소 재구현 방지
- 분류, 분할, 탐지 등 다양한 작업 지원
https://preview.redd.it/m5e9anluo8vh1.png?width=1080&format=png&auto=webp&s=4c80687e6fe40036843a97ed8975ce46eaab0662 지난 몇 년 동안 여가 시간에 작업해 온 프로젝트를 공유하게 되어 기쁩니다. 이 프로젝트는 당시 torch-points3d 사용이 어려워(설치 오류가 너무 많았음) 시작했습니다. 참고로, 이 프로젝트는 현재 활발히 개발 중이며 알파 단계입니다. 초기 사용자 및 피드백을 찾고 있습니다!
무엇인가요: torch-pointcloud는 plain-PyTorch 라이브러리로, timm의 정신에 따라 여러 포인트 클라우드 아키텍처와 그 사전 학습 체크포인트를 하나의 create_model() 팩토리 뒤에 배치합니다. 이 라이브러리는 핵심 구성 요소 및 레이어(예: KNN, FPS 및 기타 PointNetSetAbstraction)가 반복적으로 재구현되는 것을 방지하여 재사용성과 표준화에 중점을 둡니다. 이 라이브러리에서 모든 모델은 동일한 인터페이스를 공유하고 동일한 핵심 구성 요소를 재사용합니다.
import torch
import torch_pointcloud as tp
model = tp.create_model("pointnext-sm.scanobjectnn-hardest.openpoints", task="classification", pretrained=True, ).eval()
pos = torch.randn(2048, 3)
x = torch.cat([pos, pos[:, 1:2] - pos[:, 1].min()], dim=1) # xyz + height
batch = torch.zeros(2048, dtype=torch.long)
logits = model(x, pos, batch) # (1, 15)
설치 방법 (더 자세한 내용은 문서를 참조하세요):
# 선택 사항: torch의 CUDA 버전을 지정합니다
pip install torch==2.10.0 --index-url https://download.pytorch.org/whl/cu128
pip install torch-pointcloud
# CUDA 버전과 관련된 필수 CUDA/CPU 커널을 설치합니다
pip install pyg-lib -f https://data.pyg.org/whl/torch-2.10.0+cu128.html
현재 충분한 시간이 없어서 CUDA 커널을 직접 유지 관리하는 대신, 가능한 한 이미 빌드된 휠(wheel)을 재사용하여 설치 과정을 더 원활하게 만들려고 노력했습니다.
범위: 분류(Classification), 의미론적 및 부분 분할(semantic and part segmentation), 탐지(detection), 그리고 자기 지도 사전 학습(self-supervised pretraining): PointNet++, DGCNN, KPConv, RandLA-Net, PointNeXt, PointMLP, Point Transformer v1/v2/v3, Sonata, PointMamba, VoteNet, 3DETR, PointPillars, SECOND, PointRCNN, SPVCNN, OctFormer, Point-MAE/BERT/GPT 및 그 외. 가중치(Weights)는 Hugging Face에 호스팅됩니다. 데이터셋(ModelNet40, ScanObjectNN, S3DIS, ScanNet, SemanticKITTI, nuScenes, KITTI, SUN RGB-D 등), 변환(transforms), 대규모 분할을 위한 타일 추론기(tiled inferers). 패킹된 배치 텐서(Packed-batch tensors) (PyTorch Geometric 관례). 지원되는 작업 및 사용 사례. 하지만... 왜? 대부분의 포인트 클라우드 라이브러리는 로컬에서 구축하기 위해 설정 파일과 사용자 정의 연산(custom ops) 및 커널을 중심으로 만들어진 연구 코드베이스에 존재합니다. 또한, 과거에 발표된 실험 결과를 재현하는 것이 어려울 때가 있습니다 (일반적으로 체크포인트와 관련된 코드가 아무런 통보 없이 변경되기 때문). 게다가 일부 모델은 다른 전략(TTA, 분할 등)을 사용하여 평가되므로 비교가 공정하지 않습니다. 왜냐하면 공통 전략을 사용해 평가되지 않았기 때문입니다. 반면, 저는 pip install로 쉽게 재사용할 수 있고, 여러 리포지토리에서 훈련된 가중치를 재사용할 수 있으며, 쉽게 벤치마킹 할 수 있는 무언가를 원했습니다. 모든 모델은 원래 보고된 지표와 비교하여 재벤치마킹되고 비교되었습니다. 측정된 성능 대 원래 성능. 크레딧: 아키텍처 및 사전 학습된 가중치는 Pointcept, OpenPoints, MIT Han Lab, FAIR, OpenMMLab 등 원래 저자들로부터 왔습니다. 모든 체크포인트 이름은 출처 저자를 포함합니다 (예: .pointcept ). THIRD_PARTY_NOTICES.md에는 모든 출처 리포지토리, 라이선스 및 데이터셋 조건이 나열되어 있습니다. 리포: https://github.com/arthurdjn/pytorch-pointcloud 문서 + 튜토리얼: https://pytorch-pointcloud.org 제출자 /u/arthurdjn [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/MachineLearning (hot)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기