| | |
| | | |
| | | func capturePersonsCompere(args protomsg.CompareArgs, fFeature []float32, baseScore float32) protomsg.SdkCompareResult { |
| | | var scr protomsg.SdkCompareResult |
| | | var walkedArea = make(map[string]struct{}, 0) |
| | | var walkedArea = make(map[string]struct{}) |
| | | |
| | | // 比对传入的小区id |
| | | if args.TreeNodes != nil && len(args.TreeNodes) > 0 { |
| | |
| | | |
| | | // 比对全部小区 |
| | | if !args.IsCompareAll && len(args.TreeNodes) > 0 { |
| | | baseScore += 20 |
| | | baseScore += 10 |
| | | } |
| | | |
| | | for key, val := range cache.CaptureDbMap.Area { |
| | |
| | | } |
| | | |
| | | if args.IsCompareAll { |
| | | baseScore = 0 |
| | | baseScore = 25 |
| | | } |
| | | |
| | | logger.Debugf("Compare args treeNodes %+v, is all %v, target %s, feature len %d", args.TreeNodes, args.IsCompareAll, args.CompareTarget, len(fFeature)) |
| | |
| | | import ( |
| | | "basic.com/pubsub/protomsg.git" |
| | | "sdkCompare/cache" |
| | | "sort" |
| | | ) |
| | | |
| | | func realNamePersonsCompere(args protomsg.CompareArgs, fFeature []float32, baseScore float32) protomsg.SdkCompareResult { |
| | | var scr protomsg.SdkCompareResult |
| | | targets := cache.RealNameDbMap.Walk(DoSdkCompare, fFeature, baseScore) |
| | | if len(targets) > 0 { |
| | | for idx, _ := range targets { |
| | | scr.CompareResult = append(scr.CompareResult, targets[idx]) |
| | | sort.Slice(targets, func(i, j int) bool { |
| | | return targets[i].CompareScore > targets[j].CompareScore |
| | | }) |
| | | |
| | | // 截取前5个元素 |
| | | topTargets := targets |
| | | if len(targets) > 5 { |
| | | topTargets = targets[:5] // 只取前5个元素 |
| | | } |
| | | |
| | | for idx, _ := range topTargets { |
| | | scr.CompareResult = append(scr.CompareResult, topTargets[idx]) |
| | | } |
| | | } |
| | | |
| | |
| | | FaceFeature: util.ByteSlice2float32Slice(byteFeat), |
| | | }) |
| | | } else { |
| | | logger.Warnf("Person %s feature is empty %s", p.ID) |
| | | logger.Warnf("Person %s feature is empty", p.ID) |
| | | } |
| | | } |
| | | |