From 6e2b079ea9bb0b02a61c1d329235943fafbc1ba0 Mon Sep 17 00:00:00 2001 From: 2657262686@qq.com <2657262686@qq.com> Date: Thu, 27 Oct 2022 16:56:28 +0800 Subject: [PATCH] 编译通过 --- FFNvDecoder/NV12ToRGB.cu | 6 +++--- FFNvDecoder/cuda_kernels.h | 8 ++++---- tsl_aiplatform/ai_engine_module/VPTProcess.h | 4 ++++ tsl_aiplatform/ai_engine_module/face_det_ai_engine.cpp | 3 +-- tsl_aiplatform/ai_engine_module/human_gather_statistics.cpp | 2 +- tsl_aiplatform/ai_engine_module/human_gather_statistics.h | 1 + tsl_aiplatform/ai_platform/GpuRgbMemory.hpp | 6 +++--- tsl_aiplatform/ai_platform/GpuRgbMemoryFactory.cpp | 2 +- tsl_aiplatform/ai_platform/MultiSourceProcess.cpp | 76 +++++++++++++++++++++++++++++++++++++++++++++++++--------------------------- tsl_aiplatform/ai_platform/MultiSourceProcess.h | 10 +++------- 10 files changed, 70 insertions(+), 48 deletions(-) diff --git a/FFNvDecoder/NV12ToRGB.cu b/FFNvDecoder/NV12ToRGB.cu index c54de2c..f1fde0a 100644 --- a/FFNvDecoder/NV12ToRGB.cu +++ b/FFNvDecoder/NV12ToRGB.cu @@ -257,14 +257,14 @@ namespace cuda_common dstImage[width * y * 3 + x * 3 + 5] = clip_v(red[1] * 0.25,0 ,255); } - cudaError_t setColorSpace2(e_ColorSpace CSC, float hue) + cudaError_t setColorSpace(FF_ColorSpace CSC, float hue) { float hueSin = sin(hue); float hueCos = cos(hue); float hueCSC[9]; - if (CSC == ITU601) + if (CSC == ITU_601) { //CCIR 601 hueCSC[0] = 1.1644f; @@ -277,7 +277,7 @@ namespace cuda_common hueCSC[7] = hueCos * 2.0172f; hueCSC[8] = hueSin * -2.0172f; } - else if (CSC == ITU709) + else if (CSC == ITU_709) { //CCIR 709 hueCSC[0] = 1.0f; diff --git a/FFNvDecoder/cuda_kernels.h b/FFNvDecoder/cuda_kernels.h index 966a1af..8ac30dd 100644 --- a/FFNvDecoder/cuda_kernels.h +++ b/FFNvDecoder/cuda_kernels.h @@ -12,13 +12,13 @@ typedef enum { - ITU601 = 1, - ITU709 = 2 -} e_ColorSpace; + ITU_601 = 1, + ITU_709 = 2 +} FF_ColorSpace; namespace cuda_common { - cudaError_t setColorSpace2(e_ColorSpace CSC, float hue); + cudaError_t setColorSpace(FF_ColorSpace CSC, float hue); cudaError_t NV12ToRGBnot(CUdeviceptr d_srcNV12, size_t nSourcePitch, unsigned char* d_dstRGB, int width, int height); cudaError_t CUDAToBGR(CUdeviceptr dataY, CUdeviceptr dataUV, size_t pitchY, size_t pitchUV, unsigned char* d_dstRGB, int width, int height); diff --git a/tsl_aiplatform/ai_engine_module/VPTProcess.h b/tsl_aiplatform/ai_engine_module/VPTProcess.h index f3b9b2c..c004de6 100644 --- a/tsl_aiplatform/ai_engine_module/VPTProcess.h +++ b/tsl_aiplatform/ai_engine_module/VPTProcess.h @@ -65,6 +65,10 @@ int VPT_Process_GPU(void * handle, sy_img * batch_img, int batchsize, vector>& unUsedResult); +int VPT_Process_GPU2(void * handle, sy_img * batch_img, vector& tasklist, + vector& result, vector>& deleteObjectID, vector>& unUsedResult); + + /************************************************************************* * FUNCTION: VPT_Release * PURPOSE: 资源释放 diff --git a/tsl_aiplatform/ai_engine_module/face_det_ai_engine.cpp b/tsl_aiplatform/ai_engine_module/face_det_ai_engine.cpp index 941640b..e1ed39f 100644 --- a/tsl_aiplatform/ai_engine_module/face_det_ai_engine.cpp +++ b/tsl_aiplatform/ai_engine_module/face_det_ai_engine.cpp @@ -1,7 +1,6 @@ #include "face_det_ai_engine.h" #include #include -#include "cuda_kernels.h" #include "mvpt_process_assist.h" #include "../helpers/logger.hpp" @@ -402,7 +401,7 @@ int face_det_ai_engine::ai_engine_process_batch2(std::vector &task_ //跟踪 int real_index = 0; - std::set::iterator iter = task_ids.cbegin(); + auto iter = task_ids.cbegin(); while (iter != task_ids.cend()) { if (!task_trackers[*iter].tracker.GetState()) diff --git a/tsl_aiplatform/ai_engine_module/human_gather_statistics.cpp b/tsl_aiplatform/ai_engine_module/human_gather_statistics.cpp index b73c05f..7b37c31 100644 --- a/tsl_aiplatform/ai_engine_module/human_gather_statistics.cpp +++ b/tsl_aiplatform/ai_engine_module/human_gather_statistics.cpp @@ -83,7 +83,7 @@ namespace ai_engine_module return results; } - std::vector human_gather_statistics_process2(vector& taskin_play_id, sy_img* images, vector &ol_det_result) + std::vector human_gather_statistics::human_gather_statistics_process2(vector& taskin_play_id, sy_img* images, vector &ol_det_result) { std::vector results; diff --git a/tsl_aiplatform/ai_engine_module/human_gather_statistics.h b/tsl_aiplatform/ai_engine_module/human_gather_statistics.h index 67a0453..702cf4f 100644 --- a/tsl_aiplatform/ai_engine_module/human_gather_statistics.h +++ b/tsl_aiplatform/ai_engine_module/human_gather_statistics.h @@ -38,6 +38,7 @@ namespace ai_engine_module public: int human_gather_statistics_init(); std::vector human_gather_statistics_process(set& taskin_play_id, sy_img* images, vector &ol_det_result); + std::vector human_gather_statistics_process2(vector& taskin_play_id, sy_img* images, vector &ol_det_result); }; } } \ No newline at end of file diff --git a/tsl_aiplatform/ai_platform/GpuRgbMemory.hpp b/tsl_aiplatform/ai_platform/GpuRgbMemory.hpp index 9306269..a474949 100644 --- a/tsl_aiplatform/ai_platform/GpuRgbMemory.hpp +++ b/tsl_aiplatform/ai_platform/GpuRgbMemory.hpp @@ -1,14 +1,14 @@ #include #include "../helpers/cuda_helper.h" -#include "../helpers/timer.h" +#include "../helpers/timer.hpp" using namespace std; class GpuRgbMemory{ public: - GpuRgbMemory(, int _channel, int _width, int _height, string _id, string _gpuid, bool _isused){ + GpuRgbMemory(int _channel, int _width, int _height, string _id, string _gpuid, bool _isused){ channel = _channel; width = _width; height = _height; @@ -41,7 +41,7 @@ public: void setIsused(bool _isused) { isused = _isused; // 更新时间戳 - timestamp = helpers::timer::get_timestamp() + timestamp = helpers::timer::get_timestamp(); } string getId() { diff --git a/tsl_aiplatform/ai_platform/GpuRgbMemoryFactory.cpp b/tsl_aiplatform/ai_platform/GpuRgbMemoryFactory.cpp index bc615a9..3a3e800 100644 --- a/tsl_aiplatform/ai_platform/GpuRgbMemoryFactory.cpp +++ b/tsl_aiplatform/ai_platform/GpuRgbMemoryFactory.cpp @@ -31,7 +31,7 @@ GpuRgbMemory* GpuRgbMemoryFactory::getMemory(int size, string id, string gpuid){ } // 没有找到,或者找到了但是不符合需求重新分配 - GpuRgbMemory* mem = new GpuRgbMemory(size, true, id, gpuid); + GpuRgbMemory* mem = nullptr; //new GpuRgbMemory(size, true, id, gpuid); memoryMap[id] = mem; return mem; } diff --git a/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp b/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp index 1dde7fe..3b5b4ba 100644 --- a/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp +++ b/tsl_aiplatform/ai_platform/MultiSourceProcess.cpp @@ -1,5 +1,11 @@ #include "MultiSourceProcess.h" +#ifdef POST_USE_RABBITMQ + #include "../helpers/gen_json.hpp" +#endif + +#include "../helpers/logger.hpp" +#include "../helpers/os_helper.hpp" #include "authority.h" @@ -296,8 +302,8 @@ void CMultiSourceProcess::post_decode_thread(task_param _cur_task_param, AVFrame GpuRgbMemory* gpuMem = new GpuRgbMemory(3, gpuFrame->width, gpuFrame->height, _cur_task_param.task_id, _cur_task_param.gpu_id_ , true); cudaSetDevice(atoi(_cur_task_param.gpu_id_)); - cuda_common::setColorSpace2( ITU709, 0 ); - cudaError_t cudaStatus = cuda_common::CUDAToBGR((CUdeviceptr)gpuFrame->data[0],(CUdeviceptr)gpuFrame->data[1], gpuFrame->linesize[0], gpuFrame->linesize[1], gpuMem->pHwRgb, gpuFrame->width, gpuFrame->height); + cuda_common::setColorSpace( ITU_709, 0 ); + cudaError_t cudaStatus = cuda_common::CUDAToBGR((CUdeviceptr)gpuFrame->data[0],(CUdeviceptr)gpuFrame->data[1], gpuFrame->linesize[0], gpuFrame->linesize[1], gpuMem->getMem(), gpuFrame->width, gpuFrame->height); cudaDeviceSynchronize(); if (cudaStatus != cudaSuccess) { cout << "CUDAToBGR failed !!!" << endl; @@ -446,7 +452,7 @@ void CMultiSourceProcess::algorthim_vpt(vector& task_list, sy_img *batch continue; vpt_interest_task_id.push_back(task_id); - vpt_interest_imgs.emplace_back(batch_img[_idx]); + vpt_interest_imgs.emplace_back(batch_img[i]); } /* 待检测的图片不为空 开始检测 */ @@ -493,8 +499,11 @@ void CMultiSourceProcess::algorthim_vpt(vector& task_list, sy_img *batch // 行人安全分析算法模块 void CMultiSourceProcess::algorthim_pedestrian_safety(vector& vpt_interest_task_id, vector& vpt_interest_imgs, vector& vptResult){ + +#ifdef WITH_SECOND_PROCESS + vector interest_task_id; - decltype(vptResult) interest_vpt_result; + vector interest_vpt_result; vector interest_imgs(0); int _idx = 0; @@ -516,11 +525,14 @@ void CMultiSourceProcess::algorthim_pedestrian_safety(vector& vpt_intere if (!interest_imgs.empty()) pedestrian_safety_detector_.update_mstreams2(interest_task_id, interest_imgs.data(), interest_vpt_result); + +#endif } // 逆行&非法闯入算法模块 void CMultiSourceProcess::algorthim_retrograde_trespass(vector& vpt_interest_task_id, vector& vpt_interest_imgs, vector& vptResult ,vector>& deleteObjectID){ +#ifdef WITH_SECOND_PROCESS vector interest_task_id; decltype(vptResult) interest_vpt_result; vector interest_imgs(0); @@ -562,6 +574,7 @@ void CMultiSourceProcess::algorthim_retrograde_trespass(vector& vpt_inte trespass_interest_task_id, trespass_interest_imgs.data(), trespass_interest_vpt_result, trespass_interest_deleteobjs); } +#endif } // for snapshot algorithm. 轨迹结束目标 做最后的结果返回(当前返回算法结果+快照保存路径) @@ -810,9 +823,11 @@ int CMultiSourceProcess::endframe_obj_process(const OBJ_KEY &obj_key, algorithm_ // 打架跌倒算法模块 void CMultiSourceProcess::algorithm_fight_fall(vector& vpt_interest_task_id, vector& vpt_interest_imgs, vector& vptResult){ + +#ifdef WITH_SECOND_PROCESS /* a. find fight or fall classification taskId. */ vector interest_task_id; - decltype(vptResult) interest_vpt_result; + vector interest_vpt_result; vector interest_imgs(0); int _idx = 0; @@ -820,7 +835,7 @@ void CMultiSourceProcess::algorithm_fight_fall(vector& vpt_interest_task ++_task_id_iter, ++_idx) // loop task_id; { const auto &task_id = *_task_id_iter; - auto algor_map = pThreadParam->m_task_param_manager->get_task_other_param(task_id); + auto algor_map = m_task_param_manager->get_task_other_param(task_id); if (algor_map->find(algorithm_type_t::PEDESTRIAN_FIGHT) != algor_map->end() || algor_map->find(algorithm_type_t::PEDESTRIAN_FALL) != algor_map->end()) { interest_task_id.emplace_back(task_id); @@ -853,32 +868,39 @@ void CMultiSourceProcess::algorithm_fight_fall(vector& vpt_interest_task } } } + +#endif } -void CMultiSourceProcess::algorithm_takeaway_member_cls(vector& vpt_interest_task_id, vector& vpt_interest_imgs, vector& vptResult){ - /* find takeaway member classification taskId. */ - vector interest_task_id; - decltype(vptResult) interest_vpt_result; - vector interest_imgs(0); +void CMultiSourceProcess::algorithm_takeaway_member_cls(vector& vpt_interest_task_id, vector& vpt_interest_imgs + , vector& vptResult){ - int _idx = 0; - for (auto _task_id_iter = vpt_interest_task_id.begin(); _task_id_iter != vpt_interest_task_id.end(); - ++_task_id_iter, ++_idx) // loop task_id; - { - const auto &task_id = *_task_id_iter; +#ifdef WITH_SECOND_PROCESS + /* find takeaway member classification taskId. */ + vector interest_task_id; + decltype(vptResult) interest_vpt_result; + vector interest_imgs(0); - auto algor_map = pThreadParam->m_task_param_manager->get_task_other_param(task_id); - if (algor_map->find(algorithm_type_t::TAKEAWAY_MEMBER_CLASSIFICATION) == algor_map->end()) - continue; + int _idx = 0; + for (auto _task_id_iter = vpt_interest_task_id.begin(); _task_id_iter != vpt_interest_task_id.end(); + ++_task_id_iter, ++_idx) // loop task_id; + { + const auto &task_id = *_task_id_iter; - interest_task_id.emplace_back(task_id); - interest_imgs.emplace_back(vpt_interest_imgs[_idx]); - interest_vpt_result.emplace_back(vptResult[_idx]); - } + auto algor_map = pThreadParam->m_task_param_manager->get_task_other_param(task_id); + if (algor_map->find(algorithm_type_t::TAKEAWAY_MEMBER_CLASSIFICATION) == algor_map->end()) + continue; - if (!interest_imgs.empty()) - takeaway_member_.update_mstreams2(interest_task_id, interest_imgs.data(), interest_vpt_result); - } + interest_task_id.emplace_back(task_id); + interest_imgs.emplace_back(vpt_interest_imgs[_idx]); + interest_vpt_result.emplace_back(vptResult[_idx]); + } + + if (!interest_imgs.empty()) + takeaway_member_.update_mstreams2(interest_task_id, interest_imgs.data(), interest_vpt_result); + +#endif +} /* 每帧都需要做的算法模块 */ int CMultiSourceProcess::everyframe_process(vector &task_in_play_id, sy_img *images, @@ -988,7 +1010,7 @@ void CMultiSourceProcess::algorthim_face_detect(vector& task_list, sy_im if (!task_has_face_algor(task_id)) continue; - face_det_interest_task_id.insert(task_id); + face_det_interest_task_id.emplace_back(task_id); face_det_interest_imgs.emplace_back(batch_img[_idx]); } diff --git a/tsl_aiplatform/ai_platform/MultiSourceProcess.h b/tsl_aiplatform/ai_platform/MultiSourceProcess.h index b54cde7..76f5b04 100644 --- a/tsl_aiplatform/ai_platform/MultiSourceProcess.h +++ b/tsl_aiplatform/ai_platform/MultiSourceProcess.h @@ -173,12 +173,8 @@ public: /* frame process api */ int FinishProcessThread(); - int endframe_obj_process(const OBJ_KEY &obj_key, algorithm_type_t algor_type); + int everyframe_process(vector &task_in_play_id, sy_img *images, vector &ol_det_result); - bool save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, const sy_img &ori_img, - const sy_img &roi_img, const long long id, const std::string &json_str, - bool enable_async = true, const bool ori_img_is_in_gpu = true, - const bool roi_img_is_in_gpu = true); public: void algorthim_process_thread(const string gpuid); @@ -214,10 +210,10 @@ private: int endframe_obj_process(const OBJ_KEY &obj_key, algorithm_type_t algor_type); /* 实现快照保存功能(还未真正保存 将显存图片cp到内存 * 直接保存本地或者存入缓存队列异步保存,保存方式看需求,报警类需要同步保存报警,分析类可异步保存后返回)*/ -bool save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, + bool save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, const sy_img &ori_img, const sy_img &roi_img, const long long id, const std::string &json_str, bool enable_async, - const bool ori_img_is_in_gpu, const bool roi_img_is_in_gpu) + const bool ori_img_is_in_gpu, const bool roi_img_is_in_gpu); private: map gpuProcessthreadMap; -- libgit2 0.21.4