onnxruntime/download/vision/body_face_gesture_analysis.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
//! Module defining body, face and gesture analysis models available to download.
//!
//! See [https://github.com/onnx/models#body_analysis](https://github.com/onnx/models#body_analysis)
use crate::download::{vision::Vision, AvailableOnnxModel, ModelUrl};
/// Body, Face & Gesture Analysis
///
/// > Face detection models identify and/or recognize human faces and emotions in given images. Body and Gesture
/// > Analysis models identify gender and age in given image.
///
/// Source: [https://github.com/onnx/models#body_analysis](https://github.com/onnx/models#body_analysis)
#[derive(Debug, Clone)]
pub enum BodyFaceGestureAnalysis {
/// A CNN based model for face recognition which learns discriminative features of faces and produces
/// embeddings for input face images.
///
/// Source: [https://github.com/onnx/models/tree/master/vision/body_analysis/arcface](https://github.com/onnx/models/tree/master/vision/body_analysis/arcface)
///
/// Variant downloaded: ONNX Version 1.3 with Opset Version 8.
ArcFace,
/// Deep CNN for emotion recognition trained on images of faces.
///
/// Source: [https://github.com/onnx/models/tree/master/vision/body_analysis/emotion_ferplus](https://github.com/onnx/models/tree/master/vision/body_analysis/emotion_ferplus)
///
/// Variant downloaded: ONNX Version 1.3 with Opset Version 8.
EmotionFerPlus,
}
impl ModelUrl for BodyFaceGestureAnalysis {
fn fetch_url(&self) -> &'static str {
match self {
BodyFaceGestureAnalysis::ArcFace => "https://github.com/onnx/models/raw/master/vision/body_analysis/arcface/model/arcfaceresnet100-8.onnx",
BodyFaceGestureAnalysis::EmotionFerPlus => "https://github.com/onnx/models/raw/master/vision/body_analysis/emotion_ferplus/model/emotion-ferplus-8.onnx",
}
}
}
impl From<BodyFaceGestureAnalysis> for AvailableOnnxModel {
fn from(model: BodyFaceGestureAnalysis) -> Self {
AvailableOnnxModel::Vision(Vision::BodyFaceGestureAnalysis(model))
}
}