mirror of
https://gitee.com/open-visual/face-search.git
synced 2025-06-10 19:19:56 +08:00
add:添加SeetaFace6Open的人脸特征模型测试用例
This commit is contained in:
parent
4eca8aa2cf
commit
2ce99a7b4e
@ -0,0 +1,72 @@
|
||||
package com.visual.face.search.core.test.extract;
|
||||
|
||||
import com.visual.face.search.core.base.*;
|
||||
import com.visual.face.search.core.domain.ExtParam;
|
||||
import com.visual.face.search.core.domain.FaceImage;
|
||||
import com.visual.face.search.core.domain.FaceInfo;
|
||||
import com.visual.face.search.core.domain.ImageMat;
|
||||
import com.visual.face.search.core.extract.FaceFeatureExtractor;
|
||||
import com.visual.face.search.core.extract.FaceFeatureExtractorImpl;
|
||||
import com.visual.face.search.core.models.*;
|
||||
import com.visual.face.search.core.test.base.BaseTest;
|
||||
import com.visual.face.search.core.utils.Similarity;
|
||||
import org.opencv.core.Mat;
|
||||
import org.opencv.imgcodecs.Imgcodecs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class FaceCompareTest extends BaseTest {
|
||||
|
||||
private static String modelPcn1Path = "face-search-core/src/main/resources/model/onnx/detection_face_pcn/pcn1_sd.onnx";
|
||||
private static String modelPcn2Path = "face-search-core/src/main/resources/model/onnx/detection_face_pcn/pcn2_sd.onnx";
|
||||
private static String modelPcn3Path = "face-search-core/src/main/resources/model/onnx/detection_face_pcn/pcn3_sd.onnx";
|
||||
private static String modelScrfdPath = "face-search-core/src/main/resources/model/onnx/detection_face_scrfd/scrfd_500m_bnkps.onnx";
|
||||
private static String modelCoordPath = "face-search-core/src/main/resources/model/onnx/keypoint_coordinate/coordinate_106_mobilenet_05.onnx";
|
||||
private static String modelArcPath = "face-search-core/src/main/resources/model/onnx/recognition_face_arc/glint360k_cosface_r18_fp16_0.1.onnx";
|
||||
private static String modelSeetaPath = "face-search-core/src/main/resources/model/onnx/recognition_fcae_seeta/face_recognizer_512.onnx";
|
||||
// private static String modelSeetaPath = "face-search-core/src/main/resources/model/onnx/recognition_fcae_seeta/face_recognizer_1024.onnx";
|
||||
private static String modelArrPath = "face-search-core/src/main/resources/model/onnx/attribute_gender_age/insight_gender_age.onnx";
|
||||
|
||||
// private static String imagePath = "face-search-core/src/test/resources/images/faces";
|
||||
// private static String imagePath1 = "face-search-core/src/test/resources/images/faces/debug/debug_0001.jpg";
|
||||
// private static String imagePath2 = "face-search-core/src/test/resources/images/faces/debug/debug_0001.jpg";
|
||||
private static String imagePath1 = "face-search-core/src/test/resources/images/faces/compare/1682052661610.jpg";
|
||||
private static String imagePath2 = "face-search-core/src/test/resources/images/faces/compare/1682052669004.jpg";
|
||||
// private static String imagePath2 = "face-search-core/src/test/resources/images/faces/compare/1682053163961.jpg";
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
// Map<String, String> map = getImagePathMap(imagePath);
|
||||
FaceDetection insightScrfdFaceDetection = new InsightScrfdFaceDetection(modelScrfdPath, 1);
|
||||
FaceKeyPoint insightCoordFaceKeyPoint = new InsightCoordFaceKeyPoint(modelCoordPath, 1);
|
||||
FaceRecognition insightArcFaceRecognition = new InsightArcFaceRecognition(modelArcPath, 1);
|
||||
FaceRecognition insightSeetaFaceRecognition = new SeetaFaceOpenRecognition(modelSeetaPath, 1);
|
||||
FaceAlignment simple005pFaceAlignment = new Simple005pFaceAlignment();
|
||||
FaceAlignment simple106pFaceAlignment = new Simple106pFaceAlignment();
|
||||
FaceDetection pcnNetworkFaceDetection = new PcnNetworkFaceDetection(new String[]{modelPcn1Path, modelPcn2Path, modelPcn3Path}, 1);
|
||||
FaceAttribute insightFaceAttribute = new InsightAttributeDetection(modelArrPath, 1);
|
||||
|
||||
FaceFeatureExtractor extractor = new FaceFeatureExtractorImpl(
|
||||
insightScrfdFaceDetection, pcnNetworkFaceDetection, insightCoordFaceKeyPoint,
|
||||
simple005pFaceAlignment, insightSeetaFaceRecognition, insightFaceAttribute);
|
||||
|
||||
Mat image1 = Imgcodecs.imread(imagePath1);
|
||||
long s = System.currentTimeMillis();
|
||||
ExtParam extParam = ExtParam.build().setMask(false).setTopK(20).setScoreTh(0).setIouTh(0);
|
||||
FaceImage faceImage1 = extractor.extract(ImageMat.fromCVMat(image1), extParam, null);
|
||||
List<FaceInfo> faceInfos1 = faceImage1.faceInfos();
|
||||
long e = System.currentTimeMillis();
|
||||
System.out.println("image1 extract cost:"+(e-s)+"ms");;
|
||||
|
||||
Mat image2 = Imgcodecs.imread(imagePath2);
|
||||
s = System.currentTimeMillis();
|
||||
FaceImage faceImage2 = extractor.extract(ImageMat.fromCVMat(image2), extParam, null);
|
||||
List<FaceInfo> faceInfos2 = faceImage2.faceInfos();
|
||||
e = System.currentTimeMillis();
|
||||
System.out.println("image2 extract cost:"+(e-s)+"ms");
|
||||
float similarity = Similarity.cosineSimilarity(faceInfos1.get(0).embedding.embeds, faceInfos2.get(0).embedding.embeds);
|
||||
System.out.println("face similarity="+similarity);
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,53 @@
|
||||
package com.visual.face.search.core.test.models;
|
||||
|
||||
import com.visual.face.search.core.base.FaceAlignment;
|
||||
import com.visual.face.search.core.base.FaceKeyPoint;
|
||||
import com.visual.face.search.core.base.FaceRecognition;
|
||||
import com.visual.face.search.core.domain.FaceInfo;
|
||||
import com.visual.face.search.core.domain.ImageMat;
|
||||
import com.visual.face.search.core.models.InsightCoordFaceKeyPoint;
|
||||
import com.visual.face.search.core.models.SeetaFaceOpenRecognition;
|
||||
import com.visual.face.search.core.models.Simple005pFaceAlignment;
|
||||
import com.visual.face.search.core.test.base.BaseTest;
|
||||
import com.visual.face.search.core.utils.CropUtil;
|
||||
import com.visual.face.search.core.utils.Similarity;
|
||||
import org.opencv.core.Mat;
|
||||
import org.opencv.imgcodecs.Imgcodecs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class SeetaFaceOpenRecognitionTest extends BaseTest {
|
||||
private static String modelCoordPath = "face-search-core/src/main/resources/model/onnx/keypoint_coordinate/coordinate_106_mobilenet_05.onnx";
|
||||
private static String modelSeetaPath = "face-search-core/src/main/resources/model/onnx/recognition_fcae_seeta/face_recognizer_512.onnx";
|
||||
// private static String modelSeetaPath = "face-search-core/src/main/resources/model/onnx/recognition_fcae_seeta/face_recognizer_1024.onnx";
|
||||
|
||||
private static String imagePath = "face-search-core/src/test/resources/images/faces";
|
||||
// private static String imagePath1 = "face-search-core/src/test/resources/images/faces/debug/debug_0001.jpg";
|
||||
// private static String imagePath2 = "face-search-core/src/test/resources/images/faces/debug/debug_0004.jpeg";
|
||||
private static String imagePath1 = "face-search-core/src/test/resources/images/faces/compare/1682052661610.jpg";
|
||||
private static String imagePath2 = "face-search-core/src/test/resources/images/faces/compare/1682052669004.jpg";
|
||||
// private static String imagePath2 = "face-search-core/src/test/resources/images/faces/compare/1682053163961.jpg";
|
||||
|
||||
public static void main(String[] args) {
|
||||
FaceAlignment simple005pFaceAlignment = new Simple005pFaceAlignment();
|
||||
FaceKeyPoint insightCoordFaceKeyPoint = new InsightCoordFaceKeyPoint(modelCoordPath, 1);
|
||||
FaceRecognition insightSeetaFaceRecognition = new SeetaFaceOpenRecognition(modelSeetaPath, 1);
|
||||
|
||||
Mat image1 = Imgcodecs.imread(imagePath1);
|
||||
Mat image2 = Imgcodecs.imread(imagePath2);
|
||||
// image1 = CropUtil.crop(image1, FaceInfo.FaceBox.build(54,27,310,380));
|
||||
// image2 = CropUtil.crop(image2, FaceInfo.FaceBox.build(48,13,292,333));
|
||||
// image2 = CropUtil.crop(image2, FaceInfo.FaceBox.build(52,9,235,263));
|
||||
|
||||
// simple005pFaceAlignment.inference()
|
||||
|
||||
FaceInfo.Embedding embedding1 = insightSeetaFaceRecognition.inference(ImageMat.fromCVMat(image1), null);
|
||||
FaceInfo.Embedding embedding2 = insightSeetaFaceRecognition.inference(ImageMat.fromCVMat(image2), null);
|
||||
float similarity = Similarity.cosineSimilarity(embedding1.embeds, embedding2.embeds);
|
||||
System.out.println(similarity);
|
||||
// System.out.println(Arrays.toString(embedding1.embeds));
|
||||
// System.out.println(Arrays.toString(embedding2.embeds));
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
Loading…
x
Reference in New Issue
Block a user