- Added normalized focal loss
- Fixed wrong shape of intermediate layers of DenseNet
- Refactor Dice/IoU loss into single metric `IoUMetricsCallback` with a few cool features: `metric="dice|jaccard"` to choose what metric should be used; `mode=binary|multiclass|multilabel` to specify problem type (binary, multiclass or multi-label segmentation)'; `classes_of_interest=[1,2,4]` to select for which set of classes metric should be computed and `nan_score_on_empty=False` to compute `Dice Accuracy` (Counts as a 1.0 if both `y_true` and `y_pred` are empty; 0.0 if `y_pred` is not empty).
- Added L-p regularization callback to apply L1 and L2 regularization to model with support of regularization strength scheduling.
- Refactor `DiceLoss`/`JaccardLoss` losses in a same fashion as metrics.
- Add Densenet encoders
- Bugfix: Fix missing BN+Relu in `UNetDecoder`
- Global pooling modules can squeeze spatial channel dimensions if `flatten=True`.
- Add more unit tests
- Code-style is now managed with Black
- `to_numpy` now supports `int`, `float` scalar types
* Minor release to update Catalyst contrib modules to latest Catalyst (requires catalyst>=19.8)
1. Added `ignore_index` for focal loss
2. Added `ignore_index` to some metrics for Catalyst
3. Added `tif` extension for `find_images_in_dir`
New functionality / breaking changes
* Added visualization functions to render best/worst batches for binary and semantic segmentation.
* JaccardScoreCallback now is a single callback for computing IoU for binary/multiclass/multilabel segmentation.
* Added HFF module (Hierarchical feature fusion).
* Added `set_trainable` function to enable/disabled training and batch-norm on module and it's childs.
* RLE encoding/decoding (Hi, Kaggle)
* `rgb_image_from_tensor` now accepts `dtype` parameters for returned image
* Fixed wrong implementation of UpsampleAddConv (There was extra residual connection)
2. Multiscale TTA module
3. New activations: Swish, HardSwish, HardSigmoid
4. AGN module (Activated Group Norm), mimicks ABN
1. `SpatialGate2d` now accepts `squeeze_channels` for explicit number of squeeze channels.
1. Code formatting
* Refactoring of activation functions factory method (for upcoming model builder)
* Cosmetic changes in logging
* Global pooling, SCSE module and MobileNetV3 encoders are not ONNX and CoreML friendly.
* Refactored FPN module for more flexible `interpolate_add` tuning (can use any module with two inputs)
Added MobileNetV3 encoder (implementation credits to https://github.com/Randl/MobileNetV3-pytorch)
1. Added WiderResNet & WiderResNetA2 encoders (https://github.com/mapillary/inplace_abn)
- Added 10-Crop TTA (https://github.com/BloodAxe/pytorch-toolbelt/issues/4)
- Added unit tests for TTA functions
- Added `freeze_bn` function to freeze all BN layers in a model
- Rename `unpad_tensor` to `unpad_image_tensor` to mimick `pad_image_tensor`
- Fixed bug in `d4_image2mask`
1. Refactored TTA interface