This repository was archived by the owner on Jul 10, 2025. It is now read-only.
Releases: albumentations-team/albumentations
Releases · albumentations-team/albumentations
Albumentations 1.4.3 Release Notes
Albumentations 1.4.3 Release Notes
- Request
- Highlights
- New transform
- Minor improvements and bug fixes
Support Our Work
- Love the library? You can contribute to its development by becoming a sponsor for the library. Your support is invaluable, and every contribution makes a difference.
- Haven't starred our repo yet? Show your support with a ⭐! It's just only one mouse click.
- Got ideas or facing issues? We'd love to hear from you. Share your thoughts in our issues or join the conversation on our Discord server for Albumentations
New transform
- Added
Morphologicaltransform that modifies the structure of the image. Dilation expands the white (foreground) regions in a binary or grayscale image, while erosion shrinks them.
Minor improvements and bug fixes
- Updated benchmark for uint8 images, processed on CPU. Added Kornia and Augly. LINK by @ternaus
- Bugfix in FDA transform by @ternaus
- Now RandomSizedCrop supports the same signature as analogous transform in torchvision by @zetyquickly
1.4.2
Albumentations 1.4.2 Release Notes
- Request
- Highlights
- New transform
- New functionality
- Improvements and bug fixes
Request
- If you enjoy using the library as an individual developer or as a representative of the company please consider becoming a sponsor for the library. Every dollar helps.
- If you did not give our repo a ⭐, it is only one mouse click
- If you have feature requests or proposals or encounter issues - submit your request to issues or ask in Discord server for Albumentations
New transform
Left: Original, Middle: Chromatic aberration (default args, mode="green_purple"), Right: Chromatic aberration (default args, mode="red_blue")
(Image is from our internal mobile mapping dataset)
New functionality
- Return
mixing parameterforMixUptransform by @Dipet. For more details Tutorial on MixUp
Improvements and Bugfixes
- Do not throw deprecation warning when people do not use deprecated parameters in
AdvancedBlurby @Aloqeely - Updated
CONTRIBUTORS.mdfor Windows users by @Aloqeely - Fixed Docstring for
DownScaletransform by @ryoryon66 - Bugfix in
PadIfNeededserialization @ternaus
1.4.1
Albumentations 1.4.1 Release Notes
- Request
- Highlights
- New transform
- Improvements
- Bug fixes
Request
- If you enjoy using the library as an individual developer or during the day job as a part of the company, please consider becoming a sponsor for the library. Every dollar helps.
- If you did not give our repo a ⭐, it is only one mouse click
- If you have feature requests or proposals or encounter issues - submit your request to issues or our new initiative, - Discord server for albumentations
New transform
- Added
MixUptransform: which linearly combines an input (image, mask, and class label) with another set from a predefined reference dataset. The mixing degree is controlled by a parameter λ (lambda), sampled from a Beta distribution. This method is known for improving model generalization by promoting linear behavior between classes and smoothing decision boundaries.
Minor changes and Bug Fixes
- Moved from
isort,flake8,blacktoruff - Added extra checks for docstrings to match Google Style.
- Updated Who's using
- Removed quidda dependency, which addresses
opencvlibrary inconsistencies issues - New, updated version of benchmark.
1.4.0
Albumentations 1.4.0 Release Notes
- Request
- Highlights
- New transform
- Backwards Incompatible Changes
- Improvements
- Bug fixes
Request
- If you enjoy using the library as an individual developer or during the day job as a part of the company, please consider becoming a sponsor for the library. Every dollar helps.
- If you did not give our repo a ⭐, it is [only one mouse click].(https://github.com/albumentations-team/albumentations)
- If you have feature requests, proposals, or encounter issues - submit your request to issues or, our new initiative, - Discord server for albumentations
Highlights
In this release, we mainly focused on the technical debt as its decrease allows faster iterations and bug fixes in the codebase. We added only one new transform, did not work on speeding up transforms, and other changes are minor.
- We are removing the dependency on the imgaug library. The library was one of our inspirations when we created Albumentations, but maintainers of imgaug ceased its support which caused inconsistencies in library versions. It was done in 2021, say commit ba44eff by @Dipet .
But, somehow, we are cutting this dependency only in 2024.
- Added typing in all of the codebase. When we started the library, Python 2 was still widely used; hence, none of the original codebases had types specified for function arguments and return types. Since the end of the support for Python 2, we added types to the new or updated code, but only now have we covered all the codebase.
New transform
- Added
XYMaskingtransform: applies masking strips to an image, either horizontally (X axis) or vertically (Y axis), simulating occlusions. This transform is helpful for training models to recognize images with varied visibility conditions. It's particularly effective for spectrogram images, allowing spectral and frequency masking to improve model robustness.
As other dropout transforms CoarseDropout, MaskDropout, GridDropout it supports images, masks and keypoints as targets. (004fabb by @ternaus )
Backward Incompatible Changes
The deprecated code, including 15 transforms, was removed.
Dependency on the imgaug library was removed.
Deleted Transforms
JpegCompression. Use ImageCompression instead.RandomBrightness. Use RandomBrigtnessContrast instead.RandomContrast. Use RandomBrigtnessContrast instead.Cutout. Use CoarseDropout instead.ToTensor. Use ToTensorV2 instead.IAAAdditiveGaussianNoise. Use GaussNoise instead.IAAAffine. Use Affine instead.- IAACropAndPad. Use CropAndPad instead.
IAAEmboss. Use Emboss instead.IAAFliplr. Use HorizontalFlip instead.IAAFlipud. Use VerticalFlip instead.IAAPerspective. Use Perspective instead.IAAPiecewiseAffine. Use PiecewiseAffine instead.IAASharpen. Use Sharpen instead.IAASuperpixels. Use Superpixels instead.
Other deprecated functionality
- Removed
epsparameter in RandomGamma - Removed
lambda_transformsinserialization.from_dictfunction.
Minor changes and Bug Fixes
- Added details Contributor's guide
- Added support for
matrix=Nonecase for Piecewise affine transform (c70e664 @Dipet ) - Bugfix - Eliminated the possibility of the Perspective transform collapsing (a919a77 @alicangok )
- Fixes in docstrings (@domef, @aaronzs, @Dipet, @ternaus )
- Added checks for python 3.12
1.3.1
New augmentations
ToRGBtransform (#1323 by @kinoooshnik)RandomGraveltransform (#1365 by @onurtore)
Minor changes
- Color parameter for
Spatter(#1305 by @Andredance) - Check for image and masks shape equality (#1310 by @Andredance)
- Filter out bounding boxes with width or height below parameters (#1327 by @jangop)
- Added
rotate_methodinAffine(#1394 by @i-aki-y)
Bugfixes
- Docs and types fixes (#1314 by @oguz-hanoglu, #1320 by @jangop, #1379 by @Dipet, #1403 by @NatanBagrov, #1400 by @ajinkyakhadilkar, #1343 by @plashchynski)
- Fixed check when mask is ndarrray (#1326 by @farizrahman4u)
- Fixed keypoint detection in hole for
CoarseDropout(#1330 by @domef) - Fixed deprecated imports of
scipy.ndimage.gaussian_filter(#1311 by @rbu) - Changed the sampling procedure of circles for
RandomSunFlare(#1333 by @jasonrock-a3) - Fixed deprecationwarning in
ToSepiatransform (#1397 by @ifeherva) - Fixed
skimagedeprecetions (#1421 by @Dipet) - Python3.11 support fixes (#1426 by @Erotemic)
1.3.0
Breaking changes
- Renamed
methodtorotate_methodinsideRotateto keep consistency between naming parameters. (#1258 by @Dipet, thanks to @MichaelMonashev)
New augmentations
RandomCropFromBorders- Crops image based on indents from image borders. (#1240 by @Dipet based on #476 by @ZFTurbo)BBoxSafeRandomCrop- Crops image without loss of bboxes. Instead ofRandomSizedBBoxSafeCropthis implementation do not apply resize to target size. (#579 by @SunQpark)Spatter- Simulates corruption which can occlude a lens in the form of rain or mud. (#573 by @akarsakov)Defocus- Imitates lens defocusing. (#551 by @akarsakov)ZoomBlur- Imitates lens blur on zoomig. (#551 by @akarsakov)
Bugfixes
- Fixed wrong result in
RandomBrightnessContrastwhenbrightness_by_max=False. (#487 by @Dipet) - Fixed wrong bbox clipping inside
PerspectiveandAffine. (#1231 by @Dipet) - Fixed incorrect removal of bboxes when
min_visibility=0ormin_visibility=1. (#616 by @IlyaOvodov) - Fixed wrong keypoint's cropping inside
Rotatewhencrop_border=True. (#1250 by @Dipet, thanks to @jonkoi) - Fixed wrong propagation of
always_applyComposechildren. (#561 by @albu) - RandomSunFlare now correctly works with
src_color, and use all three color values. (#1285 by @hoel-bagard) - RandomGamma now correctly works with float
gamma_limit. (#1286 by @zahragolpa)
Minor changes:
- Speeded up
Normalizein some case up to 2 times. (#563 by @Dipet) GridDistortion,ElasticTransformandOpticalDistortionnow supports bbox targets. (#476, #1262 by @ZFTurbo and @Dipet)MotionBlurnow supportsallow_shiftedflag. When it's value isFalseonly non shifted kernels generated. (#1239 by @Dipet)- Updated versions of type formatters. (#1245 by @ternaus)
GridDistortionnow supportsnormalizedflag. When it is set toTruewill be applied distortion inside image border. (#722 by @poke1024)- Now you can describe downscale and upscale interpolation method for
Downscale. This is needed to avoid interpolation artefacts. (#584 by @nathanhubens) - Refactoring. Spatial transforms moved to geometric files. (#1241 by @ternaus)
- Refactoring. Common functions moved into
albumentations.augmentations.utils.py. (#1260 by @Dipet) - Refactoring. Blur transforms moved into
albumentations.augmentations.blur. (#1259 by @Dipet)
1.2.1
Minor changes
A.RotateandA.ShiftScaleRotatenow support new rotation method for bounding boxes,ellipse. (#1203 by @victor1cea)A.Rotatenow supports new argumentcrop_border. If set to True, the rotated image will be cropped as much as possible to eliminate pixel values at the edges that were not well defined after rotation. (#1214 by @bonlime)- Tests that use multiprocessing now run much faster (#1218 by @Dipet)
- Improved type hints (#1219 by @Dipet )
- Fixed a deprecation warning in
match_histograms. (#1121 by @BloodAxe)
Bugfixes
A.CropNonEmptyMaskIfExistsmodified the first element ofmasksin-place. Now, this behavior is fixed andA.CropNonEmptyMaskIfExistsdoesn't do in-place modification of input masks. (#1193 by @ORippler).- Albumentations now correctly serialized and desirealized
fill_valueandmask_fill_valueparameters forA.GridDropout. (#1191 by @victor1cea) A.ColorJitternow correctly works withA.ReplayCompose. (#1199 by @zakajd)- Fixed incorrect behavior of
A.ColorJitterfornp.float32input images whencontrastis set to 0 (previously, all values were set to 0.5 instead of using the average value).. (#1207 by @Dipet) A.Rotate,A.AffineandA.ShiftScaleRotatenow do rotation in the same way. Fixed incorrect rotation angle forA.Affine.A.RotateandA.ShiftScaleRotatenow correctly rotate the keypoints 90 degrees and don't leave black lines around the edges of the image. (#1091 by @Dipet )
1.2.0
New augmentations:
A.UnsharpMask. This transform sharpens the input image using Unsharp Masking processing and overlays the result with the original image. (#1063 by @zakajd)A.RingingOvershoot. This transform creates ringing or overshoot artifacts by convolving the image with a 2D sinc filter. (#1064 by @zakajd)A.AdvancedBlur. This transform blurs the input image using a Generalized Normal filter with randomly selected parameters. It also adds multiplicative noise to generated kernel before convolution. (#1066 by @zakajd)A.PixelDropout. This transformation randomly replaces pixels with the passed value. (#1082 by @Dipet)
Bugfixes
- Fixed a problem that prevented
A.RandomShadowfrom working with non-contiguous input. (#1117 by @i-aki-y) A.PadIfNeedednow works with an arbitrary number of channels. (#1069 by @BloodAxe)- Fixed all
np.randomuse cases to prevent identical values when using multiprocessing. (#1070 by @Dipet) - The
slantparam now has an effect inA.RandomRain. (#1179 by @victor1cea) translate_percentnow uses 0 as a default value in theA.Affinetransform. (#1183 by @victor1cea)A.SafeRotateno longer loses blocks and keypoints. (#1109 by @Dipet)A.CropAndPadnow correctly handles bboxes whenkeep_size=True. (#1059 by @cannon)A.RandomCrop,A.RandomSizedCrop, andA.RandomSizedBBoxSafeCropnow sample last pixel. (#1080 by @Multihuntr)
Minor changes:
- Old code is refactored, and more type hints are added (#1052 by @Dipet).
A.Composenow warns the user if it receives a single augmentation instead of a sequence of augmentations. (#1055 by @Dipet)A.CoarseDropoutandA.RandomGridShufflenow support keypoints. (#1084 by @BloodAxe)A.ToTensorV2now supports themaskstarget. (#1097 by @alessiobonfiglio)A.PadIfNeedednow supports random padding. (#1160 by @mys007 )- Improved and corrected documentation: #1047 by @shyn, #1164 by @notplus, #1105 by @i-aki-y
- Speeded up tests by removing unnecessary tests. (#1188 by @creafz)
A.Affinenow haskeep_ratioflag. (#1104 by @i-aki-y)
1.1.0
New augmentations
TemplateTransform. This transform allows the blending of an input image with specified templates. (#572 by @akarsakov )PixelDistributionAdaptation. A new domain adaptation augmentation. It fits a simple transform on both the original and reference image, transforms the original image with transform trained on this image, and performs inverse transformation using transform fitted on the reference image. See the examples of this transform in thequdidarepository. (#959 by @arsenyinfo)
Minor changes:
LongestMaxSizeandSmallestMaxSizenow can also accept a list of sizes as theirmax_sizeargument and the actualmax_sizevalue will be sampled randomly from this list. (#930 by @kmistry-wx )A.Affinenow acceptsmask_interpolationas a parameter. (#975 by @dskkato )A.RandomRainnow alters brightness in HSV space instead of HLS space to prevent image corruption. (#990 by @ErlingLie)- Albumentations now raises
ValueErrorif bbox_params is not specified and bbox transformation is called (#1013 by @VirajBagal) CoarseDropoutcan now set the height and width of holes based on the fraction of original image height and width (#1014 by @VirajBagal )ElasticTransformgot performance optimizations. (#1004 by @b0nce)
Bugfixes
- Fixed a bug when
CropNonEmptyMaskIfExiststhrown an error when it was used with a keypoint even though keypoints were mentioned as a correct target. (#986 by @GalDude33 ) - Fixed KeyError with
RandomCropNearBBoxwhen it received values withx_min <= 0ory_min <= 0(#993 by @Dipet )