blob: 98db023e97b4ad4b5efc1cc2a6c96741d9d64cb9 [file] [log] [blame]
//
// 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>>(
[&]
(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_InputBinding = "data";
modelParams.m_OutputBinding = "fc12";
modelParams.m_InputTensorShape = &inputTensorShape;
modelParams.m_IsModelBinary = true;
modelParams.m_ComputeDevice = modelOptions.m_ComputeDevice;
modelParams.m_VisualizePostOptimizationModel = modelOptions.m_VisualizePostOptimizationModel;
modelParams.m_EnableFp16TurboMode = modelOptions.m_EnableFp16TurboMode;
return std::make_unique<YoloInferenceModel>(modelParams);
});
});
}
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;
}