From 366e2ff546092d9be26411fb698b3ddd8e834a11 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期一, 09 十二月 2024 15:38:02 +0800 Subject: [PATCH] 更新实名比对 --- compare/compare.go | 68 ++++++++++----------------------- 1 files changed, 21 insertions(+), 47 deletions(-) diff --git a/compare/compare.go b/compare/compare.go index 5b86ce6..5a5f88c 100644 --- a/compare/compare.go +++ b/compare/compare.go @@ -1,11 +1,10 @@ package compare import ( - "encoding/base64" "fmt" "strconv" - "sdkCompare/cache" + "sdkCompare/util" "basic.com/pubsub/protomsg.git" "basic.com/valib/logger.git" @@ -14,10 +13,12 @@ const thresholdLimit = float32(30) -func GetComparePersonBaseInfo(args protomsg.CompareArgs) []byte { +func Walk(args protomsg.CompareArgs) []byte { if args.FaceFeature == nil { return nil } + + fFeature := util.ByteSlice2float32Slice(args.FaceFeature) //鎸囧畾鏈�浣庡垎 baseScore := thresholdLimit @@ -26,65 +27,38 @@ } if args.IsCompareAll { - baseScore = 0 + baseScore = 25 } - var scResult protomsg.SdkCompareResult + logger.Debugf("Compare args treeNodes %+v, is all %v, target %s, feature len %d", args.TreeNodes, args.IsCompareAll, args.CompareTarget, len(fFeature)) - var walkedArea = make(map[string]struct{}, 0) - // 浼樺厛姣斿浼犲叆鐨勫皬鍖篿d - if args.TreeNodes != nil && len(args.TreeNodes) > 0 { - for _, id := range args.TreeNodes { - if _, ok := cache.CacheMap.Area[id]; ok { - targets := cache.CacheMap.Area[id].Walk(DoSdkCompare, args.FaceFeature, baseScore) - if len(targets) > 0 { - scResult.CompareResult = append(scResult.CompareResult, targets...) - } + var response protomsg.SdkCompareResult - walkedArea[id] = struct{}{} - } - } - - if len(scResult.CompareResult) > 0 { - goto done - } + // 鎶撴媿搴撴瘮瀵� + switch args.CompareTarget { + case "realName": + response = realNamePersonsCompere(args, fFeature, baseScore) + default: + response = capturePersonsCompere(args, fFeature, baseScore) } - // 姣斿浠ュ鐨勫皬鍖� - if !args.IsCompareAll && len(args.TreeNodes) > 0 { - baseScore += 20 + logger.Debugf("Compare target %s result len %d", args.CompareTarget, len(response.CompareResult)) + + if len(response.CompareResult) > 0 { + logger.Debugf("Compare result %+v", response.CompareResult) } - for key, val := range cache.CacheMap.Area { - if _, ok := walkedArea[key]; ok { - continue - } - - targets := val.Walk(DoSdkCompare, args.FaceFeature, baseScore) - if len(targets) > 0 { - scResult.CompareResult = append(scResult.CompareResult, targets...) - // todo 娣诲姞灏忓尯澶栫殑鍏宠仈鍏崇郴, 涓嬫浼樺厛姣斿 - } - } - -done: - logger.Debugf("姣斿缁撴灉 %d鏉�", len(scResult.CompareResult)) - buf, err := proto.Marshal(&scResult) + buf, err := proto.Marshal(&response) if err != nil { - logger.Error("scResult Marshal error!", err) + logger.Error("response Marshal error!", err) return nil } return buf } -func DoSdkCompare(ci []byte, co string) float32 { - co_d, err := base64.StdEncoding.DecodeString(co) - if err != nil { - logger.Error("DoSdkCompare err:", err) - return -1 - } - sec := DecCompare(ci, co_d) +func DoSdkCompare(ci, co []float32) float32 { + sec := DirectCompare(ci, co) //logger.Debug("姣斿寰楀垎涓猴細", sec) sec = ParseScore(sec) -- Gitblit v1.8.0