From a298411166eb97edcce21ae42b1aeb763af8a8f0 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期三, 17 七月 2019 18:28:19 +0800 Subject: [PATCH] Refactoring face alignment and caching --- dbpersoninfo.go | 81 ++++++++++++++++---------- esutil/EsApi.go | 51 ++++++++++++----- 2 files changed, 85 insertions(+), 47 deletions(-) diff --git a/dbpersoninfo.go b/dbpersoninfo.go index 5832070..1488601 100644 --- a/dbpersoninfo.go +++ b/dbpersoninfo.go @@ -25,7 +25,7 @@ var Cmap *CmapItem -func Init(){ +func Init(indexName string, serverIp string, serverPort string, analyServerId string){ flag.Parse() gosdk.InitFaceExtractor(16, 0) @@ -41,20 +41,29 @@ wg.Add(1) go func(qs int){ defer wg.Done() - escache, err := esutil.DbPersoninfos(qs, *querynum) + escache, err := esutil.Personinfos(qs, *querynum, indexName, serverIp, serverPort, analyServerId) if err != nil { fmt.Println(err) return } - Cmap.Lock() + Cmap.Lock() + var tableidstring string for _, value := range escache{ - if _, ok :=Cmap.Cam[value.Tableid]; !ok { - Cmap.Cam[value.Tableid]=shardmap.New(uint8(*threadnum)) + + // 濡傛灉娌℃湁tableid 鍒� tableidstring = capturetable + if value.Tableid == nil{ + tableidstring="capturetable" + }else{ + tableidstring = value.Tableid + } + + if _, ok :=Cmap.Cam[tableidstring]; !ok { + Cmap.Cam[tableidstring]=shardmap.New(uint8(*threadnum)) } - Cmap.Cam[value.Tableid].Set(value.Id,value.FaceFeature) + Cmap.Cam[tableidstring].Set(value.Id,value.FaceFeature) } Cmap.Unlock() @@ -66,49 +75,57 @@ fmt.Println() } -func Getdbpersonmsg(tableid string, teststring []byte, IsCompare bool) ([]byte) { +func GetComparePersonBaseInfo(tableid []string, faceFeature []byte, compareThreshold int) []byte { totalmap := make(map[string]float32) - if !IsCompare { + if faceFeature == nil { return nil } - if teststring == nil { - return nil - } - - if tableid == "" { - for id, val := range Cmap.Cam{ - fmt.Println("the id is: ", id) - tmpmap := val.Walk(Printest, teststring) + if tableid == nil { + //瀵规瘮鍏ㄩ儴 + for _, val := range cache.Cmap.Cam { + tmpmap := val.Walk(Printest, faceFeature) for key, sec := range tmpmap { - totalmap[key] = sec + if sec > 70*0.01 { + totalmap[key] = sec + } } } - }else{ - for id, value := range Cmap.Cam{ - if id == tableid{ - fmt.Println("the id is: ", id) - tmpmap :=value.Walk(Printest, teststring) - for key, sec := range tmpmap { - totalmap[key]= sec - } - break + } else { + for _, tid := range tableid { + shardins, ok := cache.Cmap.Cam[tid] + fmt.Println(ok) + if !ok { + fmt.Println("get shad error by id", shardins) + continue } - } + tmpmap := shardins.Walk(Printest, faceFeature) + for key, sec := range tmpmap { + if compareThreshold > 70{ + if sec > compareThreshold { + totalmap[key] = sec + } + }else { + if sec > 70*0.01 { + totalmap[key] = sec + } + } + + } + + } } - - firsttime := time.Now() - fmt.Println(time.Since(firsttime)) + fmt.Println(totalmap) buf, err := json.Marshal(totalmap) if err != nil { fmt.Println("map to json error!", err) - return nil + return nil } - return buf + return buf } func Printest(ci []byte, co string ) (float32){ diff --git a/esutil/EsApi.go b/esutil/EsApi.go index 7e7cbf1..17de9aa 100644 --- a/esutil/EsApi.go +++ b/esutil/EsApi.go @@ -10,12 +10,33 @@ ) // 鏌ヨ搴曞簱浜哄憳淇℃伅 -func DbPersoninfos( queryindex int, querynums int ) ([]*protomsg.Esinfo, error){ +func Personinfos( queryIndex int, queryNums int, indexName string, serverIp string, serverPort string, analyServerId string) ([]*protomsg.Esinfo, error){ var dbinfos []*protomsg.Esinfo - point := strconv.Itoa(queryindex) - number := strconv.Itoa(querynums) - - var dbinfoRequest = ` { + point := strconv.Itoa(queryIndex) + number := strconv.Itoa(queryNums) + JsonDSL := "" + if indexName == "videopersons" { + JsonDSL = ` { + "from": ` + point + `, + "query": { + "bool": { + "filter": [ + { + "term": { + "analyServerId": ` + analyServerId + ` + } + } + ] + } + }, + "size":`+ number +`, + "_source": [ + "id", + "faceFeature" + ] + }` + }else { + JsonDSL = ` { "from": ` + point + `, "query": { "match_all": {} @@ -27,8 +48,8 @@ "faceFeature" ] }` - - buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtablepersons/dbpersons/_search",[]byte(dbinfoRequest)) + } + buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_search",[]byte(JsonDSL)) if err != nil { return dbinfos ,errors.New("http request dbtablename info is err!") } @@ -45,7 +66,7 @@ } // 鏍规嵁搴曞簱id鏌ヨ搴曞簱淇℃伅 -func Dbtablefosbyid (id []string) ([]protomsg.Dbtable, error) { +func Dbtablefosbyid (id []string, indexName string, serverIp string, serverPort string) ([]protomsg.Dbtable, error) { var dbinfo []protomsg.Dbtable dbtableId := strings.Replace(strings.Trim(fmt.Sprint(id), "[]"), " ", "\",\"", -1) var dbinfoRequest = ` @@ -54,7 +75,7 @@ "bool": { "filter": [{ "terms": { - "_id": [ + "id": [ "`+ dbtableId +`" ] } @@ -63,7 +84,7 @@ } } ` - buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtables/_search",[]byte(dbinfoRequest)) + buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_search",[]byte(dbinfoRequest)) if err != nil { return dbinfo, err } @@ -78,7 +99,7 @@ } // 鏍规嵁搴曞簱浜哄憳id鏌ヨ搴曞簱浜哄憳淇℃伅 -func Dbpersoninfosbyid (id []string) ([]protomsg.Dbperson, error) { +func Dbpersoninfosbyid (id []string, indexName string, serverIp string, serverPort string) ([]protomsg.Dbperson, error) { var dbinfo []protomsg.Dbperson dbtablePersonId := strings.Replace(strings.Trim(fmt.Sprint(id), "[]"), " ", "\",\"", -1) var dbinfoRequest = ` @@ -87,7 +108,7 @@ "bool": { "filter": [{ "terms": { - "_id": [ + "id": [ "`+ dbtablePersonId +`" ] } @@ -96,7 +117,7 @@ } } ` - buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtablepersons/_search",[]byte(dbinfoRequest)) + buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_search",[]byte(dbinfoRequest)) if err != nil { return dbinfo, err } @@ -112,7 +133,7 @@ } // 鏍规嵁tableid 鏌ヨtablename -func Dbtablename(tableid string ) (tablename string, err error) { +func Dbtablename(tableid string, indexName string, serverIp string, serverPort string) (tablename string, err error) { var dbinfotable =` { "query": { "bool": { @@ -130,7 +151,7 @@ ] } ` - buf, err := EsReq("POST", "http://192.168.1.182:9200/dbtables/_search",[]byte(dbinfotable)) + buf, err := EsReq("POST", "http://"+serverIp+":"+serverPort+"/"+indexName+"/_search",[]byte(dbinfotable)) if err != nil { return "" ,errors.New("http request dbtablename info is err!") } -- Gitblit v1.8.0