59 lines
2.6 KiB
C++
59 lines
2.6 KiB
C++
//
|
|
// Copyright © 2017 Arm Ltd. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
//
|
|
#include "../YoloInferenceTest.hpp"
|
|
#include "armnnCaffeParser/ICaffeParser.hpp"
|
|
#include "armnn/TypesUtils.hpp"
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
armnn::TensorShape inputTensorShape{ { 1, 3, YoloImageHeight, YoloImageWidth } };
|
|
|
|
using YoloInferenceModel = InferenceModel<armnnCaffeParser::ICaffeParser,
|
|
float>;
|
|
|
|
int retVal = EXIT_FAILURE;
|
|
try
|
|
{
|
|
// Coverity fix: InferenceTestMain() may throw uncaught exceptions.
|
|
retVal = InferenceTestMain(argc, argv, { 0 },
|
|
[&inputTensorShape]()
|
|
{
|
|
return make_unique<YoloTestCaseProvider<YoloInferenceModel>>(
|
|
[&]
|
|
(const InferenceTestOptions &commonOptions,
|
|
typename YoloInferenceModel::CommandLineOptions modelOptions)
|
|
{
|
|
if (!ValidateDirectory(modelOptions.m_ModelDir))
|
|
{
|
|
return std::unique_ptr<YoloInferenceModel>();
|
|
}
|
|
|
|
typename YoloInferenceModel::Params modelParams;
|
|
modelParams.m_ModelPath = modelOptions.m_ModelDir + "yolov1_tiny_voc2007_model.caffemodel";
|
|
modelParams.m_InputBindings = { "data" };
|
|
modelParams.m_OutputBindings = { "fc12" };
|
|
modelParams.m_InputShapes = { inputTensorShape };
|
|
modelParams.m_IsModelBinary = true;
|
|
modelParams.m_ComputeDevices = modelOptions.GetComputeDevicesAsBackendIds();
|
|
modelParams.m_VisualizePostOptimizationModel = modelOptions.m_VisualizePostOptimizationModel;
|
|
modelParams.m_EnableFp16TurboMode = modelOptions.m_EnableFp16TurboMode;
|
|
|
|
return std::make_unique<YoloInferenceModel>(modelParams,
|
|
commonOptions.m_EnableProfiling,
|
|
commonOptions.m_DynamicBackendsPath);
|
|
});
|
|
});
|
|
}
|
|
catch (const std::exception& e)
|
|
{
|
|
// Coverity fix: BOOST_LOG_TRIVIAL (typically used to report errors) may throw an
|
|
// exception of type std::length_error.
|
|
// Using stderr instead in this context as there is no point in nesting try-catch blocks here.
|
|
std::cerr << "WARNING: CaffeYolo-Armnn: An error has occurred when running "
|
|
"the classifier inference tests: " << e.what() << std::endl;
|
|
}
|
|
return retVal;
|
|
}
|