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
128
129
130
131
132
133
#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();
}

// ===== [site:daeduck] 사이트 전용 시작 =====
namespace daeduck {
int run();
}
// ===== [site:daeduck] 사이트 전용 끝 =====

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