1、人脸模块:新增小视科技(MiniVision)活体检测模型

2、人脸模块:新增阿里通义工作室活体检测模型
3、人脸模块:新增2个表情识别模型
4、人脸模块:新增InsightFace、ElasticFace人脸识别模型
5、人脸模块:新增Seetaface6质量评估模型
6、目标检测模块:开放更多自定义模型参数
7、人脸模块:支持base64图片
8、实现接口 AutoCloseable,支持资源的自动释放
9、OCR模块:解决加方向矫正后无法连续识别bug
10、人脸模块:解决人脸更新后缓存问题
11、优化部分功能
This commit is contained in:
dengwenjie
2025-07-07 08:45:08 +08:00
parent 3e631a060b
commit 07a8a18835
168 changed files with 8562 additions and 2850 deletions

View File

@@ -0,0 +1,38 @@
package cn.smartjavaai.face.enums;
/**
* 表情识别模型枚举
* @author dwj
*/
public enum ExpressionModelEnum {
DensNet121("DensNet121"),
FrEmotion("FrEmotion");
private final String modelClassName;
ExpressionModelEnum(String modelClassName) {
this.modelClassName = modelClassName;
}
public String getModelClassName() {
return modelClassName;
}
/**
* 根据名称获取枚举 (忽略大小写和下划线变体)
*/
public static ExpressionModelEnum fromName(String name) {
String formatted = name.trim().toUpperCase().replaceAll("[-_]", "");
for (ExpressionModelEnum model : values()) {
if (model.name().replaceAll("_", "").equals(formatted)) {
return model;
}
}
throw new IllegalArgumentException("未知模型名称: " + name);
}
}

View File

@@ -1,20 +1,18 @@
package cn.smartjavaai.face.enums;
/**
* 人脸模型枚举
* 人脸检测模型枚举
* @author dwj
* @date 2025/4/10
*/
public enum FaceModelEnum {
public enum FaceDetModelEnum {
RETINA_FACE("RetinaFaceModel"),
ULTRA_LIGHT_FAST_GENERIC_FACE("UltraLightFastGenericFaceModel"),
FACENET_MODEL("FaceNetModel"),
SEETA_FACE6_MODEL("SeetaFace6Model");
private final String modelClassName;
FaceModelEnum(String modelClassName) {
FaceDetModelEnum(String modelClassName) {
this.modelClassName = modelClassName;
}
@@ -25,9 +23,9 @@ public enum FaceModelEnum {
/**
* 根据名称获取枚举 (忽略大小写和下划线变体)
*/
public static FaceModelEnum fromName(String name) {
public static FaceDetModelEnum fromName(String name) {
String formatted = name.trim().toUpperCase().replaceAll("[-_]", "");
for (FaceModelEnum model : values()) {
for (FaceDetModelEnum model : values()) {
if (model.name().replaceAll("_", "").equals(formatted)) {
return model;
}

View File

@@ -0,0 +1,39 @@
package cn.smartjavaai.face.enums;
/**
* 人脸识别模型枚举
* @author dwj
*/
public enum FaceRecModelEnum {
FACENET_MODEL("FaceNetModel"),
SEETA_FACE6_MODEL("SeetaFace6Model"),
INSIGHT_FACE_IRSE50_MODEL("InsightFaceIRSE50Model"),
INSIGHT_FACE_MOBILE_FACENET_MODEL("InsightFaceMobilefacenetModel"),
ELASTIC_FACE_MODEL("ElasticFaceModel");
private final String modelClassName;
FaceRecModelEnum(String modelClassName) {
this.modelClassName = modelClassName;
}
public String getModelClassName() {
return modelClassName;
}
/**
* 根据名称获取枚举 (忽略大小写和下划线变体)
*/
public static FaceRecModelEnum fromName(String name) {
String formatted = name.trim().toUpperCase().replaceAll("[-_]", "");
for (FaceRecModelEnum model : values()) {
if (model.name().replaceAll("_", "").equals(formatted)) {
return model;
}
}
throw new IllegalArgumentException("未知模型名称: " + name);
}
}

View File

@@ -7,7 +7,14 @@ package cn.smartjavaai.face.enums;
*/
public enum LivenessModelEnum {
SEETA_FACE6_MODEL("SeetaFace6Model");
// SeetaFace6
SEETA_FACE6_MODEL("SeetaFace6Model"),
// MiniVision
MINI_VISION_MODEL("MiniVisionModel"),
//阿里通义实验室
IIC_FL_MODEL("IicFlModel");
private final String modelClassName;

View File

@@ -0,0 +1,14 @@
package cn.smartjavaai.face.enums;
/**
* 质量等级枚举
* @author dwj
* @date 2025/6/23
*/
public enum QualityGrade {
LOW,//Quality level is low
MEDIUM,//Quality level is medium
HIGH,//Quality level is high
}

View File

@@ -0,0 +1,36 @@
package cn.smartjavaai.face.enums;
/**
* 质量评估模型枚举
* @author dwj
* @date 2025/4/10
*/
public enum QualityModelEnum {
SEETA_FACE6_MODEL("SeetaFace6Model");
private final String modelClassName;
QualityModelEnum(String modelClassName) {
this.modelClassName = modelClassName;
}
public String getModelClassName() {
return modelClassName;
}
/**
* 根据名称获取枚举 (忽略大小写和下划线变体)
*/
public static QualityModelEnum fromName(String name) {
String formatted = name.trim().toUpperCase().replaceAll("[-_]", "");
for (QualityModelEnum model : values()) {
if (model.name().replaceAll("_", "").equals(formatted)) {
return model;
}
}
throw new IllegalArgumentException("未知模型名称: " + name);
}
}