| 448 | } |
| 449 | |
| 450 | void Segmentation::speedTest(const Cloud::Ptr cloud, size_t numTests){ |
| 451 | std::vector<float> cloudVector; |
| 452 | for (const auto& point : cloud->points) { |
| 453 | cloudVector.push_back(point.x); cloudVector.push_back(point.y); |
| 454 | cloudVector.push_back(point.z); cloudVector.push_back(point.intensity); |
| 455 | } |
| 456 | |
| 457 | std::cout << "PROJECTION" << std::endl; |
| 458 | auto netInput = _doProjection(cloudVector, cloud->width*cloud->height); |
| 459 | |
| 460 | std::cout << "TO TENSOR" << std::endl; |
| 461 | std::vector<float> outputTensorValues(_outputTensorSize); |
| 462 | std::vector<float> inputTensorValues(_inputTensorSize); |
| 463 | std::vector<size_t> invalid_idxs; |
| 464 | _makeTensor(netInput, inputTensorValues, invalid_idxs); |
| 465 | |
| 466 | std::cout << "SETUP" << std::endl; |
| 467 | std::vector<Ort::Value> inputTensors; |
| 468 | std::vector<Ort::Value> outputTensors; |
| 469 | inputTensors.push_back(Ort::Value::CreateTensor<float>( |
| 470 | *_memoryInfo, inputTensorValues.data(), _inputTensorSize, _inputDims.data(), |
| 471 | _inputDims.size())); |
| 472 | |
| 473 | outputTensors.push_back(Ort::Value::CreateTensor<float>( |
| 474 | *_memoryInfo, outputTensorValues.data(), _outputTensorSize, |
| 475 | _outputDims.data(), _outputDims.size())); |
| 476 | |
| 477 | // Measure latency |
| 478 | std::chrono::steady_clock::time_point begin = |
| 479 | std::chrono::steady_clock::now(); |
| 480 | for (int i = 0; i < numTests; i++) |
| 481 | { |
| 482 | _session->Run(Ort::RunOptions{nullptr}, _inputNames.data(), |
| 483 | inputTensors.data(), 1, _outputNames.data(), |
| 484 | outputTensors.data(), 1); |
| 485 | } |
| 486 | std::chrono::steady_clock::time_point end = |
| 487 | std::chrono::steady_clock::now(); |
| 488 | std::cout << "Minimum Inference Latency: " |
| 489 | << std::chrono::duration_cast<std::chrono::milliseconds>(end - |
| 490 | begin) |
| 491 | .count() / |
| 492 | static_cast<float>(numTests) |
| 493 | << " ms" << std::endl; |
| 494 | } |
| 495 | } //namespace segmentation |