Model or dataset
InternRobotics/PointLLM avatar
InternRobotics/PointLLM

PointLLM: Wiring Colored Point Clouds Into a LLaMA Backbone

[ECCV 2024 Best Paper Candidate & TPAMI 2025] PointLLM: Empowering Large Language Models to Understand Point Clouds

1,054 stars58 forksPythonLicense varies

At a glance

What is it?
PointLLM is a research codebase that projects object point clouds into an LLM's latent space so the model can answer questions about single 3D objects. It is a training and evaluation release, not a packaged product, and the repository's own documentation sets the bar for what you must verify before committing a GPU to it.
Who is it for?
Adopt PointLLM if you are a research group that needs a reproducible baseline for object-level 3D question answering and can supply the Objaverse point cloud data plus the CUDA, PyTorch and Transformers versions the README pins. Do not adopt it if you need a supported inference service, multi-object or scene-level understanding, or a licence you can read before shipping.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 124 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap PointLLM fills: object point clouds as LLM input

Most multimodal LLM work treats images or video as the non-text modality. A point cloud is a different object: an unordered set of colored 3D coordinates with no fixed grid, no canonical camera, and no depth ambiguity to resolve. PointLLM's stated aim is a multi-modal large language model that understands colored point clouds of objects, perceiving object type, geometric structure and appearance without worrying about ambiguous depth, occlusion or viewpoint. That framing matters, because it tells you the intended unit of input is a single object, not a room, not a street scene, not a sequence of frames. The README describes the dataset as 660K simple and 70K complex point-text instruction pairs, used in a two-stage training strategy. The audience is therefore narrow and specific: researchers who want to probe whether a language model can reason about 3D shape and color when the shape arrives as coordinates rather than pixels, and who need published benchmarks to compare against. If your problem is segmenting a warehouse or tracking pedestrians across a lidar sweep, this repository is aimed somewhere else.

Point tokens in, text tokens out: the architecture the README describes

The overview section is short but concrete. A point encoder extracts features from the input point cloud and projects them into the latent space of the LLM backbone. The backbone then processes a single sequence containing both point tokens and text tokens, and generates the predicted tokens as output. The diagram in assets/model.jpg is the authoritative source for the exact encoder, and the README does not name it in prose, so read the figure rather than assuming a specific PointNet variant. Two consequences follow from this design. First, the point cloud is compressed into a fixed set of tokens before the language model ever sees it, so any geometric detail that the encoder discards is unrecoverable downstream. Second, the LLM is not modified architecturally in the description given; it is conditioned on a new token type, which is why the two-stage training schedule exists. The repository also ships an evaluation harness covering Generative 3D Object Classification and 3D Object Captioning, assessed through three different evaluation methods, including ChatGPT/GPT-4 based judging released alongside traditional metrics.

Why the README distrusts BLEU and ROUGE for this task

The evaluation section carries an unusually direct warning, quoted here in part: traditional metrics such as BLEU-1, ROUGE-L, and METEOR tend to favor shorter responses and may not effectively capture semantic accuracy. The README suggests the community not rely solely on these metrics. This is a real design constraint, not a disclaimer. Captioning a 3D object admits many correct phrasings, and n-gram overlap rewards a model that emits a short, safe sentence over one that correctly names a part. The repository's answer is to ship both a GPT-based evaluator and the traditional metric code, so a comparison can be run two ways. If you are building on this work, the practical implication is that your own evaluation pipeline needs a judge model and a budget for it, because the cheap metric will mislead you in a direction that happens to look like progress.

Getting it running: the pinned stack and the data you must fetch yourself

The README states the codes were tested under Ubuntu 20.04, NVIDIA driver 515.65.01, CUDA 11.7, Python 3.10.13, PyTorch 2.0.1 and a development build of Transformers pinned to a specific commit (transformers.git@cae78c46). Installation is a clone followed by a conda environment, an upgrade of pip to enable PEP 660 support, and an editable install. Training adds two more packages: ninja and flash-attn. The version pins are the part to take seriously. A development Transformers build tied to a commit is not something you can satisfy with a normal version range, and flash-attn is sensitive to the exact CUDA and PyTorch combination. On the data side, the instructions point to downloading compressed Objaverse training data, and the news entries record that the instruction-following data, both simple-description and complex instructions, was released on Hugging Face, along with the Objaverse colored point cloud files used by the project. The repository does not vendor those assets, so plan for a separate download step before any training run. Checkpoints are released for inference, and the README notes that the online demo was closed in April 2025 because the serving machine was needed for other purposes, so there is no hosted endpoint to fall back on.

The maintenance picture: two model generations and a closed demo

The news list reads as a project that moved through several phases. Inference code and checkpoints arrived in September 2023, instruction data in October, training code and PointLLM-v1.2 in December, evaluation code later that month, and a Gradio demo. ECCV 2024 acceptance followed, then a TPAMI 2025 acceptance for PointLLM-V2, with the note that models, codes and data are coming. In March 2026 the training annotations for PointLLM-V2 were published on Hugging Face. The last push recorded for the repository is May 2026, so the code is not abandoned, but the README's own framing places PointLLM-V2 in a partially released state at the time of writing. That creates a version question for anyone adopting it: the v1.2 training and inference path is the one with published code in this repository, while V2 is documented mainly through its paper and a dataset release. The repository does not state a licence in the material available here, and the README has a License section in its table of contents, so treat the licence as something to confirm from the repository itself before any redistribution or commercial use. Nothing here is legal advice; it is simply a gap you should close before you depend on the code.

Where it breaks: single objects, no scene reasoning, and a heavy install

The scope is the sharpest limitation. PointLLM is described as understanding colored point clouds of objects, and the training data is drawn from Objaverse, which is an object collection. Nothing in the README claims scene-level, multi-object or temporal understanding, and the token-projection design suggests the model expects one object's coordinates as its visual context. Feed it a full room scan and the encoder has no documented mechanism for separating what is inside. A second failure mode is environmental. The pinned driver, CUDA, PyTorch and Transformers commit, plus flash-attn for training, mean that a machine with a newer driver or a stock recent PyTorch is not the tested configuration, and the README gives no compatibility matrix beyond that single stack. Third, the evaluation depends on a GPT-based judge for the semantic side, which introduces an external API dependency and cost into any benchmark you run. Finally, the closed demo removes the fastest way to sanity-check outputs before you invest in the environment.

What to compare it against, and how the approach differs

The natural comparison is a rendered-image pipeline: project the point cloud to one or more depth or RGB views and hand the images to an existing vision-language model. That route reuses mature image backbones and off-the-shelf checkpoints, and it sidesteps the flash-attn and pinned-Transformers problem entirely. The difference in approach is where the ambiguity lives. A rendered view reintroduces viewpoint dependence and occlusion, the exact concerns PointLLM's README says it avoids by consuming coordinates directly. The cost is that you now own a 3D encoder and its training data. A second comparison is a task-specific 3D network, a classifier or captioner trained only for classification or captioning. That will be smaller and easier to deploy, but it cannot follow arbitrary instructions or answer a question phrased in free text, which is the capability the instruction pairs in this release exist to produce. Choose PointLLM when the instruction-following behaviour is the point; choose a rendered-view VLM when you want the shortest path to a working demo and can accept viewpoint sensitivity.

Editorial conclusion

Adopt PointLLM if you are a research group that needs a reproducible baseline for object-level 3D question answering and can supply the Objaverse point cloud data plus the CUDA, PyTorch and Transformers versions the README pins. Do not adopt it if you need a supported inference service, multi-object or scene-level understanding, or a licence you can read before shipping. Verify three things first: whether the repository states a licence at all, whether your driver, CUDA and flash-attn combination matches the tested stack, and whether the checkpoint you intend to use is the v1.2 release or the PointLLM-V2 work whose training annotations appeared on Hugging Face in March 2026.

Official sources

  1. InternRobotics/PointLLM on GitHub
  2. Issues
  3. Project website
  4. README
Community notes

Community notes