3 Revize 6f27aef157 ... 54431b1b78

Autor SHA1 Zpráva Datum
  kappo 54431b1b78 1.准备进行AI运行测试 před 2 měsíci
  kappo 01a91033af Merge branch 'master' of http://39.100.237.43:3000/kangjiaqi/USB_UVC_DETECT před 2 měsíci
  kappo 24f2795fed 1.增加了一个inferREsult定义文件,修改了推理的结果处理接收部分 před 2 měsíci

+ 4 - 4
AIManager/PPYOLOE.cpp

@@ -8,6 +8,7 @@
 #include <exception>
 #include <exception>
 #include <iostream>
 #include <iostream>
 
 
+
 PPYOLOE::PPYOLOE() : ctx(0), model_data(nullptr), model_data_size(0), resize_buf(nullptr) {}
 PPYOLOE::PPYOLOE() : ctx(0), model_data(nullptr), model_data_size(0), resize_buf(nullptr) {}
 
 
 PPYOLOE::~PPYOLOE()
 PPYOLOE::~PPYOLOE()
@@ -94,7 +95,7 @@ bool PPYOLOE::initialize(const std::string &model_path)
 /// @param input_image 输入图像的格式为BGR
 /// @param input_image 输入图像的格式为BGR
 /// @param output_image 直接将结果绘制到输出图像
 /// @param output_image 直接将结果绘制到输出图像
 /// @return
 /// @return
-bool PPYOLOE::infer(int index, unsigned char *input_data, int input_width, int intput_height)
+bool PPYOLOE::infer(int index, unsigned char *input_data, int input_width, int intput_height,DataPackage* result)
 {
 {
     rknn_input inputs[io_num.n_input];
     rknn_input inputs[io_num.n_input];
     rknn_output outputs[io_num.n_output];
     rknn_output outputs[io_num.n_output];
@@ -133,10 +134,9 @@ bool PPYOLOE::infer(int index, unsigned char *input_data, int input_width, int i
         return false;
         return false;
     }
     }
 
 
-    object_detect_result_list od_results;
-    post_process(this, outputs, box_conf_threshold, nms_threshold, &od_results, 1);
-
+    post_process(this, outputs, box_conf_threshold, nms_threshold, &result->Result, 1);
     rknn_outputs_release(ctx, io_num.n_output, outputs);
     rknn_outputs_release(ctx, io_num.n_output, outputs);
+
     return true;
     return true;
 }
 }
 
 

+ 2 - 1
AIManager/PPYOLOE.hpp

@@ -5,6 +5,7 @@
 #include <opencv2/opencv.hpp>
 #include <opencv2/opencv.hpp>
 #include <string>
 #include <string>
 #include <vector>
 #include <vector>
+#include "../DataManager/DataPackage.h"
 
 
 static unsigned char *load_model(const char *filename, int *model_size);
 static unsigned char *load_model(const char *filename, int *model_size);
 
 
@@ -16,7 +17,7 @@ public:
 
 
     int get_index() const { return index; }
     int get_index() const { return index; }
     bool initialize(const std::string &model_path);
     bool initialize(const std::string &model_path);
-    bool infer(int index, unsigned char *input_data, int width, int height);
+    bool infer(int index, unsigned char *input_data, int width, int height,DataPackage* result);
     void release();
     void release();
 
 
     int width, height, channel;
     int width, height, channel;

+ 13 - 0
AIManager/RKNNManager.cpp

@@ -3,6 +3,9 @@
 #include "../DataManager/DataManager.h"
 #include "../DataManager/DataManager.h"
 #include "../DataManager/DataPackage.h"
 #include "../DataManager/DataPackage.h"
 
 
+// Image test
+#include "../ImageTest/ImageTest.h"
+
 void RKNNManager::addRknnTask(std::string modelData)
 void RKNNManager::addRknnTask(std::string modelData)
 {
 {
     m_threads.emplace_back(&RKNNManager::taskThread, this, modelData);
     m_threads.emplace_back(&RKNNManager::taskThread, this, modelData);
@@ -24,12 +27,22 @@ void RKNNManager::taskThread(std::string modelpath)
     std::string pipeName = "rknn" + std::to_string(index);
     std::string pipeName = "rknn" + std::to_string(index);
     DataManager::getInstance().addDataPipe<DataPackage>(pipeName);
     DataManager::getInstance().addDataPipe<DataPackage>(pipeName);
 
 
+    //time test
+    ImageTest::HighResolutionTimer timer;
+
     while (m_threadSwitch)
     while (m_threadSwitch)
     {
     {
         if (DataManager::getInstance().popData("resized" + std::to_string(index), dataPackage))
         if (DataManager::getInstance().popData("resized" + std::to_string(index), dataPackage))
         {
         {
+            
+            timer.start();
+
             infer.infer(index, (unsigned char *)dataPackage->pResizeData, dataPackage->nResizeWidth, dataPackage->nResizeHeight);
             infer.infer(index, (unsigned char *)dataPackage->pResizeData, dataPackage->nResizeWidth, dataPackage->nResizeHeight);
 
 
+            timer.stop();
+
+            std::cout << "infer time: " << timer.elapsed_milliseconds() << " ms" << std::endl;
+
             continue;
             continue;
         }
         }
 
 

+ 0 - 10
AIManager/infer.h

@@ -1,10 +0,0 @@
-#include <opencv2/opencv.hpp>
-#include <string>
-
-typedef struct infer_frame{
-    unsigned char* data;
-    int width;
-    int height;
-    int channels;
-    int type;
-} INFER_FRAME,*LPINFER_FRAME;

+ 29 - 0
AIManager/inferResult.h

@@ -0,0 +1,29 @@
+#ifndef INFER_RESULT_H
+#define INFER_RESULT_H
+
+
+#include <string>
+
+typedef struct
+{
+    int left;
+    int top;
+    int right;
+    int bottom;
+} image_rect_t;
+
+typedef struct
+{
+    image_rect_t box;
+    float prop;
+    int cls_id;
+} object_detect_result;
+
+typedef struct
+{
+    int id;
+    int count;
+    object_detect_result results[128];
+} object_detect_result_list;
+
+#endif // INFER_RESULT_H

+ 1 - 22
AIManager/postprocess.h

@@ -5,31 +5,10 @@
 #include <vector>
 #include <vector>
 #include "rknn_api.h"
 #include "rknn_api.h"
 #include "PPYOLOE.hpp"
 #include "PPYOLOE.hpp"
+#include "inferResult.h"
 
 
 // class rknn_app_context_t;
 // class rknn_app_context_t;
 
 
-typedef struct
-{
-    int left;
-    int top;
-    int right;
-    int bottom;
-} image_rect_t;
-
-typedef struct
-{
-    image_rect_t box;
-    float prop;
-    int cls_id;
-} object_detect_result;
-
-typedef struct
-{
-    int id;
-    int count;
-    object_detect_result results[128];
-} object_detect_result_list;
-
 int init_post_process();
 int init_post_process();
 void deinit_post_process();
 void deinit_post_process();
 char *coco_cls_to_name(int cls_id);
 char *coco_cls_to_name(int cls_id);

+ 6 - 1
DataManager/DataPackage.h

@@ -3,6 +3,7 @@
 
 
 #include <iostream>
 #include <iostream>
 #include <stdexcept>
 #include <stdexcept>
+#include "../AIManager/inferResult.h"
 
 
 #define RESIZE_WIDTH 640
 #define RESIZE_WIDTH 640
 #define RESIZE_HEIGHT 640
 #define RESIZE_HEIGHT 640
@@ -27,7 +28,11 @@ typedef struct DataPackage
     long nTimeStamp = 0.0;
     long nTimeStamp = 0.0;
     double dDegree = 0.0;
     double dDegree = 0.0;
 
 
-    // R360::DataList dataList;
+    // result
+    int id = 0;
+    int count = 0;
+
+    object_detect_result_list Result;
 
 
     DataPackage(int width, int height)
     DataPackage(int width, int height)
     {
     {

+ 2 - 0
main.cpp

@@ -20,6 +20,8 @@ int main(int argc, char **argv)
 
 
     MppManager::getInstance().addMppDecode();
     MppManager::getInstance().addMppDecode();
 
 
+    RKNNManager::getInstance().addRknnTask("../ppyoloe.rknn");
+
     // Start all streaming
     // Start all streaming
     UVCManager::getInstance().startAllStreaming();
     UVCManager::getInstance().startAllStreaming();