andriizadaianchuk's picture
Upload config.yaml with huggingface_hub
e2fdd40 verified
dataset:
use_epochs: false
num_workers: 4
batch_size: ${experiment.batch_size_per_gpu}
_target_: ocl.datasets.WebdatasetDataModule
train_shards: ${oc.env:DATASET_PREFIX}/vg_disjoint_coco/train/shard-{000000..001217}.tar
train_size: 118287
val_shards: ${oc.env:DATASET_PREFIX}/vg/val/shard-{000000..000037}.tar
val_size: 5000
test_shards: ${oc.env:DATASET_PREFIX}/vg/test/shard-{000000..000037}.tar
test_size: 40670
use_autopadding: true
eval_transforms:
03a_preprocessing:
_target_: ocl.transforms.Map
transform:
_target_: torchvision.transforms.Compose
transforms:
- _target_: ocl.preprocessing.SelectConditioningInfoVG
num_max_binds: ${experiment.num_slots}
num_slots: ${experiment.num_slots}
- _target_: ocl.preprocessing.CopyFields
mapping:
instance_mask: instance_mask_v2
fields:
- image
- instance_mask
- instance_bbox
- name
- bbox_centroids
- name_embedding
- selected_indices
- contrastive_loss_mask
- all_bbox_centroids
batch_transform: false
03c_preprocessing:
_target_: ocl.transforms.SimpleTransform
transforms:
image:
_target_: torchvision.transforms.Compose
transforms:
- '${lambda_fn:''lambda image: image.copy()''}'
- _target_: torchvision.transforms.v2.ToImage
- _target_: torchvision.transforms.v2.ToDtype
dtype: ${torch_dtype:float32}
scale: true
- _target_: torchvision.transforms.v2.Normalize
mean:
- 0.485
- 0.456
- 0.406
std:
- 0.229
- 0.224
- 0.225
instance_mask:
_target_: torchvision.transforms.Compose
transforms:
- _target_: ocl.preprocessing.IntegerToOneHotMask
output_axis: -3
- _target_: ocl.preprocessing.AddEmptyMasksVG
- _target_: ocl.preprocessing.DenseMaskToTensor
instance_mask_v2:
_target_: torchvision.transforms.Compose
transforms:
- _target_: ocl.preprocessing.IntegerToOneHotMask
output_axis: -3
- _target_: ocl.preprocessing.AddEmptyMasksVG
- _target_: ocl.preprocessing.DenseMaskToTensor
batch_transform: false
train_transforms:
03a_preprocessing:
_target_: ocl.transforms.Map
transform:
_target_: torchvision.transforms.Compose
transforms:
- _target_: ocl.preprocessing.SelectConditioningInfoVG
num_max_binds: ${experiment.num_slots}
num_slots: ${experiment.num_slots}
- _target_: ocl.preprocessing.CopyFields
mapping:
instance_mask: instance_mask_v2
fields:
- image
- instance_mask
- instance_bbox
- name
- bbox_centroids
- name_embedding
- selected_indices
- contrastive_loss_mask
batch_transform: false
03b_preprocessing:
_target_: ocl.transforms.SimpleTransform
transforms:
image:
_target_: torchvision.transforms.Compose
transforms:
- '${lambda_fn:''lambda image: image.copy()''}'
- _target_: torchvision.transforms.v2.ToImage
- _target_: torchvision.transforms.v2.ToDtype
dtype: ${torch_dtype:float32}
scale: true
- _target_: torchvision.transforms.v2.Normalize
mean:
- 0.485
- 0.456
- 0.406
std:
- 0.229
- 0.224
- 0.225
name_embedding:
_target_: torchvision.transforms.Compose
transforms:
- '${lambda_fn:''lambda name_embedding: name_embedding.copy()''}'
- _target_: ocl.preprocessing.ToTensor
bbox_centroids:
_target_: torchvision.transforms.Compose
transforms:
- '${lambda_fn:''lambda bbox_centroids: bbox_centroids.copy()''}'
- _target_: ocl.preprocessing.ToTensor
all_bbox_centroids:
_target_: torchvision.transforms.Compose
transforms:
- '${lambda_fn:''lambda all_bbox_centroids: all_bbox_centroids.copy()''}'
- _target_: ocl.preprocessing.ToTensor
selected_indices:
_target_: torchvision.transforms.Compose
transforms:
- '${lambda_fn:''lambda selected_indices: selected_indices.copy()''}'
- _target_: ocl.preprocessing.ToTensor
contrastive_loss_mask:
_target_: torchvision.transforms.Compose
transforms:
- '${lambda_fn:''lambda contrastive_loss_mask: contrastive_loss_mask.copy()''}'
- _target_: ocl.preprocessing.ToTensor
instance_mask:
_target_: torchvision.transforms.Compose
transforms:
- _target_: ocl.preprocessing.IntegerToOneHotMask
output_axis: -3
- _target_: ocl.preprocessing.AddEmptyMasksVG
- _target_: ocl.preprocessing.DenseMaskToTensor
instance_mask_v2:
_target_: torchvision.transforms.Compose
transforms:
- _target_: ocl.preprocessing.IntegerToOneHotMask
output_axis: -3
- _target_: ocl.preprocessing.AddEmptyMasksVG
- _target_: ocl.preprocessing.DenseMaskToTensor
batch_transform: false
models:
feature_extractor:
_target_: routed.ocl.feature_extractors.TimmFeatureExtractor
model_name: ${experiment.timm_model}
pretrained: ${when_testing:false,true}
freeze: true
feature_level: 12
video_path: input.image
dynamic_img_size: true
mapping:
_target_: routed.ocl.mapping.MLPMapping
dim: ${experiment.feature_dim}
x_path: feature_extractor
conditioning:
_target_: routed.ocl.conditioning.LangConditioning
n_slots: ${experiment.num_slots}
object_dim: ${experiment.slot_dim}
dual_conditioning: false
name_embedding_path: input.name_embedding
batch_size_path: input.batch_size
mask_path: input.contrastive_loss_mask
perceptual_grouping:
_target_: routed.ocl.perceptual_grouping.SlotAttentionGrouping
feature_dim: ${.object_dim}
object_dim: ${experiment.slot_dim}
use_projection_bias: false
positional_embedding:
_target_: ocl.neural_networks.wrappers.Sequential
_args_:
- _target_: ocl.neural_networks.positional_embedding.DummyPositionEmbed
- _target_: ocl.neural_networks.build_two_layer_mlp
input_dim: ${experiment.feature_dim}
output_dim: ${....feature_dim}
hidden_dim: '${mul: ${experiment.feature_dim}, 2}'
initial_layer_norm: true
ff_mlp:
_target_: ocl.neural_networks.build_two_layer_mlp
input_dim: ${..object_dim}
output_dim: ${..object_dim}
hidden_dim: '${mul: ${..object_dim}, 4}'
initial_layer_norm: true
residual: true
feature_path: mapping
conditioning_path: conditioning
attn_aggregation:
_target_: routed.ocl.heads.PatchClipAttentionAggregationHead
dim: ${experiment.feature_dim}
attn_path: perceptual_grouping.feature_attributions
x_path: input.image
projector_slots:
_target_: routed.ocl.heads.SlotProjectorHead
dim: 512
embedding_dim: 512
slots_path: attn_aggregation
dual_embedding:
_target_: routed.ocl.heads.CLIPLangEmbeddingHead
embedding_dim: 512
names_batch_path: input.name
dec_conditioning:
_target_: routed.ocl.decoder_conditioning.EncodeLangConditioning
dim: ${experiment.slot_dim}
language_path: input.name_embedding
mask_path: input.contrastive_loss_mask
object_decoder:
_target_: routed.ocl.decoding.PatchDecoder
decoder:
_target_: ocl.neural_networks.build_mlp
_partial_: true
features:
- 2048
- 2048
- 2048
object_dim: ${experiment.slot_dim}
output_dim: ${experiment.feature_dim}
num_patches: ${experiment.num_patches}
object_features_path: perceptual_grouping.objects
image_path: input.image
conditioned: true
condition_info_path: dec_conditioning
optimizers:
opt0:
_target_: ocl.optimization.OptimizationWrapper
optimizer:
_target_: torch.optim.AdamW
_partial_: true
lr: ${experiment.total_lr}
lr_scheduler:
_target_: ocl.scheduling.exponential_decay_after_optional_warmup
_partial_: true
decay_rate: 0.5
decay_steps: 100000
warmup_steps: 10000
parameter_groups:
_target_: ocl.optimization.ParameterGroupCreator
param_groups:
grouping:
params:
- models.perceptual_grouping
- models.conditioning
- models.object_decoder
- models.dec_conditioning
lr: ${experiment.total_lr}
weight_decay: 0.0
encoder:
params:
- models.mapping
- models.projector_slots
lr: ${experiment.mapping_lr}
weight_decay: 0.0
losses:
mse:
_target_: routed.ocl.losses.ReconstructionLoss
loss_type: mse
input_path: object_decoder.reconstruction
target_path: feature_extractor.features
contrastive_loss:
_target_: routed.ocl.losses.DiagonalContrastiveLoss
x1_path: projector_slots
x2_path: dual_embedding
contrastive_loss_mask_path: input.contrastive_loss_mask
temp: 0.1
batch_contrastive: true
weight: 0.2
visualizations:
input:
_target_: routed.ocl.visualizations.Image
n_instances: 32
denormalization:
_target_: ocl.preprocessing.Denormalize
mean:
- 0.485
- 0.456
- 0.406
std:
- 0.229
- 0.224
- 0.225
image_path: input.image
masks:
_target_: routed.ocl.visualizations.Mask
mask_path: object_decoder.masks_as_image
pred_segmentation:
_target_: routed.ocl.visualizations.Segmentation
denormalization:
_target_: ocl.preprocessing.Denormalize
mean:
- 0.485
- 0.456
- 0.406
std:
- 0.229
- 0.224
- 0.225
image_path: input.image
mask_path: object_decoder.masks_as_image
pred_segmentation_with_text:
_target_: routed.ocl.visualizations.SegmentationWithText
n_instances: 32
denormalization:
_target_: ocl.preprocessing.Denormalize
mean:
- 0.485
- 0.456
- 0.406
std:
- 0.229
- 0.224
- 0.225
image_path: input.image
mask_path: object_decoder.masks_as_image
gt_masks_path: input.instance_mask_v2
selected_indices_path: input.selected_indices
text_path: input.name
bbox_centroids_path: input.all_bbox_centroids
trainer:
_target_: pytorch_lightning.trainer.trainer.Trainer
accelerator: auto
strategy: auto
devices: 1
num_nodes: 1
precision: null
logger:
- _target_: pytorch_lightning.loggers.TensorBoardLogger
save_dir: .
name: tb
version: ''
- _target_: pytorch_lightning.loggers.WandbLogger
project: ${slice:${hydra:runtime.choices.experiment},"/", 1}_${slice:${hydra:runtime.choices.experiment},"/",
2}
name: ${slice:${hydra:runtime.choices.experiment},"/","3:"}
log_model: false
callbacks: ${oc.dict.values:experiment.callbacks}
fast_dev_run: false
max_epochs: -1
min_epochs: null
max_steps: 100000
min_steps: null
max_time: null
limit_train_batches: null
limit_val_batches: null
limit_test_batches: null
limit_predict_batches: null
overfit_batches: 0.0
val_check_interval: 5000
check_val_every_n_epoch: null
num_sanity_val_steps: null
log_every_n_steps: 100
enable_checkpointing: null
enable_progress_bar: null
enable_model_summary: null
accumulate_grad_batches: 1
gradient_clip_val: 1.0
gradient_clip_algorithm: null
deterministic: null
benchmark: null
inference_mode: true
use_distributed_sampler: true
profiler: null
detect_anomaly: false
barebones: false
plugins: null
sync_batchnorm: false
reload_dataloaders_every_n_epochs: 0
default_root_dir: .
training_vis_frequency: 10000
training_metrics:
acc_sc:
_target_: routed.ocl.metrics.acc.EmbAccMetric
mode: sc
slot_emb_path: projector_slots
ctrl_emb_path: dual_embedding
mask_idx_path: input.contrastive_loss_mask
acc_cs:
_target_: routed.ocl.metrics.acc.EmbAccMetric
mode: cs
slot_emb_path: projector_slots
ctrl_emb_path: dual_embedding
mask_idx_path: input.contrastive_loss_mask
acc_avg:
_target_: routed.ocl.metrics.acc.EmbAccMetric
mode: average
slot_emb_path: projector_slots
ctrl_emb_path: dual_embedding
mask_idx_path: input.contrastive_loss_mask
evaluation_metrics:
binding_hits:
_target_: routed.ocl.metrics.BindingHits
prediction_path: object_decoder.masks_as_image
target_path: input.instance_mask_v2
selected_indices_path: input.selected_indices
use_threshold: false
matching: best_overlap
ignore_overlaps: false
instance_ari:
_target_: routed.ocl.metrics.ARIMetric
prediction_path: object_decoder.masks_as_image
target_path: input.instance_mask_v2
foreground: false
convert_target_one_hot: true
ignore_overlaps: true
instance_mbo:
_target_: routed.ocl.metrics.UnsupervisedMaskIoUMetric
prediction_path: object_decoder.masks_as_image
target_path: input.instance_mask
use_threshold: false
matching: best_overlap
ignore_overlaps: true
gt_matched_instance_mbo:
_target_: routed.ocl.metrics.UnsupervisedMaskIoUMetric
prediction_path: object_decoder.masks_as_image
target_path: input.instance_mask_v2
selected_indices_path: input.selected_indices
use_threshold: false
matching: best_overlap
ignore_overlaps: true
acc_sc:
_target_: routed.ocl.metrics.acc.EmbAccMetric
mode: sc
slot_emb_path: projector_slots
ctrl_emb_path: dual_embedding
mask_idx_path: input.contrastive_loss_mask
acc_cs:
_target_: routed.ocl.metrics.acc.EmbAccMetric
mode: cs
slot_emb_path: projector_slots
ctrl_emb_path: dual_embedding
mask_idx_path: input.contrastive_loss_mask
acc_avg:
_target_: routed.ocl.metrics.acc.EmbAccMetric
mode: average
slot_emb_path: projector_slots
ctrl_emb_path: dual_embedding
mask_idx_path: input.contrastive_loss_mask
load_checkpoint: null
load_checkpoint_partial: null
modules_to_load: null
trainable_models: null
seed: null
experiment:
callbacks: {}
checkpoint_every_n_steps: 1000
image_size: 224
mask_size: ${.image_size}
batch_size_per_gpu: 64
base_learning_rate: 0.0004
max_num_binds: 7
slot_dim: 256
num_slots: 7
timm_model: vit_small_patch14_dinov2.lvd142m
feature_dim: '${timm_model_dim: ${.timm_model}}'
num_patches: '${timm_model_num_patches: ${.timm_model}, ${.image_size}}'
num_patches_per_side: '${isqrt: ${.num_patches}}'
patch_size: '${timm_model_patch_size: ${.timm_model}}'
total_batch_size: '${mul: ${trainer.devices}, ${.batch_size_per_gpu}}'
total_lr: 0.0004
mapping_lr: '${mul: 0.05, ${.total_lr}}'