3D-PAQA Evaluator (PointTransformerV3)

A lightweight preference-aligned 3D quality assessment model. Given a textured 3D mesh, it predicts six perceptual quality scores aligned with human preference:

geometry, texture, material, plausibility, artifact, preference

Each score is on roughly a 1–5 scale (higher = better). The model is trained on the 3D-PAQA dataset and predicts perceptual quality directly from point-cloud features, without rendering or MLLM inference at test time.

  • Backbone: PointTransformerV3 (cls_mode, global-pooled regression head)
  • Parameters: ~38.9M
  • Input: surface point cloud sampled from a mesh, 11 per-point features [xyz(3), rgb(3), normal(3), metallic(1), roughness(1)], voxelized at grid_size=0.02
  • Output: 6 scalar scores (order above)
  • Training data: JiHyuk-Byun/3D-PAQA β€” 216,540 preference-aligned Objaverse assets (24,096-asset held-out test split)
  • Selection metric: best validation mean SROCC = 0.7357 (epoch 47), across the 6 criteria
  • Training code: github.com/JiHyuk-Byun/3D-PAQA (this checkpoint pairs with tag v1.0)

What the labels are (and what "human-aligned" means here)

The training targets are not raw human ratings. They are preference-aligned annotations produced by an MLLM (Qwen2-VL-72B) using an exemplar-anchored relative- ranking scheme, where human preference is injected via 100 human-labeled anchor objects (see the dataset card for the full procedure). Alignment with people is measured against a held-out human user study (~12k human responses on an Objaverse subset). On that human benchmark the evaluator correlates strongly across all six criteria and exceeds its teacher MLLM on every criterion β€” i.e. the large but noisy MLLM supervision distills into a smaller, more stable predictor.

Files

file description
model.safetensors bare PointTransformerV3 weights (fp32)
config.json architecture hyper-parameters + metadata
inference_example.py end-to-end glb β†’ 6 scores example

Usage

The model code (PointTransformerV3 + the 6-head regressor) lives in the training repo JiHyuk-Byun/3D-PAQA. Clone it and load these weights:

git clone --branch v1.0 https://github.com/JiHyuk-Byun/3D-PAQA  # tag matching this checkpoint
# environment: torch 2.1 + cu118, spconv, flash-attn, torch-scatter/sparse/cluster
# (see 3D-PAQA/requirements.txt and the PointTransformerV3 environment notes)
pip install huggingface_hub safetensors trimesh
import json, torch, numpy as np
from safetensors.torch import load_file
from huggingface_hub import hf_hub_download

# 1. build the architecture (from the 3D-PAQA training repo)
from qt.models import PointTransformerV3
cfg = json.load(open(hf_hub_download("JiHyuk-Byun/3D-PAQA-evaluator", "config.json")))
model = PointTransformerV3(**cfg["model_args"]).cuda().eval()

# 2. load weights
sd = load_file(hf_hub_download("JiHyuk-Byun/3D-PAQA-evaluator", "model.safetensors"))
model.load_state_dict(sd, strict=True)

# 3. sample a mesh into the 11-ch point cloud (see inference_example.py / mesh2pc.py),
#    build the batch with the ObjaverseDataset collate (grid_size=0.02), forward.
#    scores = model(batch)  # -> [1, 6] in the criteria order above

See inference_example.py for the full pipeline (mesh β†’ point-cloud features β†’ voxelize β†’ forward β†’ 6 scores), including the exact preprocessing contract the model was trained on.

Preprocessing contract (must match training)

Scores drift if preprocessing differs. Sample surface points and attach, per point: coord (xyz), color (base-color RGB in [0,1], 255/white if untextured), normal, metallic, roughness (1.0 if no material). Voxelize with grid_size=0.02, FNV hash. The reference sampler is mesh2pc.py in the dataset repo.

Intended use & limits

  • Validated use: human-aligned perceptual quality assessment / ranking of human-created (Objaverse-style) 3D assets across the six criteria. The decomposed, criterion-wise scores give interpretable feedback (which of geometry / texture / material / etc. is weak).
  • Demonstrated (single case): as an efficient reward/verifier in an agentic loop that steers an LLM agent to iteratively refine a generated asset's weakest criterion.
  • Not validated (potential extensions): use as a general generative-model evaluator or dataset curator for AI-generated / text-to-3D content. The training labels cover human-created assets; generated meshes are out-of-distribution and this use case would require additional validation.
  • Scores on out-of-distribution meshes (very high-poly scans, non-object scenes, generated content) are less reliable. On generated meshes, weight iteration-to-iteration deltas rather than absolute values, and treat the model as a relative quality signal (absolute-value anchors are approximate).

License & attribution

  • Weights & code in this repo: CC-BY-4.0 (this work).
  • The backbone architecture is PointTransformerV3 (Pointcept, Apache-2.0).
  • Trained on labels over Objaverse assets; the underlying 3D assets remain under their original per-asset Objaverse licenses (not redistributed here).

Citation

@misc{byun2026_3dpaqa,
  title  = {3D-PAQA: Towards Preference-Aligned 3D Quality Assessment},
  author = {Byun, JiHyuk},
  year   = {2026},
  note   = {https://huggingface.co/JiHyuk-Byun/3D-PAQA-evaluator}
}
Downloads last month
167
Safetensors
Model size
38.9M params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Dataset used to train JiHyuk-Byun/3D-PAQA-evaluator