Commit 4a273a4acfd70a6dc9029cdab5b08899b2f89a36
1 parent
15756629
添加hcp和hp
Showing
24 changed files
with
846 additions
and
19 deletions
algorithm/hcp2/hcp/human_car_parsing.h
0 → 100644
1 | +/******************************************************************************************* | ||
2 | +* Version: human_car_parsing_v0.0.0 | ||
3 | +* CopyRight: 中科院自动化研究所模式识别实验室图像视频组 | ||
4 | +* UpdateDate: 20190402 | ||
5 | +* Content: 人骑车语义分析 | ||
6 | +********************************************************************************************/ | ||
7 | + | ||
8 | +#ifndef HUMANCARPARSING_H_ | ||
9 | +#define HUMANCARPARSING_H_ | ||
10 | + | ||
11 | +#ifdef _MSC_VER | ||
12 | +#ifdef HUMANCARPARSING_EXPORTS | ||
13 | +#define HUMANCARPARSING_API __declspec(dllexport) | ||
14 | +#else | ||
15 | +#define HUMANCARPARSING_API __declspec(dllimport) | ||
16 | +#endif | ||
17 | +#else | ||
18 | +#define HUMANCARPARSING_API __attribute__ ((visibility ("default"))) | ||
19 | +#endif | ||
20 | + | ||
21 | +#include "sy_common.h" | ||
22 | + | ||
23 | +#ifdef __cplusplus | ||
24 | +extern "C" | ||
25 | +{ | ||
26 | +#endif | ||
27 | + | ||
28 | +#ifndef __CLASSIFY_OBJ_RESULT__ | ||
29 | +#define __CLASSIFY_OBJ_RESULT__ | ||
30 | + typedef struct classify_obj_res //分类结果结构体 | ||
31 | + { | ||
32 | + int res_index; //分类结果 | ||
33 | + float res_prob; //分类结构体 | ||
34 | + classify_obj_res() : res_index(0), res_prob(0) {}; | ||
35 | + } classify_obj_res; | ||
36 | +#endif | ||
37 | + | ||
38 | +#ifndef __HCF_FEA_RES__ | ||
39 | +#define __HCF_FEA_RES__ | ||
40 | +const int HCF_FEATURE_SIZE = 1280; | ||
41 | +#endif | ||
42 | + | ||
43 | +#ifndef __HCP_RESULT__ | ||
44 | +#define __HCP_RESULT__ | ||
45 | +const int HCP_ATTRI_INDEX_SIZE = 14; | ||
46 | +typedef struct hcp_analysis_result | ||
47 | +{ | ||
48 | + classify_obj_res res_objs[HCP_ATTRI_INDEX_SIZE]; //分类结果 | ||
49 | + float feature[HCF_FEATURE_SIZE]; //人骑车特征 | ||
50 | +} hcp_analysis_result; | ||
51 | +#endif | ||
52 | + | ||
53 | +#ifndef __HCP_PARAM__ | ||
54 | +#define __HCP_PARAM__ | ||
55 | + typedef struct hcp_param | ||
56 | + { | ||
57 | + int devId; //ָ指定显卡id | ||
58 | + char* modelNames; | ||
59 | + // int mode; //运行模式(DEVICE_GPU / DEVICE_CPU) | ||
60 | + // int gpuid; //ָ指定显卡id | ||
61 | + // int engine; //ָ����������(ENGINE_MCAFFE2 / ENGINE_TENSORRT) | ||
62 | + // int max_batch; //ָ��trt���batch�� | ||
63 | + // char* serialize_file; | ||
64 | + // hcp_param() :mode(DEVICE_GPU), gpuid(0) {}; | ||
65 | + }hcp_param; | ||
66 | +#endif | ||
67 | + | ||
68 | + /************************************************************************* | ||
69 | + * FUNCTION: hcp_init | ||
70 | + * PURPOSE: 初始化 | ||
71 | + * PARAM: | ||
72 | + [out] tools - 句柄 | ||
73 | + [in] param - 初始化参数 | ||
74 | + * RETURN: | ||
75 | + [out] int - 初始化是否成功(SUCCEEDED表示成功,FAILED表示失败) | ||
76 | + * NOTES: | ||
77 | + *************************************************************************/ | ||
78 | + HUMANCARPARSING_API int hcp_init(void ** handle, hcp_param param); | ||
79 | + | ||
80 | + /************************************************************************* | ||
81 | + * FUNCTION: hcp_process | ||
82 | + * PURPOSE: 人骑车属性检测 | ||
83 | + * PARAM: | ||
84 | + [in] tools - 句柄 | ||
85 | + [in] img_data - 检测图像数据 | ||
86 | + [in] result - 检测结果 | ||
87 | + * RETURN: | ||
88 | + [out] int - 检测是否成功(SUCCEEDED表示成功,FAILED表示失败) | ||
89 | + * NOTES: | ||
90 | + *************************************************************************/ | ||
91 | + // HUMANCARPARSING_API int hcp_process(void * handle, sy_img img_data, hcp_analysis_result * result); | ||
92 | + | ||
93 | + /************************************************************************* | ||
94 | + * FUNCTION: hcp_batch | ||
95 | + * PURPOSE: 人骑车属性检测 | ||
96 | + * PARAM: | ||
97 | + [in] tools - 句柄 | ||
98 | + [in] img_data_array - 检测图像数据 | ||
99 | + [in] batch_size - 检测图像数目 | ||
100 | + [in] result - 检测结果 | ||
101 | + * RETURN: | ||
102 | + [out] int - 检测是否成功(SUCCEEDED表示成功,FAILED表示失败) | ||
103 | + * NOTES: | ||
104 | + *************************************************************************/ | ||
105 | + HUMANCARPARSING_API int hcp_batch(void * handle, sy_img * img_data_array, int batch_size, hcp_analysis_result * result); | ||
106 | + | ||
107 | + | ||
108 | + /************************************************************************* | ||
109 | + * FUNCTION: hcp_release | ||
110 | + * PURPOSE: 资源释放 | ||
111 | + * PARAM: | ||
112 | + [in] tools - 处理句柄 | ||
113 | + * RETURN: NULL | ||
114 | + * NOTES: | ||
115 | + *************************************************************************/ | ||
116 | + HUMANCARPARSING_API void hcp_release(void ** handle); | ||
117 | + | ||
118 | + /************************************************************************* | ||
119 | + * FUNCTION: hcp_get_version | ||
120 | + * PURPOSE: | ||
121 | + * PARAM: NULL | ||
122 | + * RETURN: 版本号 | ||
123 | + * NOTES: | ||
124 | + *************************************************************************/ | ||
125 | + HUMANCARPARSING_API const char * hcp_get_version(); | ||
126 | + | ||
127 | +#ifdef __cplusplus | ||
128 | +}; | ||
129 | +#endif | ||
130 | + | ||
131 | +#endif |
algorithm/hcp2/hcp/libhcp.so
0 → 100644
No preview for this file type
algorithm/hcp2/hcp/models/hcp211008_310p.om
0 → 100644
No preview for this file type
algorithm/hcp2/hcp_test/Makefile
0 → 100644
1 | +CC = gcc | ||
2 | +XX = c++ | ||
3 | + | ||
4 | +TARGET = start | ||
5 | + | ||
6 | +PROJ_ALL_PATH = $(PWD)/../.. | ||
7 | +CUR_PROJ_PATH = $(PWD) | ||
8 | +OPENCV_PATH = $(PROJ_ALL_PATH)/third_party/opencv_4_1 | ||
9 | +ACL_PATH = $(ASCEND_AICPU_PATH)/acllib | ||
10 | + | ||
11 | +INCLUDES = -I$(PROJ_ALL_PATH)/common \ | ||
12 | + -I$(ACL_PATH)/include \ | ||
13 | + -I$(PROJ_ALL_PATH)/common/dvpp \ | ||
14 | + -I$(CUR_PROJ_PATH)/../hcp \ | ||
15 | + -I$(OPENCV_PATH)/include \ | ||
16 | + -I$(OPENCV_PATH)/include/opencv2 \ | ||
17 | + | ||
18 | +CFLAGS = -O2 -std=c++11 $(INCLUDES) -DENABLE_DVPP_INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0 | ||
19 | + | ||
20 | +local_shared_libs_dirs := \ | ||
21 | + $(ACL_PATH)/lib64 \ | ||
22 | + $(OPENCV_PATH)/lib \ | ||
23 | + $(CUR_PROJ_PATH)/../hcp \ | ||
24 | + | ||
25 | +local_shared_libs := \ | ||
26 | + ascendcl \ | ||
27 | + acl_dvpp \ | ||
28 | + opencv_world \ | ||
29 | + hcp \ | ||
30 | + | ||
31 | +SHARED_LIBRARIES := $(foreach shared_lib, $(local_shared_libs), -l$(shared_lib)) | ||
32 | +#SHARED_LIBRARIES_DIRS := $(foreach shared_lib_dir, $(local_shared_libs_dirs), -L$(shared_lib_dir) -Wl,-z,relro,-z,now,-z,noexecstack,-rpath-link,$(shared_lib_dir)) | ||
33 | +SHARED_LIBRARIES_DIRS := $(foreach shared_lib_dir, $(local_shared_libs_dirs), -L$(shared_lib_dir) -Wl,-z,relro,-z,now,-z,noexecstack,-rpath,$(shared_lib_dir)) | ||
34 | + | ||
35 | +SRCS := $(wildcard $(CUR_PROJ_PATH)/*.cpp) | ||
36 | +SRCS += $(wildcard $(PROJ_ALL_PATH)/common/dvpp/*.cpp) | ||
37 | + | ||
38 | +DIRS := $(notdir $(SRCS)) | ||
39 | +OBJS := $(patsubst %cpp, %o, $(DIRS)) | ||
40 | + | ||
41 | +all: $(TARGET) | ||
42 | + | ||
43 | +$(TARGET):$(OBJS) | ||
44 | + $(XX) $(CFLAGS) -o $@ $^ $(SHARED_LIBRARIES_DIRS) $(SHARED_LIBRARIES) | ||
45 | +%.o:$(CUR_PROJ_PATH)/%.cpp | ||
46 | + $(XX) $(CFLAGS) -c $< | ||
47 | +%.o:$(PROJ_ALL_PATH)/common/dvpp/%.cpp | ||
48 | + $(XX) $(CFLAGS) -c $< | ||
49 | + | ||
50 | +clean: | ||
51 | + @rm -f $(TARGET) | ||
52 | + @rm -f $(OBJS) |
algorithm/hcp2/hcp_test/test.cpp
0 → 100644
1 | +#include <iostream> | ||
2 | +#include <sstream> | ||
3 | +#include <fstream> | ||
4 | +#include "human_car_parsing.h" | ||
5 | +#include "opencv2/opencv.hpp" | ||
6 | +#include "opencv2/imgcodecs/legacy/constants_c.h" | ||
7 | +#include "opencv2/imgproc/types_c.h" | ||
8 | +#include "time.h" | ||
9 | +#include "sys/time.h" | ||
10 | +#include "sy_errorinfo.h" | ||
11 | +#include "utils.h" | ||
12 | +#include "dvpp_process.h" | ||
13 | + | ||
14 | +using namespace std; | ||
15 | +using namespace cv; | ||
16 | +#include <chrono> | ||
17 | +#include <dirent.h> | ||
18 | + | ||
19 | + | ||
20 | +double msecond() { | ||
21 | + struct timeval tv; | ||
22 | + gettimeofday(&tv, 0); | ||
23 | + return (tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0); | ||
24 | +} | ||
25 | +void getAllNm(std::string pthNm, std::vector<std::string>& fileList) | ||
26 | +{ | ||
27 | + DIR *dir; | ||
28 | + struct dirent *ptr; | ||
29 | + dir = opendir(pthNm.c_str()); ///open the dir | ||
30 | + int filenum = 0; | ||
31 | + while((ptr = readdir(dir)) != NULL) ///read the list of this dir | ||
32 | + { | ||
33 | + // char* to string | ||
34 | + std::string curNm = ptr->d_name; | ||
35 | + if(curNm != "." && curNm != "..") | ||
36 | + { | ||
37 | + filenum++; | ||
38 | + fileList.push_back(curNm); | ||
39 | + //printf("file %d name: %s\n", filenum, curNm.c_str()); | ||
40 | + } | ||
41 | + } | ||
42 | + closedir(dir); | ||
43 | +} | ||
44 | + | ||
45 | + | ||
46 | +int main() { | ||
47 | + cout << hcp_get_version() << endl; | ||
48 | + const char* img_file_path = "../../../data/hcp/"; | ||
49 | + string saveimagepath= "../../../data/result/"; | ||
50 | + | ||
51 | + hcp_param param; | ||
52 | + param.modelNames = "../hcp/models/hcp211008_310p.om"; | ||
53 | + // param.modelNames = "hcp0629x.om"; | ||
54 | + param.devId = 0; | ||
55 | + | ||
56 | + void* handle = nullptr; | ||
57 | + cout << "init start " << endl; | ||
58 | + ACL_CALL(aclInit(nullptr), ACL_SUCCESS, SY_FAILED); | ||
59 | + ACL_CALL(aclrtSetDevice(param.devId), ACL_SUCCESS, SY_FAILED); | ||
60 | + aclrtContext ctx; | ||
61 | + ACL_CALL(aclrtCreateContext(&ctx, param.devId), ACL_SUCCESS, SY_FAILED); | ||
62 | + aclrtStream stream = nullptr; | ||
63 | + ACL_CALL(aclrtCreateStream(&stream), ACL_SUCCESS, SY_FAILED); | ||
64 | + DvppProcess* dvpp = new DvppProcess(); | ||
65 | + dvpp->InitResource(stream); | ||
66 | + int ret = hcp_init(&handle, param); | ||
67 | + if (ret == 0) { | ||
68 | + cout << "init success " << endl; | ||
69 | + | ||
70 | + std::vector<std::string> fileList; | ||
71 | + | ||
72 | + getAllNm(img_file_path,fileList); | ||
73 | + if (fileList.empty()) throw std::logic_error("No suitable images were found"); | ||
74 | + | ||
75 | + for (auto & file : fileList) { | ||
76 | + string filename = img_file_path + file; | ||
77 | + cout << "img path: " << filename << endl; | ||
78 | + | ||
79 | + const int batchsize = 1; | ||
80 | + | ||
81 | + Mat cvImg = imread(filename.c_str()); | ||
82 | + sy_img imgs[batchsize]; | ||
83 | + | ||
84 | + ImageData src[batchsize], dvpp_data[batchsize]; | ||
85 | + for (int b = 0; b < batchsize; b++) { | ||
86 | + Utils::ReadImageFile(src[b], filename); //将二进制图像读入内存,并读取宽高信息 | ||
87 | + ACL_CALL(dvpp->CvtJpegToYuv420sp(dvpp_data[b], src[b]), SY_SUCCESS, SY_FAILED); //解码 | ||
88 | + imgs[b].w_ = dvpp_data[b].width; | ||
89 | + imgs[b].h_ = dvpp_data[b].height; | ||
90 | + imgs[b].data_ = dvpp_data[b].data.get(); | ||
91 | + } | ||
92 | + | ||
93 | + hcp_analysis_result * results = new hcp_analysis_result[batchsize]; | ||
94 | + int ret = hcp_batch(handle, imgs, batchsize, results); | ||
95 | + if (SY_SUCCESS != ret) { | ||
96 | + printf("HumanCarParse process failed!"); | ||
97 | + return SY_FAILED; | ||
98 | + } | ||
99 | + | ||
100 | + for(int batchIdx = 0;batchIdx<batchsize;batchIdx++){ | ||
101 | + for (int i = 0; i < HCP_ATTRI_INDEX_SIZE; i++) { | ||
102 | + printf("hcp index:%d,confidence:%f\n",results[batchIdx].res_objs[i].res_index,results[batchIdx].res_objs[i].res_prob); | ||
103 | + } | ||
104 | + } | ||
105 | + | ||
106 | + } | ||
107 | + } | ||
108 | + | ||
109 | + hcp_release(&handle); | ||
110 | + aclrtDestroyContext(ctx); | ||
111 | + aclrtResetDevice(param.devId); | ||
112 | + aclFinalize(); | ||
113 | + | ||
114 | + return 0; | ||
115 | +} | ||
116 | + |
algorithm/hp2/hp/human_parsing.h
0 → 100644
1 | +/******************************************************************************************* | ||
2 | +* Version: human_parsing_v0.0.0.190402 | ||
3 | +* CopyRight: 中科视语(北京)科技有限公司 | ||
4 | +* UpdateDate: 20190402 | ||
5 | +* Content: 行人分析 | ||
6 | +********************************************************************************************/ | ||
7 | + | ||
8 | +#ifndef HUMANPARSING_H_ | ||
9 | +#define HUMANPARSING_H_ | ||
10 | + | ||
11 | +#ifdef _MSC_VER | ||
12 | +#ifdef HUMANPARSING_EXPORTS | ||
13 | +#define HUMANPARSING_API __declspec(dllexport) | ||
14 | +#else | ||
15 | +#define HUMANPARSING_API __declspec(dllimport) | ||
16 | +#endif | ||
17 | +#else | ||
18 | +#define HUMANPARSING_API __attribute__ ((visibility ("default"))) | ||
19 | +#endif | ||
20 | + | ||
21 | +#include "sy_common.h" | ||
22 | + | ||
23 | +#ifdef __cplusplus | ||
24 | +extern "C" | ||
25 | +{ | ||
26 | +#endif | ||
27 | + | ||
28 | +#ifndef __CLASSIFY_OBJ_RESULT__ | ||
29 | +#define __CLASSIFY_OBJ_RESULT__ | ||
30 | + typedef struct classify_obj_res //分类结果结构体 | ||
31 | + { | ||
32 | + int res_index; //分类结果 | ||
33 | + float res_prob; //分类结构体 | ||
34 | + classify_obj_res() : res_index(0), res_prob(0) {}; | ||
35 | + } classify_obj_res; | ||
36 | +#endif | ||
37 | + | ||
38 | +#ifndef __HF_FEA_RESULT__ | ||
39 | +#define __HF_FEA_RESULT__ | ||
40 | + const int HF_FEATURE_SIZE = 576; | ||
41 | +#endif | ||
42 | + | ||
43 | +#ifndef __HP_RESULT__ | ||
44 | +#define __HP_RESULT__ | ||
45 | + const int HP_ATTRI_INDEX_SIZE = 16; | ||
46 | + typedef struct hp_analysis_res | ||
47 | + { | ||
48 | + classify_obj_res res_objs[HP_ATTRI_INDEX_SIZE]; //分类结果 | ||
49 | + float feature[HF_FEATURE_SIZE]; //行人特征 | ||
50 | + } hp_analysis_res; | ||
51 | +#endif | ||
52 | + | ||
53 | + | ||
54 | +#ifndef __HP_PARAM__ | ||
55 | +#define __HP_PARAM__ | ||
56 | + typedef struct hp_param | ||
57 | + { | ||
58 | + int devId; //ָ指定显卡id | ||
59 | + char* modelNames; //模型路径 | ||
60 | + // int engine; //指定运行引擎(ENGINE_MCAFFE2 / ENGINE_TENSORRT) | ||
61 | + // int max_batch; //指定trt最大batch数 | ||
62 | + // char* serialize_file; | ||
63 | + // char* auth_license; | ||
64 | + // hp_param() :mode(DEVICE_GPU), gpuid(0) {}; | ||
65 | + }hp_param; | ||
66 | +#endif | ||
67 | + | ||
68 | + /************************************************************************* | ||
69 | + * FUNCTION: hp_init | ||
70 | + * PURPOSE: 初始化 | ||
71 | + * PARAM: | ||
72 | + [out] handle - 句柄 | ||
73 | + [in] hp_param - 初始化参数 | ||
74 | + * RETURN: | ||
75 | + [out] int - 初始化是否成功(SUCCEEDED表示成功,FAILED表示失败) | ||
76 | + * NOTES: | ||
77 | + *************************************************************************/ | ||
78 | + HUMANPARSING_API int hp_init(void ** handle, hp_param param); | ||
79 | + | ||
80 | + /************************************************************************* | ||
81 | + * FUNCTION: hp_process | ||
82 | + * PURPOSE: 行人属性检测 | ||
83 | + * PARAM: | ||
84 | + [in] tools - 句柄 | ||
85 | + [in] img_data - 检测图像数据 | ||
86 | + [in] result - 检测结果 | ||
87 | + * RETURN: | ||
88 | + [out] int - 检测是否成功(SUCCEED表示成功,FAILED表示失败) | ||
89 | + * NOTES: | ||
90 | + *************************************************************************/ | ||
91 | + HUMANPARSING_API int hp_process(void * handle, sy_img img_data, hp_analysis_res * result); | ||
92 | + | ||
93 | + /************************************************************************* | ||
94 | + * FUNCTION: hp_batch | ||
95 | + * PURPOSE: 行人属性检测 batch | ||
96 | + * PARAM: | ||
97 | + [in] tools - 句柄 | ||
98 | + [in] img_data_array - 检测图像数据 | ||
99 | + [in] batch_size - 检测图像数目 | ||
100 | + [in] result - 检测结果 | ||
101 | + * RETURN: | ||
102 | + [out] int - 检测是否成功(SUCCEED表示成功,FAILED表示失败) | ||
103 | + * NOTES: | ||
104 | + *************************************************************************/ | ||
105 | + HUMANPARSING_API int hp_batch(void * handle, sy_img *img_data_array, int batch_size, hp_analysis_res * result); | ||
106 | + | ||
107 | + | ||
108 | + /************************************************************************* | ||
109 | + * FUNCTION: hp_release | ||
110 | + * PURPOSE: 资源释放 | ||
111 | + * PARAM: | ||
112 | + [in] handle - 处理句柄 | ||
113 | + * RETURN: NULL | ||
114 | + * NOTES: | ||
115 | + *************************************************************************/ | ||
116 | + HUMANPARSING_API void hp_release(void ** handle); | ||
117 | + | ||
118 | + /************************************************************************* | ||
119 | + * FUNCTION: vc_get_version | ||
120 | + * PURPOSE: | ||
121 | + * PARAM: NULL | ||
122 | + * RETURN: 版本号 | ||
123 | + * NOTES: | ||
124 | + *************************************************************************/ | ||
125 | + HUMANPARSING_API const char * hp_get_version(); | ||
126 | + | ||
127 | +#ifdef __cplusplus | ||
128 | +}; | ||
129 | +#endif | ||
130 | +#endif |
algorithm/hp2/hp/libhp.so
0 → 100644
No preview for this file type
algorithm/hp2/hp/models/hp220908_310p.om
0 → 100644
No preview for this file type
algorithm/hp2/hp_test/Makefile
0 → 100644
1 | +CC = gcc | ||
2 | +XX = c++ | ||
3 | + | ||
4 | +TARGET = start | ||
5 | + | ||
6 | +PROJ_ALL_PATH = $(PWD)/../.. | ||
7 | +CUR_PROJ_PATH = $(PWD) | ||
8 | +OPENCV_PATH = $(PROJ_ALL_PATH)/third_party/opencv_4_1 | ||
9 | +ACL_PATH = $(ASCEND_AICPU_PATH)/acllib | ||
10 | + | ||
11 | +INCLUDES = -I$(PROJ_ALL_PATH)/common \ | ||
12 | + -I$(ACL_PATH)/include \ | ||
13 | + -I$(PROJ_ALL_PATH)/common/dvpp \ | ||
14 | + -I$(CUR_PROJ_PATH)/../hp \ | ||
15 | + -I$(OPENCV_PATH)/include \ | ||
16 | + -I$(OPENCV_PATH)/include/opencv2 \ | ||
17 | + | ||
18 | +CFLAGS = -O2 -std=c++11 $(INCLUDES) -DENABLE_DVPP_INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0 | ||
19 | + | ||
20 | +local_shared_libs_dirs := \ | ||
21 | + $(ACL_PATH)/lib64 \ | ||
22 | + $(OPENCV_PATH)/lib \ | ||
23 | + $(CUR_PROJ_PATH)/../hp \ | ||
24 | + | ||
25 | +local_shared_libs := \ | ||
26 | + ascendcl \ | ||
27 | + acl_dvpp \ | ||
28 | + opencv_world \ | ||
29 | + hp \ | ||
30 | + | ||
31 | +SHARED_LIBRARIES := $(foreach shared_lib, $(local_shared_libs), -l$(shared_lib)) | ||
32 | +#SHARED_LIBRARIES_DIRS := $(foreach shared_lib_dir, $(local_shared_libs_dirs), -L$(shared_lib_dir) -Wl,-z,relro,-z,now,-z,noexecstack,-rpath-link,$(shared_lib_dir)) | ||
33 | +SHARED_LIBRARIES_DIRS := $(foreach shared_lib_dir, $(local_shared_libs_dirs), -L$(shared_lib_dir) -Wl,-z,relro,-z,now,-z,noexecstack,-rpath,$(shared_lib_dir)) | ||
34 | + | ||
35 | +SRCS := $(wildcard $(CUR_PROJ_PATH)/*.cpp) | ||
36 | +SRCS += $(wildcard $(PROJ_ALL_PATH)/common/dvpp/*.cpp) | ||
37 | + | ||
38 | +DIRS := $(notdir $(SRCS)) | ||
39 | +OBJS := $(patsubst %cpp, %o, $(DIRS)) | ||
40 | + | ||
41 | +all: $(TARGET) | ||
42 | + | ||
43 | +$(TARGET):$(OBJS) | ||
44 | + $(XX) $(CFLAGS) -o $@ $^ $(SHARED_LIBRARIES_DIRS) $(SHARED_LIBRARIES) | ||
45 | +%.o:$(CUR_PROJ_PATH)/%.cpp | ||
46 | + $(XX) $(CFLAGS) -c $< | ||
47 | +%.o:$(PROJ_ALL_PATH)/common/dvpp/%.cpp | ||
48 | + $(XX) $(CFLAGS) -c $< | ||
49 | + | ||
50 | +clean: | ||
51 | + @rm -f $(TARGET) | ||
52 | + @rm -f $(OBJS) |
algorithm/hp2/hp_test/test.cpp
0 → 100644
1 | +#include <iostream> | ||
2 | +#include <sstream> | ||
3 | +#include <fstream> | ||
4 | +#include "human_parsing.h" | ||
5 | +#include "opencv2/opencv.hpp" | ||
6 | +#include "opencv2/imgcodecs/legacy/constants_c.h" | ||
7 | +#include "opencv2/imgproc/types_c.h" | ||
8 | +#include "time.h" | ||
9 | +#include "sys/time.h" | ||
10 | +#include "sy_errorinfo.h" | ||
11 | +#include "utils.h" | ||
12 | +#include "dvpp_process.h" | ||
13 | + | ||
14 | +using namespace std; | ||
15 | +using namespace cv; | ||
16 | +#include <chrono> | ||
17 | +#include <dirent.h> | ||
18 | + | ||
19 | +double msecond() { | ||
20 | + struct timeval tv; | ||
21 | + gettimeofday(&tv, 0); | ||
22 | + return (tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0); | ||
23 | +} | ||
24 | + | ||
25 | + | ||
26 | +void getAllNm(std::string pthNm, std::vector<std::string>& fileList) | ||
27 | +{ | ||
28 | + DIR *dir; | ||
29 | + struct dirent *ptr; | ||
30 | + dir = opendir(pthNm.c_str()); ///open the dir | ||
31 | + int filenum = 0; | ||
32 | + while((ptr = readdir(dir)) != NULL) ///read the list of this dir | ||
33 | + { | ||
34 | + // char* to string | ||
35 | + std::string curNm = ptr->d_name; | ||
36 | + if(curNm != "." && curNm != "..") | ||
37 | + { | ||
38 | + filenum++; | ||
39 | + fileList.push_back(curNm); | ||
40 | + //printf("file %d name: %s\n", filenum, curNm.c_str()); | ||
41 | + } | ||
42 | + } | ||
43 | + closedir(dir); | ||
44 | +} | ||
45 | + | ||
46 | +int main() { | ||
47 | + cout << hp_get_version() << endl; | ||
48 | + const char* img_file_path = "../../../data/hp/"; | ||
49 | + string saveimagepath= "../../../data/result/"; | ||
50 | + | ||
51 | + hp_param param; | ||
52 | + param.modelNames = "../hp/models/hp220908_310p.om"; | ||
53 | + param.devId = 0; | ||
54 | + | ||
55 | + void* handle = nullptr; | ||
56 | + cout << "init start " << endl; | ||
57 | + ACL_CALL(aclInit(nullptr), ACL_SUCCESS, SY_FAILED); | ||
58 | + ACL_CALL(aclrtSetDevice(param.devId), ACL_SUCCESS, SY_FAILED); | ||
59 | + aclrtContext ctx; | ||
60 | + ACL_CALL(aclrtCreateContext(&ctx, param.devId), ACL_SUCCESS, SY_FAILED); | ||
61 | + aclrtStream stream = nullptr; | ||
62 | + ACL_CALL(aclrtCreateStream(&stream), ACL_SUCCESS, SY_FAILED); | ||
63 | + DvppProcess* dvpp = new DvppProcess(); | ||
64 | + dvpp->InitResource(stream); | ||
65 | + int ret = hp_init(&handle, param); | ||
66 | + if (ret == 0) { | ||
67 | + cout << "init success " << endl; | ||
68 | + | ||
69 | + std::vector<std::string> fileList; | ||
70 | + | ||
71 | + getAllNm(img_file_path,fileList); | ||
72 | + if (fileList.empty()) throw std::logic_error("No suitable images were found"); | ||
73 | + | ||
74 | + for (auto & file : fileList) { | ||
75 | + string filename = img_file_path + file; | ||
76 | + cout << "img path: " << filename << endl; | ||
77 | + | ||
78 | + const int batchsize = 1; | ||
79 | + | ||
80 | + Mat cvImg = imread(filename.c_str()); | ||
81 | + sy_img imgs[batchsize]; | ||
82 | + | ||
83 | + ImageData src[batchsize], dvpp_data[batchsize]; | ||
84 | + for (int b = 0; b < batchsize; b++) { | ||
85 | + Utils::ReadImageFile(src[b], filename); //将二进制图像读入内存,并读取宽高信息 | ||
86 | + ACL_CALL(dvpp->CvtJpegToYuv420sp(dvpp_data[b], src[b]), SY_SUCCESS, SY_FAILED); //解码 | ||
87 | + imgs[b].w_ = dvpp_data[b].width; | ||
88 | + imgs[b].h_ = dvpp_data[b].height; | ||
89 | + imgs[b].data_ = dvpp_data[b].data.get(); | ||
90 | + } | ||
91 | + | ||
92 | + hp_analysis_res * results = new hp_analysis_res[batchsize]; | ||
93 | + int ret = hp_batch(handle, imgs, batchsize, results); | ||
94 | + if (SY_SUCCESS != ret) { | ||
95 | + printf("HumanCarParse process failed!"); | ||
96 | + return SY_FAILED; | ||
97 | + } | ||
98 | + | ||
99 | + for(int batchIdx = 0;batchIdx<batchsize;batchIdx++) { | ||
100 | + for (int i = 0; i < HP_ATTRI_INDEX_SIZE; i++) { | ||
101 | + printf("hp index:%d,confidence:%f\n",results[batchIdx].res_objs[i].res_index,results[batchIdx].res_objs[i].res_prob); | ||
102 | + } | ||
103 | + } | ||
104 | + | ||
105 | + if (results) { | ||
106 | + delete[] results; | ||
107 | + results = NULL; | ||
108 | + } | ||
109 | + | ||
110 | + } | ||
111 | + } | ||
112 | + | ||
113 | + hp_release(&handle); | ||
114 | + aclrtDestroyContext(ctx); | ||
115 | + aclrtResetDevice(param.devId); | ||
116 | + aclFinalize(); | ||
117 | + | ||
118 | + return 0; | ||
119 | +} | ||
120 | + |
bin/libhcp.so
No preview for this file type
bin/libhp.so
0 → 100644
No preview for this file type
bin/models/hcp/hcp211008_310p.om
0 → 100644
No preview for this file type
bin/models/hp/hp220908_310p.om
0 → 100644
No preview for this file type
build/src/Makefile
@@ -26,9 +26,12 @@ INCLUDES = -I$(PROJ_ALL_PATH)/src/common \ | @@ -26,9 +26,12 @@ INCLUDES = -I$(PROJ_ALL_PATH)/src/common \ | ||
26 | -I$(OPENCV_PATH)/include/opencv2 \ | 26 | -I$(OPENCV_PATH)/include/opencv2 \ |
27 | -I$(ACL_PATH)/include \ | 27 | -I$(ACL_PATH)/include \ |
28 | -I$(SPDLOG_ROOT)/include \ | 28 | -I$(SPDLOG_ROOT)/include \ |
29 | + -I$(CUR_PROJ_PATH)/ai_engine_module \ | ||
29 | -I$(ALGORITHM_PATH)/vehicle_analysis \ | 30 | -I$(ALGORITHM_PATH)/vehicle_analysis \ |
30 | -I$(ALGORITHM_PATH)/vid_clothes2/vid_clothes \ | 31 | -I$(ALGORITHM_PATH)/vid_clothes2/vid_clothes \ |
31 | - -I$(CUR_PROJ_PATH)/ai_engine_module \ | 32 | + -I$(ALGORITHM_PATH)/hp2/hp \ |
33 | + -I$(ALGORITHM_PATH)/hcp2/hcp \ | ||
34 | + | ||
32 | 35 | ||
33 | # CXXFLAGS = -O0 -std=c++11 $(INCLUDES) -DENABLE_DVPP_INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0 | 36 | # CXXFLAGS = -O0 -std=c++11 $(INCLUDES) -DENABLE_DVPP_INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0 |
34 | # CXXFLAGS= -g -O0 -fPIC $(INCLUDES) -lpthread -lrt -lz -fexceptions -std=c++11 -DENABLE_DVPP_INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0 -fvisibility=hidden -Wall -Wno-deprecated -Wdeprecated-declarations -Wl,-Bsymbolic -ldl | 37 | # CXXFLAGS= -g -O0 -fPIC $(INCLUDES) -lpthread -lrt -lz -fexceptions -std=c++11 -DENABLE_DVPP_INTERFACE -D_GLIBCXX_USE_CXX11_ABI=0 -fvisibility=hidden -Wall -Wno-deprecated -Wdeprecated-declarations -Wl,-Bsymbolic -ldl |
@@ -46,6 +49,9 @@ local_shared_libs := \ | @@ -46,6 +49,9 @@ local_shared_libs := \ | ||
46 | spdlog \ | 49 | spdlog \ |
47 | vehicle_analysis \ | 50 | vehicle_analysis \ |
48 | vid_clothes \ | 51 | vid_clothes \ |
52 | + hp \ | ||
53 | + hcp \ | ||
54 | + | ||
49 | 55 | ||
50 | SHARED_LIBRARIES := $(foreach shared_lib, $(local_shared_libs), -l$(shared_lib)) | 56 | SHARED_LIBRARIES := $(foreach shared_lib, $(local_shared_libs), -l$(shared_lib)) |
51 | #SHARED_LIBRARIES_DIRS := $(foreach shared_lib_dir, $(local_shared_libs_dirs), -L$(shared_lib_dir) -Wl,-z,relro,-z,now,-z,noexecstack,-rpath-link,$(shared_lib_dir)) | 57 | #SHARED_LIBRARIES_DIRS := $(foreach shared_lib_dir, $(local_shared_libs_dirs), -L$(shared_lib_dir) -Wl,-z,relro,-z,now,-z,noexecstack,-rpath-link,$(shared_lib_dir)) |
src/PicAnalysis.cpp
@@ -9,12 +9,15 @@ PicAnalysis::PicAnalysis(/* args */) | @@ -9,12 +9,15 @@ PicAnalysis::PicAnalysis(/* args */) | ||
9 | 9 | ||
10 | PicAnalysis::~PicAnalysis() | 10 | PicAnalysis::~PicAnalysis() |
11 | { | 11 | { |
12 | + release(); | ||
12 | aclFinalize(); | 13 | aclFinalize(); |
13 | } | 14 | } |
14 | 15 | ||
15 | int PicAnalysis::init(int dev_id) { | 16 | int PicAnalysis::init(int dev_id) { |
16 | 17 | ||
17 | - int ret = m_vehicle_analysis.init(dev_id, 16); | 18 | + int ret = SY_FAILED; |
19 | + | ||
20 | + ret = m_vehicle_analysis.init(dev_id, 16); | ||
18 | if(0 != ret){ | 21 | if(0 != ret){ |
19 | return -1; | 22 | return -1; |
20 | } | 23 | } |
@@ -32,8 +35,18 @@ int PicAnalysis::init(int dev_id) { | @@ -32,8 +35,18 @@ int PicAnalysis::init(int dev_id) { | ||
32 | return -1; | 35 | return -1; |
33 | } | 36 | } |
34 | 37 | ||
35 | - ACL_CALL(aclrtCreateContext(&m_ctx, 0), ACL_ERROR_NONE, SY_FAILED); | ||
36 | - ACL_CALL(aclrtSetCurrentContext(m_ctx), ACL_ERROR_NONE, SY_FAILED); | 38 | + ret = m_human_algorithm.init(dev_id); |
39 | + if(0 != ret){ | ||
40 | + return -1; | ||
41 | + } | ||
42 | + | ||
43 | + ret = m_human_car_algorithm.init(dev_id); | ||
44 | + if(0 != ret){ | ||
45 | + return -1; | ||
46 | + } | ||
47 | + | ||
48 | + ACL_CALL(aclrtCreateContext(&m_ctx, 0), ACL_SUCCESS, SY_FAILED); | ||
49 | + ACL_CALL(aclrtSetCurrentContext(m_ctx), ACL_SUCCESS, SY_FAILED); | ||
37 | ACL_CALL(aclrtCreateStream(&stream), ACL_SUCCESS, SY_FAILED); | 50 | ACL_CALL(aclrtCreateStream(&stream), ACL_SUCCESS, SY_FAILED); |
38 | m_dvpp = new DvppProcess(); | 51 | m_dvpp = new DvppProcess(); |
39 | m_dvpp->InitResource(stream); | 52 | m_dvpp->InitResource(stream); |
@@ -43,7 +56,7 @@ int PicAnalysis::init(int dev_id) { | @@ -43,7 +56,7 @@ int PicAnalysis::init(int dev_id) { | ||
43 | 56 | ||
44 | int PicAnalysis::analysis_sync(vector<string> vec_file_path){ | 57 | int PicAnalysis::analysis_sync(vector<string> vec_file_path){ |
45 | 58 | ||
46 | - ACL_CALL(aclrtSetCurrentContext(m_ctx), ACL_ERROR_NONE, SY_FAILED); | 59 | + ACL_CALL(aclrtSetCurrentContext(m_ctx), ACL_SUCCESS, SY_FAILED); |
47 | 60 | ||
48 | const int batch_size = vec_file_path.size(); | 61 | const int batch_size = vec_file_path.size(); |
49 | 62 | ||
@@ -87,13 +100,19 @@ int PicAnalysis::analysis_sync(vector<string> vec_file_path){ | @@ -87,13 +100,19 @@ int PicAnalysis::analysis_sync(vector<string> vec_file_path){ | ||
87 | } | 100 | } |
88 | 101 | ||
89 | m_clothes_algorithm.detect(vec_img); | 102 | m_clothes_algorithm.detect(vec_img); |
103 | + | ||
104 | + m_human_algorithm.detect(vec_img); | ||
105 | + | ||
106 | + m_human_car_algorithm.detect(vec_img); | ||
90 | 107 | ||
91 | - | 108 | + LOG_INFO("analysis_sync finished!"); |
109 | + | ||
92 | return 0; | 110 | return 0; |
93 | } | 111 | } |
94 | 112 | ||
95 | int PicAnalysis::release() { | 113 | int PicAnalysis::release() { |
96 | - ACL_CALL(aclrtSetCurrentContext(m_ctx), ACL_ERROR_NONE, SY_FAILED); | 114 | + |
115 | + ACL_CALL(aclrtSetCurrentContext(m_ctx), ACL_SUCCESS, SY_FAILED); | ||
97 | 116 | ||
98 | delete m_dvpp; | 117 | delete m_dvpp; |
99 | m_dvpp = nullptr; | 118 | m_dvpp = nullptr; |
src/PicAnalysis.h
@@ -2,6 +2,8 @@ | @@ -2,6 +2,8 @@ | ||
2 | #include "./ai_engine_module/VehicleAnalysis.h" | 2 | #include "./ai_engine_module/VehicleAnalysis.h" |
3 | #include "./ai_engine_module/VehicleHeadTail.h" | 3 | #include "./ai_engine_module/VehicleHeadTail.h" |
4 | #include "./ai_engine_module/VidClothes.h" | 4 | #include "./ai_engine_module/VidClothes.h" |
5 | +#include "./ai_engine_module/HumanAnalysis.h" | ||
6 | +#include "./ai_engine_module/HumanCarAnalysis.h" | ||
5 | 7 | ||
6 | using namespace std; | 8 | using namespace std; |
7 | 9 | ||
@@ -27,6 +29,8 @@ private: | @@ -27,6 +29,8 @@ private: | ||
27 | VehicleAnalysis m_vehicle_analysis; | 29 | VehicleAnalysis m_vehicle_analysis; |
28 | VehicleHeadTail m_head_tail_algorithm; | 30 | VehicleHeadTail m_head_tail_algorithm; |
29 | VidClothes m_clothes_algorithm; | 31 | VidClothes m_clothes_algorithm; |
32 | + HumanAnalysis m_human_algorithm; | ||
33 | + HumanCarAnalysis m_human_car_algorithm; | ||
30 | }; | 34 | }; |
31 | 35 | ||
32 | 36 |
src/ai_engine_module/HumanAnalysis.cpp
0 → 100644
1 | +#include "HumanAnalysis.h" | ||
2 | + | ||
3 | +HumanAnalysis::HumanAnalysis(/* args */) | ||
4 | +{ | ||
5 | +} | ||
6 | + | ||
7 | +HumanAnalysis::~HumanAnalysis() | ||
8 | +{ | ||
9 | + release(); | ||
10 | +} | ||
11 | + | ||
12 | +int HumanAnalysis::init(int devId){ | ||
13 | + ACL_CALL(aclrtCreateContext(&ctx, devId), SY_SUCCESS, SY_FAILED); | ||
14 | + ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED); | ||
15 | + | ||
16 | + hp_param param; | ||
17 | + param.modelNames = "./models/hp/hp220908_310p.om"; | ||
18 | + param.devId = devId; | ||
19 | + | ||
20 | + cout << "hp_init start " << endl; | ||
21 | + int ret = hp_init(&m_handle, param); | ||
22 | + if (ret != 0) { | ||
23 | + return -1; | ||
24 | + } | ||
25 | + | ||
26 | + cout << "hp_init success " << endl; | ||
27 | + | ||
28 | + return SY_SUCCESS; | ||
29 | +} | ||
30 | + | ||
31 | +int HumanAnalysis::detect(vector<sy_img> vec_img){ | ||
32 | + | ||
33 | + ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED); | ||
34 | + | ||
35 | + const int batchsize = vec_img.size(); | ||
36 | + hp_analysis_res * results = new hp_analysis_res[batchsize]; | ||
37 | + | ||
38 | + int ret = SY_FAILED; | ||
39 | + | ||
40 | + do | ||
41 | + { | ||
42 | + ret = hp_batch(m_handle, vec_img.data(), batchsize, results); | ||
43 | + if (SY_SUCCESS != ret) { | ||
44 | + printf("vidclothesClassification process failed!"); | ||
45 | + break; | ||
46 | + } | ||
47 | + | ||
48 | + for(int batchIdx = 0;batchIdx<batchsize;batchIdx++) { | ||
49 | + for (int i = 0; i < HP_ATTRI_INDEX_SIZE; i++) { | ||
50 | + printf("hp index:%d,confidence:%f\n",results[batchIdx].res_objs[i].res_index,results[batchIdx].res_objs[i].res_prob); | ||
51 | + } | ||
52 | + } | ||
53 | + } while (0); | ||
54 | + | ||
55 | + if (results) { | ||
56 | + delete [] results; | ||
57 | + } | ||
58 | + | ||
59 | + return ret; | ||
60 | +} | ||
61 | + | ||
62 | +int HumanAnalysis::release() { | ||
63 | + | ||
64 | + ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED); | ||
65 | + | ||
66 | + if (m_handle) { | ||
67 | + hp_release(&m_handle); | ||
68 | + } | ||
69 | + | ||
70 | + if(ctx){ | ||
71 | + aclrtDestroyContext(ctx); | ||
72 | + ctx = nullptr; | ||
73 | + } | ||
74 | + | ||
75 | + return 0; | ||
76 | +} | ||
0 | \ No newline at end of file | 77 | \ No newline at end of file |
src/ai_engine_module/HumanAnalysis.h
0 → 100644
1 | +#include "include.h" | ||
2 | +#include "human_parsing.h" | ||
3 | + | ||
4 | +class HumanAnalysis | ||
5 | +{ | ||
6 | +public: | ||
7 | + HumanAnalysis(/* args */); | ||
8 | + ~HumanAnalysis(); | ||
9 | + | ||
10 | + int init(int devId); | ||
11 | + | ||
12 | + int detect(vector<sy_img> vec_img); | ||
13 | + | ||
14 | +private: | ||
15 | + int release(); | ||
16 | + | ||
17 | +private: | ||
18 | + void* m_handle{nullptr}; | ||
19 | + aclrtContext ctx{nullptr}; | ||
20 | +}; | ||
21 | + |
src/ai_engine_module/HumanCarAnalysis.cpp
0 → 100644
1 | +#include "HumanCarAnalysis.h" | ||
2 | + | ||
3 | +HumanCarAnalysis::HumanCarAnalysis(/* args */) | ||
4 | +{ | ||
5 | +} | ||
6 | + | ||
7 | +HumanCarAnalysis::~HumanCarAnalysis() | ||
8 | +{ | ||
9 | + release(); | ||
10 | +} | ||
11 | + | ||
12 | +int HumanCarAnalysis::init(int devId){ | ||
13 | + ACL_CALL(aclrtCreateContext(&ctx, devId), SY_SUCCESS, SY_FAILED); | ||
14 | + ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED); | ||
15 | + | ||
16 | + hcp_param param; | ||
17 | + param.modelNames = "./models/hcp/hcp211008_310p.om"; | ||
18 | + param.devId = devId; | ||
19 | + | ||
20 | + cout << "hcp_init start " << endl; | ||
21 | + int ret = hcp_init(&m_handle, param); | ||
22 | + if (ret != 0) { | ||
23 | + return -1; | ||
24 | + } | ||
25 | + | ||
26 | + cout << "hcp_init success " << endl; | ||
27 | + | ||
28 | + return SY_SUCCESS; | ||
29 | +} | ||
30 | + | ||
31 | +int HumanCarAnalysis::detect(vector<sy_img> vec_img){ | ||
32 | + | ||
33 | + ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED); | ||
34 | + | ||
35 | + const int batchsize = vec_img.size(); | ||
36 | + hcp_analysis_result * results = new hcp_analysis_result[batchsize]; | ||
37 | + | ||
38 | + int ret = SY_FAILED; | ||
39 | + | ||
40 | + do | ||
41 | + { | ||
42 | + ret = hcp_batch(m_handle, vec_img.data(), batchsize, results); | ||
43 | + if (SY_SUCCESS != ret) { | ||
44 | + printf("vidclothesClassification process failed!"); | ||
45 | + break; | ||
46 | + } | ||
47 | + | ||
48 | + for(int batchIdx = 0;batchIdx<batchsize;batchIdx++){ | ||
49 | + for (int i = 0; i < HCP_ATTRI_INDEX_SIZE; i++) { | ||
50 | + printf("hcp index:%d,confidence:%f\n",results[batchIdx].res_objs[i].res_index,results[batchIdx].res_objs[i].res_prob); | ||
51 | + } | ||
52 | + } | ||
53 | + } while (0); | ||
54 | + | ||
55 | + if (results) { | ||
56 | + delete [] results; | ||
57 | + } | ||
58 | + | ||
59 | + return ret; | ||
60 | +} | ||
61 | + | ||
62 | +int HumanCarAnalysis::release() { | ||
63 | + | ||
64 | + ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED); | ||
65 | + | ||
66 | + if (m_handle) { | ||
67 | + hcp_release(&m_handle); | ||
68 | + } | ||
69 | + | ||
70 | + if(ctx){ | ||
71 | + aclrtDestroyContext(ctx); | ||
72 | + ctx = nullptr; | ||
73 | + } | ||
74 | + | ||
75 | + return SY_SUCCESS; | ||
76 | +} | ||
0 | \ No newline at end of file | 77 | \ No newline at end of file |
src/ai_engine_module/HumanCarAnalysis.h
0 → 100644
1 | +#include "include.h" | ||
2 | +#include "human_car_parsing.h" | ||
3 | + | ||
4 | +class HumanCarAnalysis | ||
5 | +{ | ||
6 | +public: | ||
7 | + HumanCarAnalysis(/* args */); | ||
8 | + ~HumanCarAnalysis(); | ||
9 | + | ||
10 | + int init(int devId); | ||
11 | + | ||
12 | + int detect(vector<sy_img> vec_img); | ||
13 | + | ||
14 | +private: | ||
15 | + int release(); | ||
16 | + | ||
17 | +private: | ||
18 | + void* m_handle{nullptr}; | ||
19 | + aclrtContext ctx{nullptr}; | ||
20 | +}; | ||
21 | + |
src/ai_engine_module/VidClothes.cpp
@@ -15,9 +15,9 @@ int VidClothes::init(int devId){ | @@ -15,9 +15,9 @@ int VidClothes::init(int devId){ | ||
15 | vidclothes_param param; | 15 | vidclothes_param param; |
16 | param.modelNames = "./models/vid_clothes/vidClothes0325_310P.om"; | 16 | param.modelNames = "./models/vid_clothes/vidClothes0325_310P.om"; |
17 | param.thresld = 0.0; | 17 | param.thresld = 0.0; |
18 | - param.devId = 0; | 18 | + param.devId = devId; |
19 | 19 | ||
20 | - cout << "vidclothes_init start " << endl; | 20 | + cout << "vidclothes_init start " << endl; |
21 | int ret = vidclothes_init(&m_handle, param); | 21 | int ret = vidclothes_init(&m_handle, param); |
22 | if (ret != 0) { | 22 | if (ret != 0) { |
23 | return -1; | 23 | return -1; |
@@ -57,13 +57,18 @@ int VidClothes::detect(vector<sy_img> vec_img){ | @@ -57,13 +57,18 @@ int VidClothes::detect(vector<sy_img> vec_img){ | ||
57 | return ret; | 57 | return ret; |
58 | } | 58 | } |
59 | 59 | ||
60 | -void VidClothes::release() { | ||
61 | - if(ctx){ | ||
62 | - aclrtSetCurrentContext(ctx); | ||
63 | - aclrtDestroyContext(ctx); | ||
64 | - } | 60 | +int VidClothes::release() { |
61 | + | ||
62 | + ACL_CALL(aclrtSetCurrentContext(ctx), SY_SUCCESS, SY_FAILED); | ||
65 | 63 | ||
66 | if (m_handle) { | 64 | if (m_handle) { |
67 | vidclothes_release(&m_handle); | 65 | vidclothes_release(&m_handle); |
68 | } | 66 | } |
67 | + | ||
68 | + if(ctx){ | ||
69 | + aclrtDestroyContext(ctx); | ||
70 | + ctx = nullptr; | ||
71 | + } | ||
72 | + | ||
73 | + return SY_SUCCESS; | ||
69 | } | 74 | } |
70 | \ No newline at end of file | 75 | \ No newline at end of file |
src/ai_engine_module/VidClothes.h
@@ -3,8 +3,6 @@ | @@ -3,8 +3,6 @@ | ||
3 | 3 | ||
4 | class VidClothes | 4 | class VidClothes |
5 | { | 5 | { |
6 | -private: | ||
7 | - /* data */ | ||
8 | public: | 6 | public: |
9 | VidClothes(/* args */); | 7 | VidClothes(/* args */); |
10 | ~VidClothes(); | 8 | ~VidClothes(); |
@@ -14,7 +12,7 @@ public: | @@ -14,7 +12,7 @@ public: | ||
14 | int detect(vector<sy_img> vec_img); | 12 | int detect(vector<sy_img> vec_img); |
15 | 13 | ||
16 | private: | 14 | private: |
17 | - void release(); | 15 | + int release(); |
18 | 16 | ||
19 | private: | 17 | private: |
20 | void* m_handle{nullptr}; | 18 | void* m_handle{nullptr}; |
src/main.cpp
@@ -9,12 +9,12 @@ int main() { | @@ -9,12 +9,12 @@ int main() { | ||
9 | vector<string> vec_path; | 9 | vector<string> vec_path; |
10 | for (size_t i = 0; i < 10; i++) | 10 | for (size_t i = 0; i < 10; i++) |
11 | { | 11 | { |
12 | - vec_path.push_back("./test_head_tail.jpg"); | 12 | + vec_path.push_back("./test_hv.jpg"); |
13 | } | 13 | } |
14 | 14 | ||
15 | pic_analysis.analysis_sync(vec_path); | 15 | pic_analysis.analysis_sync(vec_path); |
16 | 16 | ||
17 | - pic_analysis.release(); | 17 | + while (getchar() != 'q'); |
18 | 18 | ||
19 | return 0; | 19 | return 0; |
20 | } | 20 | } |
21 | \ No newline at end of file | 21 | \ No newline at end of file |