12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include "RKNNManager.h"
- #include "PPYOLOE.hpp"
- #include "../DataManager/DataManager.h"
- #include "../DataManager/DataPackage.h"
- // Image test
- #include "../ImageTest/ImageTest.h"
- #include "../GrpcTransfer/GrpcTransfer.h"
- void RKNNManager::addRknnTask(std::string modelData)
- {
- m_threads.emplace_back(&RKNNManager::taskThread, this, modelData);
- m_threads.emplace_back(&RKNNManager::taskThread, this, modelData);
- m_threads.emplace_back(&RKNNManager::taskThread, this, modelData);
- }
- void RKNNManager::taskThread(std::string modelpath)
- {
- std::string target_str = "192.168.211.20:50051";
- grpc::ChannelArguments channel_args;
- channel_args.SetInt(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, 100 * 1024 * 1024); // 设置最大发送消息大小为100MB
- channel_args.SetInt(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, 100 * 1024 * 1024); // 设置最大接收消息大小为100MB
- MessageServiceClient client(grpc::CreateCustomChannel(target_str, grpc::InsecureChannelCredentials(), channel_args));
- PPYOLOE infer;
- if (!infer.initialize(modelpath))
- {
- std::cerr << "initialize rknn infer failed" << std::endl;
- return;
- }
- m_threadSwitch = true;
- int index = infer.get_index();
- DataPackagePtr dataPackage;
- std::string pipeName = "rknn" + std::to_string(index);
- DataManager::getInstance().addDataPipe<DataPackage>(pipeName);
- // time test
- ImageTest::HighResolutionTimer timer;
- while (m_threadSwitch)
- {
- if (DataManager::getInstance().popData("resized" + std::to_string(index), dataPackage))
- {
- timer.start();
- infer.infer(index, (unsigned char *)dataPackage->pResizeData, dataPackage->nResizeWidth, dataPackage->nResizeHeight, dataPackage);
- timer.stop();
- std::cout << "infer time: " << timer.elapsed_milliseconds() << " ms" << std::endl;
- // ImageTest::saveImageFromData((unsigned char *)dataPackage->pResizeData, dataPackage->nResizeWidth, dataPackage->nResizeHeight);
- // MessageServiceClient client(grpc::CreateChannel(target_str, grpc::InsecureChannelCredentials()));
- client.R360SendMessage(dataPackage);
- // MemoryPool<DataPackage> *dataPool = DataManager::getInstance().getDataBuffer<DataPackage>();
- DataManager::getInstance().releaseDataBuffer<DataPackage>(dataPackage);
- continue;
- }
- std::this_thread::sleep_for(std::chrono::milliseconds(20));
- }
- }
|