共计 3964 个字符,预计需要花费 10 分钟才能阅读完成。
什么是 AugLy?
AugLy 是 Meta(Facebook)开源的多模态数据增强库【Data Augmentation Library】,支持 音频、图像、文本、视频 四类数据,内置 100+ 增强操作,很多操作来自社交媒体的真实改动(如加表情 / 文字、做 meme、截图再转发的样式等),既可用于 训练时的数据扩增 ,也可用于 模型鲁棒性评估 和对抗性 / 真实世界扰动 测试。(github.com)
安装
- 仅图像 / 文本:
pip install augly
图像增强基于 PIL,文本增强基于 nlpaug。(augly.readthedocs.io)
- 含音频 / 视频(推荐):
pip install "augly[av]"
同时安装较重的音 / 视频依赖;视频模块需要 ffmpeg(conda/apt 安装或通过环境变量 AUGLY_FFMPEG_PATH / AUGLY_FFPROBE_PATH 指定)。(augly.readthedocs.io)
设计要点(为什么用 AugLy)
- 统一 API:每个模态都有函数式与类式(Transform)两套接口,并支持 Compose/OneOf 组合与按概率应用。(augly.readthedocs.io)
- 真实世界增强:如 OverlayOntoScreenshot / OverlayEmoji / RandomIGFilter 等,更贴近社媒平台上的常见改动。(augly.readthedocs.io)
- 元数据与强度(intensity):大多数操作可返回 / 累积 metadata(包含源 / 目标尺寸、参数等),并提供 intensity 函数量化一次增强的“强度”,便于实验记录与鲁棒性分析。(augly.readthedocs.io)
- 标注保真 :图像支持 边界框(pascal_voc / coco / yolo / *_norm) 传入并随增强同步变换。(augly.readthedocs.io)
快速上手(四大模态)
下列示例均为最小可运行片段,可直接粘贴到你的项目里。
1) 图像(PIL 后端)
函数式与组合式
import augly.image as imaugs
from PIL import Image
img = Image.open("in.png")
# 函数式:叠加表情 + 填充成正方形 + 伪造“截图转发”样式
img = imaugs.overlay_emoji(img, opacity=1.0, emoji_size=0.15)
img = imaugs.pad_square(img)
img = imaugs.overlay_onto_screenshot(img, output_path="out.png") # 也会保存
# 组合式(可与 torchvision 混用)import torchvision.transforms as T
AUGS = [
imaugs.Blur(),
imaugs.ColorJitter(brightness_factor=1.2, contrast_factor=1.2, saturation_factor=1.4),
imaugs.OneOf([imaugs.OverlayOntoScreenshot(), imaugs.OverlayEmoji(), imaugs.OverlayText()]),
]
TRANSFORMS = imaugs.Compose(AUGS)
out_img = TRANSFORMS(Image.open("in.png"))
以上接口、组合方式与示例参数均来自官方文档。(augly.readthedocs.io)
带标注的结构化增强
meta = []
out = imaugs.crop(
"in.png",
bboxes=[(0.25, 0.5, 0.75, 0.8)],
bbox_format="pascal_voc_norm",
metadata=meta,
)
支持多种 bbox 格式并记录坐标变换元数据。(augly.readthedocs.io)
2) 音频(librosa/torchaudio/NumPy 后端)
import augly.audio as audaugs
import librosa
# 支持传入路径或 ndarray;传 ndarray 时需提供 sample_rate
y, sr = librosa.load("a.wav", sr=None, mono=False)
# 改音量 -> 低通滤波 -> 归一化(可保存到文件)y, sr = audaugs.change_volume(y, sample_rate=sr, volume_db=10.0)
y, sr = audaugs.low_pass_filter(y, sample_rate=sr, cutoff_hz=500)
y, sr = audaugs.normalize(y, sample_rate=sr, output_path="a_out.wav")
也可使用类式 Compose/OneOf 串联 Clip/ChangeVolume/Speed/TimeStretch 等。(augly.readthedocs.io)
3) 文本(nlpaug 背骨)
import augly.text as txtaugs
texts = ["hello world", "bye planet"]
# 示例:按节奏插入标点,模拟用户噪声
aug_texts = txtaugs.insert_punctuation_chars(texts, granularity="all", cadence=5.0, vary_chars=True)
# 类式(按概率)transform = txtaugs.InsertPunctuationChars(granularity="all", p=0.5)
aug_texts2 = transform(texts)
文本模块的接口与示例用法见官方文档。(augly.readthedocs.io)
4) 视频(ffmpeg/OpenCV 后端)
import augly.video as vidaugs
video_path, out_path = "in.mp4", "out.mp4"
# 函数式:叠狗鼻贴纸 → 旋转(若不显式指定,可能覆盖原文件)vidaugs.add_dog_filter(video_path, out_path)
vidaugs.rotate(out_path, degrees=30)
# 组合式:色彩抖动 + 水平翻转 + 随机(Emoji/IG 滤镜 / 平移)
AUGS = [
vidaugs.ColorJitter(brightness_factor=0.15, contrast_factor=1.3, saturation_factor=2.0),
vidaugs.HorizontalFlip(),
vidaugs.OneOf([vidaugs.RandomEmojiOverlay(), vidaugs.RandomIGFilter(), vidaugs.Shift(x_factor=0.25, y_factor=0.25)]),
]
vidaugs.Compose(AUGS)(video_path, out_path)
视频模块安装与 ffmpeg 依赖、示例写法均见官方文档。(augly.readthedocs.io)
工程实践与最佳做法
- 记录元数据与强度
- 通过
metadata收集每步增强的函数名、输入 / 输出尺寸、参数等; - 使用
augly.*.intensity量化增强强度(浮点值),便于可重复实验与鲁棒性分析 / 对比。(augly.readthedocs.io)
- 与 PyTorch 无缝衔接
- 直接把 AugLy 的 Transform 放进
torchvision.transforms.Compose; - 或者先 AugLy 再
ToTensor()。(augly.readthedocs.io)
- 检测 / 分割任务的标注对齐
- 传入
bboxes+bbox_format,增强后坐标会被同步变换。(augly.readthedocs.io)
- 鲁棒性评测 / 对抗测试
- AugLy 的设计初衷之一就是用真实世界扰动来 评估模型鲁棒性缺口(比如对 meme/ 截图转发 / 滤镜等改动的稳定性),配合论文中的做法能系统化比较不同模型。(arxiv.org)
- 依赖与性能
- 音视频请用
augly[av]并安装 ffmpeg; - 增强链较长时,可对 I/O 做缓存 / 并行;论文与仓库也讨论了与其它库的基准和实现注意点。(augly.readthedocs.io)
典型应用场景与参考配方
- 版权 / 相似内容检索 :对图片执行
OverlayOntoScreenshot / Crop / Blur / OverlayText等,训练拷贝检测或感知哈希 / 特征模型,提高对“截屏转发 / 滤镜 / 裁剪”的稳定性。( 腾讯云) - 社媒多样性训练:对视频加入
RandomIGFilter / Emoji / Shift / ColorJitter等,贴近用户真实编辑习惯。(augly.readthedocs.io) - ASR/ 音频鲁棒性:用
ChangeVolume / LowPassFilter / Speed / TimeStretch / Clip等覆盖远近音量、设备与带宽差异。(augly.readthedocs.io) - NLP 噪声训练:
InsertPunctuationChars / simulate_typos / change_case等,提升文本模型在用户拼写 / 标点噪声下的表现。(augly.readthedocs.io)
进一步阅读
- 官方文档(涵盖四模态、API、示例):AugLy docs 与“Get Started”。(augly.readthedocs.io)
- GitHub 仓库与发布记录:支持 100+ 增强、函数式 / 类式接口、强度 / 元数据机制等。(github.com)
- 研究论文:AugLy: Data Augmentations for Robustness(arXiv)。(arxiv.org)

