Skip to content

参考

基于 Albumentations 官方文档(albumentations.ai docs Transforms and Targets + API Reference)+ GitHub 整理

速查

  • 核心类A.Compose / A.OneOf / A.SomeOf / A.OneOrOther / A.BboxParams / A.KeypointParams
  • 变换调用transform(image=, mask=, bboxes=, keypoints=, **labels) → dict
  • bbox 格式pascal_voc / coco / yolo / albumentations
  • keypoint 格式xy / yx / xya / xys / xyas / xysa
  • 安装pip install albumentationsx(主线)/ pip install albumentations(归档)
  • import 名import albumentations as A(两个包都是这个名)
  • 当前版本:AlbumentationsX 主线 / Albumentations 2.0.x(2024 年发布,2026 维护)
  • 底层:OpenCV + NumPy
  • 变换数量:50+ 种 2D 变换
  • 适用任务:分类 / 分割(语义+实例)/ 检测 / 关键点(姿态)

容器与参数类 API

Compose

python
A.Compose(
    transforms,                    # 变换列表
    bbox_params=None,              # A.BboxParams 或 dict
    keypoint_params=None,          # A.KeypointParams 或 dict
    additional_targets=None,       # 额外目标(如 {'image2': 'image'})
    p=1.0,                         # 整体触发概率
    is_check_shapes=True,          # 校验 image 与 mask 形状一致
)

BboxParams

python
A.BboxParams(
    format='pascal_voc',   # pascal_voc / coco / yolo / albumentations
    label_fields=None,     # 标签字段名列表,如 ['class_labels']
    min_area=0.0,          # 过滤面积过小的框
    min_visibility=0.0,    # 过滤可见比过低的框
)

KeypointParams

python
A.KeypointParams(
    format='xy',           # xy / yx / xya / xys / xyas / xysa
    label_fields=None,
    remove_invisible=True, # 丢弃越界点
    angle_in_degrees=True, # angle 单位
)

OneOf / SomeOf / OneOrOther

python
A.OneOf(transforms, p=0.5)            # 随机选一种
A.SomeOf(n, transforms, p=0.5)        # 随机选 n 种
A.OneOrOther(first, second, p=0.5)    # 二选一

坐标格式对照

bbox 格式

format坐标含义单位示例(100×100 图)
pascal_voc[x_min, y_min, x_max, y_max]绝对像素[10, 20, 80, 90]
coco[x_min, y_min, width, height]绝对像素[10, 20, 70, 70]
yolo[x_center, y_center, width, height]归一化 [0,1][0.45, 0.55, 0.70, 0.70]
albumentations[x_min, y_min, x_max, y_max]归一化 [0,1][0.1, 0.2, 0.8, 0.9]

keypoint 格式

format含义
xy[x, y]
yx[y, x]
xya[x, y, angle]
xys[x, y, scale]
xyas[x, y, angle, scale]
xysa[x, y, scale, angle]

变换速查表

几何(空间)变换

变换作用
HorizontalFlip水平翻转
VerticalFlip垂直翻转
RandomRotate90随机 90 度倍数旋转
Rotate任意角度旋转(limit 控制范围)
ShiftScaleRotate平移+缩放+旋转组合
Transpose转置(沿主对角线翻转)
RandomResizedCrop随机裁剪并缩放到目标尺寸
RandomCrop / RandomSizedCrop随机裁剪
CenterCrop中心裁剪
Crop指定区域裁剪
PadIfNeeded必要时填充到目标尺寸
ElasticTransform弹性形变
OpticalDistortion / GridDistortion光学/网格畸变
Flip随机水平或垂直翻转

颜色与像素变换

变换作用
RandomBrightnessContrast随机亮度对比度
RandomGamma随机 Gamma 校正
HueSaturationValue色调/饱和度/明度
RGBShiftRGB 通道偏移
ChannelShuffle通道随机重排
ColorJitter颜色抖动(亮度/对比度/饱和度/色调)
ToGray / ToSepia灰度 / 棕褐色
CLAHE自适应直方图均衡
Posterize / Solarize色彩量化 / 反相
FancyPCAPCA 颜色增强(AlexNet 风格)

模糊与噪声

变换作用
Blur通用模糊
GaussianBlur高斯模糊
MotionBlur运动模糊
MedianBlur中值模糊
GaussianNoise / ISONoise高斯 / ISO 噪声
ImageCompressionJPEG 压缩失真

丢弃与遮挡

变换作用
CoarseDropout粗粒度随机遮挡(矩形块)
Cutout随机方形遮挡(旧版,被 CoarseDropout 取代)
GridDropout网格状丢弃
ChannelDropout随机丢弃颜色通道

天气与场景模拟

变换作用
RandomRain雨滴
RandomSnow积雪
RandomFog
RandomSunFlare镜头眩光
RandomShadow阴影
RandomGravel砾石
Spatter泥点溅射

数值与格式

变换作用
Normalize归一化(mean/std)
ToFloat转 float32(按 max_value 归一)
FromFloatfloat 转回 uint8
ToTensor转 PyTorch tensor(部分版本)

自定义变换基类

基类作用
A.ImageOnlyTransform只影响图像,实现 apply
A.DualTransform影响多目标,需实现 apply + apply_to_mask + apply_to_bbox + apply_to_keypoint
A.BasicTransform最基础,所有变换的父类

版本与兼容

近期版本要点

版本线状态关键点
AlbumentationsX活跃主线(2026)持续更新,新变换与性能优化;pip install albumentationsx
Albumentations 2.0.x归档(仍可用)2024 年发布;2.0.0 重构 API(always_apply 等参数调整)
Albumentations 1.4.x旧版1.x 系列最后维护线

兼容性

  • Python:≥ 3.7(推荐 3.8–3.11)
  • 依赖opencv-python(或 opencv-python-headless)/ numpy / scipy(部分变换)/ scikit-image(部分变换)
  • import 名import albumentations as A(无论装 albumentations 还是 albumentationsx
  • 2.0 迁移always_apply 参数在 2.0 后弃用,统一用 p;部分变换重命名

与同类库对比

维度Albumentationstorchvision.transformsimgaug
多目标同步image/mask/bbox/keypoint 一条管线主要 image支持 bbox/keypoint
变换种类50+数十个丰富
性能OpenCV 底层快tensor 操作
维护活跃(AlbumentationsX)PyTorch 官方停滞
APICompose 返回 dictcallable 流式较老
文档完善完善基础

官方资源