Skip to content

File ExampleMain.h

Go to the documentation of this file.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#ifndef SAIGE_VISION_EXAMPLE_MAIN_H_
#define SAIGE_VISION_EXAMPLE_MAIN_H_
#include "SaigeVisionAPI.h"
#include <string>
#include <vector>
#include <map>

typedef enum Examples {
    CLASSIFICATION,
    DETECTION,
    SEGMENTATION,
    ANOMALY_DETECTION,
    OCR,
    IMAGE_ENHANCEMENT,
    ROTATED_OBJECT_DETECTION,
    CLASSIFICATION_DETECTION,
    CLASSIFICATION_BATCH,
    ANOMALY_DETECTION_BATCH,
    SEGMENTATION_BATCH,
    UTILITY,
    ERROR_CODE,
    CLASSIFICATION_WITH_META,
    CLASSIFICATION_MULTIPAGE,
    MULTI_THREAD_INFERENCE,
    REPEAT_CREATE_DELETE,
    VALIDATION_METRIC
};

static std::map<Examples, bool> exampleSelector = {{CLASSIFICATION, false},
                                                   {DETECTION, false},
                                                   {SEGMENTATION, false},
                                                   {ANOMALY_DETECTION, false},
                                                   {OCR, false},
                                                   {IMAGE_ENHANCEMENT, false},
                                                   {ROTATED_OBJECT_DETECTION, false},
                                                   {CLASSIFICATION_DETECTION, false},
                                                   {CLASSIFICATION_BATCH, false},
                                                   {ANOMALY_DETECTION_BATCH, false},
                                                   {SEGMENTATION_BATCH, false},
                                                   {UTILITY, false},
                                                   {ERROR_CODE, false},
                                                   {CLASSIFICATION_WITH_META, false},
                                                   {CLASSIFICATION_MULTIPAGE, false},
                                                   {MULTI_THREAD_INFERENCE, false},
                                                   {REPEAT_CREATE_DELETE, false},
                                                   {VALIDATION_METRIC, false}};

void UpdateExampleSelectorFromArgv(const char* arg1);

namespace cls {
int run();
int run_batch();
int run_with_meta();
int run_multipage();
}  // namespace cls

namespace det {
int run();
}

namespace seg {
int run();
int run_batch();
}  // namespace seg

namespace iad {
int run();
int run_batch();
}  // namespace iad

namespace ocr {
int run();
}
namespace rod {
int run();
}
namespace cls_det {
int run();
}

namespace ien {
int run();
}
namespace err {
int run();
}

namespace util {
int run();
}

namespace mul {
int run_multi_models();
}

namespace repeat {
int run();
}

namespace valmetric {
int run();
}

std::string get_env_var(const std::string& key);
std::string get_runtime_base();

// 예제 실행 인자. 등록한 변수의 현재 값을 기본값으로 보여주고 "Default Run Mode(Y/n)" 에서
// n 을 입력하면 항목별로 새 값을 입력받는다. 빈 입력은 기본값을 유지한다.
//   ExampleArgs().Add("data_dir", dataDir).Add("verbosity", verbosity).Prompt();
class ExampleArgs {
   public:
    ExampleArgs& Add(const std::string& name, std::string& value, const std::string& help = "");
    ExampleArgs& Add(const std::string& name, int& value, const std::string& help = "");
    ExampleArgs& Add(const std::string& name, bool& value, const std::string& help = "");
    void Prompt();

   private:
    struct Item {
        std::string name;
        std::string help;
        std::string* str = nullptr;
        int* num = nullptr;
        bool* flag = nullptr;
    };
    std::vector<Item> items_;
};
#endif