Releases: nodefluxio/vortex
v0.3.0
simplify vortex implementation and use Pytorch Lightning for trainer.
Added
- Pytorch Lightning training pipeline
- registry class
- model base class
- add 'config.trainer.validation_interval' field with same functionality as 'config.validator.val_epoch'
- add 'config.trainer.logger' field with same functionality as 'config.logging'
- add 'config.dataloader.train' and 'config.dataloader.eval' field to support different args for train and val dataloader
- support for bool value for logger config, with default logger use tensorboard logger
- backbone base class
- backbone class for main models
Changed
model_components
is removed, and changed with model base class- deprecating 'config.seed', and move to 'config.trainer.seed'
- deprecating
stage
argument increate_model
- all defined backbones use backbone base class
- removed various old features affected by API redesign:
cli
,predictor
,pipelines
v0.2.1
This is the last version that will use our own training engine. In the next release (v0.3) we'll be using Pytorch Lightning for training engine and model creation API.
Added
-
learning rate scheduler value plan visualizer script in
scripts/visualize_learning_rate.py
-
save_best_metrics
config to save model checkpoint on best metrics -
always save checkpoint of last epoch model
-
save
best_metrics
value in model checkpoint -
support for experimental DETR model, this model is still unable to be exported caused by the limitation in current exporter design
-
support for per parameter options (see PyTorch Optimizer) using
'param_groups'
key in model components. -
jit and export global context, see
vortex/development/networks/modules/utils/config.py
-
support for per parameter options (see PyTorch Optimizer)
using'param_groups'
key in model components. -
support for None
additional_input
shape in model for scalar tensor input. -
support for image size type of list (w,h), or non-square image, in predict and export.
-
validation loss calculation to experiment logger
-
support for changing batch norm layer in all backbone with
norm_layer
argument. -
new backbone models: CSPNet, ResNest, RexNet, RegNet, TResNet. see more details in spreadsheet or csv summary
-
darknet weight converter in scripts/convert_darknet_weight.py
-
yolov3 converted darknet weight and config file
-
get model path from
config.checkpoint
if found and valid forpredict
andexport
-
yolov3 support for changing backbone stage to output with
backbone_stages
argument. -
BasePredictionPipeline
argument to plot visualized result. -
new
predict
andir_runtime_predict
argument to not visualise and not save prediction result. -
new
list
command in main cli to list available components -
shape inference for onnx export
Changed
- model checkpoint not save on hyperparameter optimization
save_epoch
config is not required- Fix bug on scheduler.step() placement on trainer
- Update docs on supported Pytorch scheduler
- changed
StepLRWithBurnIn
toStepLRWithWarmUp
scheduler - changed
CosineLRScheduler
toCosineLRWithWarmUp
scheduler - changed
TanhLRScheduler
toTanhLRWithWarmUp
scheduler BaseTrainer.create_optimizer
only accept model parameters dict (e.g. frommodel.parameters()
) instead of the model itself- make
class_label
for detection not required - update backbone components
- use mobilenetv3 definition and pretrained from rwightman
- improved cli help message
- improved progress bar, on
train
also display some metrics when training
Fixed
- Fix error when using ir_runtime_validate with uneven batch splitting caused by different batch size on the last batch sample
- Fix error when
save_best_metrics
not present in experiment file - Fix ONNX graph ops to convert
iou_threshold
as input - lr scheduler bug when arguments changed and resumed
- yolov3 model definition
Release v0.2.0
Added
-
Added new classification metrics for validation :
- roc_curve
- precision
- recall
- f1-score
-
new checkpoint (saved) model format
checkpoint model is loaded as a dictionary with:-
default (required) member in checkpoint:
epoch
--> number of epochs the model have been trainedstate_dict
-> trained model's state dict, this is the same as the entire data as the old formatoptimizer_state
--> optimizer state in trainingconfig
--> configuration used to train the model
-
additional (optional) member (if any):
class_names
--> model's output class names mapmetrics
--> per epoch training metricsscheduler_state
->state_dict
for trainer's lr scheduler
-
-
support for resume training in training pipeline using
checkpoint
field in config file and--resume
flag in train command. -
checkpoint
field in configuration file to point to the checkpoint model used to resume training if--resume
flag is given.init_state_dict
is still possible to be used but will automatically loadstate_dict
to model even if--resume
flag is not defined, but removed from docs. -
model checkpoint update script in
script/update_model.py
-
Now possible to access
class_names
andinput_specs
attributes from bothPytorchPredictionPipeline.model
andIRPredictionPipeline.model
-
config deprecation checks for new config format
-
Support for adding external model from user space
-
Added
DALIDataLoader
andnvidia_dali
augmentation modulenvidia_dali
augmentation module must be used withDALIDataLoader
DALIDataLoader
can use other augmentation module, however ifnvidia_dali
augmentation module if specified in the experiment file, it must be in the first orderDALIDataLoader
utilizeray
library to paralelize external module augmentation for each batch sample
Changed
- reading
class_names
attribute from checkpoint in prediction and export pipeline class_names
in dataset, prediction, and export is optional. If not specified orNone
, will create a numbered class label[class_0, class_1, ..., class_n]
class_names
moved fromPytorchPredictionPipeline.class_names
toPytorchPredictionPipeline.model.class_names
( also applied toIRPredictionPipeline
)- None in string to normal python None
- new config format, as described in #7.
- change dataset name field
dataset
toname
inconfig.dataset.train
andconfig.dataset.eval
. - move
device
fromconfig.trainer
to mainconfig
. - move
dataloader
field fromconfig.dataset
to mainconfig
. - change dataloader module from
dataloader
tomodule
inconfig.dataloader
. - change default dataloader module name from
DataLoader
toPytorchDataLoader
inconfig.dataloader.module
. - change
scheduler
tolr_scheduler
inconfig.trainer
. - change field
validation
tovalidator
and move it fromconfig.trainer
to mainconfig
.
- change dataset name field
- Refactor
DatasetWrapper
intoBasicDatasetWrapper
andDefaultDatasetWrapper
- Change output type of BaseRuntime
__call__
method to list of orderedDict - It is now possible to override image auto padding in dataset object by adding and set
self.disable_image_auto_pad = True
attribute on thecollate_fn
object provided by themodel_components
- Refactor package into 2 namespace packages :
vortex.runtime
andvortex.development
. In which casevortex.development
is depend onvortex.runtime
, butvortex.runtime
can be installed as a standalone package for minimal requirement inferencing library
Initial Release
Added
- Python package installation
- Command line interface
- Initial documentation
- Base development pipeline : training, validation, export, predict, ir-predict, ir-validation, hypopt
- Modular design
- Integration with image augmentation library ( Albumentations )
- Integration with hyperparameter optimization library ( Optuna )
- Integration with 3rd party experiment logger ( Comet.ml )
- Graph export to Torchscript and ONNX
- Visual report of model's performance and resource usage, see this example
- Various architecture support
- 50 + infamous backbone networks
- Classification and Detection architecture support