3D facial landmarks
InsightFace 3D landmarks (68)
68 face landmarks with a depth axis, from an aligned crop.
About this model
InsightFace's 1k3d68 model from the buffalo_l pack. Around 137 MB on disk, the largest of the three face_attributes heads. Output is 68 (x, y, z) points; the z component supports head-pose estimation.
The 88 ms warm budget for the combined attributes pass is dominated by this head. Skip it if 2D landmarks are enough; the family loads only the heads you configure.
What you can build
- Estimate head pose for a 3D avatar that follows the user's gaze.
- Build a head-tilt control for an accessibility input scheme.
- Mesh-fit a 3D face for AR try-on of glasses or hats.
- Drive a parallax effect from real head movement on a webcam.
Variants & downloads
Choose the build for your appModel files are being prepared.
Explore the model’s examples, source links, and integration notes while download variants are added.
Example inference
Performance
Results depend on the device, runtime, and test conditions. Each measurement keeps its own context.
M1 Max, macOS 15, ONNX Runtime 1.17 (combined attributes pass)
See original catalog hardware notes · CPU
88.5 ms
Warm inference
Reference result from the existing catalog; conversion variant and measurement date were not recorded.
Integration examples
Vision SDK integration
cpp
#include "imaged/sdk.hpp"
#include "imaged/families/face_attributes/face_attributes_family.hpp"
imaged::SDK::AI ai;
auto& config = ai.getOptions();
config.set("face_attributes.landmarks3d.model", "weights/1k3d68.onnx");
imaged::SDK::FaceAttributesFamily family;
family.load(config);
imaged::SDK::Image alignedFace;
alignedFace.load("aligned_112x112.jpg");
auto result = std::get<imaged::SDK::MultiTaskResult>(family.run({&alignedFace}));
for (const auto& [name, sub] : result.tasks) {
if (name == "landmarks_3d") {
auto& dr = std::get<imaged::SDK::DetectionResult>(sub);
auto& points = dr.detections[0].keypoints; // 68 points with z
}
}