Posted on

資料增強好工具 – Albumentations

官方資訊

GITHUB: https://github.com/albumentations-team/albumentations

官方文檔: https://albumentations.ai/docs/getting_started/transforms_and_targets/

官方範例: https://github.com/albumentations-team/albumentations_examples/blob/master/notebooks/pytorch_semantic_segmentation.ipynb

Albumentations介紹

Albumentations 是一個流行的計算機視覺數據增強庫,專門設計用於圖像分類、目標檢測、分割等任務。它提供了豐富的圖像增強技術,可以幫助您在訓練深度學習模型時提升模型的性能和魯棒性。 Albumentations 支持多種常用的深度學習框架,如PyTorch和TensorFlow。

以下是 Albumentations 的一些特點和功能:

  • 多樣的增強技術: Albumentations 提供了大量的圖像增強技術,包括但不限於旋轉、翻轉、裁剪、縮放、亮度調整、對比度調整、顏色變換、模糊效果、噪聲添加等。
  • 高性能: Albumentations 以速度和內存效率為目標,因此它在圖像增強方面表現出色。這使得您能夠在訓練過程中高效地應用增強,不會成為訓練的瓶頸。
  • 靈活性: 您可以通過組合不同的增強操作來構建自定義的數據增強流水線。這使得您能夠根據任務和數據集的特點選擇適合的增強操作。
  • 易於集成: Albumentations 支持多種主流深度學習框架,可以方便地與您的模型訓練流程集成,無需複雜的配置。
  • 實時預覽: Albumentations 提供了實時預覽功能,可以在應用增強之前查看圖像的效果,以確保增強操作設置正確。
  • 多線程支持: 對於大規模數據集,Albumentations 支持多線程應用增強,加速數據準備過程。
  • 大量示例: Albumentations 提供了豐富的示例和文檔,幫助您了解每個增強操作的用法和效果。

使用範例

以下是一個使用 Albumentations 的簡單示例,演示如何將一些常見的增強操作應用於圖像數據:

https://github.com/albumentations-team/albumentations_examples/blob/master/notebooks/pytorch_semantic_segmentation.ipynb

import albumentations as A
from albumentations.pytorch import ToTensorV2
import cv2
import matplotlib.pyplot as plt

# 示例图像路径
image_path = 'path_to_your_image.jpg'
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 定义增强操作
transform = A.Compose([
    A.Resize(width=256, height=256),
    A.HorizontalFlip(p=0.5),
    A.VerticalFlip(p=0.5),
    A.Rotate(limit=30, p=0.5),
    A.RandomBrightnessContrast(p=0.2),
    A.Normalize(),
    ToTensorV2(),
])

# 应用增强
transformed_image = transform(image=image)['image']

# 可视化原始图像和增强后的图像
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.imshow(image)
plt.title('Original Image')

plt.subplot(1, 2, 2)
plt.imshow(transformed_image[0])  # 转换后的图像是 PyTorch 张量,选择通道 0 进行显示
plt.title('Transformed Image')
plt.show()