pub struct Model;
#[cfg(feature = "ort-backend")]
impl Model {
pub fn ort(
model_path: &str,
input_size: (u32, u32),
) -> Result<crate::backend_ort::ModelUltralyticsOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelUltralyticsOrt::new_from_file(model_path, input_size, vec![])
}
pub fn ort_filtered(
model_path: &str,
input_size: (u32, u32),
class_filters: Vec<usize>,
) -> Result<crate::backend_ort::ModelUltralyticsOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelUltralyticsOrt::new_from_file(model_path, input_size, class_filters)
}
pub fn yolov5_ort(
model_path: &str,
input_size: (u32, u32),
) -> Result<crate::backend_ort::ModelYOLOv5Ort, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYOLOv5Ort::new_from_file(model_path, input_size, vec![])
}
pub fn yolov5_ort_filtered(
model_path: &str,
input_size: (u32, u32),
class_filters: Vec<usize>,
) -> Result<crate::backend_ort::ModelYOLOv5Ort, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYOLOv5Ort::new_from_file(model_path, input_size, class_filters)
}
}
#[cfg(feature = "ort-backend")]
impl Model {
pub fn yunet_ort(
model_path: &str,
) -> Result<crate::backend_ort::ModelYuNetOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYuNetOrt::new_from_file(model_path)
}
}
#[cfg(feature = "ort-backend")]
impl Model {
pub fn arcface_ort(
model_path: &str,
) -> Result<crate::backend_ort::ModelArcFaceOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelArcFaceOrt::new_from_file(model_path)
}
pub fn arcface_ort_with_norm(
model_path: &str,
norm: crate::backend_ort::ArcFaceNorm,
) -> Result<crate::backend_ort::ModelArcFaceOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelArcFaceOrt::new_from_file_with_norm(model_path, norm)
}
pub fn face_pipeline(
detector_path: &str,
recognizer_path: &str,
) -> Result<crate::face_pipeline::FacePipeline, crate::backend_ort::OrtModelError> {
crate::face_pipeline::FacePipeline::new(detector_path, recognizer_path)
}
pub fn face_pipeline_with_norm(
detector_path: &str,
recognizer_path: &str,
norm: crate::backend_ort::ArcFaceNorm,
) -> Result<crate::face_pipeline::FacePipeline, crate::backend_ort::OrtModelError> {
crate::face_pipeline::FacePipeline::new_with_norm(detector_path, recognizer_path, norm)
}
}
#[cfg(feature = "ort-cuda-backend")]
impl Model {
pub fn arcface_ort_cuda(
model_path: &str,
) -> Result<crate::backend_ort::ModelArcFaceOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelArcFaceOrt::new_from_file_cuda(model_path)
}
pub fn arcface_ort_cuda_with_norm(
model_path: &str,
norm: crate::backend_ort::ArcFaceNorm,
) -> Result<crate::backend_ort::ModelArcFaceOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelArcFaceOrt::new_from_file_cuda_with_norm(model_path, norm)
}
pub fn face_pipeline_cuda(
detector_path: &str,
recognizer_path: &str,
) -> Result<crate::face_pipeline::FacePipeline, crate::backend_ort::OrtModelError> {
crate::face_pipeline::FacePipeline::new_cuda(detector_path, recognizer_path)
}
pub fn face_pipeline_cuda_with_norm(
detector_path: &str,
recognizer_path: &str,
norm: crate::backend_ort::ArcFaceNorm,
) -> Result<crate::face_pipeline::FacePipeline, crate::backend_ort::OrtModelError> {
crate::face_pipeline::FacePipeline::new_cuda_with_norm(detector_path, recognizer_path, norm)
}
}
#[cfg(feature = "ort-tensorrt-backend")]
impl Model {
pub fn arcface_ort_tensorrt(
model_path: &str,
) -> Result<crate::backend_ort::ModelArcFaceOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelArcFaceOrt::new_from_file_tensorrt(model_path)
}
pub fn arcface_ort_tensorrt_with_norm(
model_path: &str,
norm: crate::backend_ort::ArcFaceNorm,
) -> Result<crate::backend_ort::ModelArcFaceOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelArcFaceOrt::new_from_file_tensorrt_with_norm(model_path, norm)
}
pub fn face_pipeline_tensorrt(
detector_path: &str,
recognizer_path: &str,
) -> Result<crate::face_pipeline::FacePipeline, crate::backend_ort::OrtModelError> {
crate::face_pipeline::FacePipeline::new_tensorrt(detector_path, recognizer_path)
}
pub fn face_pipeline_tensorrt_with_norm(
detector_path: &str,
recognizer_path: &str,
norm: crate::backend_ort::ArcFaceNorm,
) -> Result<crate::face_pipeline::FacePipeline, crate::backend_ort::OrtModelError> {
crate::face_pipeline::FacePipeline::new_tensorrt_with_norm(detector_path, recognizer_path, norm)
}
}
#[cfg(feature = "ort-cuda-backend")]
impl Model {
pub fn yunet_ort_cuda(
model_path: &str,
) -> Result<crate::backend_ort::ModelYuNetOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYuNetOrt::new_from_file_cuda(model_path)
}
}
#[cfg(feature = "ort-tensorrt-backend")]
impl Model {
pub fn yunet_ort_tensorrt(
model_path: &str,
) -> Result<crate::backend_ort::ModelYuNetOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYuNetOrt::new_from_file_tensorrt(model_path)
}
}
#[cfg(feature = "ort-cuda-backend")]
impl Model {
pub fn ort_cuda(
model_path: &str,
input_size: (u32, u32),
) -> Result<crate::backend_ort::ModelUltralyticsOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelUltralyticsOrt::new_from_file_cuda(model_path, input_size, vec![])
}
pub fn ort_cuda_filtered(
model_path: &str,
input_size: (u32, u32),
class_filters: Vec<usize>,
) -> Result<crate::backend_ort::ModelUltralyticsOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelUltralyticsOrt::new_from_file_cuda(model_path, input_size, class_filters)
}
pub fn yolov5_ort_cuda(
model_path: &str,
input_size: (u32, u32),
) -> Result<crate::backend_ort::ModelYOLOv5Ort, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYOLOv5Ort::new_from_file_cuda(model_path, input_size, vec![])
}
pub fn yolov5_ort_cuda_filtered(
model_path: &str,
input_size: (u32, u32),
class_filters: Vec<usize>,
) -> Result<crate::backend_ort::ModelYOLOv5Ort, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYOLOv5Ort::new_from_file_cuda(model_path, input_size, class_filters)
}
}
#[cfg(feature = "ort-tensorrt-backend")]
impl Model {
pub fn ort_tensorrt(
model_path: &str,
input_size: (u32, u32),
) -> Result<crate::backend_ort::ModelUltralyticsOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelUltralyticsOrt::new_from_file_tensorrt(model_path, input_size, vec![])
}
pub fn ort_tensorrt_filtered(
model_path: &str,
input_size: (u32, u32),
class_filters: Vec<usize>,
) -> Result<crate::backend_ort::ModelUltralyticsOrt, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelUltralyticsOrt::new_from_file_tensorrt(model_path, input_size, class_filters)
}
pub fn yolov5_ort_tensorrt(
model_path: &str,
input_size: (u32, u32),
) -> Result<crate::backend_ort::ModelYOLOv5Ort, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYOLOv5Ort::new_from_file_tensorrt(model_path, input_size, vec![])
}
pub fn yolov5_ort_tensorrt_filtered(
model_path: &str,
input_size: (u32, u32),
class_filters: Vec<usize>,
) -> Result<crate::backend_ort::ModelYOLOv5Ort, crate::backend_ort::OrtModelError> {
crate::backend_ort::ModelYOLOv5Ort::new_from_file_tensorrt(model_path, input_size, class_filters)
}
}
#[cfg(feature = "opencv-backend")]
impl Model {
pub fn opencv(
model_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
) -> Result<crate::backend_opencv::model_ultralytics::ModelUltralyticsV8, opencv::Error> {
crate::backend_opencv::model_ultralytics::ModelUltralyticsV8::new_from_onnx_file(
model_path,
input_size,
backend.into(),
target.into(),
vec![],
)
}
pub fn opencv_filtered(
model_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
class_filters: Vec<usize>,
) -> Result<crate::backend_opencv::model_ultralytics::ModelUltralyticsV8, opencv::Error> {
crate::backend_opencv::model_ultralytics::ModelUltralyticsV8::new_from_onnx_file(
model_path,
input_size,
backend.into(),
target.into(),
class_filters,
)
}
pub fn darknet(
cfg_path: &str,
weights_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
) -> Result<crate::backend_opencv::model_classic::ModelYOLOClassic, opencv::Error> {
crate::backend_opencv::model_classic::ModelYOLOClassic::new_from_darknet_file(
weights_path,
cfg_path,
input_size,
backend.into(),
target.into(),
vec![],
)
}
pub fn darknet_filtered(
cfg_path: &str,
weights_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
class_filters: Vec<usize>,
) -> Result<crate::backend_opencv::model_classic::ModelYOLOClassic, opencv::Error> {
crate::backend_opencv::model_classic::ModelYOLOClassic::new_from_darknet_file(
weights_path,
cfg_path,
input_size,
backend.into(),
target.into(),
class_filters,
)
}
pub fn classic_onnx(
model_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
) -> Result<crate::backend_opencv::model_classic::ModelYOLOClassic, opencv::Error> {
crate::backend_opencv::model_classic::ModelYOLOClassic::new_from_onnx_file(
model_path,
input_size,
backend.into(),
target.into(),
vec![],
)
}
pub fn classic_onnx_filtered(
model_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
class_filters: Vec<usize>,
) -> Result<crate::backend_opencv::model_classic::ModelYOLOClassic, opencv::Error> {
crate::backend_opencv::model_classic::ModelYOLOClassic::new_from_onnx_file(
model_path,
input_size,
backend.into(),
target.into(),
class_filters,
)
}
pub fn yolov5_opencv(
model_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
) -> Result<crate::backend_opencv::model_yolov5::ModelYOLOv5OpenCV, opencv::Error> {
crate::backend_opencv::model_yolov5::ModelYOLOv5OpenCV::new_from_onnx_file(
model_path,
input_size,
backend.into(),
target.into(),
vec![],
)
}
pub fn yolov5_opencv_filtered(
model_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
class_filters: Vec<usize>,
) -> Result<crate::backend_opencv::model_yolov5::ModelYOLOv5OpenCV, opencv::Error> {
crate::backend_opencv::model_yolov5::ModelYOLOv5OpenCV::new_from_onnx_file(
model_path,
input_size,
backend.into(),
target.into(),
class_filters,
)
}
}
#[cfg(feature = "opencv-backend")]
impl Model {
pub fn yunet_opencv(
model_path: &str,
input_size: (i32, i32),
backend: crate::dnn_backend::DnnBackend,
target: crate::dnn_backend::DnnTarget,
) -> Result<crate::backend_opencv::ModelYuNetOpenCV, opencv::Error> {
crate::backend_opencv::ModelYuNetOpenCV::new_from_file(
model_path,
input_size,
backend.into(),
target.into(),
)
}
}
#[cfg(feature = "tensorrt-backend")]
impl Model {
pub fn tensorrt(
engine_path: &str,
) -> Result<crate::backend_tensorrt::ModelUltralyticsRt, crate::backend_tensorrt::TrtModelError> {
crate::backend_tensorrt::ModelUltralyticsRt::new_from_file(engine_path, vec![])
}
pub fn tensorrt_filtered(
engine_path: &str,
class_filters: Vec<usize>,
) -> Result<crate::backend_tensorrt::ModelUltralyticsRt, crate::backend_tensorrt::TrtModelError> {
crate::backend_tensorrt::ModelUltralyticsRt::new_from_file(engine_path, class_filters)
}
pub fn yunet_tensorrt(
engine_path: &str,
) -> Result<crate::backend_tensorrt::ModelYuNetRt, crate::backend_tensorrt::TrtModelError> {
crate::backend_tensorrt::ModelYuNetRt::new_from_file(engine_path)
}
}
#[cfg(feature = "rknn-backend")]
impl Model {
pub fn rknn(
model_path: &str,
num_classes: usize,
) -> Result<crate::backend_rknn::ModelUltralyticsRknn, crate::backend_rknn::RknnModelError> {
crate::backend_rknn::ModelUltralyticsRknn::new_from_file(
model_path,
num_classes,
vec![],
)
}
pub fn rknn_filtered(
model_path: &str,
num_classes: usize,
class_filters: Vec<usize>,
) -> Result<crate::backend_rknn::ModelUltralyticsRknn, crate::backend_rknn::RknnModelError> {
crate::backend_rknn::ModelUltralyticsRknn::new_from_file(
model_path,
num_classes,
class_filters,
)
}
pub fn yunet_rknn(
model_path: &str,
) -> Result<crate::backend_rknn::ModelYuNetRknn, crate::backend_rknn::RknnModelError> {
crate::backend_rknn::ModelYuNetRknn::new_from_file(model_path)
}
}