[dev] C3-II Additional refactoring of configurations by deruyter92 · Pull Request #3212 · DeepLabCut/DeepLabCut

and others added 27 commits

February 18, 2026 10:02
…ath and Enum serialization
… pipeline)

update ProjectConfig add old fields resnet, croppedtraining
…mbiguous bbox_margin

This commit resolves two issues:
- the bbox_margin field that was defined in GenSamplingConfig was always populated with the bbox_margin value from model_cfg['data']['bbox_margin'], which is an implicit way of carrying over config fields. (Potentially breaks when implicit transfer was missing somewhere).
- In most places, GenSamplingConfig is expected to NOT have a field bbox_margin, e.g. when converting to dict it is removed, where in 1 place it is expected (in PoseDataset in dataset.py).

This is now resolved by keeping only the explicit config value in PoseConfig.data.bbox_margin, and adding a ctd_bbox_margin field in PoseDatasetParameters.
…onf DictConfig and ListConfig should not be in state dicts)
…RE validation

Some config updates currently occur after initial creation and validation of the PoseConfig (e.g. when calling train_network).  This commit makes sure that update_by_dotpath and loader.update_model_cfg are validated afterward
…nce(dict) -> assert isinstance(mapping)

@deruyter92 deruyter92 changed the base branch from main to feat/structured_configs

February 18, 2026 12:38

C-Achard

@deruyter92