浏览代码

优化识别

suntianwu 3 年之前
父节点
当前提交
def84550da
共有 3 个文件被更改,包括 12 次插入6 次删除
  1. 二进制
      lib/AIMCFaceMonitor.jar
  2. 3 1
      src/main/java/com/iden/common/facetool/FaceIdenTool.java
  3. 9 5
      src/test/java/com/face/FaceTest.java

二进制
lib/AIMCFaceMonitor.jar


+ 3 - 1
src/main/java/com/iden/common/facetool/FaceIdenTool.java

@@ -137,7 +137,9 @@ public class FaceIdenTool {
         if (faceMonitor == null){
             return null;
         }
-        FaceRecogRetrieveResult faceRecogRetrieveResult = faceMonitor.faceRecogRetrieveFaceDataset(faceModel);
+        //topN建议使用10,传入范围(根据底库大小)
+        int topN = 2;
+        FaceRecogRetrieveResult faceRecogRetrieveResult = faceMonitor.faceRecogRetrieveFaceDataset(faceModel,topN);
         if(faceRecogRetrieveResult != null) {
             int index = faceRecogRetrieveResult.getOnePredictIds()[0];
             float score = faceRecogRetrieveResult.getOnePredictScores()[0];

+ 9 - 5
src/test/java/com/face/FaceTest.java

@@ -38,7 +38,6 @@ public class FaceTest {
         faceMonitor.loadFaceDataset(dataset);
         databaseSize = faceMonitor.getDatabaseSize();
         System.out.printf(Locale.CHINA, "new data num: :%d\n", databaseSize);
-
         //监控视频帧,这里为了简单演示,传入静态图片
         //target
         String registerData = "./data/0.jpg";
@@ -46,9 +45,8 @@ public class FaceTest {
         //vistor
         registerData = "./data/5.jpg";
         watchFrame(faceMonitor, registerData);
-
         //获取目标人识别结果,分值比较高的
-        RecogResult recogResult = faceMonitor.finishMonitorWithRes(1); //1代表最后一次,0代表中间结果
+        RecogResult recogResult = faceMonitor.finishMonitorWithRes(1);//1代表最后一次,0代表中间结果
 
         //访客的结果,分值比较低的
         RecogResult curVisitorResResult = faceMonitor.faceRecogGetCurVisitorRes();
@@ -66,12 +64,14 @@ public class FaceTest {
                     recogInfo.getPersonIdOther()[0], recogInfo.getFaceRecogScoreOther()[0]);
         }
 
+        int topN = 2;
         //视频里的命中结果
-        FaceRecogRetrieveResult faceRecogRetrieveResult = faceMonitor.faceRecogRetrieveFaceDataset(dataset[1]);
+        FaceRecogRetrieveResult faceRecogRetrieveResult = faceMonitor.faceRecogRetrieveFaceDataset(dataset[1], topN);
         System.out.printf(Locale.CHINA, "query hit top person id: : %d score: %f\n",
                 faceRecogRetrieveResult.getOnePredictIds()[0], faceRecogRetrieveResult.getOnePredictScores()[0]);
         System.out.printf(Locale.CHINA, "query hit top person id: : %d score: %f\n",
                 faceRecogRetrieveResult.getOnePredictIds()[1], faceRecogRetrieveResult.getOnePredictScores()[1]);
+        faceMonitor.releaseEngine();
     }
 
     public static FaceModel[] extractFeature(FaceMonitor faceMonitor) {
@@ -87,7 +87,11 @@ public class FaceTest {
 
     public static RecogResult watchFrame(FaceMonitor faceMonitor, String dataPath) {
         Image image = faceMonitor.readImage(dataPath);
-        return faceMonitor.faceRecogMonitor(image);
+        RecogInfo recogInfo = new RecogInfo();
+        recogInfo.setCameraId(0);//摄像头id
+        recogInfo.setFrameId(1);//帧号
+        recogInfo.setMillisec(faceMonitor.getTimeMillisec());//这个是当前服务器时间,不传也没事,主要是上边两个
+        return faceMonitor.faceRecogMonitor(image, recogInfo);
     }
 
     /**