#ifndef MODELTYPE_H
#define MODELTYPE_H

// !!!---------------------------------------------------------------------------!!!
// Whenever ModelType is updated,
//          please also update Begin_Enum_String( ModelType )  as well
// !!!---------------------------------------------------------------------------!!!
#ifdef VATICS_PLATFORM
enum model_type {
#else
enum class ModelType {
#endif
    INVALID_TYPE = 0,
    KNERON_FD_SMALLBOX_200_200_3 = 1,
    KNERON_FD_ANCHOR_200_200_3 = 2,
    KNERON_FD_MBSSD_200_200_3= 3,
    AVERAGE_POOLING = 4, //use with FD smallbox and don't use anymore
    KNERON_LM_5PTS_ONET_56_56_3 = 5,
    KNERON_LM_68PTS_dlib_112_112_3 = 6,
    KNERON_LM_150PTS = 7,
    KNERON_FR_RES50_112_112_3 = 8,
    KNERON_FR_RES34 = 9,
    KNERON_FR_VGG10 = 10,
    KNERON_TINY_YOLO_PERSON_416_416_3 = 11,
    KNERON_3D_LIVENESS = 12, //has two inputs: depth and RGB
    KNERON_GESTURE_RETINANET_320_320_3 = 13,
    TINY_YOLO_VOC_224_224_3 = 14,
    IMAGENET_CLASSIFICATION_RES50_224_224_3 = 15,
    IMAGENET_CLASSIFICATION_RES34_224_224_3 = 16,
    IMAGENET_CLASSIFICATION_INCEPTION_V3_224_224_3 = 17,
    IMAGENET_CLASSIFICATION_MOBILENET_V2_224_224_3 = 18,
    TINY_YOLO_V3_224_224_3 = 19,
    KNERON_2D_LIVENESS_224_224_3 = 20, //oldest rgb liveness model and don't use anymore
    KNERON_FD_RETINANET_RES50_640_640_3 = 21,
    KNERON_PERSON_MOBILENETSSD_224_224_3 = 22,
    KNERON_AGE_GENDER = 23, //oldest age gender model and don't use anymore
    KNERON_LM_5PTS_BLUR_ONET_48_48_3 = 24,
    KNERON_2D_LIVENESS_V3_FACEBAGNET_224_224_3 = 25,
    KNERON_AGE_GENDER_V2_RES18_128_128_3 = 26,
    KNERON_OD_MBSSD = 27, //HW model and don't know input size
    KNERON_PD_MBSSD = 28, //HW model and don't know which version and input size
    KNERON_FR_MASK_RES50_112_112_3 = 29,
    KNERON_NIR_LIVENESS_RES18_112_112_3 = 30,
    KNERON_FR_MASK_RES101_112_112_3 = 31,
    KNERON_FD_MASK_MBSSD_200_200_3 = 32,
    TINY_YOLO_V3_416_416_3 = 33,
    TINY_YOLO_V3_608_608_3 = 34,
    KNERON_RACE_RES18_128_128_3 = 35,
    KNERON_AGE_GENDER_WHITE_RES18_128_128_3 = 36,
    KNERON_AGE_GENDER_BLACK_RES18_128_128_3 = 37,
    KNERON_AGE_GENDER_INDIAN_RES18_128_128_3 = 38,
    KNERON_FR_RES20MB_112_112_3 = 39,

//Category Face related 40~200
    KNERON_CAT_FACE = 40,
    KNERON_FACE_QAULITY_ONET_56_56_1 = KNERON_CAT_FACE,
    KNERON_FUSE_LIVENESS = KNERON_CAT_FACE +1, // don't know the model backbone and input size of fuse liveness model
    KNERON_EYELID_DETECTION_ONET_48_48_3 = KNERON_CAT_FACE +2,
    KNERON_YAWN_DETECTION_PFLD_112_112_3 = KNERON_CAT_FACE +3,
    KNERON_DBFACE_MBNET_V2_480_864_3 = KNERON_CAT_FACE +4,
    KNERON_FILTER = KNERON_CAT_FACE +5, //No model inference, just pre and post-process
    KNERON_ALIGNMENT = KNERON_CAT_FACE +6, //No model inference, just preprocess
    KNERON_FACE_EXPRESSION_112_112_3 = KNERON_CAT_FACE +7,//105.391,689.658
    KNERON_RBG_OCCLUSION_RES18_112_112_3 = KNERON_CAT_FACE +8,
    KNERON_LM2BBOX = KNERON_CAT_FACE + 9, //No model inference, just post-process
    KNERON_PUPIL_ONET_48_48_3 = KNERON_CAT_FACE +10,
    KNERON_NIR_OCCLUSION_RES18_112_112_3 = KNERON_CAT_FACE +11,
    KNERON_HEAD_SHOULDER_MBNET_V2_112_112_3 = KNERON_CAT_FACE + 12,
    KNERON_RGB_LIVENESS_RES18_112_112_3 = KNERON_CAT_FACE +13,
    KNERON_MOUTH_LM_v1_56_56_1 = KNERON_CAT_FACE +14,    //3dLM: nose, upper lip middle, chin, two sides of faces
    KNERON_MOUTH_LM_v2_56_56_1 = KNERON_CAT_FACE +15,    //3dLM: nose, upper/lower lip middle, two sides of faces
    KNERON_PUPIL_ONET_48_48_1 = KNERON_CAT_FACE +16,
    KNERON_RGB_LIVENESS_MBV2_112_112_3 = KNERON_CAT_FACE +17,
    KNERON_FACESEG_DLA34_128_128_3 = KNERON_CAT_FACE +18,
    KNERON_OCC_CLS = KNERON_CAT_FACE +19, //no model inference, just post-process
    KNERON_LMSEG_FUSE = KNERON_CAT_FACE+20, //no model inference, just post-process
    KNERON_AGEGROUP_RES18_128_128_3 = KNERON_CAT_FACE+21,
    KNERON_FR_kface_112_112_3 = KNERON_CAT_FACE+22,
    KNERON_FDmask_ROTATE_MBSSD_200_200_3 = KNERON_CAT_FACE+23,
    KNERON_LM_5PTSROTATE_ONET_56_56_3 = KNERON_CAT_FACE+24,
    KNERON_FUSE_LIVENESS_850MM = KNERON_CAT_FACE +25,
    KNERON_FUSE_LIVENESS_940MM = KNERON_CAT_FACE +26,
    KNERON_FACE_QAULITY_ONET_112_112_3 = KNERON_CAT_FACE +27,
    KNERON_FACE_POSE_ONET_56_56_3 = KNERON_CAT_FACE + 28,
    KNERON_FUSE_LIVENESS_850MM_RES18_112_112_3 = KNERON_CAT_FACE + 29, //Gen's resnet+agg fuse model
    KNERON_OCCCLASSIFER_112_112_3 = KNERON_CAT_FACE +30,
    KNERON_FACE_ROTATE_POSE_ONET_56_56_3 = KNERON_CAT_FACE + 31,
    KNERON_NIR_LIVENESS_ROT_RES18_112_112_3 = KNERON_CAT_FACE +32,
    KNERON_LM_5PTS_ONETPLUS_56_56_3 = KNERON_CAT_FACE + 33,
    KNERON_FUSE_LIVENESS_940MM_18_RES18_112_112_3 = KNERON_CAT_FACE + 34,
    KNERON_DBFACE_MBNET_V2_256_352_3 = KNERON_CAT_FACE +35,
    KNERON_NIR_Liveness_aligned_112_112_3 = KNERON_CAT_FACE +36,
    KNERON_FUSE_Liveness_940_850_RES18_112_112_3 = KNERON_CAT_FACE +37,
    KNERON_FDLM_RETINANET_MBV2_640_640_3 = KNERON_CAT_FACE + 38,
    KNERON_NIR_OCCLUSION_MBV2D4_112_112_3 = KNERON_CAT_FACE +39,
    KNERON_FACE_EYEGLASSES_CLS3_56_56_3 = KNERON_CAT_FACE +40,
    KNERON_HEAD_SHOULDER_ROT_MBNET_V2_112_112_3 = KNERON_CAT_FACE + 41,
    KNERON_YOLOV5_FACE_AND_LM_640_640_3 = KNERON_CAT_FACE + 42,  // bbox and lm, 2 outputs
    KNERON_YOLOV5_FACE_AND_LM_NO_UPSAMPLE_640_640_3 = KNERON_CAT_FACE + 43,  // bbox and lm, 2 outputs
    KNERON_YOLOV5_FACE_FD_640_640_3 = KNERON_CAT_FACE + 44,  // only bbox
    KNERON_YOLOV5_FACE_FD_NO_UPSAMPLE_640_640_3 = KNERON_CAT_FACE + 45,  // only bbox
    KNERON_RSN_AFFINE = KNERON_CAT_FACE + 46,  // affine preprocess only
    KNERON_MOUTH_LM_v2_ROTATE_56_56_1 = KNERON_CAT_FACE +47,    //3dLM: nose, upper/lower lip middle, two sides of faces
    KNERON_YOLOV5_FACE_MASK_LM_640_640_3 = KNERON_CAT_FACE + 48,  // bbox and lm, 2 outputs, 640(w)x640(h)
    KNERON_YOLOV5_FACE_MASK_LM_384_640_3 = KNERON_CAT_FACE + 49,  // bbox and lm, 2 outputs, 640(w)x384(h)
    KNERON_YOLOV5_FACE_MASK_640_640_3 = KNERON_CAT_FACE + 50,  // only bbox, 640(w)x640(h)
    KNERON_YOLOV5_FACE_MASK_384_640_3 = KNERON_CAT_FACE + 51,  // only bbox, 640(w)x384(h)
    KNERON_FACE_PUPIL_CLS2_48_48_3 = KNERON_CAT_FACE +52,
    KNERON_LM_5PTS_ROTATE_ONETPLUS_80_80_3 = KNERON_CAT_FACE +53,
    KNERON_FDmask_ROTATE_fcos_224_224_3 = KNERON_CAT_FACE+54,
    KNERON_FDmask_fcos_224_224_3 = KNERON_CAT_FACE+55,
    KNERON_FACE_PUPIL_ROTATE_CLS2_48_48_3 = KNERON_CAT_FACE +56,
    KNERON_NIR_OCCLUSION_ROT_MBV2D4_112_112_3 = KNERON_CAT_FACE +57,
    KNERON_FUSE_LIVENESS_sc035_112_112_4 = KNERON_CAT_FACE +58,
    KNERON_FDmask_fcos_512_704_3 = KNERON_CAT_FACE+59,
    KNERON_FACESEG_DLA34_rotate_128_128_3 = KNERON_CAT_FACE +60,
    KNERON_FUSE_LIVENESS_R18_5crops_48_48_3 = KNERON_CAT_FACE + 61,
    KNERON_RGB2NIR_MOBILEFACENET_RESNET_6BLOCKS_256_256_3 = KNERON_CAT_FACE + 62,
    KNERON_FUSE_LIVENESS_1054sc035_112_112_4 = KNERON_CAT_FACE +63,
    KNERON_NIR_LIVENESS_ROT_1054_RES18_112_112_3 = KNERON_CAT_FACE +64,
    KNERON_FDmask_ROTATE_fcos_256_448_3 = KNERON_CAT_FACE+65,
    KNERON_FDmask_ROTATE_fcos_288_416_3 = KNERON_CAT_FACE+66,
    KNERON_DEPTH_LIVENESS_FeatherNetB_112_112_1 = KNERON_CAT_FACE +67,
    KNERON_FUSE_TOF_LIVENESS_DEP_NIR_112_112_1 = KNERON_CAT_FACE +68,
    KNERON_NSH_LIVENESS_ROT_1054_MBV2D2_112_112_3 = KNERON_CAT_FACE +69,
    KNERON_FDmask_fcos_384_320_3 = KNERON_CAT_FACE+70,
    KNERON_COMBINE_LIVENESS_ROT_1054_MBV2_112_112_3 = KNERON_CAT_FACE +71,
    KNERON_RGB2NIR_UNET_FR_112_112_1 = KNERON_CAT_FACE + 72,
    KNERON_RGB2NIR_UNET_FR_112_112_3 = KNERON_CAT_FACE + 73,
    KNERON_TOF_EYE_LIVENESS_ROT_MBV2_112_112_3 = KNERON_CAT_FACE +74,
    KNERON_FACESEG_VGG10L_128_128_3 = KNERON_CAT_FACE +75,
    KNERON_FR_kfacer152_112_112_3 = KNERON_CAT_FACE +76,

    

//Category Object Detection related 200~300
    KNERON_OB_DETECT = 200,
    KNERON_OBJECTDETECTION_CENTERNET_512_512_3 = KNERON_OB_DETECT,
    KNERON_OBJECTDETECTION_FCOS_416_416_3 = KNERON_OB_DETECT +1,
    KNERON_PD_MBNET_V2_480_864_3 = KNERON_OB_DETECT +2, //16:9 aspect ratio
    KNERON_CAR_DETECTION_MBSSD_224_416_3 = KNERON_OB_DETECT +3,
    KNERON_PD_CROP_MBSSD_304_304_3 = KNERON_OB_DETECT +4,
    YOLO_V3_416_416_3 = KNERON_OB_DETECT +5,
    YOLO_V4_416_416_3 = KNERON_OB_DETECT +6,
    KNERON_CAR_DETECTION_YOLOV5S_CarMotorcycleBusTruck4_352_640_3 = KNERON_OB_DETECT +7,
    KNERON_LICENSE_DETECT_WPOD_208_416_3 = KNERON_OB_DETECT +8,
    KNERON_2D_UPPERBODY_KEYPOINT_RES18_384_288_3 = KNERON_OB_DETECT +9,
    YOLO_V3_608_608_3 = KNERON_OB_DETECT +10,
    KNERON_YOLOV5S_COCO80_640_640_3 = KNERON_OB_DETECT +11,
    KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruckCatDog8_256_480_3 = KNERON_OB_DETECT + 12,
    KNERON_SITTINGPOSTURE_RESNET34_288_384_3 = KNERON_OB_DETECT + 13,
    KNERON_PERSONDETECTION_FCOS_416_416_3 = KNERON_OB_DETECT +14,
    KNERON_YOLOV5m_COCO80_640_640_3 = KNERON_OB_DETECT +15,
    KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_256_480_3 = KNERON_OB_DETECT + 16,
    KNERON_PERSONDETECTION_FCOS_384_288_3 = KNERON_OB_DETECT +17,
    KNERON_PERSONDETECTION_FCOS_720_416_3 = KNERON_OB_DETECT +18,
    KNERON_PERSONDETECTION_dbface_864_480_3 = KNERON_OB_DETECT +19,
    KNERON_PERSONDETECTION_YOLOV5s_256_480_3 = KNERON_OB_DETECT +20,
    KNERON_PERSONCLASSIFIER_MB_56_32_3 = KNERON_OB_DETECT +21,
    KNERON_PERSONREID_RESNET_42_82_3 = KNERON_OB_DETECT +22,
    KNERON_PERSONDETECTION_YOLOV5s_512_928_3 = KNERON_OB_DETECT +23,
    KNERON_UPKPTS_RSN_256_192_3 = KNERON_OB_DETECT + 24,
    KNERON_PERSONDETECTION_YOLOV5sParklot_256_480_3 = KNERON_OB_DETECT + 25,
    KNERON_CAR_DETECTION_MBSSD_304_544_3 = KNERON_OB_DETECT +26,
    KNERON_KPTSCLASSIFIER_3_11_1 = KNERON_OB_DETECT +27,
    KNERON_YOLOV5S_PersonCatDogBottleChairPottedplant6_256_480_3 = KNERON_OB_DETECT + 28,
    KNERON_DBFAIR_320_160_3 = KNERON_OB_DETECT + 29,
    KNERON_CAR_MOTOR_PERSON_DETECTION_MBSSD_224_416_3 = KNERON_OB_DETECT +30,
    KNERON_LICENSE_DETECT_QUANTIZED_WPOD_208_416_3 = KNERON_OB_DETECT +31,
    KNERON_PERSON_DETECTION_MBSSD_224_416_3 = KNERON_OB_DETECT +32,
    KNERON_PERSONCLASSIFIER_MB_56_48_3 = KNERON_OB_DETECT +33,
    KNERON_YOLOV5S_CarMotorcycleBusTruckPlate5_352_640_3 = KNERON_OB_DETECT + 34,
    KNERON_YOLOV5S_PersonBottleChairPottedplant4_288_640_3 = KNERON_OB_DETECT + 35,
    KNERON_COCO_KPTS_dbpose_640_384_3 = KNERON_OB_DETECT + 36,
    KNERON_YOLOV5S_OCR_NUMBER_ALPHABET_PLATE_352_640_3 = KNERON_OB_DETECT + 37,
    KNERON_PERSONKPTS_ONETPLUS_112_56_3 = KNERON_OB_DETECT + 38,
    KNERON_IMAGE_KPT_240_320_3 = KNERON_OB_DETECT + 39,
    KNERON_FULLBODYKPTS_LHRN_256_192_3 = KNERON_OB_DETECT + 40,//520: 8.81063, 720:119.38
    KNERON_YOLOF_R50_640_384_3 = KNERON_OB_DETECT + 41,
    KNERON_SOLOV2_R18_FPN_448_448_3 = KNERON_OB_DETECT + 42,
    KNERON_IMAGE_KPT_SP_240_320_3 = KNERON_OB_DETECT + 43,
    KNERON_YOLOX_S_640_640_3 = KNERON_OB_DETECT + 44,
    KNERON_SCRFD_500M_BNKPS_640_480_3 = KNERON_OB_DETECT + 45,
    KNERON_SCRFD_2G_BNKPS_640_480_3 = KNERON_OB_DETECT + 46,
    KNERON_SCRFD_10G_BNKPS_640_480_3 = KNERON_OB_DETECT + 47,
    KNERON_PERSONCLASSIFIER_HALF_56_32_3 = KNERON_OB_DETECT +48,
    KNERON_SCRFD_10G_BNKPS_640_640_3 = KNERON_OB_DETECT + 49,
    KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_512_864_3 = KNERON_OB_DETECT + 50,
    KNERON_FULLBODYKPTS_RSN_COCO_256_192_3 = KNERON_OB_DETECT + 51,//9.14208, 56.433
    KNERON_YOLOV5S_768192PersonCatDogBottleChairPottedplant6_256_480_3 = KNERON_OB_DETECT + 52,
    KNERON_PERSONCLASSIFIER_768192MB_56_48_3 = KNERON_OB_DETECT +53,
    KNERON_FULLBODYKPTS_RSN_MPII_256_256_3 = KNERON_OB_DETECT + 54,
    KNERON_CENTERTRACK_PERSON_960_544_7 = KNERON_OB_DETECT + 55,
    KNERON_FAIRMOT_PERSON_928_512_3 = KNERON_OB_DETECT + 56,
    KNERON_YOLOP_VEHICLE_384_640_3 = KNERON_OB_DETECT + 57,
    KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_480_832_3 = KNERON_OB_DETECT + 58,
    KNERON_YOLOV5S_PersonBottleChairPottedplant4_480_832_3 = KNERON_OB_DETECT + 59,
    KNERON_YOLOV5S_PersonHead2_256_480_3 = KNERON_OB_DETECT + 60,
    KNERON_HANDKPTS_RSN18_FREIHAND_224_224_3 = KNERON_OB_DETECT + 62,
    KNERON_YOLOV5S_COCO80_256_480_3 = KNERON_OB_DETECT + 63,
    KNERON_YOLOV5S_COCO80_480_640_3 = KNERON_OB_DETECT + 64,
    KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_192_480_3 = KNERON_OB_DETECT + 65,
    KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_352_480_3 = KNERON_OB_DETECT + 66,
    KNERON_YOLOOP_PersonTwowheelVehicle3_384_640_3 = KNERON_OB_DETECT + 67,
    KNERON_YOLOV5M_PersonBottleChairPottedplant4_160_960_3 = KNERON_OB_DETECT + 68,
    KNERON_YOLOX_Person_448_800_3 = KNERON_OB_DETECT + 69,
    KNERON_YOLOV5S_PersonVboxHead2_256_480_3 = KNERON_OB_DETECT + 70,
    KNERON_YOLOX_Person_160_960_3 = KNERON_OB_DETECT + 71,
    KNERON_IMAGE_KPT_CV_240_320_3 = KNERON_OB_DETECT + 72,
    KNERON_LICENSE_DETECT_YOLO5FACE_S_4PT_608_800_3 = KNERON_OB_DETECT + 73,
    KNERON_LICENSE_DETECT_YOLO5FACE_S_4PT_NO_UPSAMPLE_480_640_3 = KNERON_OB_DETECT + 74,
    KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_192_288_3 = KNERON_OB_DETECT + 75,
    KNERON_YOLOV5S0375_PersonBicycleCarMotorcycleBusTruck6_256_352_3 = KNERON_OB_DETECT + 76,
    KNERON_YOLOV5S_ROBOT_VACUUM_61CLS_480_640_3 = KNERON_OB_DETECT + 77,
    KNERON_YOLOV5M_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptop7_160_1152_3 = KNERON_OB_DETECT + 78,
    KNERON_YOLOV5M_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptop7_192_928_3 = KNERON_OB_DETECT + 79,
    KNERON_YOLOV5M_ROBOT_VACUUM_61CLS_480_640_3 = KNERON_OB_DETECT + 80,
    KNERON_YOLOV5S_PersonHead2_288_384_3 = KNERON_OB_DETECT + 81,
    KNERON_IMAGE_KPT_LOFTR_240_320_3 = KNERON_OB_DETECT + 82,
    KNERON_YOLOXS_LANDMARK_USLPD_480_832_3 = KNERON_OB_DETECT + 95,
    KNERON_YOLOXM_USLPR_96_256_3 = KNERON_OB_DETECT + 96,

//Category OCR related 300~600
    KNERON_OCR = 300,
    KNERON_LICENSE_OCR_MBNET_64_160_3 = KNERON_OCR,
    KNERON_WATERMETER_OCR_MBNET = KNERON_OCR +1, //unknown
    KNERON_LICENSE_OCR_MBNETv2_64_160_3 = KNERON_OCR +2,
    KNERON_LICENSE_OCR_MBNETv2_96_256_3 = KNERON_OCR +3,


//Category Audio related 600~900
    KNERON_AUDIO = 600,
    KNERON_KWS_DSCNN3_149_10_1 = KNERON_AUDIO,
    KNERON_SIMPLE_COMMAND_DSCNN3_49_10_1 = KNERON_AUDIO +1,
    KNERON_SOUND_CLASSIFICATION_THINRESNET34_128_250_3 = KNERON_AUDIO +2,
    KNERON_ASR_ENCODER_1_1000_64 = KNERON_AUDIO+3,
    KNERON_ASR_DECODER_1024 = KNERON_AUDIO+4,
    KNERON_SOUND_CLASSIFICATION_11CLASSES_RESNET34_128_250_3 = KNERON_AUDIO +6, //Add baby crying class
    KNERON_TTS_AM = KNERON_AUDIO +7,
    KNERON_TTS_VO = KNERON_AUDIO +8,
    KNERON_TTS_FRONTEND = KNERON_AUDIO +9,
    KNERON_SILERO_VAD = KNERON_AUDIO +10,
    KNERON_THINRESNET34_GVLAD = KNERON_AUDIO +11, // 512-dimensional speakcer feature extraction
    KNERON_THINRESNET34_GVLAD_10_SECONDS = KNERON_AUDIO +12, // 512-dimensional speakcer feature extraction for 10 seconds input
    KNERON_THINRESNET34_GVLAD_15_SECONDS = KNERON_AUDIO +13, // 512-dimensional speakcer feature extraction for 15 seconds input
    KNERON_TTS_COSYVOICE = KNERON_AUDIO + 14,
    KNERON_SOUND_CLASSIFICATION_12CLASSES_RESNET34_128_250_3 = KNERON_AUDIO +15, //Add speech class
    KNERON_SOUND_CLASSIFICATION_13CLASSES_RESNET34_128_250_3 = KNERON_AUDIO +16, //Add glass breaking class

//Category Depth prediction related
    KNERON_DEPTH = 700,
    KNERON_DEPTH_RESNET18_320_480_3 = KNERON_DEPTH,
    KNERON_RAFT_FRONT_272_480_3 = KNERON_DEPTH +1,
    KNERON_RAFT_GRU_272_480_3 = KNERON_DEPTH +2,
    KNERON_RAFT_UP_272_480_3 = KNERON_DEPTH +3,
    KNERON_STEREONET_FE_480_640_3 = KNERON_DEPTH +4, // Feature Extraction
    KNERON_STEREONET_CC_120_160_320 = KNERON_DEPTH +5, // Cost Construction
    KNERON_STEREONET_CA_120_160_48 = KNERON_DEPTH +6, // Cost Aggregation
    KNERON_STEREONET_CN_480_640_3 = KNERON_DEPTH +7, // Context Net
    
//Category tracker related 900~1000
    KNERON_TRACKER= 900,
    KNERON_TRACKER_UPDATE=901,
    KNERON_TRACKER_GET_DATEBASE=902,
    KNERON_TRACKER_RESET_DATEBASE=903,


//Category SDK test related
    KNERON_CAT_SDK_TEST = 1000,
    KNERON_SDK_FD = KNERON_CAT_SDK_TEST,
    KNERON_SDK_LM = KNERON_CAT_SDK_TEST +1,
    KNERON_SDK_FR = KNERON_CAT_SDK_TEST +2,

// Category Function Runner related 2000
    KNERON_FUNCTION = 2000,
    KNERON_FUNCTION_FANIR_CLS = KNERON_FUNCTION,
    KNERON_FUNCTION_OCC_CLS = KNERON_FUNCTION +1,
    KNERON_FUNCTION_LMSEG_FUSE = KNERON_FUNCTION +2,
    KNERON_FUNCTION_FILTER_SCORE = KNERON_FUNCTION +3,
    KNERON_FUNCTION_BLINK_DETECT = KNERON_FUNCTION +4,
    KNERON_FUNCTION_NMS = KNERON_FUNCTION +5,
    KNERON_FUNCTION_FILTER_PD_FALSEPOSITIVE = KNERON_FUNCTION +6,
    KNERON_FUNCTION_TRACKER = KNERON_FUNCTION +7,
    KNERON_FUNCTION_LANDMARK_SCORE_FILTER = KNERON_FUNCTION +8,
    KNERON_FUNCTION_FILTER_REID = KNERON_FUNCTION +9,
    KNERON_FUNCTION_IS_SKIP = KNERON_FUNCTION +10,
    KNERON_FUNCTION_CHOOSE_LARGEBOX = KNERON_FUNCTION + 11,
    KNERON_FUNCTION_FILTERPITCH = KNERON_FUNCTION + 12,
    KNERON_FUNCTION_FILTERPOSE = KNERON_FUNCTION+13,
    KNERON_FUNCTION_COMBINEBOX_PDFALSEPOSITIVE = KNERON_FUNCTION + 14,
    KNERON_FUNCTION_FILTERBOXSIZE = KNERON_FUNCTION + 15,
    KNERON_FUNCTION_FARGB_CLS = KNERON_FUNCTION + 16,
    KNERON_FUNCTION_RGBCHECKER = KNERON_FUNCTION + 17,
    KNERON_FUNCTION_NIRCHECKER = KNERON_FUNCTION + 18,
    KNERON_FUNCTION_FRISKIP = KNERON_FUNCTION +19,
    KNERON_FUNCTION_MASKCHECKER = KNERON_FUNCTION +20,
    KNERON_FUNCTION_BBOXLMPOSE_FILTER = KNERON_FUNCTION + 21,
    KNERON_FUNCTION_FUSESKIP = KNERON_FUNCTION + 22,
    KNERON_FUNCTION_RETAIN_PERSONCATEGORY = KNERON_FUNCTION + 23,
    KNERON_FUNCTION_CHOOSE_CENTER_BBOX = KNERON_FUNCTION + 24,
    KNERON_FUNCTION_FILTER_SCORE_CLASS = KNERON_FUNCTION + 25,
    KNERON_FUNCTION_BBOX_LM_LIVENESS_FILTER = KNERON_FUNCTION + 26,
    KNERON_FUNCTION_UPPERSQUARE_BBOX = KNERON_FUNCTION + 27,
    KNERON_FUNCTION_LOWERSQUARE_BBOX = KNERON_FUNCTION + 28,
    KNERON_FUNCTION_FAIRMOT = KNERON_FUNCTION + 29,
    KNERON_FUNCTION_MERGEBOX = KNERON_FUNCTION +30,
    KNERON_FUNCTION_NIR_OCC_MBV=KNERON_FUNCTION +31,
    KNERON_FUNCTION_FA_NIR_SH=KNERON_FUNCTION +32,
    KNERON_FUNCTION_EYE_LMK_FUSE=KNERON_FUNCTION +33,
    KNERON_FUNCTION_FILTER_GLASSES=KNERON_FUNCTION +34,
    KNERON_FUNCTION_YOLOLP2WPODFORMAT=KNERON_FUNCTION +36,
    KNERON_FUNCTION_AGGREGATE_OCCLUSION_CLASSIFIER_INPUTS=KNERON_FUNCTION +37,
    KNERON_FUNCTION_FILTER_BBOXES_BY_PITCH_RESULTS=KNERON_FUNCTION +38,
    KNERON_FUNCTION_REORDER_CENTER_BBOXES=KNERON_FUNCTION +39,
    KNERON_FUNCTION_GENERAL_SCORE_FILTER=KNERON_FUNCTION+40,
    KNERON_FER_CROP = KNERON_FUNCTION+41,
    KNERON_FUNCTION_FILTER_FACE_WITH_CLOSED_EYES = KNERON_FUNCTION + 42,
    KNERON_FUNCTION_EXPAND_PLATE = KNERON_FUNCTION + 43,
    KNERON_FUNCTION_BBOX_TO_STRING = KNERON_FUNCTION + 44,
    KNERON_FUNCTION_OCR_REMOVE_DIGITS = KNERON_FUNCTION + 45,
    KNERON_FUNCTION_LMK_SELECTOR = KNERON_FUNCTION + 46,
    KNERON_FUNCTION_REVERSE_KPTS = KNERON_FUNCTION + 47,
    KNERON_FUNCTION_REVERSE_KPTS_FULLBODY = KNERON_FUNCTION + 48,
    KNERON_FUNCTION_MERGE_YOLO_TYPE_CARPLATES = KNERON_FUNCTION + 49,
    KNERON_FUNCTION_MERGE_BBOX_EMB = KNERON_FUNCTION + 50,
    KNERON_FUNCTION_CROP_IMG_AGEGENDER = KNERON_FUNCTION + 51,
    KNERON_FUNCTION_IMG_FLIP = KNERON_FUNCTION + 52,
    KNERON_FUNCTION_AVERAGE_EMB = KNERON_FUNCTION + 53,
    KNERON_FUNCTION_GETVALIDREIDBBOX = KNERON_FUNCTION + 54,
    KNERON_FUNCTION_COMBINEVALIDINVALIDBBOX = KNERON_FUNCTION + 55,
    KNERON_MATMUL = KNERON_OB_DETECT + 56,
    KNERON_FUNCTION_MERGENODE = KNERON_OB_DETECT + 57,
    KNERON_FUNCTION_RETINAFACE_MERGERBOX = KNERON_FUNCTION + 58,
    KNERON_YOLOV5S_PersonBottleChairPottedplant4_832_480_3 = KNERON_OB_DETECT + 59,
    KNERON_YOLOV5S_PersonHead2_480_256_3 = KNERON_OB_DETECT + 60,
    KNERON_FUNCTION_KEEP_BBOX_BY_CLASS_IDS = KNERON_FUNCTION + 61,
    KNERON_ByteTrack = KNERON_FUNCTION + 62,
    KNERON_FUNCTION_SPLIT_OCCLUDED_BBOX = KNERON_FUNCTION + 63,
    KNERON_FUNCTION_GET_OCCLUDED_UNMATCHED_BBOX = KNERON_FUNCTION + 64,
    KNERON_FUNCTION_SIMPLE_IGNORE_FACE_OF_BAD_POSE = KNERON_FUNCTION + 65,
    KNERON_FUNCTION_SIMPLE_IGNORE_FACE_OF_BAD_POSE_WITH_CONFIDENCE = KNERON_FUNCTION + 66,
    KNERON_FUNCTION_FILTER_BICYCLE_MOTORCYCLE = KNERON_FUNCTION + 67,
    KNERON_FUNCTION_SKIP_REID_FILTER = KNERON_FUNCTION + 68,
    KNERON_FUNCTION_TRACKING_WO_REID = KNERON_FUNCTION + 69,
    KNERON_FUNCTION_OCC_CHECKER = KNERON_FUNCTION + 70,
    KNERON_FUNCTION_TRACKER_IN_DET_FORMAT = KNERON_FUNCTION +71,
    KNERON_FUNCTION_LOW_HIGH_SCORE_BBOX_SPLIT = KNERON_FUNCTION +73,
    KNERON_FUNCTION_RM_INCOMPLETE_BBOX = KNERON_FUNCTION +74,
    KNERON_FUNCTION_RM_PERSON_IN_TV = KNERON_FUNCTION +75,
    KNERON_FUNCTION_BBOX_LM_OCCLU_FILTER = KNERON_FUNCTION +76,
    KNERON_FUNCTION_APPEND_EMPTY_LIST_TO_ORIGINAL_OUTPUT = KNERON_FUNCTION + 77,
    KNERON_FUNCTION_DEPTH_DECODE_CROP_RESIZE = KNERON_FUNCTION +78,
    KNERON_FUNCTION_SKIP_DARK_BRIGHT_FACE = KNERON_FUNCTION + 79,
    KNERON_FUNCTION_TRACKER_KPTS = KNERON_FUNCTION + 80,
    KNERON_FUNCTION_NIR_CROP_RESIZE = KNERON_FUNCTION + 81,
    KNERON_FUNCTION_DEPTH_FUSE_FILTER = KNERON_FUNCTION + 82,
    KNERON_FUNCTION_TWO_STAGE_SCORE_COMBINE = KNERON_FUNCTION + 83,
    KNERON_FUNCTION_FILTER_LARGE_AREA_LOWER_SCORE = KNERON_FUNCTION + 84,
    KNERON_FUNCTION_NORMALIZE_GLUE_KPTS = KNERON_FUNCTION + 85,
    
//Category Segmentation
    KNERON_SEGMENTATION = 3000,
    KNERON_INSTANCE_YOLACT_R18_FPN_448_448_3 = KNERON_SEGMENTATION,
    KNERON_SEGMENTATION_STDCNET_CITYSCAPES_512_1024_3 = KNERON_SEGMENTATION + 1,
    KNERON_SEGMENTATION_STDCNET_INDOOR_480_640_3 = KNERON_SEGMENTATION + 2,
    KNERON_SEGMENTATION_DDRNET23SLIMCONV_INDOOR_480_640_3 = KNERON_SEGMENTATION + 3,
    KNERON_INSTANCE_SOLO_R18_FPN_448_448_3 = KNERON_SEGMENTATION + 4,
    KNERON_SEGMENTATION_DDRNET23SLIMCONV_POLY_INDOOR_480_640_3 = KNERON_SEGMENTATION + 5,
    KNERON_SEGMENTATION_PIDNETS_CITYSCAPES_BDD10K_192_256_3 = KNERON_SEGMENTATION + 30,

//Category System models
    KNERON_SYSTEMMODELS = 4000,
    KNERON_IMAGENET_MOBILENETV2_224_224_3 = KNERON_SYSTEMMODELS,
    KNERON_IMAGENET_MOBILENETV2_QAT_224_224_3 = KNERON_SYSTEMMODELS + 1,


//The IDs of KNERON_OB_DETECT and KNERON_OCR are conflicting, please don't use KNERON_OB_DETECT anymore, use KNERON_OB_DETECT_ instead
//Category Object Detection related 5000~10000
    KNERON_OB_DETECT_                                                       = 5000,
    KNERON_YOLOV705_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptopHead8_192_928_3 = KNERON_OB_DETECT_,
    KNERON_YOLOV705_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptopHead8_448_2112_3 = KNERON_OB_DETECT_ + 1,
    KNERON_YOLOV705_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptopHead8_640_1440_3 = KNERON_OB_DETECT_ + 2,
    KNERON_YOLOV7TINY_PersonCatDogBottleChairPottedplantHead7_480_256_3 = KNERON_OB_DETECT_ + 3,
    KNERON_YOLOV7pose_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptopHead8_832_480_3 = KNERON_OB_DETECT_ + 4,
    KNERON_YOLOV7TINY_HADNDETECTION_640_640_3 = KNERON_OB_DETECT_ + 5,
    KNERON_YOLOV7pose_61kpts_PersonHeadHand3_640_384_3 = KNERON_OB_DETECT_ + 6,
    KNERON_YOLOV705_PersonBicycleCarMotorcycleBusTruckHead7_512_288_3       = KNERON_OB_DETECT_ + 30,
    KNERON_YOLOV705_PersonBottleChairPottedplantHead5_608_800_3             = KNERON_OB_DETECT_ + 34,
    KNERON_YOLOV7pose_tiny_LicensePlateDetection_640_640_3                  = KNERON_OB_DETECT_ + 43,
    KNERON_YOLOV705_LicensePlateRecognition_256_96_3                        = KNERON_OB_DETECT_ + 44,
    KNERON_YOLOV705_kbro_PersonBottleChairPottedplantHead5_608_800_3        = KNERON_OB_DETECT_ + 47,
    KNERON_YOLOV705_PersonBicycleCarMotorcycleBusTruckHeadTrafficCone8_512_288_3 = KNERON_OB_DETECT_ + 57,
    KNERON_YOLOV705_PersonBicycleCarMotorcycleBusTruckHeadTrafficConeTrafficPoleTrafficBarrel10_512_288_3 = KNERON_OB_DETECT_ + 68,
    KNERON_YOLOV7TINY075_PersonBicycleCarMotorcycleBusTruckHead7_448_224_3 = KNERON_OB_DETECT_ + 73,
    KNERON_YOLOV7TINY075_PersonBicycleCarMotorcycleBusTruckHead7_96_64_3 = KNERON_OB_DETECT_ + 74,
    KNERON_YOLOV7TINY_DMS_640_384_3 = KNERON_OB_DETECT_ + 76,
    KNERON_YOLOV7TINY_HORSE24_640_384_3 = KNERON_OB_DETECT_ + 78,    
        
    //Category Model Zoo training models
    //20000~30000
    KNERON_MODEL_ZOO = 20000,
    KNERON_MODEL_ZOO_MOBILENETV2 = KNERON_MODEL_ZOO,
    KNERON_MODEL_ZOO_RESNET18 = KNERON_MODEL_ZOO + 1,
    KNERON_MODEL_ZOO_RESNET50 = KNERON_MODEL_ZOO + 2,
    KNERON_MODEL_ZOO_FP_Classifier = KNERON_MODEL_ZOO + 3,
    KNERON_MODEL_ZOO_FCOS_DARKNET53s = KNERON_MODEL_ZOO + 4,
    KNERON_MODEL_ZOO_YOLOV5s_NoUpsample = KNERON_MODEL_ZOO + 5,
    KNERON_MODEL_ZOO_YOLOV5s = KNERON_MODEL_ZOO + 6,


//Category Customer models
//0x8000 = 32768
    CUSTOMER = 32768,

Count
};

#endif
