Skip to content
imaged

Gender and age estimate

InsightFace genderage

Estimate gender and a coarse age band from an aligned face crop.

MIT
Explore model

About this model

InsightFace's genderage model from the buffalo_l pack. About 1.3 MB on disk. The model is trained on web-scraped headshots and skews older for distinctive faces. Treat the age output as a coarse band, not a year-precise number.

The family returns a label of male or female with confidence, plus a raw age value. Run it as one head of the face_attributes family alongside 2D and 3D landmarks.

What you can build

  • Tag stock photo libraries with coarse demographic buckets.
  • Adapt avatar styling to a captured selfie in an entertainment app.
  • Aggregate demographic distribution across a private dataset, on device.
  • Filter retail-display media by an estimated age bucket.

Variants & downloads

Choose the build for your app

Model files are being prepared.

Explore the model’s examples, source links, and integration notes while download variants are added.

Example inference

Input
A frontal portrait of Albert Einstein from Wikimedia Commons.
Output
The portrait with bbox, landmarks, and the demographics label drawn.

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

Catalog reference · variant unspecifiedCold start (ms): 91.93

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.demographics.model", "weights/genderage.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 == "demographics") {
        auto& cr = std::get<imaged::SDK::ClassificationResult>(sub);
        // cr.label is "male" or "female"; cr.allScores[2] is age in years
    }
}