* API:
* CLI:
* Added a 'FastEstimator run' CLI so users don't need to make their own parsers. Details in the CLI tutorial. [example](https://github.com/fastestimator-util/fastestimator-misc/tree/master/examples/1.2/cli_fe_run)
* Visualization:
* Improved bounding box visualization to support floating-point numbers
* Improved saliency map implementation
* Added grouped mean+-sigma logging visualization support. Details in the logging tutorial. [example](https://github.com/fastestimator-util/fastestimator-misc/tree/master/examples/1.2/vis_mean_sigma)
* Architecture:
* Added WideResNet
* Dataset:
* Added ciFAIR datasets which remove train/test duplicates found in cifar
* Added deterministic dataset splits by seed. [example](https://github.com/fastestimator-util/fastestimator-misc/blob/master/examples/1.2/ds_split/demo1.py)
* Added stratified dataset splits (splits maintaining class ratios). [example](https://github.com/fastestimator-util/fastestimator-misc/blob/master/examples/1.2/ds_split/demo2.py)
* Improved BatchDataset for more efficient memory usage
* Pipeline:
* Fixed BatchDataset to ignore drop_last setting
* Improved Mac multi-processing
* Fixed pytorch multi-processing and sitk multiprocessing conflict
* Fixed potential pipeline benchmark bug.
* Added support for mode-dependent batch size through a Pipeline batch_size dictionary argument. [example](https://github.com/fastestimator-util/fastestimator-misc/blob/master/examples/1.2/mode_dep_batchsize/demo1.py)
* Improved pipeline.benchmark to allow users to select how much detail to report.[example](https://github.com/fastestimator-util/fastestimator-misc/blob/master/examples/1.2/pipeline_benchmark/demo1.py)
* Added an automatic key filtering mechanism to save memory. [example](https://github.com/fastestimator-util/fastestimator-misc/blob/master/examples/1.2/key_filtering/demo1.py)
* Added RUA support (automatic data augmentation). [example](https://github.com/fastestimator/fastestimator/blob/master/tutorial/advanced/t12_hyperparameter_search.ipynb)
* Improved pipeline memory consumption and speed for Numpy arrays
* Network:
* Added support for Network post-processing Ops
* Fixed Multi-gpu inferencing issue when input size is less than the batch size
* Added SuperLoss as Curriculum learning method
* Improved GradientOp to handle gradient clipping by accepting a model as input. [example](https://github.com/fastestimator-util/fastestimator-misc/blob/master/examples/1.2/gradient_clipping/demo1.py)
* Added a 'build' method to TensorOps to instantiate any framework related tensors
* Added gradient merge support to allow for bigger batch sizes during single-GPU training. [example](https://github.com/fastestimator-util/fastestimator-misc/blob/master/examples/1.2/grad_merging/demo1.py)
* Fixed a potential RepeatOp bug in TensorFlow and added a max_iter arg to allowing limiting the number of iterations
* Fixed a new TensorFlow behavior change to allow for different input shapes across different execution modes
* Search:
* Added a new hyper-parameter search API. [example](https://github.com/fastestimator/fastestimator/blob/master/tutorial/advanced/t12_hyperparameter_search.ipynb)
* Estimator:
* Improved warm-up overhead by only running when schedulers are detected
* Trace:
* Added access to monitored keys (like loss values) for Traces executing in Test mode
* Added a Calibration Error Trace
* Added a LabelTracker Trace to help identify data performance issues
* Added ARC LR scheduler support (automated LR scheduling). [example](https://github.com/fastestimator-util/fastestimator-misc/blob/master/examples/1.2/arc/demo1.py)
* Improved Traceability to capture dataset split and seed information
* Fixed a TensorBoard issue to display TF graphs correctly
* Improved metric Traces to accept Sklearn kwargs
* Improved RestoreWizard:
* Fixed an issue where the dice trace might crash RestoreWizard
* Fixed a problem with classes which inherit from traceable classes but which are not themselves marked as traceable
* Backend:
* Updated TensorFlow version to 2.4.1 and PyTorch to 1.7.1
* Fixed a save_model bug where it sometimes failed to restore learning rate
* Added a new backend function: zscore
* Tutorial:
* Added a logging tutorial
* Improved the XAI tutorial
* Added a search API tutorial
* Improved the CLI tutorial
* Apphub:
* Added Deep Pyramid Residual Networks
* Added AutoML: RandAugment
* Improved CVAE inferencing
* Added Super Convergence
* Added Contrastive learning: SimCLR
* Test:
* Improved unit tests, integration tests, and nightly tests
* Deployment:
* Added slack integration
* Added Codacy integration (static code analysis)
* Improved website deployment