mirror of https://github.com/JosephKJ/OWOD.git
Additional rebuttal experiments
parent
68bcee285d
commit
beb1c10d32
|
@ -5,9 +5,9 @@ python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52132' --conf
|
|||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52133' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.ITEMS_PER_CLASS 30 OUTPUT_DIR "./output/items_30"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52134' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.ITEMS_PER_CLASS 50 OUTPUT_DIR "./output/items_50"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52131' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.ITEMS_PER_CLASS 5 OUTPUT_DIR "./output/items_5"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52135' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.MARGIN 1.0 OUTPUT_DIR "./output/margin_1"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52136' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.MARGIN 5.0 OUTPUT_DIR "./output/margin_5"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52137' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.MARGIN 15.0 OUTPUT_DIR "./output/margin_15"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52135' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.MARGIN 1.0 OUTPUT_DIR "./output/margin_1"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52138' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.MARGIN 20.0 OUTPUT_DIR "./output/margin_20"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52128' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.MOMENTUM 0.7 OUTPUT_DIR "./output/momentum_0_7"
|
||||
python tools/train_net.py --num-gpus 8 --dist-url='tcp://127.0.0.1:52129' --config-file ./configs/OWOD/t1/t1_train.yaml SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01 OWOD.CLUSTERING.MOMENTUM 0.8 OUTPUT_DIR "./output/momentum_0_8"
|
|
@ -1,13 +1,13 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
# WEIGHTS: "detectron2://ImageNetPretrained/MSRA/R-50.pkl"
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_std_faster_rcnn/model_final.pth"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/margin_15/model_final.pth"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_only_thresh/model_final.pth"
|
||||
# WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_clustering_with_save/model_final.pth"
|
||||
ROI_HEADS:
|
||||
POSITIVE_FRACTION: 0.25
|
||||
NMS_THRESH_TEST: 0.5
|
||||
SCORE_THRESH_TEST: 0.05
|
||||
WEIGHTS: "/home/joseph/workspace/OWOD/output/models_backup/t1_clustering_with_save/model_final.pth"
|
||||
# ROI_HEADS:
|
||||
# POSITIVE_FRACTION: 0.25
|
||||
# NMS_THRESH_TEST: 0.5
|
||||
# SCORE_THRESH_TEST: 0.05
|
||||
TEST:
|
||||
DETECTIONS_PER_IMAGE: 50
|
||||
DATASETS:
|
||||
|
@ -17,7 +17,7 @@ SOLVER:
|
|||
STEPS: (12000, 16000)
|
||||
MAX_ITER: 18000
|
||||
WARMUP_ITERS: 100
|
||||
OUTPUT_DIR: "./output/t1_test_rerun"
|
||||
OUTPUT_DIR: "./output/temp_3"
|
||||
OWOD:
|
||||
PREV_INTRODUCED_CLS: 0
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
_BASE_: "../../Base-RCNN-C4-OWOD.yaml"
|
||||
MODEL:
|
||||
WEIGHTS: "/home/fk1/workspace/OWOD/output/t1_clustering_with_save/model_final.pth"
|
||||
WEIGHTS: "/home/joseph/workspace/OWOD/output/models_backup/t1_clustering_with_save/model_final.pth"
|
||||
DATASETS:
|
||||
TRAIN: ('voc_coco_2007_val', ) # t1_voc_coco_2007_train, t1_voc_coco_2007_ft
|
||||
TEST: ('voc_coco_2007_val', ) # voc_coco_2007_test
|
||||
|
@ -8,11 +8,12 @@ SOLVER:
|
|||
STEPS: (12000, 16000)
|
||||
MAX_ITER: 500
|
||||
WARMUP_ITERS: 0
|
||||
OUTPUT_DIR: "./output/t1_clustering_val"
|
||||
OUTPUT_DIR: "./output/temp_3"
|
||||
OWOD:
|
||||
PREV_INTRODUCED_CLS: 0
|
||||
CUR_INTRODUCED_CLS: 20
|
||||
COMPUTE_ENERGY: True
|
||||
ENERGY_SAVE_PATH: 'energy'
|
||||
SKIP_TRAINING_WHILE_EVAL: False
|
||||
ENABLE_CLUSTERING: False
|
||||
ENABLE_CLUSTERING: False
|
||||
TEMPERATURE: 1.5
|
|
@ -618,6 +618,8 @@ _C.OWOD.COMPUTE_ENERGY = False
|
|||
_C.OWOD.ENERGY_SAVE_PATH = ''
|
||||
_C.OWOD.SKIP_TRAINING_WHILE_EVAL = False
|
||||
_C.OWOD.FEATURE_STORE_SAVE_PATH = ''
|
||||
_C.OWOD.TEMPERATURE = 1.5
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------- #
|
||||
# Misc options
|
||||
|
|
|
@ -287,8 +287,8 @@ if __name__.endswith(".builtin"):
|
|||
register_all_lvis(_root)
|
||||
register_all_cityscapes(_root)
|
||||
register_all_cityscapes_panoptic(_root)
|
||||
# register_all_pascal_voc(_root)
|
||||
register_all_pascal_voc(_root)
|
||||
# register_all_pascal_voc('/home/joseph/workspace/OWOD/datasets')
|
||||
# register_all_pascal_voc('/home/joseph/workspace/OWOD/datasets')
|
||||
register_all_pascal_voc('/home/fk1/workspace/OWOD/datasets')
|
||||
# register_all_voc_style_coco('/home/fk1/workspace/OWOD/datasets')
|
||||
register_all_ade20k(_root)
|
||||
|
|
|
@ -45,7 +45,7 @@ VOC_CLASS_NAMES = [
|
|||
]
|
||||
|
||||
T2_CLASS_NAMES = [
|
||||
"?", "traffic light", "fire hydrant", "stop sign", "parking meter",
|
||||
"truck", "traffic light", "fire hydrant", "stop sign", "parking meter",
|
||||
"bench", "elephant", "bear", "zebra", "giraffe",
|
||||
"backpack", "umbrella", "handbag", "tie", "suitcase",
|
||||
"microwave", "oven", "toaster", "sink", "refrigerator"
|
||||
|
|
|
@ -178,11 +178,13 @@ class TrainerBase:
|
|||
for h in self._hooks:
|
||||
h.after_train()
|
||||
|
||||
def analyse_energy(self):
|
||||
def analyse_energy(self, temp=1.5):
|
||||
files = os.listdir(os.path.join(self.cfg.OUTPUT_DIR, self.cfg.OWOD.ENERGY_SAVE_PATH))
|
||||
temp = self.cfg.OWOD.TEMPERATURE
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.info('Temperature value: ' + str(temp))
|
||||
unk = []
|
||||
known = []
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
for id, file in enumerate(files):
|
||||
path = os.path.join(self.cfg.OUTPUT_DIR, self.cfg.OWOD.ENERGY_SAVE_PATH, file)
|
||||
|
@ -192,7 +194,7 @@ class TrainerBase:
|
|||
logger.info('Not able to load ' + path + ". Continuing...")
|
||||
continue
|
||||
num_seen_classes = self.cfg.OWOD.PREV_INTRODUCED_CLS + self.cfg.OWOD.CUR_INTRODUCED_CLS
|
||||
lse = torch.logsumexp(logits[:, :num_seen_classes], dim=1)
|
||||
lse = temp * torch.logsumexp(logits[:, :num_seen_classes] / temp, dim=1)
|
||||
# lse = torch.logsumexp(logits[:, :-2], dim=1)
|
||||
|
||||
for i, cls in enumerate(classes):
|
||||
|
@ -213,10 +215,17 @@ class TrainerBase:
|
|||
|
||||
logger.info('Fitting Weibull distribution...')
|
||||
wb_dist_param = []
|
||||
|
||||
start_time = time.time()
|
||||
wb_unk = Fit_Weibull_3P(failures=unk, show_probability_plot=False, print_results=False)
|
||||
logger.info("--- %s seconds ---" % (time.time() - start_time))
|
||||
|
||||
wb_dist_param.append({"scale_unk": wb_unk.alpha, "shape_unk": wb_unk.beta, "shift_unk": wb_unk.gamma})
|
||||
|
||||
start_time = time.time()
|
||||
wb_known = Fit_Weibull_3P(failures=known, show_probability_plot=False, print_results=False)
|
||||
logger.info("--- %s seconds ---" % (time.time() - start_time))
|
||||
|
||||
wb_dist_param.append(
|
||||
{"scale_known": wb_known.alpha, "shape_known": wb_known.beta, "shift_known": wb_known.gamma})
|
||||
|
||||
|
|
|
@ -110,6 +110,16 @@ class PascalVOCDetectionEvaluator(DatasetEvaluator):
|
|||
cls[i] = self.unknown_class_index
|
||||
return cls
|
||||
|
||||
def update_labels_based_on_softmax(self, logits, classes, thresold=0.9):
|
||||
cls = classes
|
||||
if len(logits) <= 0:
|
||||
return cls
|
||||
scores = torch.max(torch.nn.functional.softmax(logits[:, :self.num_seen_classes], dim=1), dim=1)[0]
|
||||
for i, s in enumerate(scores):
|
||||
if s < thresold:
|
||||
cls[i] = self.unknown_class_index
|
||||
return cls
|
||||
|
||||
def process(self, inputs, outputs):
|
||||
for input, output in zip(inputs, outputs):
|
||||
image_id = input["image_id"]
|
||||
|
@ -118,7 +128,8 @@ class PascalVOCDetectionEvaluator(DatasetEvaluator):
|
|||
scores = instances.scores.tolist()
|
||||
classes = instances.pred_classes.tolist()
|
||||
logits = instances.logits
|
||||
classes = self.update_label_based_on_energy(logits, classes)
|
||||
# classes = self.update_label_based_on_energy(logits, classes)
|
||||
classes = self.update_labels_based_on_softmax(logits, classes)
|
||||
for box, score, cls in zip(boxes, scores, classes):
|
||||
if cls == -100:
|
||||
continue
|
||||
|
|
|
@ -842,7 +842,7 @@ class Visualizer:
|
|||
)
|
||||
return self.output
|
||||
|
||||
def draw_box(self, box_coord, alpha=0.6, edge_color="g", line_style="-"):
|
||||
def draw_box(self, box_coord, alpha=0.5, 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=20,
|
||||
linewidth=15,
|
||||
alpha=alpha,
|
||||
linestyle=line_style,
|
||||
)
|
||||
|
|
13
run.sh
13
run.sh
|
@ -92,4 +92,15 @@
|
|||
#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
|
||||
#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
|
||||
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 4 --dist-url='tcp://127.0.0.1:52133' --config-file ./configs/OWOD/t1/t1_val.yaml SOLVER.IMS_PER_BATCH 4 SOLVER.BASE_LR 0.01 OWOD.TEMPERATURE 2 OUTPUT_DIR "./output/temp_2"
|
||||
#
|
||||
#python tools/train_net.py --num-gpus 4 --eval-only --config-file ./configs/OWOD/t1/t1_test.yaml SOLVER.IMS_PER_BATCH 4 SOLVER.BASE_LR 0.005 OUTPUT_DIR "./output/temp_2"
|
||||
|
||||
|
||||
python tools/train_net.py --num-gpus 4 --dist-url='tcp://127.0.0.1:52133' --config-file ./configs/OWOD/t1/t1_val.yaml SOLVER.IMS_PER_BATCH 4 SOLVER.BASE_LR 0.01 OWOD.TEMPERATURE 1.5 OUTPUT_DIR "./output/temp_1p5"
|
||||
|
||||
python tools/train_net.py --num-gpus 4 --eval-only --config-file ./configs/OWOD/t1/t1_test.yaml SOLVER.IMS_PER_BATCH 4 SOLVER.BASE_LR 0.005 OUTPUT_DIR "./output/temp_1p5"
|
||||
|
||||
|
|
Loading…
Reference in New Issue