mirror of https://github.com/JosephKJ/OWOD.git
Auxillary changes (CVPR-21 submit tip)
parent
68da418854
commit
d601bbe750
|
@ -1,20 +1,23 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/10_p_10_base_20_FC/model_final.pth"
|
||||
WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/base_10/model_final.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_train', )
|
||||
TRAIN: ('voc_2007_trainval', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (12000, 16000)
|
||||
MAX_ITER: 18000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/10_p_10_base_20_FC"
|
||||
OUTPUT_DIR: "./output/iOD/base_10"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 0
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
CUR_INTRODUCED_CLS: 10
|
||||
SEED: 9999
|
|
@ -12,6 +12,7 @@ SOLVER:
|
|||
STEPS: (48000,52000)
|
||||
MAX_ITER: 54000
|
||||
WARMUP_ITERS: 100
|
||||
CHECKPOINT_PERIOD: 1000
|
||||
OUTPUT_DIR: "./output/iOD/10_p_10_incr_ft"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/10_p_10_incr_with_unk_wo_cls_ft/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/10_p_10_ft_10_per_class/model_final.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_trn_ft', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (48000,52000)
|
||||
MAX_ITER: 54000
|
||||
STEPS: (32000,34000)
|
||||
MAX_ITER: 36000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/10_p_10_incr_with_unk_wo_cls_ft"
|
||||
OUTPUT_DIR: "./output/iOD/10_p_10_ft_10_per_class"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 10
|
||||
CUR_INTRODUCED_CLS: 10
|
||||
CUR_INTRODUCED_CLS: 10
|
||||
SEED: 9999
|
|
@ -1,18 +1,20 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/10_p_10_incr_with_unk_wo_cls/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/10_p_10/model_0009999.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_train', )
|
||||
TRAIN: ('voc_2007_trainval', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (32000, 34000)
|
||||
MAX_ITER: 36000
|
||||
STEPS: (22000, 24000)
|
||||
MAX_ITER: 26000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/10_p_10_incr_with_unk_wo_cls"
|
||||
OUTPUT_DIR: "./output/iOD/10_p_10"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: True
|
||||
ENABLE_CLUSTERING: False
|
||||
|
@ -20,4 +22,5 @@ OWOD:
|
|||
CUR_INTRODUCED_CLS: 10
|
||||
CLUSTERING:
|
||||
START_ITER: 20000
|
||||
UPDATE_MU_ITER: 3100
|
||||
UPDATE_MU_ITER: 3100
|
||||
SEED: 9999
|
|
@ -0,0 +1,23 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/base_10/model_final.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_trainval', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (12000, 16000)
|
||||
MAX_ITER: 18000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/base_15"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 0
|
||||
CUR_INTRODUCED_CLS: 15
|
||||
SEED: 9999
|
|
@ -0,0 +1,23 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/15_p_5_ft/model_final.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_trn_ft', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (32000,34000)
|
||||
MAX_ITER: 36000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/15_p_5_ft"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 15
|
||||
CUR_INTRODUCED_CLS: 5
|
||||
SEED: 9999
|
|
@ -0,0 +1,26 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/15_p_5/model_0009999.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_trainval', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (22000, 24000)
|
||||
MAX_ITER: 20000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/15_p_5"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: True
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 15
|
||||
CUR_INTRODUCED_CLS: 5
|
||||
CLUSTERING:
|
||||
START_ITER: 20000
|
||||
UPDATE_MU_ITER: 3100
|
||||
SEED: 9999
|
|
@ -0,0 +1,23 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/base_10/model_final.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_trainval', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (12000, 16000)
|
||||
MAX_ITER: 18000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/base_19"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 0
|
||||
CUR_INTRODUCED_CLS: 19
|
||||
SEED: 9999
|
|
@ -0,0 +1,23 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/19_p_1_ft/model_final.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_trn_ft', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (32000,34000)
|
||||
MAX_ITER: 36000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/19_p_1_ft"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 19
|
||||
CUR_INTRODUCED_CLS: 1
|
||||
SEED: 9999
|
|
@ -0,0 +1,26 @@
|
|||
_BASE_: "../../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/19_p_1/model_0009999.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_trainval', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (22000, 24000)
|
||||
MAX_ITER: 20000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/19_p_1"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: True
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 19
|
||||
CUR_INTRODUCED_CLS: 1
|
||||
CLUSTERING:
|
||||
START_ITER: 20000
|
||||
UPDATE_MU_ITER: 3100
|
||||
SEED: 9999
|
|
@ -5,8 +5,6 @@ MODEL:
|
|||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
POSITIVE_FRACTION: 0.25
|
||||
NMS_THRESH_TEST: 0.4
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/base_19/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/10_p_10_ft/model_0024999.pth"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/iOD/base_10/model_final.pth"
|
||||
ROI_HEADS:
|
||||
# NUM_CLASSES: 21 # 0-19 Known class; 20 -> Unknown; 21 -> Background.
|
||||
NUM_CLASSES: 21
|
||||
# NMS_THRESH_TEST: 0.2
|
||||
# SCORE_THRESH_TEST: 0.001
|
||||
ROI_BOX_HEAD:
|
||||
CLS_AGNOSTIC_BBOX_REG: True
|
||||
DATASETS:
|
||||
TRAIN: ('voc_2007_trainval', )
|
||||
TEST: ('voc_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (32000, 34000)
|
||||
MAX_ITER: 36000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/iOD/10_p_10_test"
|
||||
OWOD:
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: True
|
||||
ENABLE_CLUSTERING: False
|
||||
PREV_INTRODUCED_CLS: 15
|
||||
CUR_INTRODUCED_CLS: 5
|
||||
CLUSTERING:
|
||||
START_ITER: 20000
|
||||
UPDATE_MU_ITER: 3100
|
||||
SEED: 9999
|
|
@ -2,7 +2,7 @@ _BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
|||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_ENABLE_CLUSTERING/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2_ft_baseline/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2_ft_10/model_final.pth"
|
||||
DATASETS:
|
||||
TRAIN: ('t2_voc_coco_2007_ft', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
|
@ -10,7 +10,7 @@ SOLVER:
|
|||
STEPS: (50000, 60000)
|
||||
MAX_ITER: 74000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t2_ft_baseline"
|
||||
OUTPUT_DIR: "./output/t2_ft_10"
|
||||
OWOD:
|
||||
PREV_INTRODUCED_CLS: 20
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_ENABLE_CLUSTERING/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2_ft_10/model_final.pth"
|
||||
DATASETS:
|
||||
TRAIN: ('t2_voc_coco_2007_ft_10', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (50000, 60000)
|
||||
MAX_ITER: 74000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t2_ft_10"
|
||||
OWOD:
|
||||
PREV_INTRODUCED_CLS: 20
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
CLUSTERING:
|
||||
START_ITER: 18000
|
|
@ -0,0 +1,20 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_ENABLE_CLUSTERING/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2_ft_100/model_final.pth"
|
||||
DATASETS:
|
||||
TRAIN: ('t2_voc_coco_2007_ft_20', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (50000, 60000)
|
||||
MAX_ITER: 74000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t2_ft_100"
|
||||
OWOD:
|
||||
PREV_INTRODUCED_CLS: 20
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
CLUSTERING:
|
||||
START_ITER: 18000
|
|
@ -0,0 +1,20 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_ENABLE_CLUSTERING/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2_ft_200/model_final.pth"
|
||||
DATASETS:
|
||||
TRAIN: ('t2_voc_coco_2007_ft_200', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (50000, 60000)
|
||||
MAX_ITER: 74000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t2_ft_200"
|
||||
OWOD:
|
||||
PREV_INTRODUCED_CLS: 20
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
CLUSTERING:
|
||||
START_ITER: 18000
|
|
@ -0,0 +1,20 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_ENABLE_CLUSTERING/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2_ft_400/model_final.pth"
|
||||
DATASETS:
|
||||
TRAIN: ('t2_voc_coco_2007_ft_400', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (50000, 60000)
|
||||
MAX_ITER: 74000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t2_ft_400"
|
||||
OWOD:
|
||||
PREV_INTRODUCED_CLS: 20
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
CLUSTERING:
|
||||
START_ITER: 18000
|
|
@ -0,0 +1,20 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_ENABLE_CLUSTERING/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2_ft_50/model_final.pth"
|
||||
DATASETS:
|
||||
TRAIN: ('t2_voc_coco_2007_ft_50', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (50000, 60000)
|
||||
MAX_ITER: 74000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t2_ft_50"
|
||||
OWOD:
|
||||
PREV_INTRODUCED_CLS: 20
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
CLUSTERING:
|
||||
START_ITER: 18000
|
|
@ -2,7 +2,7 @@ _BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
|||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_ENABLE_CLUSTERING/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2_ft/model_final.pth"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t2/model_final.pth"
|
||||
DATASETS:
|
||||
TRAIN: ('t2_voc_coco_2007_train', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
DATASETS:
|
||||
TRAIN: ('t2_voc_coco_2007_val_with_known_and_unk', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (50000, 60000)
|
||||
MAX_ITER: 50000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t2_train_with_unk"
|
||||
OWOD:
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
PREV_INTRODUCED_CLS: 20
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
CLUSTERING:
|
||||
ITEMS_PER_CLASS: 20
|
||||
START_ITER: 18000
|
||||
UPDATE_MU_ITER: 3000
|
||||
MOMENTUM: 0.99
|
||||
Z_DIMENSION: 128
|
|
@ -0,0 +1,18 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
DATASETS:
|
||||
TRAIN: ('t3_voc_coco_2007_val_with_known_and_unk', )
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (110000, 112000)
|
||||
MAX_ITER: 50000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t3_train_with_unk"
|
||||
OWOD:
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
PREV_INTRODUCED_CLS: 40
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
CLUSTERING:
|
||||
START_ITER: 74000
|
|
@ -0,0 +1,18 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
DATASETS:
|
||||
TRAIN: ('t4_voc_coco_2007_val_with_known_and_unk', )
|
||||
TEST: ('voc_coco_2007_test', )
|
||||
SOLVER:
|
||||
STEPS: (155500, 156500)
|
||||
MAX_ITER: 50000
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t4_train_with_all"
|
||||
OWOD:
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_THRESHOLD_AUTOLABEL_UNK: False
|
||||
PREV_INTRODUCED_CLS: 60
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
CLUSTERING:
|
||||
START_ITER: 116500
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -46,14 +46,15 @@ T4_CLASS_NAMES = [
|
|||
UNK_CLASS = ["unknown"]
|
||||
|
||||
# Change this accodingly for each task t*
|
||||
# known_classes = list(itertools.chain(VOC_CLASS_NAMES, T2_CLASS_NAMES, T3_CLASS_NAMES, T4_CLASS_NAMES))
|
||||
# train_files = ['/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/t4_train.txt','/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/t3_train.txt','/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/t2_train.txt','/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/t1_train.txt']
|
||||
known_classes = list(itertools.chain(VOC_CLASS_NAMES, T2_CLASS_NAMES))
|
||||
train_files = ['/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/t2_train.txt','/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/t1_train.txt']
|
||||
|
||||
known_classes = list(itertools.chain(VOC_CLASS_NAMES))
|
||||
train_files = ['/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/train.txt']
|
||||
# known_classes = list(itertools.chain(VOC_CLASS_NAMES))
|
||||
# train_files = ['/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/train.txt']
|
||||
annotation_location = '/home/fk1/workspace/OWOD/datasets/VOC2007/Annotations'
|
||||
dest_file = '/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/train_ft_1.txt'
|
||||
items_per_class = 50
|
||||
|
||||
items_per_class = 20
|
||||
dest_file = '/home/fk1/workspace/OWOD/datasets/VOC2007/ImageSets/Main/t2_ft_' + str(items_per_class) + '.txt'
|
||||
|
||||
file_names = []
|
||||
for tf in train_files:
|
||||
|
|
|
@ -217,12 +217,20 @@ def register_all_pascal_voc(root):
|
|||
("voc_2012_val", "VOC2012", "val"),
|
||||
("t1_voc_coco_2007_train", "VOC2007", "t1_train"),
|
||||
("t1_voc_coco_2007_val_with_known_and_unk", "VOC2007", "t1_train_with_unk"),
|
||||
("t2_voc_coco_2007_val_with_known_and_unk", "VOC2007", "t2_train_with_unk"),
|
||||
("t3_voc_coco_2007_val_with_known_and_unk", "VOC2007", "t3_train_with_unk"),
|
||||
("t4_voc_coco_2007_val_with_known_and_unk", "VOC2007", "t4_train"),
|
||||
("t1_voc_coco_2007_known_test", "VOC2007", "t1_known_test"),
|
||||
("voc_coco_2007_test", "VOC2007", "all_task_test"),
|
||||
("voc_coco_2007_val", "VOC2007", "all_task_val"),
|
||||
("t1_voc_coco_2007_ft", "VOC2007", "t1_ft"),
|
||||
("t2_voc_coco_2007_train", "VOC2007", "t2_train"),
|
||||
("t2_voc_coco_2007_ft", "VOC2007", "t2_ft"),
|
||||
("t2_voc_coco_2007_ft_10", "VOC2007", "t2_ft_10"),
|
||||
("t2_voc_coco_2007_ft_20", "VOC2007", "t2_ft_20"),
|
||||
("t2_voc_coco_2007_ft_50", "VOC2007", "t2_ft_50"),
|
||||
("t2_voc_coco_2007_ft_200", "VOC2007", "t2_ft_200"),
|
||||
("t2_voc_coco_2007_ft_400", "VOC2007", "t2_ft_400"),
|
||||
("t3_voc_coco_2007_train", "VOC2007", "t3_train"),
|
||||
("t3_voc_coco_2007_ft", "VOC2007", "t3_ft"),
|
||||
("t4_voc_coco_2007_train", "VOC2007", "t4_train"),
|
||||
|
|
|
@ -7,6 +7,7 @@ import xml.etree.ElementTree as ET
|
|||
from typing import List, Tuple, Union
|
||||
from fvcore.common.file_io import PathManager
|
||||
import itertools
|
||||
import logging
|
||||
|
||||
from detectron2.data import DatasetCatalog, MetadataCatalog
|
||||
from detectron2.structures import BoxMode
|
||||
|
@ -44,7 +45,7 @@ VOC_CLASS_NAMES = [
|
|||
]
|
||||
|
||||
T2_CLASS_NAMES = [
|
||||
"truck", "traffic light", "fire hydrant", "stop sign", "parking meter",
|
||||
"?", "traffic light", "fire hydrant", "stop sign", "parking meter",
|
||||
"bench", "elephant", "bear", "zebra", "giraffe",
|
||||
"backpack", "umbrella", "handbag", "tie", "suitcase",
|
||||
"microwave", "oven", "toaster", "sink", "refrigerator"
|
||||
|
@ -87,8 +88,13 @@ def load_voc_instances(dirname: str, split: str, class_names: Union[List[str], T
|
|||
anno_file = os.path.join(annotation_dirname, fileid + ".xml")
|
||||
jpeg_file = os.path.join(dirname, "JPEGImages", fileid + ".jpg")
|
||||
|
||||
with PathManager.open(anno_file) as f:
|
||||
tree = ET.parse(f)
|
||||
try:
|
||||
with PathManager.open(anno_file) as f:
|
||||
tree = ET.parse(f)
|
||||
except:
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.info('Not able to load: ' + anno_file + '. Continuing without aboarting...')
|
||||
continue
|
||||
|
||||
r = {
|
||||
"file_name": jpeg_file,
|
||||
|
|
|
@ -328,8 +328,14 @@ def parse_rec(filename, known_classes):
|
|||
"aeroplane", "diningtable", "motorbike",
|
||||
"pottedplant", "sofa", "tvmonitor"
|
||||
]
|
||||
with PathManager.open(filename) as f:
|
||||
tree = ET.parse(f)
|
||||
try:
|
||||
with PathManager.open(filename) as f:
|
||||
tree = ET.parse(f)
|
||||
except:
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.info('Not able to load: ' + filename + '. Continuing without aboarting...')
|
||||
return None
|
||||
|
||||
objects = []
|
||||
for obj in tree.findall("object"):
|
||||
obj_struct = {}
|
||||
|
@ -416,10 +422,16 @@ def voc_eval(detpath, annopath, imagesetfile, classname, ovthresh=0.5, use_07_me
|
|||
lines = f.readlines()
|
||||
imagenames = [x.strip() for x in lines]
|
||||
|
||||
imagenames_filtered = []
|
||||
# load annots
|
||||
recs = {}
|
||||
for imagename in imagenames:
|
||||
recs[imagename] = parse_rec(annopath.format(imagename), tuple(known_classes))
|
||||
rec = parse_rec(annopath.format(imagename), tuple(known_classes))
|
||||
if rec is not None:
|
||||
recs[imagename] = rec
|
||||
imagenames_filtered.append(imagename)
|
||||
|
||||
imagenames = imagenames_filtered
|
||||
|
||||
# extract gt objects for this class
|
||||
class_recs = {}
|
||||
|
|
|
@ -618,7 +618,7 @@ class FastRCNNOutputLayers(nn.Module):
|
|||
|
||||
storage = get_event_storage()
|
||||
c_loss = 0
|
||||
if storage.iter == self.clustering_start_iter :
|
||||
if storage.iter == self.clustering_start_iter:
|
||||
items = self.feature_store.retrieve(-1)
|
||||
for index, item in enumerate(items):
|
||||
if len(item) == 0:
|
||||
|
|
|
@ -831,7 +831,7 @@ class Visualizer:
|
|||
x,
|
||||
y,
|
||||
text,
|
||||
size=font_size * self.output.scale,
|
||||
size=25,
|
||||
family="sans-serif",
|
||||
bbox={"facecolor": "black", "alpha": 0.8, "pad": 0.7, "edgecolor": "none"},
|
||||
verticalalignment="top",
|
||||
|
@ -842,7 +842,7 @@ class Visualizer:
|
|||
)
|
||||
return self.output
|
||||
|
||||
def draw_box(self, box_coord, alpha=0.5, edge_color="g", line_style="-"):
|
||||
def draw_box(self, box_coord, alpha=0.6, edge_color="g", line_style="-"):
|
||||
"""
|
||||
Args:
|
||||
box_coord (tuple): a tuple containing x0, y0, x1, y1 coordinates, where x0 and y0
|
||||
|
@ -869,7 +869,7 @@ class Visualizer:
|
|||
height,
|
||||
fill=False,
|
||||
edgecolor=edge_color,
|
||||
linewidth=linewidth * self.output.scale,
|
||||
linewidth=20,
|
||||
alpha=alpha,
|
||||
linestyle=line_style,
|
||||
)
|
||||
|
|
84
run.sh
84
run.sh
|
@ -9,7 +9,87 @@
|
|||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52127' --resume --config-file ./configs/OWOD/t3/t3_train_baseline_only_frcnn.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52133' --resume --config-file ./configs/OWOD/iOD/10_p_10/next_10_train_with_unk_det.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52133' --resume --config-file ./configs/OWOD/iOD/10_p_10/ft.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52134' --resume --config-file ./configs/OWOD/iOD/10_p_10/ft_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52133' --resume --config-file ./configs/OWOD/iOD/10_p_10/ft.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52134' --resume --config-file ./configs/OWOD/iOD/10_p_10/ft_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52125' --config-file ./configs/OWOD/iOD/10_p_10/base_10_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
|
||||
#cp -r /home/fk1/workspace/OWOD/output/iOD/base_10 /home/fk1/workspace/OWOD/output/iOD/10_p_10
|
||||
|
||||
|
||||
|
||||
# current running
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52126' --resume --config-file ./configs/OWOD/iOD/10_p_10/next_10_train_with_unk_detection.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#cp -r /home/fk1/workspace/OWOD/output/iOD/10_p_10 /home/fk1/workspace/OWOD/output/iOD/10_p_10_ft_10_per_class
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52127' --resume --config-file ./configs/OWOD/iOD/10_p_10/ft_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52127' --config-file ./configs/OWOD/t2/t2_train_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52128' --config-file ./configs/OWOD/t3/t3_train_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52129' --config-file ./configs/OWOD/t4/t4_train_with_all_knowns.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
# Last one is not done.
|
||||
|
||||
|
||||
## 15 + 5
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52125' --config-file ./configs/OWOD/iOD/15_p_5/base_15_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#cp -r /home/fk1/workspace/OWOD/output/iOD/base_15 /home/fk1/workspace/OWOD/output/iOD/15_p_5
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52126' --resume --config-file ./configs/OWOD/iOD/15_p_5/next_5_train_with_ud.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#cp -r /home/fk1/workspace/OWOD/output/iOD/15_p_5 /home/fk1/workspace/OWOD/output/iOD/15_p_5_ft
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52127' --resume --config-file ./configs/OWOD/iOD/15_p_5/ft_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#
|
||||
## 19 + 1
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52128' --config-file ./configs/OWOD/iOD/19_p_1/base_19_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#cp -r /home/fk1/workspace/OWOD/output/iOD/base_19 /home/fk1/workspace/OWOD/output/iOD/19_p_1
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52129' --resume --config-file ./configs/OWOD/iOD/19_p_1/next_1_train_with_ud.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#cp -r /home/fk1/workspace/OWOD/output/iOD/19_p_1 /home/fk1/workspace/OWOD/output/iOD/19_p_1_ft
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52130' --resume --config-file ./configs/OWOD/iOD/19_p_1/ft_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
|
||||
|
||||
#
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52129' --config-file ./configs/OWOD/t4/t4_train_with_all_knowns.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52126' --resume --config-file ./configs/OWOD/iOD/15_p_5/next_5_train_with_ud.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#cp -r /home/fk1/workspace/OWOD/output/iOD/15_p_5 /home/fk1/workspace/OWOD/output/iOD/15_p_5_ft
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52127' --resume --config-file ./configs/OWOD/iOD/15_p_5/ft_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52129' --resume --config-file ./configs/OWOD/iOD/19_p_1/next_1_train_with_ud.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#cp -r /home/fk1/workspace/OWOD/output/iOD/19_p_1 /home/fk1/workspace/OWOD/output/iOD/19_p_1_ft
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52130' --resume --config-file ./configs/OWOD/iOD/19_p_1/ft_with_unk.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
|
||||
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52127' --resume --config-file ./configs/OWOD/t2/t2_ft_10.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52128' --resume --config-file ./configs/OWOD/t2/t2_ft_50.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52129' --resume --config-file ./configs/OWOD/t2/t2_ft_200.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52137' --resume --config-file ./configs/OWOD/t2/t2_ft_400.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
|
||||
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52137' --resume --config-file ./configs/OWOD/t2/t2_ft_20.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
|
||||
|
|
|
@ -43,6 +43,51 @@ def plot_tsne(X, label, total_num_classes):
|
|||
|
||||
plt.savefig('tsne.png')
|
||||
|
||||
def plot_tsne_indiv(X, label, total_num_classes):
|
||||
n_components = 2
|
||||
|
||||
# perplexities = [5, 30, 50, 100, 150]
|
||||
perplexities = list(range(10, 150, 10))
|
||||
|
||||
for i, perplexity in enumerate(perplexities):
|
||||
__, ax = plt.subplots()
|
||||
t0 = time()
|
||||
tsne = manifold.TSNE(n_components=n_components, init='random',
|
||||
random_state=0, perplexity=perplexity)
|
||||
Y = tsne.fit_transform(X)
|
||||
t1 = time()
|
||||
print("circles, perplexity=%d in %.2g sec" % (perplexity, t1 - t0))
|
||||
# ax.set_title("Perplexity=%d" % perplexity)
|
||||
#
|
||||
# sc = ax.scatter(Y[:, 0], Y[:, 1], c=label, cmap="plasma")
|
||||
|
||||
# palette = sns.color_palette(None, total_num_classes)
|
||||
# palette = sns.color_palette("flare", as_cmap=True)
|
||||
|
||||
flatui = ['#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', \
|
||||
'#911eb4', '#46f0f0', '#f032e6', '#bcf60c', '#fabebe', \
|
||||
'#008080', '#e6beff', '#9a6324', '#fffac8', '#800000', \
|
||||
'#aaffc3', '#808000', '#ffd8b1', '#000075', '#808080', \
|
||||
'#3498db']
|
||||
# sns.set_palette(flatui)
|
||||
sns.scatterplot(x=Y[:, 0], y=Y[:, 1], hue=label, ax=ax, legend='full', palette=flatui)
|
||||
|
||||
# sns.scatterplot(x=Y[:, 0], y=Y[:, 1], hue=label, ax=ax, legend='full', palette='colorblind')
|
||||
ax.xaxis.set_major_formatter(NullFormatter())
|
||||
ax.yaxis.set_major_formatter(NullFormatter())
|
||||
ax.axis('tight')
|
||||
# plt.legend(handles=sc.legend_elements()[0], labels=range(total_num_classes))
|
||||
|
||||
# plt.legend(handles=sc.legend_elements()[0], labels=['0', '1'])
|
||||
|
||||
# plt.show()
|
||||
# plt.legend(fontsize='xx-large', ncol=2, handleheight=2.4, labelspacing=0.05)
|
||||
plt.legend(ncol=6)
|
||||
|
||||
plt.savefig('tsne_' + str(perplexity) + '.png')
|
||||
plt.pause(0.0001)
|
||||
plt.clf()
|
||||
|
||||
maxlen_queue = 100
|
||||
total_num_classes = 22
|
||||
|
||||
|
@ -50,21 +95,38 @@ queues = [deque(maxlen=maxlen_queue) for _ in range(total_num_classes)]
|
|||
|
||||
source_dir = '/home/fk1/workspace/OWOD/output/features'
|
||||
|
||||
files = os.listdir(source_dir)
|
||||
for i, file in enumerate(files):
|
||||
path = os.path.join(source_dir, file)
|
||||
features, classes = torch.load(path)
|
||||
for f, c in zip(features, classes):
|
||||
queues[c.detach().cpu().numpy()].append(f.detach().cpu().numpy())
|
||||
# files = os.listdir(source_dir)
|
||||
# for i, file in enumerate(files):
|
||||
# path = os.path.join(source_dir, file)
|
||||
# features, classes = torch.load(path)
|
||||
# for f, c in zip(features, classes):
|
||||
# if c == 80:
|
||||
# c = 20
|
||||
# queues[c].append(f.detach().cpu().numpy())
|
||||
# elif c == 81:
|
||||
# c = 21
|
||||
# queues[c].append(f.detach().cpu().numpy())
|
||||
# elif c <= total_num_classes:
|
||||
# queues[c.detach().cpu().numpy()].append(f.detach().cpu().numpy())
|
||||
# if i%100 == 0:
|
||||
# print('Processing ' + str(i))
|
||||
# # if i == 2:
|
||||
# # break
|
||||
#
|
||||
# torch.save(queues, os.path.join(source_dir,'queues_tsne.pkl'))
|
||||
|
||||
queues = torch.load(os.path.join(source_dir,'queues_tsne.pkl'))
|
||||
|
||||
# if i == 2:
|
||||
# break
|
||||
x = []
|
||||
y = []
|
||||
for i, queue in enumerate(queues):
|
||||
if i == 20:
|
||||
continue
|
||||
if i == 21:
|
||||
i = 20
|
||||
for item in queue:
|
||||
x.append(item)
|
||||
y.append(i)
|
||||
|
||||
print('Going to plot')
|
||||
plot_tsne(x, y, total_num_classes)
|
||||
plot_tsne_indiv(x, y, total_num_classes)
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
import cv2
|
||||
import os
|
||||
import torch
|
||||
from torch.distributions.weibull import Weibull
|
||||
from torch.distributions.transforms import AffineTransform
|
||||
from torch.distributions.transformed_distribution import TransformedDistribution
|
||||
from detectron2.utils.logger import setup_logger
|
||||
setup_logger()
|
||||
|
||||
from detectron2.config import get_cfg
|
||||
from detectron2.engine import DefaultPredictor
|
||||
from detectron2.utils.visualizer import Visualizer
|
||||
from detectron2.data import MetadataCatalog
|
||||
|
||||
|
||||
def create_distribution(scale, shape, shift):
|
||||
wd = Weibull(scale=scale, concentration=shape)
|
||||
transforms = AffineTransform(loc=shift, scale=1.)
|
||||
weibull = TransformedDistribution(wd, transforms)
|
||||
return weibull
|
||||
|
||||
|
||||
def compute_prob(x, distribution):
|
||||
eps_radius = 0.5
|
||||
num_eval_points = 100
|
||||
start_x = x - eps_radius
|
||||
end_x = x + eps_radius
|
||||
step = (end_x - start_x) / num_eval_points
|
||||
dx = torch.linspace(x - eps_radius, x + eps_radius, num_eval_points)
|
||||
pdf = distribution.log_prob(dx).exp()
|
||||
prob = torch.sum(pdf * step)
|
||||
return prob
|
||||
|
||||
|
||||
def update_label_based_on_energy(logits, classes, unk_dist, known_dist):
|
||||
unknown_class_index = 80
|
||||
cls = classes
|
||||
lse = torch.logsumexp(logits[:, :10], dim=1)
|
||||
for i, energy in enumerate(lse):
|
||||
p_unk = compute_prob(energy, unk_dist)
|
||||
p_known = compute_prob(energy, known_dist)
|
||||
# print(str(p_unk) + ' -- ' + str(p_known))
|
||||
if torch.isnan(p_unk) or torch.isnan(p_known):
|
||||
continue
|
||||
if p_unk > p_known:
|
||||
cls[i] = unknown_class_index
|
||||
return cls
|
||||
|
||||
# Get image
|
||||
fnum = '451953'
|
||||
file_name = '000000' + fnum
|
||||
im = cv2.imread("/home/fk1/workspace/OWOD/datasets/VOC2007/JPEGImages/" + file_name + ".jpg")
|
||||
model = '/home/fk1/workspace/OWOD/output/t1_THRESHOLD_AUTOLABEL_UNK/model_final.pth'
|
||||
# model = '/home/fk1/workspace/OWOD/output/t1_clustering_with_save/model_final.pth'
|
||||
# model = '/home/fk1/workspace/OWOD/output/old/t1_20_class/model_final.pth'
|
||||
cfg_file = '/home/fk1/workspace/OWOD/configs/OWOD/t1/t1_test.yaml'
|
||||
|
||||
|
||||
# Get the configuration ready
|
||||
cfg = get_cfg()
|
||||
cfg.merge_from_file(cfg_file)
|
||||
cfg.MODEL.WEIGHTS = model
|
||||
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.27
|
||||
# cfg.MODEL.ROI_HEADS.NUM_CLASSES = 21
|
||||
|
||||
predictor = DefaultPredictor(cfg)
|
||||
outputs = predictor(im)
|
||||
|
||||
print('Before' + str(outputs["instances"].pred_classes))
|
||||
|
||||
param_save_location = os.path.join('/home/fk1/workspace/OWOD/output/t1_clustering_val/energy_dist_' + str(20) + '.pkl')
|
||||
params = torch.load(param_save_location)
|
||||
unknown = params[0]
|
||||
known = params[1]
|
||||
unk_dist = create_distribution(unknown['scale_unk'], unknown['shape_unk'], unknown['shift_unk'])
|
||||
known_dist = create_distribution(known['scale_known'], known['shape_known'], known['shift_known'])
|
||||
|
||||
instances = outputs["instances"].to(torch.device("cpu"))
|
||||
dev =instances.pred_classes.get_device()
|
||||
classes = instances.pred_classes.tolist()
|
||||
logits = instances.logits
|
||||
classes = update_label_based_on_energy(logits, classes, unk_dist, known_dist)
|
||||
classes = torch.IntTensor(classes).to(torch.device("cuda"))
|
||||
outputs["instances"].pred_classes = classes
|
||||
print(classes)
|
||||
print('After' + str(outputs["instances"].pred_classes))
|
||||
|
||||
|
||||
v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
|
||||
v = v.draw_instance_predictions(outputs['instances'].to('cpu'))
|
||||
img = v.get_image()[:, :, ::-1]
|
||||
cv2.imwrite('output_' + file_name + '.jpg', img)
|
||||
|
Loading…
Reference in New Issue