Skip to content

Commit 12ee697

Browse files
committed
experiments with DEIM
1 parent 440f815 commit 12ee697

File tree

7 files changed

+47
-24
lines changed

7 files changed

+47
-24
lines changed

library/src/otx/backend/native/models/detection/backbones/dinov3sta.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ class DINOv3STAs(nn.Module):
192192
"conv_inplane": 32,
193193
"hidden_dim": 224,
194194
},
195-
"deimvv2_m": {
195+
"deimv2_m": {
196196
"name": "vit_tinyplus",
197197
"embed_dim": 256,
198198
"weights_path": None,

library/src/otx/recipe/detection/deimv2_l.yaml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,6 @@ callbacks:
3535
init_args:
3636
max_interval: 1
3737
min_lrschedule_patience: 3
38-
# - class_path: otx.backend.native.callbacks.EMAWeightAveraging
39-
# init_args:
40-
# update_starting_at_epoch: 10
41-
# decay: 0.999
4238
- class_path: otx.backend.native.callbacks.adaptive_early_stopping.EarlyStoppingWithWarmup
4339
init_args:
4440
mode: max
@@ -97,6 +93,9 @@ callbacks:
9793
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
9894
init_args:
9995
min_area: 1
96+
- class_path: otx.data.transform_libs.torchvision.CachedCopyBlend
97+
init_args:
98+
probability: 0.5
10099
- class_path: otx.data.transform_libs.torchvision.RandomFlip
101100
init_args:
102101
probability: 0.5
@@ -132,7 +131,7 @@ callbacks:
132131
- 1.0
133132
probability: 0.5
134133
random_pop: true
135-
max_cached_images: 10
134+
max_cached_images: 20
136135
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
137136
init_args:
138137
min_area: 1
@@ -182,7 +181,10 @@ callbacks:
182181
- 1.0
183182
probability: 0.5
184183
random_pop: true
185-
max_cached_images: 10
184+
max_cached_images: 20
185+
- class_path: otx.data.transform_libs.torchvision.CachedCopyBlend
186+
init_args:
187+
probability: 0.5
186188
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
187189
init_args:
188190
min_area: 1

library/src/otx/recipe/detection/deimv2_m.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ model:
99
optimizer:
1010
class_path: torch.optim.AdamW
1111
init_args:
12-
lr: 0.0005
12+
lr: 0.0004
1313
betas: [0.9, 0.999]
1414
weight_decay: 0.0001
1515

@@ -166,9 +166,6 @@ callbacks:
166166
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
167167
init_args:
168168
min_area: 1
169-
- class_path: otx.data.transform_libs.torchvision.RandomFlip
170-
init_args:
171-
probability: 0.5
172169
- class_path: otx.data.transform_libs.torchvision.CachedMixUp
173170
init_args:
174171
img_scale: [640, 640] # (H, W)
@@ -178,6 +175,9 @@ callbacks:
178175
probability: 0.5
179176
random_pop: true
180177
max_cached_images: 10
178+
- class_path: otx.data.transform_libs.torchvision.RandomFlip
179+
init_args:
180+
probability: 0.5
181181
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
182182
init_args:
183183
min_area: 1

library/src/otx/recipe/detection/deimv2_s.yaml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ callbacks:
9393
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
9494
init_args:
9595
min_area: 1
96+
- class_path: otx.data.transform_libs.torchvision.CachedCopyBlend
97+
init_args:
98+
probability: 0.5
9699
- class_path: otx.data.transform_libs.torchvision.RandomFlip
97100
init_args:
98101
probability: 0.5
@@ -128,7 +131,7 @@ callbacks:
128131
- 1.0
129132
probability: 0.5
130133
random_pop: true
131-
max_cached_images: 10
134+
max_cached_images: 20
132135
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
133136
init_args:
134137
min_area: 1
@@ -166,9 +169,6 @@ callbacks:
166169
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
167170
init_args:
168171
min_area: 1
169-
- class_path: otx.data.transform_libs.torchvision.RandomFlip
170-
init_args:
171-
probability: 0.5
172172
- class_path: otx.data.transform_libs.torchvision.CachedMixUp
173173
init_args:
174174
img_scale: [640, 640] # (H, W)
@@ -177,7 +177,13 @@ callbacks:
177177
- 1.0
178178
probability: 0.5
179179
random_pop: true
180-
max_cached_images: 10
180+
max_cached_images: 20
181+
- class_path: otx.data.transform_libs.torchvision.CachedCopyBlend
182+
init_args:
183+
probability: 0.5
184+
- class_path: otx.data.transform_libs.torchvision.RandomFlip
185+
init_args:
186+
probability: 0.5
181187
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
182188
init_args:
183189
min_area: 1

library/src/otx/recipe/detection/deimv2_x.yaml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ callbacks:
9393
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
9494
init_args:
9595
min_area: 1
96+
- class_path: otx.data.transform_libs.torchvision.CachedCopyBlend
97+
init_args:
98+
probability: 0.5
9699
- class_path: otx.data.transform_libs.torchvision.RandomFlip
97100
init_args:
98101
probability: 0.5
@@ -128,7 +131,7 @@ callbacks:
128131
- 1.0
129132
probability: 0.5
130133
random_pop: true
131-
max_cached_images: 10
134+
max_cached_images: 20
132135
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
133136
init_args:
134137
min_area: 1
@@ -166,9 +169,6 @@ callbacks:
166169
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
167170
init_args:
168171
min_area: 1
169-
- class_path: otx.data.transform_libs.torchvision.RandomFlip
170-
init_args:
171-
probability: 0.5
172172
- class_path: otx.data.transform_libs.torchvision.CachedMixUp
173173
init_args:
174174
img_scale: [640, 640] # (H, W)
@@ -177,7 +177,13 @@ callbacks:
177177
- 1.0
178178
probability: 0.5
179179
random_pop: true
180-
max_cached_images: 10
180+
max_cached_images: 20
181+
- class_path: otx.data.transform_libs.torchvision.CachedCopyBlend
182+
init_args:
183+
probability: 0.5
184+
- class_path: otx.data.transform_libs.torchvision.RandomFlip
185+
init_args:
186+
probability: 0.5
181187
- class_path: torchvision.transforms.v2.SanitizeBoundingBoxes
182188
init_args:
183189
min_area: 1

library/tests/perf_v2/summary.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from pathlib import Path
1515
from zipfile import ZipFile
1616

17+
from cv2 import log
1718
import pandas as pd
1819

1920
from otx.types.task import OTXTaskType
@@ -170,7 +171,7 @@ def summarize_table(history: pd.DataFrame, task: OTXTaskType) -> list[pd.DataFra
170171
score_metric = TASK_METRIC_MAP[task]
171172

172173
# Metrics to summarize in aggregated table
173-
metrics = [
174+
all_metrics = [
174175
"training:e2e_time",
175176
"training:epoch",
176177
"training:train/iter_time",
@@ -185,7 +186,15 @@ def summarize_table(history: pd.DataFrame, task: OTXTaskType) -> list[pd.DataFra
185186
]
186187

187188
raw_task_data = history.query(f"task == '{task.value}'")
188-
dataset_dfs = aggregate(raw_task_data, metrics)
189+
valid_metrics = []
190+
for metric in all_metrics:
191+
if metric not in raw_task_data.columns:
192+
msg = f"Metric {metric} not found in raw data"
193+
logger.warning(msg)
194+
else:
195+
valid_metrics.append(metric)
196+
197+
dataset_dfs = aggregate(raw_task_data, valid_metrics)
189198

190199
# Round all numeric columns to 4 decimal places
191200
for df in dataset_dfs:

library/tests/perf_v2/tasks/detection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
# ModelInfo(task=TASK_TYPE.value, name="deim_dfine_x", category="other"),
2525
ModelInfo(task=TASK_TYPE.value, name="deimv2_x", category="other"),
2626
# ModelInfo(task=TASK_TYPE.value, name="deim_dfine_l", category="other"),
27-
ModelInfo(task=TASK_TYPE.value, name="deimv2_l", category="other"),
27+
# ModelInfo(task=TASK_TYPE.value, name="deimv2_l", category="other"),
2828
# ModelInfo(task=TASK_TYPE.value, name="deim_dfine_m", category="other"),
2929
ModelInfo(task=TASK_TYPE.value, name="deimv2_m", category="other"),
3030
ModelInfo(task=TASK_TYPE.value, name="deimv2_s", category="other"),

0 commit comments

Comments
 (0)