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

@@ -33,6 +33,7 @@ public class DJLModelCriteriaBuilder implements CriteriaBuilderStrategy {
.optArgument("threshold", config.getThreshold() > 0 ? config.getThreshold() : DetectorConstant.DEFAULT_THRESHOLD)
.optModelUrls(DJL_MODEL_PREFIX + config.getModelEnum().getModelUri())
.optDevice(device)
//.optOption("ortDevice", "TensorRT")
.optProgress(new ProgressBar())
.build();
return criteria;

View File

@@ -1,14 +1,19 @@
package cn.smartjavaai.objectdetection.criteria;
import ai.djl.Device;
import ai.djl.modality.cv.Image;
import ai.djl.modality.cv.output.DetectedObjects;
import ai.djl.modality.cv.translator.YoloV8TranslatorFactory;
import ai.djl.repository.zoo.Criteria;
import ai.djl.training.util.ProgressBar;
import cn.smartjavaai.common.enums.DeviceEnum;
import cn.smartjavaai.objectdetection.constant.DetectorConstant;
import cn.smartjavaai.objectdetection.config.DetectorModelConfig;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* YOLO模型Criteria 构建器
@@ -18,16 +23,25 @@ import java.nio.file.Paths;
public class YoloCriteriaBuilder implements CriteriaBuilderStrategy {
@Override
public Criteria<Image, DetectedObjects> buildCriteria(DetectorModelConfig config) {
Device device = null;
if(!Objects.isNull(config.getDevice())){
device = config.getDevice() == DeviceEnum.CPU ? Device.cpu() : Device.gpu();
}
Map<String, Object> customParams = getDefaultConfig();
// 合并用户自定义参数(如有重复,覆盖默认默认值)
if (config.getCustomParams() != null) {
customParams.putAll(config.getCustomParams());
}
Criteria.Builder criteriaBuilder = Criteria.builder()
.setTypes(Image.class, DetectedObjects.class)
//.optModelUrls("/Users/wenjie/Documents/develop/face_model/yolo")
.optModelPath(Paths.get(config.getModelPath()))
.optEngine("OnnxRuntime")
.optArgument("width", 640) //将输入图像的宽度缩放为 640 像素
.optArgument("height", 640)
.optArgument("resize", true)
.optArgument("toTensor", true)
.optArgument("applyRatio", true)
//.optOption("ortDevice", "TensorRT")
.optArguments(customParams)
.optDevice(device)
.optTranslatorFactory(new YoloV8TranslatorFactory())
.optProgress(new ProgressBar())
.optArgument("threshold", config.getThreshold() > 0 ? config.getThreshold() : DetectorConstant.DEFAULT_THRESHOLD);
@@ -37,4 +51,15 @@ public class YoloCriteriaBuilder implements CriteriaBuilderStrategy {
Criteria<Image, DetectedObjects> criteria = criteriaBuilder.build();
return criteria;
}
public Map<String, Object> getDefaultConfig(){
Map<String, Object> arguments = new HashMap<>();
// 添加默认参数
arguments.put("width", 640);
arguments.put("height", 640);
arguments.put("resize", true);
arguments.put("toTensor", true);
arguments.put("applyRatio", true);
return arguments;
}
}