Gender and age estimate
InsightFace genderage
Estimate gender and a coarse age band from an aligned face crop.
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 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.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
}
}