mirror of
https://github.com/geekwenjie/SmartJavaAI.git
synced 2026-09-22 02:49:17 +00:00
- 【人脸检测】新增6个模型(MTCNN、YOLOV5、RetinaFace小尺寸版),大幅提升性能
- 【人脸识别】新增Seetaface6轻量模型 - 【目标检测】支持视频流目标检测(rtsp、视频文件等) - 【目标检测】支持tensorflow2目标检测模型 - 【目标检测】新增行人检测模型(yolo-person) - 【通用视觉】新增4个动作识别模型 - 【通用视觉】新增语义分割模型 - 【通用视觉】新增5个实例分割模型(含yolov8-seg、yolov11-seg) - 【通用视觉】新增yolo-obb11旋转框检测(含yolov11-obb) - 【通用视觉】新增5个姿态估计模型(含yolov8-pose、yolov11-pose)
This commit is contained in:
@@ -3,10 +3,12 @@ package cn.smartjavaai.instanceseg.criteria;
|
||||
import ai.djl.Device;
|
||||
import ai.djl.modality.cv.Image;
|
||||
import ai.djl.modality.cv.output.DetectedObjects;
|
||||
import ai.djl.modality.cv.translator.InstanceSegmentationTranslatorFactory;
|
||||
import ai.djl.repository.zoo.Criteria;
|
||||
import ai.djl.training.util.ProgressBar;
|
||||
import cn.smartjavaai.common.enums.DeviceEnum;
|
||||
import cn.smartjavaai.instanceseg.config.InstanceSegModelConfig;
|
||||
import cn.smartjavaai.instanceseg.enums.InstanceSegModelEnum;
|
||||
import cn.smartjavaai.instanceseg.translator.YoloSegmentationTranslatorFactory2;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -27,21 +29,42 @@ public class InstanceSegCriteriaFactory {
|
||||
device = config.getDevice() == DeviceEnum.CPU ? Device.cpu() : Device.gpu(config.getGpuId());
|
||||
}
|
||||
Criteria<Image, DetectedObjects> criteria = null;
|
||||
ConcurrentHashMap params = new ConcurrentHashMap<String, String>();
|
||||
params.putAll(config.getCustomParams());
|
||||
// ConcurrentHashMap params = new ConcurrentHashMap<String, String>();
|
||||
// params.putAll(config.getCustomParams());
|
||||
// YoloV5Translator.Builder builder = new YoloV5Translator.Builder()
|
||||
// .optSynsetArtifactName("synset.txt").setPipeline()
|
||||
criteria =
|
||||
Criteria.builder()
|
||||
.setTypes(Image.class, DetectedObjects.class)
|
||||
.optModelUrls(StringUtils.isNotBlank(config.getModelPath()) ? null :
|
||||
config.getModelEnum().getModelUri())
|
||||
.optModelPath(StringUtils.isNotBlank(config.getModelPath()) ? Paths.get(config.getModelPath()) : null)
|
||||
.optDevice(device)
|
||||
.optEngine("PyTorch")
|
||||
.optTranslatorFactory(new YoloSegmentationTranslatorFactory2())
|
||||
.optProgress(new ProgressBar())
|
||||
.build();
|
||||
|
||||
if(config.getModelEnum() == InstanceSegModelEnum.SEG_MASK_RCNN){
|
||||
criteria =
|
||||
Criteria.builder()
|
||||
.setTypes(Image.class, DetectedObjects.class)
|
||||
.optModelUrls(StringUtils.isNotBlank(config.getModelPath()) ? null :
|
||||
config.getModelEnum().getModelUri())
|
||||
.optModelPath(StringUtils.isNotBlank(config.getModelPath()) ? Paths.get(config.getModelPath()) : null)
|
||||
.optDevice(device)
|
||||
.optEngine(config.getModelEnum().getEngine())
|
||||
.optArgument("normalize","true")
|
||||
.optArgument("synsetFileName","classes.txt")
|
||||
.optTranslatorFactory(new InstanceSegmentationTranslatorFactory())
|
||||
.optProgress(new ProgressBar())
|
||||
.build();
|
||||
}else{
|
||||
criteria =
|
||||
Criteria.builder()
|
||||
.setTypes(Image.class, DetectedObjects.class)
|
||||
.optModelUrls(StringUtils.isNotBlank(config.getModelPath()) ? null :
|
||||
config.getModelEnum().getModelUri())
|
||||
.optModelPath(StringUtils.isNotBlank(config.getModelPath()) ? Paths.get(config.getModelPath()) : null)
|
||||
.optDevice(device)
|
||||
.optArgument("width", config.getModelEnum().getInputWidth())
|
||||
.optArgument("height", config.getModelEnum().getInputHeight())
|
||||
.optArgument("resize", "true")
|
||||
.optArgument("threshold", config.getThreshold())
|
||||
.optEngine(config.getModelEnum().getEngine())
|
||||
.optTranslatorFactory(new YoloSegmentationTranslatorFactory2())
|
||||
.optProgress(new ProgressBar())
|
||||
.build();
|
||||
}
|
||||
return criteria;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user