--- a +++ b/docs/3.detailed_config.md @@ -0,0 +1,189 @@ +# Configuration item + +### data_cfg +* Data configuration +> +> * Args +> * dataset_name: Only support `CASIA-B` and `OUMVLP` now. +> * dataset_root: The path of storing your dataset. +> * num_workers: The number of workers to collect data. +> * dataset_partition: The path of storing your dataset partition file. It splits the dataset to two parts, including train set and test set. +> * cache: If `True`, load all data to memory during buiding dataset. +> * test_dataset_name: The name of test dataset. +---- + +### loss_cfg +* Loss function +> * Args +> * type: Loss function type, support `TripletLoss` and `CrossEntropyLoss`. +> * loss_term_weight: loss weight. +> * log_prefix: the prefix of loss log. + +---- +### optimizer_cfg +* Optimizer +> * Args +> * solver: Optimizer type, example: `SGD`, `Adam`. +> * **others**: Please refer to `torch.optim`. + + +### scheduler_cfg +* Learning rate scheduler +> * Args +> * scheduler : Learning rate scheduler, example: `MultiStepLR`. +> * **others** : Please refer to `torch.optim.lr_scheduler`. +---- +### model_cfg +* Model to be trained +> * Args +> * model : Model type, please refer to [Model Library](../opengait/modeling/models) for the supported values. +> * **others** : Please refer to the [Training Configuration File of Corresponding Model](../configs). +---- +### evaluator_cfg +* Evaluator configuration +> * Args +> * enable_float16: If `True`, enable the auto mixed precision mode. +> * restore_ckpt_strict: If `True`, check whether the checkpoint is the same as the defined model. +> * restore_hint: `int` value indicates the iteration number of restored checkpoint; `str` value indicates the path to restored checkpoint. +> * save_name: The name of the experiment. +> * eval_func: The function name of evaluation. For `CASIA-B`, choose `identification`. +> * sampler: +> - type: The name of sampler. Choose `InferenceSampler`. +> - sample_type: In general, we use `all_ordered` to input all frames by its natural order, which makes sure the tests are consistent. +> - batch_size: `int` values. +> - **others**: Please refer to [data.sampler](../opengait/data/sampler.py) and [data.collate_fn](../opengait/data/collate_fn.py) +> * transform: Support `BaseSilCuttingTransform`, `BaseSilTransform`. The difference between them is `BaseSilCuttingTransform` cut out the black pixels on both sides horizontally. +> * metric: `euc` or `cos`, generally, `euc` performs better. + +---- +### trainer_cfg +* Trainer configuration +> * Args +> * restore_hint: `int` value indicates the iteration number of restored checkpoint; `str` value indicates the path to restored checkpoint. The option is often used to finetune on new dataset or restore the interrupted training process. +> * fix_BN: If `True`, we fix the weight of all `BatchNorm` layers. +> * log_iter: Log the information per `log_iter` iterations. +> * save_iter: Save the checkpoint per `save_iter` iterations. +> * with_test: If `True`, we test the model every `save_iter` iterations. A bit of performance impact.(*Disable in Default*) +> * optimizer_reset: If `True` and `restore_hint!=0`, reset the optimizer while restoring the model. +> * scheduler_reset: If `True` and `restore_hint!=0`, reset the scheduler while restoring the model. +> * sync_BN: If `True`, applies Batch Normalization synchronously. +> * total_iter: The total training iterations, `int` values. +> * sampler: +> - type: The name of sampler. Choose `TripletSampler`. +> - sample_type: `[all, fixed, unfixed]` indicates the number of frames used to test, while `[unordered, ordered]` means whether input sequence by its natural order. Example: `fixed_unordered` means selecting fixed number of frames randomly. +> - batch_size: *[P,K]* where `P` denotes the subjects in training batch while the `K` represents the sequences every subject owns. **Example**: +> - 8 +> - 16 +> - **others**: Please refer to [data.sampler](../opengait/data/sampler.py) and [data.collate_fn](../opengait/data/collate_fn.py). +> * **others**: Please refer to `evaluator_cfg`. +--- +**Note**: +- All the config items will be merged into [default.yaml](../configs/default.yaml), and the current config is preferable. +- The output directory, which includes the log, checkpoint and summary files, is depended on the defined `dataset_name`, `model` and `save_name` settings, like `output/${dataset_name}/${model}/${save_name}`. +# Example + +```yaml +data_cfg: + dataset_name: CASIA-B + dataset_root: your_path + dataset_partition: ./datasets/CASIA-B/CASIA-B.json + num_workers: 1 + remove_no_gallery: false # Remove probe if no gallery for it + test_dataset_name: CASIA-B + +evaluator_cfg: + enable_float16: true + restore_ckpt_strict: true + restore_hint: 60000 + save_name: Baseline + eval_func: evaluate_indoor_dataset + sampler: + batch_shuffle: false + batch_size: 16 + sample_type: all_ordered # all indicates whole sequence used to test, while ordered means input sequence by its natural order; Other options: fixed_unordered + frames_all_limit: 720 # limit the number of sampled frames to prevent out of memory + metric: euc # cos + transform: + - type: BaseSilCuttingTransform + img_w: 64 + +loss_cfg: + - loss_term_weight: 1.0 + margin: 0.2 + type: TripletLoss + log_prefix: triplet + - loss_term_weight: 0.1 + scale: 16 + type: CrossEntropyLoss + log_prefix: softmax + log_accuracy: true + +model_cfg: + model: Baseline + backbone_cfg: + in_channels: 1 + layers_cfg: # Layers configuration for automatically model construction + - BC-64 + - BC-64 + - M + - BC-128 + - BC-128 + - M + - BC-256 + - BC-256 + # - M + # - BC-512 + # - BC-512 + type: Plain + SeparateFCs: + in_channels: 256 + out_channels: 256 + parts_num: 31 + SeparateBNNecks: + class_num: 74 + in_channels: 256 + parts_num: 31 + bin_num: + - 16 + - 8 + - 4 + - 2 + - 1 + +optimizer_cfg: + lr: 0.1 + momentum: 0.9 + solver: SGD + weight_decay: 0.0005 + +scheduler_cfg: + gamma: 0.1 + milestones: # Learning Rate Reduction at each milestones + - 20000 + - 40000 + scheduler: MultiStepLR +trainer_cfg: + enable_float16: true # half_percesion float for memory reduction and speedup + fix_layers: false + log_iter: 100 + restore_ckpt_strict: true + restore_hint: 0 + save_iter: 10000 + save_name: Baseline + sync_BN: true + total_iter: 60000 + sampler: + batch_shuffle: true + batch_size: + - 8 # TripletSampler, batch_size[0] indicates Number of Identity + - 16 # batch_size[1] indicates Samples sequqnce for each Identity + frames_num_fixed: 30 # fixed frames number for training + frames_num_max: 50 # max frames number for unfixed training + frames_num_min: 25 # min frames number for unfixed traing + sample_type: fixed_unordered # fixed control input frames number, unordered for controlling order of input tensor; Other options: unfixed_ordered or all_ordered + type: TripletSampler + transform: + - type: BaseSilCuttingTransform + img_w: 64 + +```