CoolFace
Modelpublic

OpenExplorer/pointpillars

sourceHugging Faceotherupdated 22d agoView on Hugging Face
0likes
Model Card

PointPillars (Car)

PointPillars voxelizes point clouds into pillars; PillarFeatureNet learns pillar features, which are scattered into pseudo-images via PointPillarScatter, then multi-scale feature extraction and 3D box regression are performed by a SECOND-style FPN (SECONDNeck) and PointPillarsHead; training uses joint supervision with FocalLoss + SmoothL1Loss + direction classification.


Deployment Metrics

Model Parameters

ModelModel InputBackboneNeckModel Output
PointPillarsSingle-frame LiDAR point cloud (N,4)PointPillarScatterSECONDNeckCar 3D detection boxes (B,N,cls+reg)

Accuracy Metrics

MarchMetricfloatcalibrationqathbm
J6M3D AP (Car)0.77310.75690.77090.7707
Data measured with march = March.NASH_M (J6M) configuration. HEAL version: heal 0.0.2 / hbdk4-compiler 4.11.11 / horizonpluginpytorch 3.3.10.

Performance Metrics

Performance test methodology: FPS is measured with single-core eight-thread; Latency is measured with single-core single-thread; Memory is peak DDR usage.
Marchlatency (ms)fpsMemory Usage (MB)
J6M22.52213.5855.90
J6P20.43344.8855.90
J6B1650.031.9953.00

Model Overview

Core Design

PointPillars voxelizes point clouds into pillars; PillarFeatureNet learns pillar features, which are scattered into pseudo-images via PointPillarScatter, then multi-scale feature extraction and 3D box regression are performed by a SECOND-style FPN (SECONDNeck) and PointPillarsHead; training uses joint supervision with FocalLoss + SmoothL1Loss + direction classification.

  • Task type: 3D object detection (LiDAR point cloud 3D Object Detection).
  • backbone: PointPillarScatter (scatters 64-dim pillar features learned by PillarFeatureNet into H×W×64 pseudo-image feature maps by coordinates, use_horizon_pillar_scatter=True).
  • neck: SECONDNeck (SECOND-style FPN: downsample layer channels [64, 128, 256], strides [2, 2, 2]; upsample layer channels [128, 128, 128], strides [1, 2, 4]; outputs three-scale features concatenated to 384 channels).
  • Point cloud preprocessing: PointPillarsPreProcess (voxelization: pc_range=[0, -39.68, -3, 69.12, 39.68, 1], voxel_size=[0.16, 0.16, 4], max 100 points per voxel, max 12000 voxels).
  • Feature extraction: PillarFeatureNet (num_filters=(64), 4-dim input, MLP + max-pool to 64-dim pillar features).
  • Detection head: PointPillarsHead (in_channels=384, use_direction_classifier=True, outputs classification + box regression + direction classification).
  • Anchor generation: Anchor3DGeneratorStride: Car anchor size 1.6×3.9×1.56, stride [0.32, 0.32, 0.0], offset [0.16, -39.52, -1.78], rotation angles [0, 1.57]; match threshold 0.6, mismatch threshold 0.45.
  • Post-processing: PointPillarsPostProcess: NMS (nms_iou_threshold=0.5, score_threshold=0.4, nms_pre_max_size=1000, nms_post_max_size=300, max_per_img=100).
  • Loss: FocalLoss (classification, alpha=0.25, gamma=2.0, weight=1.0) + SmoothL1Loss (box regression, beta=1/9, weight=2.0) + CrossEntropyLoss (direction, weight=0.2).
  • Model input: Single-frame LiDAR point cloud, shape (N, 4), N = number of points (deployment input padded to 150000 points), 4 dims = [x, y, z, intensity].
  • Model output: Car 3D boxes per frame (x, y, z, w, l, h, θ) + score + direction.
  • Classes: ["Car"].

Deployment notes: The PointPillars deployment graph includes full voxelization + feature extraction + backbone + head + post-processing. HBIR export enables enable_vpu=True; compilation uses input_source=["ddr"] (point cloud read from DDR, not pyramid image input), unlike image-based tasks. This task has no subgraph export; only one deploy.py.

Official Repo and Paper

Official repo: https://github.com/nutonomy/second.pytorch Paper: https://arxiv.org/abs/1812.05784v1

Reference

For more J6 chip deployment details, see https://developer.horizon.auto/blog/14086