Commit ba6761f1fc1478f699b660bade0ff800c7007fb9
1 parent
e3062370
补充日志
Showing
5 changed files
with
77 additions
and
47 deletions
jni/VehicleNativeInterface.cpp
@@ -5,6 +5,7 @@ | @@ -5,6 +5,7 @@ | ||
5 | #include "map" | 5 | #include "map" |
6 | #include <string> | 6 | #include <string> |
7 | #include <string.h> | 7 | #include <string.h> |
8 | +#include <chrono> | ||
8 | 9 | ||
9 | #include "../src/village_pic_interface.h" | 10 | #include "../src/village_pic_interface.h" |
10 | 11 | ||
@@ -13,7 +14,7 @@ | @@ -13,7 +14,7 @@ | ||
13 | #include <opencv2/opencv.hpp> | 14 | #include <opencv2/opencv.hpp> |
14 | #include "base64.h" | 15 | #include "base64.h" |
15 | 16 | ||
16 | -#include "curl/curl.h" | 17 | +// #include "curl/curl.h" |
17 | 18 | ||
18 | //dvpp���� | 19 | //dvpp���� |
19 | #include "dvpp_process.h" | 20 | #include "dvpp_process.h" |
@@ -21,9 +22,9 @@ | @@ -21,9 +22,9 @@ | ||
21 | //#include "img_codec.h" | 22 | //#include "img_codec.h" |
22 | 23 | ||
23 | double msecond() { | 24 | double msecond() { |
24 | - struct timeval tv; | ||
25 | - gettimeofday(&tv, 0); | ||
26 | - return (tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0); | 25 | + chrono::time_point<chrono::system_clock, chrono::milliseconds> tpMicro |
26 | + = chrono::time_point_cast<chrono::milliseconds>(chrono::system_clock::now()); | ||
27 | + return tpMicro.time_since_epoch().count(); | ||
27 | } | 28 | } |
28 | 29 | ||
29 | 30 | ||
@@ -89,9 +90,9 @@ using namespace std; | @@ -89,9 +90,9 @@ using namespace std; | ||
89 | * �������� | 90 | * �������� |
90 | * */ | 91 | * */ |
91 | sy_format getImgByteType(int type); | 92 | sy_format getImgByteType(int type); |
92 | -size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata); | ||
93 | -//function to retrieve the image as cv::Mat data type | ||
94 | -cv::Mat curlImg(const char *img_url, int timeout); | 93 | +// size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata); |
94 | +// //function to retrieve the image as cv::Mat data type | ||
95 | +// cv::Mat curlImg(const char *img_url, int timeout); | ||
95 | 96 | ||
96 | /** | 97 | /** |
97 | * ȫ�ֱ��� | 98 | * ȫ�ֱ��� |
@@ -154,7 +155,12 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI | @@ -154,7 +155,12 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI | ||
154 | param.log_days = aiEngineParam_logDays; | 155 | param.log_days = aiEngineParam_logDays; |
155 | param.log_mem = aiEngineParam_logMem; | 156 | param.log_mem = aiEngineParam_logMem; |
156 | 157 | ||
157 | - printf("jni dev_id:%d sdk_path:%s_log_level:%d\n", param.dev_id, param.sdk_path.c_str(), param.log_level); | 158 | + printf("jni dev_id:%d \n", param.dev_id); |
159 | + printf("jni sdk_path:%s_\n", param.sdk_path.c_str()); | ||
160 | + printf("jni log_level:%d\n", param.log_level); | ||
161 | + printf("jni log_path:%s\n", param.log_path.c_str()); | ||
162 | + printf("jni log_days:%d\n", param.log_days); | ||
163 | + printf("jni log_mem:%ld\n", param.log_mem); | ||
158 | 164 | ||
159 | int ret = village_pic_init(&vaHandle, param); | 165 | int ret = village_pic_init(&vaHandle, param); |
160 | if (ret != SUCCESS) { | 166 | if (ret != SUCCESS) { |
@@ -310,7 +316,7 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI | @@ -310,7 +316,7 @@ JNIEXPORT jint JNICALL Java_com_objecteye_nativeinterface_vehicle_VehicleNativeI | ||
310 | printf("jni info:village_pic_analysis failed."); | 316 | printf("jni info:village_pic_analysis failed."); |
311 | return -1; | 317 | return -1; |
312 | } | 318 | } |
313 | - //cout << "VAJNI_TEST va_1batch -> end ...." << endl; | 319 | + cout << "result size:" << vec_result.size() << endl; |
314 | 320 | ||
315 | t3 = msecond(); | 321 | t3 = msecond(); |
316 | //printf("va jni info:process time: %.2f\n", (t3 - t2)); | 322 | //printf("va jni info:process time: %.2f\n", (t3 - t2)); |
@@ -678,29 +684,29 @@ sy_format getImgByteType(int type) | @@ -678,29 +684,29 @@ sy_format getImgByteType(int type) | ||
678 | return syFormat; | 684 | return syFormat; |
679 | } | 685 | } |
680 | 686 | ||
681 | -//curl writefunction to be passed as a parameter | ||
682 | -// we can't ever expect to get the whole image in one piece, | ||
683 | -// every router / hub is entitled to fragment it into parts | ||
684 | -// (like 1-8k at a time), | ||
685 | -// so insert the part at the end of our stream. | ||
686 | -size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) | ||
687 | -{ | ||
688 | - vector<uchar> *stream = (vector<uchar>*)userdata; | ||
689 | - size_t count = size * nmemb; | ||
690 | - stream->insert(stream->end(), ptr, ptr + count); | ||
691 | - return count; | ||
692 | -} | ||
693 | - | ||
694 | -//function to retrieve the image as cv::Mat data type | ||
695 | -cv::Mat curlImg(const char *img_url, int timeout = 10) | ||
696 | -{ | ||
697 | - vector<uchar> stream; | ||
698 | - CURL *curl = curl_easy_init(); | ||
699 | - curl_easy_setopt(curl, CURLOPT_URL, img_url); //the img url | ||
700 | - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); // pass the writefunction | ||
701 | - curl_easy_setopt(curl, CURLOPT_WRITEDATA, &stream); // pass the stream ptr to the writefunction | ||
702 | - curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout); // timeout if curl_easy hangs, | ||
703 | - CURLcode res = curl_easy_perform(curl); // start curl | ||
704 | - curl_easy_cleanup(curl); // cleanup | ||
705 | - return cv::imdecode(stream, -1); // 'keep-as-is' | ||
706 | -} | 687 | +// //curl writefunction to be passed as a parameter |
688 | +// // we can't ever expect to get the whole image in one piece, | ||
689 | +// // every router / hub is entitled to fragment it into parts | ||
690 | +// // (like 1-8k at a time), | ||
691 | +// // so insert the part at the end of our stream. | ||
692 | +// size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) | ||
693 | +// { | ||
694 | +// vector<uchar> *stream = (vector<uchar>*)userdata; | ||
695 | +// size_t count = size * nmemb; | ||
696 | +// stream->insert(stream->end(), ptr, ptr + count); | ||
697 | +// return count; | ||
698 | +// } | ||
699 | + | ||
700 | +// //function to retrieve the image as cv::Mat data type | ||
701 | +// cv::Mat curlImg(const char *img_url, int timeout = 10) | ||
702 | +// { | ||
703 | +// vector<uchar> stream; | ||
704 | +// CURL *curl = curl_easy_init(); | ||
705 | +// curl_easy_setopt(curl, CURLOPT_URL, img_url); //the img url | ||
706 | +// curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); // pass the writefunction | ||
707 | +// curl_easy_setopt(curl, CURLOPT_WRITEDATA, &stream); // pass the stream ptr to the writefunction | ||
708 | +// curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout); // timeout if curl_easy hangs, | ||
709 | +// CURLcode res = curl_easy_perform(curl); // start curl | ||
710 | +// curl_easy_cleanup(curl); // cleanup | ||
711 | +// return cv::imdecode(stream, -1); // 'keep-as-is' | ||
712 | +// } |
src/PicAnalysis.cpp
@@ -9,19 +9,23 @@ PicAnalysis::PicAnalysis(/* args */) | @@ -9,19 +9,23 @@ PicAnalysis::PicAnalysis(/* args */) | ||
9 | 9 | ||
10 | PicAnalysis::~PicAnalysis() | 10 | PicAnalysis::~PicAnalysis() |
11 | { | 11 | { |
12 | + LOG_INFO("~PicAnalysis()"); | ||
12 | release(); | 13 | release(); |
13 | aclFinalize(); | 14 | aclFinalize(); |
14 | } | 15 | } |
15 | 16 | ||
16 | int PicAnalysis::init(VillageParam param) { | 17 | int PicAnalysis::init(VillageParam param) { |
17 | 18 | ||
18 | - set_default_logger(LogLevel(param.log_level), "PicAnalysis", param.log_path.c_str(), param.log_mem, param.log_days); | 19 | + string log_path = param.log_path + "/main.log"; |
20 | + | ||
21 | + set_default_logger(LogLevel(param.log_level), "PicAnalysis", log_path.c_str(), param.log_mem, param.log_days); | ||
19 | 22 | ||
20 | // 输入参数 | 23 | // 输入参数 |
21 | LOG_INFO("dev_id: {}", param.dev_id); | 24 | LOG_INFO("dev_id: {}", param.dev_id); |
22 | LOG_INFO("sdk_path: {}", param.sdk_path); | 25 | LOG_INFO("sdk_path: {}", param.sdk_path); |
23 | LOG_INFO("log_level: {}", param.log_level); | 26 | LOG_INFO("log_level: {}", param.log_level); |
24 | LOG_INFO("log_days: {}", param.log_days); | 27 | LOG_INFO("log_days: {}", param.log_days); |
28 | + LOG_INFO("log_path: {}", log_path); | ||
25 | 29 | ||
26 | int dev_id = param.dev_id; | 30 | int dev_id = param.dev_id; |
27 | 31 | ||
@@ -180,13 +184,15 @@ vector<AnalysisResult> PicAnalysis::va_result2AnalysisResult(va_result* result, | @@ -180,13 +184,15 @@ vector<AnalysisResult> PicAnalysis::va_result2AnalysisResult(va_result* result, | ||
180 | 184 | ||
181 | vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){ | 185 | vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){ |
182 | 186 | ||
187 | + LOG_INFO("vec_img size:{}", vec_img.size()); | ||
188 | + | ||
183 | vector<AnalysisResult> vec_result; | 189 | vector<AnalysisResult> vec_result; |
184 | 190 | ||
185 | const int batch_size = vec_img.size(); | 191 | const int batch_size = vec_img.size(); |
186 | 192 | ||
187 | int ret = aclrtSetCurrentContext(m_ctx); | 193 | int ret = aclrtSetCurrentContext(m_ctx); |
188 | if (SY_SUCCESS != ret) { | 194 | if (SY_SUCCESS != ret) { |
189 | - printf("aclrtSetCurrentContext failed!"); | 195 | + LOG_INFO("aclrtSetCurrentContext failed!"); |
190 | return vec_result; | 196 | return vec_result; |
191 | } | 197 | } |
192 | 198 | ||
@@ -196,6 +202,8 @@ vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){ | @@ -196,6 +202,8 @@ vector<AnalysisResult> PicAnalysis::analysis_img(vector<sy_img> vec_img){ | ||
196 | m_vehicle_analysis.release_result(result, vec_img.size()); | 202 | m_vehicle_analysis.release_result(result, vec_img.size()); |
197 | } | 203 | } |
198 | 204 | ||
205 | + LOG_INFO("vec_result size:{}", vec_result.size()); | ||
206 | + | ||
199 | bool bConsistent = false; | 207 | bool bConsistent = false; |
200 | std::vector<RoadInfo> vec_road = m_road_seg_algorithm.detect(vec_img); | 208 | std::vector<RoadInfo> vec_road = m_road_seg_algorithm.detect(vec_img); |
201 | if (vec_road.size() == batch_size && vec_result.size() == batch_size) { | 209 | if (vec_road.size() == batch_size && vec_result.size() == batch_size) { |
src/ai_engine_module/RoadSegAnalysis.cpp
@@ -80,6 +80,23 @@ std::vector<RoadInfo> RoadSegAnalysis::detect(vector<sy_img> vec_img){ | @@ -80,6 +80,23 @@ std::vector<RoadInfo> RoadSegAnalysis::detect(vector<sy_img> vec_img){ | ||
80 | return vec_road; | 80 | return vec_road; |
81 | } | 81 | } |
82 | 82 | ||
83 | +// void test(){ | ||
84 | +// cv::Mat image(cv::Size(640, 360), CV_8UC3, cv::Scalar(0, 0, 0)); | ||
85 | + | ||
86 | +// for (int i = 0; i < poly_masks.size(); ++i) { | ||
87 | +// SegInfo seg_info; | ||
88 | +// seg_info.seg_type = region_classes[i]; | ||
89 | +// seg_info.vec_pt = poly_masks[i]; | ||
90 | + | ||
91 | +// int k = seg_info.seg_type; | ||
92 | +// const cv::Scalar color(seg_colors[k][0], seg_colors[k][1], seg_colors[k][2]); | ||
93 | +// polylines(image, seg_info.vec_pt, true, color, 3, cv::LINE_AA); | ||
94 | +// } | ||
95 | + | ||
96 | +// cv::imwrite("./road.jpg", image); | ||
97 | +// image.release(); | ||
98 | +// } | ||
99 | + | ||
83 | RoadInfo RoadSegAnalysis::parse_road(rs_result one_result, sy_img src) | 100 | RoadInfo RoadSegAnalysis::parse_road(rs_result one_result, sy_img src) |
84 | { | 101 | { |
85 | RoadInfo one_road; | 102 | RoadInfo one_road; |
@@ -123,7 +140,7 @@ std::vector<SegInfo> RoadSegAnalysis::parse_direct(rs_result one_result, sy_img | @@ -123,7 +140,7 @@ std::vector<SegInfo> RoadSegAnalysis::parse_direct(rs_result one_result, sy_img | ||
123 | cv::Mat seg_output = seg_post_process(large_resolution, one_result.direct_seg, combined, poly_masks, region_classes, lanes, cats, x_sort); //m_masks:mask前的结果 poly_masks后的结果 | 140 | cv::Mat seg_output = seg_post_process(large_resolution, one_result.direct_seg, combined, poly_masks, region_classes, lanes, cats, x_sort); //m_masks:mask前的结果 poly_masks后的结果 |
124 | 141 | ||
125 | 142 | ||
126 | - cv::Mat image(cv::Size(640, 360), CV_8UC3, cv::Scalar(0, 0, 0)); | 143 | + // cv::Mat image(cv::Size(640, 360), CV_8UC3, cv::Scalar(0, 0, 0)); |
127 | 144 | ||
128 | std::vector<SegInfo> vec_road; | 145 | std::vector<SegInfo> vec_road; |
129 | for (int i = 0; i < poly_masks.size(); ++i) { | 146 | for (int i = 0; i < poly_masks.size(); ++i) { |
@@ -131,16 +148,15 @@ std::vector<SegInfo> RoadSegAnalysis::parse_direct(rs_result one_result, sy_img | @@ -131,16 +148,15 @@ std::vector<SegInfo> RoadSegAnalysis::parse_direct(rs_result one_result, sy_img | ||
131 | seg_info.seg_type = region_classes[i]; | 148 | seg_info.seg_type = region_classes[i]; |
132 | seg_info.vec_pt = poly_masks[i]; | 149 | seg_info.vec_pt = poly_masks[i]; |
133 | 150 | ||
134 | - int k = seg_info.seg_type; | ||
135 | - const cv::Scalar color(seg_colors[k][0], seg_colors[k][1], seg_colors[k][2]); | ||
136 | - | ||
137 | - polylines(image, seg_info.vec_pt, true, color, 3, cv::LINE_AA); | ||
138 | - | ||
139 | vec_road.push_back(seg_info); | 151 | vec_road.push_back(seg_info); |
152 | + | ||
153 | + // int k = seg_info.seg_type; | ||
154 | + // const cv::Scalar color(seg_colors[k][0], seg_colors[k][1], seg_colors[k][2]); | ||
155 | + // polylines(image, seg_info.vec_pt, true, color, 3, cv::LINE_AA); | ||
140 | } | 156 | } |
141 | 157 | ||
142 | - cv::imwrite("./direct.jpg", image); | ||
143 | - image.release(); | 158 | + // cv::imwrite("./direct.jpg", image); |
159 | + // image.release(); | ||
144 | 160 | ||
145 | return vec_road; | 161 | return vec_road; |
146 | } | 162 | } |
src/demo/main.cpp
@@ -15,7 +15,7 @@ int main() { | @@ -15,7 +15,7 @@ int main() { | ||
15 | int ret = village_pic_init(&vaHandle, param); | 15 | int ret = village_pic_init(&vaHandle, param); |
16 | 16 | ||
17 | vector<string> vec_path; | 17 | vector<string> vec_path; |
18 | - size_t i = 1; | 18 | + size_t i = 3; |
19 | // for (i = 1; i < 8; i++) | 19 | // for (i = 1; i < 8; i++) |
20 | { | 20 | { |
21 | string path = "./img/test_phone"; | 21 | string path = "./img/test_phone"; |
src/village_inc.h
@@ -21,7 +21,7 @@ struct VillageParam { | @@ -21,7 +21,7 @@ struct VillageParam { | ||
21 | // AI_LOG_LEVEL_ERROR = 4, // 重要日志,如结果和严重错误 | 21 | // AI_LOG_LEVEL_ERROR = 4, // 重要日志,如结果和严重错误 |
22 | int log_level{2}; | 22 | int log_level{2}; |
23 | int log_days{30}; //日志保存周期 | 23 | int log_days{30}; //日志保存周期 |
24 | - std::string log_path{"logs/main.log"}; //日志文件路径 | 24 | + std::string log_path{"logs"}; //日志文件路径 |
25 | unsigned long log_mem{64 * 1024 * 1024}; //每个日志最大大小 | 25 | unsigned long log_mem{64 * 1024 * 1024}; //每个日志最大大小 |
26 | }; | 26 | }; |
27 | 27 |