| // |
| // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| #include <catch.hpp> |
| #include <opencv2/opencv.hpp> |
| #include "ObjectDetectionPipeline.hpp" |
| #include "Types.hpp" |
| |
| static std::string GetResourceFilePath(const std::string& filename) |
| { |
| std::string testResources = TEST_RESOURCE_DIR; |
| if (0 == testResources.size()) |
| { |
| throw "Invalid test resources directory provided"; |
| } |
| else |
| { |
| if(testResources.back() != '/') |
| { |
| return testResources + "/" + filename; |
| } |
| else |
| { |
| return testResources + filename; |
| } |
| } |
| } |
| |
| TEST_CASE("Test Network Execution SSD_MOBILE") |
| { |
| std::string testResources = TEST_RESOURCE_DIR; |
| REQUIRE(testResources != ""); |
| // Create the network options |
| common::PipelineOptions options; |
| options.m_ModelFilePath = GetResourceFilePath("detect.tflite"); |
| options.m_ModelName = "SSD_MOBILE"; |
| options.m_backends = {"CpuAcc", "CpuRef"}; |
| |
| od::IPipelinePtr objectDetectionPipeline = od::CreatePipeline(options); |
| |
| common::InferenceResults<float> results; |
| cv::Mat processed; |
| cv::Mat inputFrame = cv::imread(GetResourceFilePath("basketball1.png"), cv::IMREAD_COLOR); |
| cv::cvtColor(inputFrame, inputFrame, cv::COLOR_BGR2RGB); |
| |
| objectDetectionPipeline->PreProcessing(inputFrame, processed); |
| |
| CHECK(processed.type() == CV_8UC3); |
| CHECK(processed.cols == 300); |
| CHECK(processed.rows == 300); |
| |
| objectDetectionPipeline->Inference(processed, results); |
| objectDetectionPipeline->PostProcessing(results, |
| [](od::DetectedObjects detects) -> void { |
| CHECK(detects.size() == 2); |
| CHECK(detects[0].GetLabel() == "0"); |
| }); |
| |
| } |