ArmNN
 21.08
ModelAccuracyCheckerTest.cpp File Reference
#include "ModelAccuracyChecker.hpp"
#include <doctest/doctest.h>
#include <iostream>
#include <string>

Go to the source code of this file.

Functions

 TEST_SUITE ("ModelAccuracyCheckerTest")
 

Function Documentation

◆ TEST_SUITE()

TEST_SUITE ( "ModelAccuracyCheckerTest"  )

Definition at line 53 of file ModelAccuracyCheckerTest.cpp.

References ModelAccuracyChecker::AddImageResult(), ModelAccuracyChecker::GetAccuracy(), and TEST_CASE_FIXTURE().

54 {
55 using TContainer =
56  mapbox::util::variant<std::vector<float>, std::vector<int>, std::vector<unsigned char>, std::vector<int8_t>>;
57 
58 TEST_CASE_FIXTURE(TestHelper, "TestFloat32OutputTensorAccuracy")
59 {
60  ModelAccuracyChecker checker(GetValidationLabelSet(), GetModelOutputLabels());
61 
62  // Add image 1 and check accuracy
63  std::vector<float> inferenceOutputVector1 = {0.05f, 0.10f, 0.70f, 0.15f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
64  TContainer inference1Container(inferenceOutputVector1);
65  std::vector<TContainer> outputTensor1;
66  outputTensor1.push_back(inference1Container);
67 
68  std::string imageName = "val_01.JPEG";
69  checker.AddImageResult<TContainer>(imageName, outputTensor1);
70 
71  // Top 1 Accuracy
72  float totalAccuracy = checker.GetAccuracy(1);
73  CHECK(totalAccuracy == 100.0f);
74 
75  // Add image 2 and check accuracy
76  std::vector<float> inferenceOutputVector2 = {0.10f, 0.0f, 0.0f, 0.0f, 0.05f, 0.70f, 0.0f, 0.0f, 0.0f, 0.15f};
77  TContainer inference2Container(inferenceOutputVector2);
78  std::vector<TContainer> outputTensor2;
79  outputTensor2.push_back(inference2Container);
80 
81  imageName = "val_02.JPEG";
82  checker.AddImageResult<TContainer>(imageName, outputTensor2);
83 
84  // Top 1 Accuracy
85  totalAccuracy = checker.GetAccuracy(1);
86  CHECK(totalAccuracy == 50.0f);
87 
88  // Top 2 Accuracy
89  totalAccuracy = checker.GetAccuracy(2);
90  CHECK(totalAccuracy == 100.0f);
91 
92  // Add image 3 and check accuracy
93  std::vector<float> inferenceOutputVector3 = {0.0f, 0.10f, 0.0f, 0.0f, 0.05f, 0.70f, 0.0f, 0.0f, 0.0f, 0.15f};
94  TContainer inference3Container(inferenceOutputVector3);
95  std::vector<TContainer> outputTensor3;
96  outputTensor3.push_back(inference3Container);
97 
98  imageName = "val_03.JPEG";
99  checker.AddImageResult<TContainer>(imageName, outputTensor3);
100 
101  // Top 1 Accuracy
102  totalAccuracy = checker.GetAccuracy(1);
103  CHECK(totalAccuracy == 33.3333321f);
104 
105  // Top 2 Accuracy
106  totalAccuracy = checker.GetAccuracy(2);
107  CHECK(totalAccuracy == 66.6666641f);
108 
109  // Top 3 Accuracy
110  totalAccuracy = checker.GetAccuracy(3);
111  CHECK(totalAccuracy == 100.0f);
112 }
113 
114 }
TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu")
mapbox::util::variant< std::vector< float >, std::vector< int >, std::vector< unsigned char >, std::vector< int8_t > > TContainer