import ai.djl.Device;
import ai.djl.inference.Predictor;
import ai.djl.modality.cv.Image;
import ai.djl.modality.cv.output.DetectedObjects;
import ai.djl.modality.cv.output.Joints;
import ai.djl.modality.cv.output.Rectangle;
import ai.djl.modality.cv.transform.Normalize;
import ai.djl.modality.cv.transform.ToTensor;
import ai.djl.modality.cv.translator.YoloV5Translator;
import ai.djl.ndarray.NDArray;
import ai.djl.ndarray.NDList;
import ai.djl.ndarray.NDManager;
import ai.djl.ndarray.types.DataType;
import ai.djl.ndarray.types.Shape;
import ai.djl.repository.zoo.Criteria;
import ai.djl.repository.zoo.ModelZoo;
import ai.djl.repository.zoo.ZooModel;
import ai.djl.translate.Pipeline;
import ai.djl.translate.Translator;
import ai.djl.util.Pair;
import org.junit.Test;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import xyz.hyhy.scai.AlphaPose;
import xyz.hyhy.scai.MainClass;
import xyz.hyhy.scai.translator.PureImageTranslator;
import xyz.hyhy.scai.translator.PureTranslator;
import xyz.hyhy.scai.translator.SPPETranslator;
import xyz.hyhy.scai.translator.SimpSPPETranslator;
import xyz.hyhy.scai.utils.CVUtils;
import xyz.hyhy.scai.utils.ImageUtils;
import java.awt.image.BufferedImage;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class TestClass extends MainClass {
public <IN, OUT> void test(ZooModel<IN, OUT> model,
IN inp,
int inpNum,
int warmupNum) throws Exception {
try (Predictor<IN, OUT> predictor = model.newPredictor()) {
if (warmupNum > 0) {
System.out.printf("预热中(%d次)\n", warmupNum);
for (int i = 0; i < warmupNum; i++) {
predictor.predict(inp);
}
}
System.out.printf("开始测试(%d次)\n", inpNum);
long startTime = System.currentTimeMillis();
for (int i = 0; i < inpNum; i++) {
predictor.predict(inp);
}
long endTime = System.currentTimeMillis();
System.out.printf("处理速度: %f s/img%n\n", (endTime - startTime) / 1000.0 / inpNum);
}
}
public <IN, OUT> void testBatch(ZooModel<IN, OUT> model,
IN inp,
int inpNum,
int warmupNum,
int batchSize) throws Exception {
List<IN> inputs = new ArrayList<>(batchSize);
for (int i = 0; i < batchSize; i++) {
inputs.add(inp);
}
try (Predictor<IN, OUT> predictor = model.newPredictor()) {
if (warmupNum > 0) {
System.out.printf("预热中(%d次)\n", warmupNum);
for (int i = 0; i < warmupNum; i++) {
predictor.batchPredict(inputs);
}
}
System.out.printf("开始测试(%d次)\n", inpNum);
long startTime = System.currentTimeMillis();
for (int i = 0; i < inpNum; i++) {
predictor.batchPredict(inputs);
}
long endTime = System.currentTimeMillis();
System.out.printf("处理速度: %f s/img%n\n", (endTime - startTime) / 1000.0 / inpNum);
}
}
@Test
public void yolov5Test() throws Exception {
int imgsNum = 1000;
int warmupNum = 50;
Scalar white = new Scalar(0, 0, 0);
int height = 640, width = 640;
Image img = ImageUtils.mat2Image(new Mat(height, width, CvType.CV_8UC3, white));
Translator<Image, DetectedObjects> translator = YoloV5Translator.builder().optSynsetArtifactName("coco.names").build();
Criteria<Image, DetectedObjects> criteria = Criteria.builder()
.setTypes(Image.class, DetectedObjects.class)
.optDevice(Device.gpu())
.optModelUrls(AlphaPose.class.getResource("/yolov5").getPath())
.optModelName("yolov5s.torchscript.pt")
.optTranslator(translator)
.optEngine("PyTorch")
.build();
test(ModelZoo.loadModel(criteria), img, imgsNum, warmupNum);
}
@Test
public void resnet101Test() throws Exception {
int imgsNum = 1000;
int warmupNum = 50;
Scalar white = new Scalar(0, 0, 0);
int height = 640, width = 640;
Image img = ImageUtils.mat2Image(new Mat(height, width, CvType.CV_8UC3, white));
Translator<Image, Void> translator = new PureImageTranslator.Builder().build(true);
Criteria<Image, Void> criteria = Criteria.builder()
.setTypes(Image.class, Void.class)
.optDevice(Device.gpu())
.optModelUrls(Objects.requireNonNull(AlphaPose.class.getResource("/others")).getPath())
.optModelName("resnet101.torchscript.pth")
.optTranslator(translator)
.optEngine("PyTorch")
.build();
test(ModelZoo.loadModel(criteria), img, imgsNum, warmupNum);
}
@Test
public void resnet101WithPreprocessTest() throws Exception {
int imgsNum = 1000;
int warmupNum = 50;
Scalar white = new Scalar(0, 0, 0);
int height = 640, width = 640;
Image img = ImageUtils.mat2Image(new Mat(height, width, CvType.CV_8UC3, white));
Translator<Image, Void> translator = new PureImageTranslator.Builder().build(height, width);
Criteria<Image, Void> criteria = Criteria.builder()
.setTypes(Image.class, Void.class)
.optDevice(Device.gpu())
.optModelUrls(Objects.requireNonNull(AlphaPose.class.getResource("/others")).getPath())
.optModelName("resnet101.torchscript.pth")
.optTranslator(translator)
.optEngine("PyTorch")
.build();
test(ModelZoo.loadModel(criteria), img, imgsNum, warmupNum);
}
@Test
public void resnet18Test() throws Exception {
int imgsNum = 1000;
int warmupNum = 50;
Scalar white = new Scalar(0, 0, 0);
int height = 640, width = 640;
Image img = ImageUtils.mat2Image(new Mat(height, width, CvType.CV_8UC3, white));
Translator<Image, Void> translator = new PureImageTranslator.Builder().build(height, width);
Criteria<Image, Void> criteria = Criteria.builder()
.setTypes(Image.class, Void.class)
.optDevice(Device.gpu())
.optModelUrls(Objects.requireNonNull(AlphaPose.class.getResource("/others")).getPath())
.optModelName("resnet18.torchscript.pth")
.optTranslator(translator)
.optEngine("PyTorch")
.build();
test(ModelZoo.loadModel(criteria), img, imgsNum, warmupNum);
}
@Test
public void yoloV5WithToTensorTest() throws Exception {
int imgsNum = 1000;
int warmupNum = 50;
Scalar white = new Scalar(0, 0, 0);
int height = 640, width = 640;
Image img = ImageUtils.mat2Image(new Mat(height, width, CvType.CV_8UC3, white));
Translator<Image, Void> translator = new PureImageTranslator.Builder().build(true);
Criteria<Image, Void> criteria = Criteria.builder()
.setTypes(Image.class, Void.class)
.optDevice(Device.gpu())
.optModelUrls(Objects.requireNonNull(AlphaPose.class.getResource("/yolov5")).getPath())
.optModelName("yolov5s.torchscript.pt")
.optTranslator(translator)
.optEngine("PyTorch")
.build();
test(ModelZoo.loadModel(criteria), img, imgsNum, warmupNum);
}
@Test
public void pureYoloV5Test() throws Exception {
int imgsNum = 1000;
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
智慧教室_基于深度学习实现课堂专注度分析+检测考试作弊系统java源码+模型+项目说明.7z 智慧教室项目的Java版本,尝试将多人姿态估计、情绪识别、人脸识别、静默活体检测等技术在java上实现。 【环境要求】 java 1.8 Deep Java Library 0.12.0-SNAPSHOT 更多详见pom.xml文件 【功能】 AlphaPose多人姿态估计 轻量化AlphaPose的SPPE 组合LPN和轻量化人脸对齐的轻量化全身姿态估计(86关键点)方法 实时流水线处理框架 多人姿态估计任务的ForkJoin并行处理 课堂19种行为的识别(基于关键点的逻辑回归方法) 头部姿态估计 rtmp视频推流 【智慧教室方案拓扑图】
资源推荐
资源详情
资源评论
收起资源包目录
智慧教室_基于深度学习实现课堂专注度分析及考试作弊检测系统java源码(附有模型和项目使用说明).zip (72个子文件)
lib
opencv-452.jar 672KB
opencv_java452.dll 47.61MB
项目说明.md 2KB
pom.xml 4KB
src
test
java
TestClass.java 23KB
main
resources
kp136.json 2KB
kp17.json 684B
kp86.json 1KB
sceneMask.png 2KB
yolov5
coco.names 624B
java
xyz
hyhy
scai
ModuleTest.java 13KB
constant
CoreConst.java 366B
ColorConst.java 189B
Yolov5.java 5KB
MediapipePose.java 6KB
startmodules
VideoModule.java 2KB
fce
SecFce.java 3KB
ClassroomConcentration.java 2KB
ClassroomConcentrationFce.java 6KB
utils
PoseEstimator.java 7KB
FFmpegUtils.java 695B
CVUtils.java 15KB
ImageUtils.java 1KB
CommonUtils.java 632B
SceneMasker.java 2KB
CVImageFactory.java 6KB
NumpyUtils.java 812B
ml
AlphaPoseEstimator.java 2KB
YoloV5Detector.java 2KB
HolisticEstimator.java 4KB
LPNPoseEstimator.java 2KB
ParallelPoseEstimator.java 5KB
ClassroomActionClassifier.java 4KB
pojo
ClassActionPOJO.java 448B
MainClass.java 1KB
exemodules
ClassActionModule.java 2KB
DrawModule.java 5KB
AlphaPoseModule.java 2KB
YoloModule.java 2KB
core
tasks
TaskSolution.java 1KB
TaskData.java 693B
TaskStage.java 567B
modules
BaseModule.java 3KB
ExeModule.java 1KB
SourceModule.java 496B
SCModule.java 207B
commons
TaskSolutionBuilder.java 3KB
DataDict.java 464B
ModulesCenter.java 2KB
Yolov5WithMask.java 6KB
Holistic.java 4KB
translator
SimpSPPETranslator.java 7KB
PureImageTranslator.java 2KB
SPPETranslator2.java 8KB
SPPETranslator.java 8KB
BasePairTranslator.java 4KB
JointsClassificationTranslator.java 1KB
LPNTranslator.java 9KB
FaceDetectionTranslator.java 7KB
PureTranslator.java 983B
ClassroomActionTranslator.java 3KB
ClassAction.java 7KB
MainTest.java 2KB
AlphaPose.java 5KB
Main.java 857B
LPNPose.java 4KB
.gitignore 37B
.img
README
image-20210717010110481.png 19KB
image-20210717010103943.png 37KB
alphapose_on_java.jpg 64KB
image-20210717005714507.png 23KB
image-20210717005402204.png 37KB
共 72 条
- 1
资源评论
- daimen9992023-03-24资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~Make程序设计2023-04-03感谢您的支持和认可~互相学习,加油!老铁
Make程序设计
- 粉丝: 6424
- 资源: 3570
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功