mirror of
https://gitee.com/open-visual/face-search.git
synced 2025-07-25 19:41:42 +08:00
update:添加人脸比对1:1的接口服务
This commit is contained in:
parent
5ecdbe02c8
commit
e32bcf5580
@ -36,18 +36,18 @@ public class FaceCompareServiceImpl implements FaceCompareService {
|
||||
}
|
||||
//计算余弦相似度
|
||||
float simVal = Similarity.cosineSimilarity(faceInfoA.embedding.embeds, faceInfoB.embedding.embeds);
|
||||
float confidence = (float) Math.floor(simVal * 10000)/100;
|
||||
float confidence = (float) Math.floor(simVal * 1000000)/100;
|
||||
//欧式距离
|
||||
float euclideanDistance = Similarity.euclideanDistance(faceInfoA.embedding.embeds, faceInfoB.embedding.embeds);
|
||||
float distance = (float) Math.floor(euclideanDistance * 10000)/100;
|
||||
float distance = (float) Math.floor(euclideanDistance * 1000000)/100;
|
||||
//构建返回值
|
||||
FaceCompareRepVo faceCompareRep = new FaceCompareRepVo();
|
||||
faceCompareRep.setDistance(distance);
|
||||
faceCompareRep.setConfidence(confidence);
|
||||
if(compareReq.getNeedFaceInfo()){
|
||||
CompareFace compareFace = new CompareFace();
|
||||
compareFace.setFaceScoreA(faceInfoA.score);
|
||||
compareFace.setFaceScoreB(faceInfoB.score);
|
||||
compareFace.setFaceScoreA((float) Math.floor(faceInfoA.score * 1000000)/100);
|
||||
compareFace.setFaceScoreB((float) Math.floor(faceInfoA.score * 1000000)/100);
|
||||
FaceInfo.FaceBox boxA = faceInfoA.box;
|
||||
compareFace.setLocationA(FaceLocation.build(boxA.leftTop.x, boxA.leftTop.y, boxA.width(), boxA.height()));
|
||||
FaceInfo.FaceBox boxB = faceInfoB.box;
|
||||
|
@ -123,7 +123,7 @@ public class FaceSearchServiceImpl extends BaseService implements FaceSearchServ
|
||||
FaceInfo.FaceBox box = faceInfos.get(i).box;
|
||||
FaceSearchRepVo vo = FaceSearchRepVo.build();
|
||||
vo.setLocation(FaceLocation.build(box.leftTop.x, box.leftTop.y, box.width(), box.height()));
|
||||
vo.setFaceScore((float)Math.floor(faceInfos.get(i).score * 10000)/100);
|
||||
vo.setFaceScore((float)Math.floor(faceInfos.get(i).score * 1000000)/100);
|
||||
List<SampleFaceVo> match = new ArrayList<>();
|
||||
SearchResult searchResult = result.get(i);
|
||||
List<SearchDocument> documents = searchResult.getDocuments();
|
||||
@ -135,7 +135,7 @@ public class FaceSearchServiceImpl extends BaseService implements FaceSearchServ
|
||||
String faceVectorStr = MapUtils.getString(face, Constant.ColumnNameFaceVector);
|
||||
float[] faceVector = ValueUtil.convertVector(faceVectorStr);
|
||||
float simVal = Similarity.cosineSimilarity(faceInfos.get(i).embedding.embeds, faceVector);
|
||||
float confidence = (float) Math.floor(simVal * 10000)/100;
|
||||
float confidence = (float) Math.floor(simVal * 1000000)/100;
|
||||
if(null != sampleId && sampleMapping.containsKey(sampleId) && confidence >= search.getConfidenceThreshold()){
|
||||
Map<String, Object> sample = sampleMapping.get(sampleId);
|
||||
SampleFaceVo faceVo = SampleFaceVo.build();
|
||||
@ -143,7 +143,7 @@ public class FaceSearchServiceImpl extends BaseService implements FaceSearchServ
|
||||
faceVo.setFaceId(document.getFaceId());
|
||||
faceVo.setFaceScore(faceScore);
|
||||
faceVo.setConfidence(confidence);
|
||||
faceVo.setDistance((float) Math.floor(document.getScore() * 100) / 100);
|
||||
faceVo.setDistance((float) Math.floor(document.getScore() * 1000000) / 100);
|
||||
faceVo.setFaceData(ValueUtil.getFieldKeyValues(face, ValueUtil.getFaceColumns(collection)));
|
||||
faceVo.setSampleData(ValueUtil.getFieldKeyValues(sample, ValueUtil.getSampleColumns(collection)));
|
||||
match.add(faceVo);
|
||||
|
Loading…
x
Reference in New Issue
Block a user