From 4d1c2ee860222138fc7932225ea6d91e7483646a Mon Sep 17 00:00:00 2001
From: pansen <pansen626@sina.com>
Date: 星期一, 22 四月 2019 11:18:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.3nsq' into 1.3nsq
---
QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp | 57 +++++++++++++++++++++++++++++++++++----------------------
1 files changed, 35 insertions(+), 22 deletions(-)
diff --git a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
index 30fed97..e37f88a 100644
--- a/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
+++ b/QiaoJiaSystem/FaceSearchServer/FaceFeatureSearchServerI.cpp
@@ -123,14 +123,25 @@
}
//#todo 浼樺寲
+/**
+ *
+ * @param feature 闇�瑕佸姣旂殑鐗瑰緛
+ * @param info_json 闇�瑕佹彃鍏ユ暟鎹簱鐨刯son瀛楁
+ * @param topN 鑾峰彇鍓嶅嚑浣�
+ * @param score 瀵规瘮鐨勯槇鍊�
+ * @return
+ */
::FaceSearch::FaceResults
FaceFeatureSearchServerI::faceSearchTopN(const ::FaceSearch::Data &feature, const ::std::string &info_json,
::Ice::Int topN, ::Ice::Float score, const ::Ice::Current &) {
ClockTimer clockTimer("faceSearchTopN " + to_string(score) + " :");
INFO("faceSearchTopN start");
+ // 鑾峰彇褰撳墠绾跨▼id
thread::id key = std::this_thread::get_id();
::FaceSearch::FaceResults results;
FaceResults t_TableCompareResult;
+
+ // 杩涜瀵规瘮鐨勬暟鎹粨鏋�
AlarmData featureData;
featureData.num = topN;
featureData.feature.resize(feature.size());
@@ -142,14 +153,19 @@
if (reader.parse(info_json, value)) {
//#todo
m_rwLock.rdlock();
+ // 鐗瑰緛杞寲涓篵ase64瀛樺叆鍒癹son涓�
std::string feature_base64;
feature_base64 = base64.Encode(feature.data(), feature.size());
value["FaceFeature"] = feature_base64;
+ //---------------------------
+
DBG("auto &it : m_faceFCMAP start " << m_faceFCMAP.size());
//#todo lock
+ // 閬嶅巻涓嶅悓鐨勫簳搴撹繘琛屾瘮瀵�
for (auto &it : m_faceFCMAP) {
auto &t_FaceFC = it.second;
auto t_tableInfo = m_tableType[it.first];
+ // 鑾峰彇搴曞簱鐨勬姤璀︾姸鎬�
bool ret = getRet(t_tableInfo.startTime, t_tableInfo.endTime);
if (ret) {
string t_alarmRet = t_tableInfo.bwType;
@@ -157,10 +173,12 @@
//#todo 闈炲悓姝ュ簱鏄惁闇�瑕佹瘮杈冿紵
DBG("m_faceFCMAP compare start " << it.first);
+ // 瀵规瘮
t_FaceFC->compare(key, &featureData, topN);
DBG("m_faceFCMAP compare end " << it.first);
-
+ // 鏍规嵁褰撳墠绾跨▼id鑾峰彇瀵规瘮缁撴灉
auto t_results = t_FaceFC->getTopResult(key);
+ // 瀵规瘮缁撴灉杞崲
for (auto &t_item : t_results) {
t_item.tableName = it.first;
t_item.alarmRet = t_alarmRet;
@@ -176,6 +194,7 @@
DBG("t_TableCompareResult size" << t_TableCompareResult.size());
//sort_all_results
+ // 鎺掑簭
for (auto itor = t_TableCompareResult.begin(); itor != t_TableCompareResult.end(); ++itor) {
float new_confidence = itor->confidence;
auto rtTR = results.rbegin();
@@ -194,6 +213,7 @@
ERR("topResult is null");
}
auto itTR(rtTR.base());
+ // 鏁版嵁杞寲
::FaceSearch::FaceResult t_faceCR;
t_faceCR.id = itor->id;
t_faceCR.uuid = itor->uuid;
@@ -208,9 +228,10 @@
results.insert(itTR, t_faceCR);
}
bool retface = true;
-// cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << results.size() << endl;
//#todo send message
if (results.size() > 0) {
+ // 鏍规嵁浼犲叆鐨勫姣旈槇鍊煎仛绛涢��
+ // 鏈垎鏀彧淇濆瓨浜嗙涓�涓姣旂粨鏋�
for (auto &item : results) {
//#todo 寰楀垎姣旇緝锛屽簲璇ュ湪compare涓繘琛�
if (item.confidence < score) {
@@ -226,15 +247,6 @@
break;
}
value["personId"] = item.uuid.size() > 0 ? item.uuid : "";//鍏宠仈搴曞簱浜哄憳id,浜鸿劯id
-
-// string tmp_tableName = item.tableName;
-// if (tmp_tableName.find("lt_") == 0) {
-// tmp_tableName = tmp_tableName.insert(tmp_tableName.find("lt_") + 3, "::");
-// value["BaseName"] = tmp_tableName;//鍏宠仈搴曞簱琛ㄥ悕
-// } else {
-// value["BaseName"] = item.tableName.size() > 0 ? item.tableName : "";//鍏宠仈搴曞簱琛ㄥ悕
-// }
-
value["BaseName"] = item.tableName.size() > 0 ? item.tableName : "";//鍏宠仈搴曞簱琛ㄥ悕
value["likePer"] = item.confidence > 0 ? item.confidence : 0.0;
@@ -244,10 +256,8 @@
value["personIsHub"] = item.alarmRet.size() > 0 ? item.alarmRet : "4";
auto str_uuid = value["Id"].asString();
-// DBG(value.toStyledString());
- cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "value.toStyledString() "
- << value.toStyledString() << "\n score " << score << endl;
+ DBG("value.toStyledString() " << value.toStyledString() << "\n score " << score);
// DBG("score " << score);
retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(),
str_uuid);
@@ -258,37 +268,35 @@
value["personIsHub"] = "4";
value["likePer"] = 0.0;
DBG(value.toStyledString());
-// cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "value.toStyledString() "
-// << value.toStyledString() << endl;
retface = pManagerEsDB.insertData("videopersons", "perVideoPicture", value.toStyledString(),
str_uuid);
}
if (!retface) {
ERR("insert error");
} else {
- cout << __FUNCTION__ << " -> " << __LINE__ << " -> " << "retface " << retface << endl;
+ ERR("retface " << retface);
};
} else {
ERR("json is error" << info_json);
}
-
-
-// for (auto &item : t_tables) {
-// DBG(item);
-// }
return results;
}
bool FaceFeatureSearchServerI::loadFeatureData(FaceFeatureSearchServerI *faceFea) {
+ // 鍔犺浇搴曞簱鏁版嵁
ErlangTool::map_TabDataCache dataBaseCache = faceFea->m_erlangDbTool.findAllDatabase();
if (dataBaseCache.size() < 0 && faceFea->m_retUpdatePthread) {
+ // 杩欓噷杩涗笉鏉ュ惂锛�
faceFea->m_retUpdatePthread = false;
+ //鎺у埗涓嬫柟绾跨▼鍙惎鍔ㄤ竴娆�
std::thread thd(dataUpdate, faceFea);
thd.detach();
}
+ // 鑾峰彇琛ㄤ俊鎭�
auto typeInfoCache = faceFea->m_erlangDbTool.findAllTypeInfo();
+ //娓呴櫎鏃ф暟鎹�
faceFea->m_tableType.clear();
string str_config = faceFea->m_erlangDbTool.getConfigJsonString();
@@ -368,6 +376,7 @@
faceFea->m_inTime = getTimeLong();
if (faceFea->m_retUpdatePthread) {
faceFea->m_retUpdatePthread = false;
+ //鎺у埗涓嬫柟绾跨▼鍙惎鍔ㄤ竴娆�
std::thread thd(dataUpdate, faceFea);
// faceFea->m_erlangDbTool.test(faceFea, erlangCallBackFunc);
@@ -418,6 +427,10 @@
// pthread_mutex_unlock(&(func_cond_mutex));
//}
+/**
+ * 绛夊緟搴曞簱鍔犺浇瀹屾垚锛屽苟绛夊緟淇″彿瑙﹀彂鏂扮殑鏁版嵁鍒锋柊
+ * @param faceFea
+ */
void FaceFeatureSearchServerI::dataUpdate(FaceFeatureSearchServerI *faceFea) {
long inTime = faceFea->m_inTime;
// modify all db ready start update, <10s
--
Gitblit v1.8.0