diff --git a/AIEngineModule/include_base/AI_Factory.h b/AIEngineModule/include_base/AI_Factory.h index 30ead4e..025fc83 100644 --- a/AIEngineModule/include_base/AI_Factory.h +++ b/AIEngineModule/include_base/AI_Factory.h @@ -154,6 +154,7 @@ public: private: public: std::shared_ptr Defect; + std::shared_ptr Defect_Dark; // 暗场检测模型(05DefectDark.engine) std::shared_ptr Class; std::shared_ptr Tag_Loc; diff --git a/AIEngineModule/src/AI_Factory.cpp b/AIEngineModule/src/AI_Factory.cpp index 8c057dc..488e313 100644 --- a/AIEngineModule/src/AI_Factory.cpp +++ b/AIEngineModule/src/AI_Factory.cpp @@ -42,12 +42,23 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig) Defect = AIModel_Base::GetInstance(); AIModel_Base::AIModelRun_Config edge_config; edge_config.gpuconfig.copy(gupconfig); - edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/DefectLight.engine"; - edge_config.strName = "Defect"; + edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/01DefectLight.engine"; + edge_config.strName = "DefectLight"; edge_config.inputType = AIModel_Base::Input_CHW; edge_config.Stream_num = 4; Defect->Init(edge_config); } + if (!Defect_Dark) + { + Defect_Dark = AIModel_Base::GetInstance(); + AIModel_Base::AIModelRun_Config edge_config; + edge_config.gpuconfig.copy(gupconfig); + edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/05DefectDark.engine"; + edge_config.strName = "DefectDark"; + edge_config.inputType = AIModel_Base::Input_CHW; + edge_config.Stream_num = 4; + Defect_Dark->Init(edge_config); + } if (!Class) { Class = AIModel_Base::GetInstance(); @@ -64,7 +75,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig) Tag_Loc = AIModel_Base::GetInstance(); AIModel_Base::AIModelRun_Config edge_config; edge_config.gpuconfig.copy(gupconfig); - edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/BadLabel.engine"; + edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/02BadLabel.engine"; edge_config.strName = "Tag_Loc"; edge_config.inputType = AIModel_Base::Input_CHW; edge_config.Stream_num = 4; @@ -75,7 +86,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig) Align_Outer = AIModel_Base::GetInstance(); AIModel_Base::AIModelRun_Config edge_config; edge_config.gpuconfig.copy(gupconfig); - edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/ProductLoc.engine"; + edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/04ProductLoc.engine"; edge_config.strName = "Align_Outer"; edge_config.inputType = AIModel_Base::Input_CHW; edge_config.Stream_num = 2; @@ -86,7 +97,7 @@ int AIFactory::InitALLAIModle(GPU_Config gupconfig) Align_Inner = AIModel_Base::GetInstance(); AIModel_Base::AIModelRun_Config edge_config; edge_config.gpuconfig.copy(gupconfig); - edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/ClampLoc.engine"; + edge_config.strPath = "/home/aidlux/BOE/UseModel_ZB/BM/03ClampLoc.engine"; edge_config.strName = "Align_Inner"; edge_config.inputType = AIModel_Base::Input_CHW; edge_config.Stream_num = 2; diff --git a/AlgorithmModule/src/ImgCheckAnalysisy.cpp b/AlgorithmModule/src/ImgCheckAnalysisy.cpp index c76f5ad..e2195b1 100644 --- a/AlgorithmModule/src/ImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ImgCheckAnalysisy.cpp @@ -1936,14 +1936,23 @@ int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg) { std::shared_ptr pAIDet; // printf("=====>>>>AI_Detect_Thread m_strCurDetChannel %s \n", m_strCurDetChannel.c_str()); + bool bUseDarkModel = false; + std::string strCameraName; { // printf("=====>>>>AI_Detect_Thread USE CA %s \n", m_strCurDetChannel.c_str()); - pAIDet = AI_Factory->Defect; + // 暗场图像(相机名含 "dark",与 Define_Base.h ALIGN_REUSE_* 的明/暗场判定一致)用暗场检测模型(05DefectDark.engine); + // 其余(明场)用明场检测模型(01DefectLight.engine);暗场模型未加载成功时回退明场模型 + std::string strProduct; + GetProductCameraStr(strProduct, strCameraName); + bUseDarkModel = !ReplaceDarkWithBright(strCameraName).empty() && AI_Factory->Defect_Dark && AI_Factory->Defect_Dark->m_bInitSuccess; + pAIDet = bUseDarkModel ? AI_Factory->Defect_Dark : AI_Factory->Defect; } std::string strBaseLog = "AI_Detect"; m_pdetlog->AddCheckstr(PrintLevel_0, DET_LOG_LEVEL_3, strBaseLog, "AI_Detect Start"); + m_pdetlog->AddCheckstr(PrintLevel_1, DET_LOG_LEVEL_3, strBaseLog, "Detect Model %s (camera %s)", + bUseDarkModel ? "DefectDark" : "DefectLight", strCameraName.c_str()); long t1, t2, t3; t1 = CheckUtil::getcurTime();