ttach

GitHub
1k 69 非常简单 1 次阅读 1周前MIT开发框架插件图像
AI 解读 由 AI 自动生成,仅供参考

ttach 是一个基于 PyTorch 的开源库,专注于实现图像领域的“测试时增强”(Test Time Augmentation, TTA)。在模型训练阶段,数据增强常用于提升泛化能力;而 ttach 将这一理念延伸至预测阶段。它通过对测试图像进行翻转、旋转、缩放等多种随机变换,让模型多次处理同一张图的不同版本,最后将这些预测结果进行平均或融合,从而得出更稳定、更准确的最终输出。

这一机制有效解决了单次预测可能因图像角度、光照或噪声干扰导致的误差问题,显著提升了模型在分割、分类及关键点检测等任务中的鲁棒性与精度。ttach 特别适合 AI 开发者与研究人员使用,尤其是那些希望在不重新训练模型的前提下,快速挖掘现有模型潜力、优化竞赛成绩或提升生产环境表现的专业人士。

其技术亮点在于高度模块化与灵活性:不仅提供了水平翻转、90 度旋转、多尺度缩放等丰富的内置变换算子,还支持用户自由组合自定义增强策略。此外,ttach 通过简洁的包装器接口(Wrapper),能够无缝适配分割、分类和关键点检测等多种模型架构,自动处理正向增强与反向还原逻辑,让用户仅需几行代码即可集成强大的 TTA 功能。

使用场景

某医疗影像团队正在开发基于深度学习的肺结节分割系统,需在 CT 扫描中精准定位微小病灶以辅助医生诊断。

没有 ttach 时

  • 模型对输入图像的角度和尺度极其敏感,一旦患者体位稍有倾斜或结节大小变化,预测结果便出现严重偏差。
  • 面对噪声干扰或对比度较低的模糊切片,单次推理容易产生断裂的掩码或错误的假阳性区域。
  • 为了提升鲁棒性,开发人员被迫花费数周重新收集数据并调整训练策略,但仍难以覆盖所有临床罕见情况。
  • 最终交付的模型在测试集上波动较大,医生因不信任其稳定性而拒绝在实际诊疗中采纳。

使用 ttach 后

  • 通过封装 SegmentationTTAWrapper 并应用 d4_transform,系统自动对每张 CT 切片执行翻转与旋转,消除了体位角度带来的预测误差。
  • 利用多尺度缩放(Scale)和亮度微调(Multiply)生成多个增强视图,将分散的预测结果取平均,显著修复了模糊区域的掩码断裂问题。
  • 无需重新训练模型或补充数据,仅需几行代码即可在推理阶段集成多种增强策略,快速适应了不同的设备成像风格。
  • 模型输出的置信度更加平稳,分割边界平滑且连续,大幅提升了放射科医生对 AI 辅助结果的信任度。

ttach 通过在推理阶段引入“多重视角”验证机制,以零训练成本显著提升了模型在复杂真实场景下的鲁棒性与准确率。

运行环境要求

操作系统
  • 未说明
GPU

未说明 (基于 PyTorch,支持 CPU 或 GPU)

内存

未说明

依赖
notes该工具是用于图像测试时增强(TTA)的 PyTorch 库,本身不包含模型权重,无需下载大型模型文件。它通过包装现有的分割、分类或关键点检测模型来工作。安装可通过 pip 直接完成。由于依赖 PyTorch,具体的 GPU、CUDA 和 Python 版本需求取决于用户所安装的 PyTorch 版本及其运行的具体模型。
python未说明
torch
numpy
ttach hero image

快速开始

TTAch

使用 PyTorch 进行测试时数据增强!

与数据增强对训练集的作用类似,测试时数据增强的目的是对测试图像进行随机变换。因此,我们不会只向训练好的模型展示一次常规的“干净”图像,而是会多次展示经过增强后的图像。然后,我们将对每张对应图像的预测结果取平均值,并将其作为最终的预测结果 [1]。

           输入
             |           # 输入图像批次 
        / / /|\ \ \      # 应用增强操作(翻转、旋转、缩放等)
       | | | | | | |     # 将增强后的批次输入模型
       | | | | | | |     # 对每个批次的掩码/标签进行逆变换
        \ \ \ / / /      # 合并预测结果(均值、最大值、几何平均等)
             |           # 输出掩码/标签批次
           输出

目录

  1. 快速入门
  2. 变换
  3. 别名
  4. 合并模式
  5. 安装

快速入门

分割模型封装 [文档字符串]:
import ttach as tta
tta_model = tta.SegmentationTTAWrapper(model, tta.aliases.d4_transform(), merge_mode='mean')
分类模型封装 [文档字符串]:
tta_model = tta.ClassificationTTAWrapper(model, tta.aliases.five_crop_transform())
关键点模型封装 [文档字符串]:
tta_model = tta.KeypointsTTAWrapper(model, tta.aliases.flip_transform(), scaled=True)

注意: 模型必须以 torch([x1, y1, ..., xn, yn]) 的格式返回关键点。

高级示例

自定义变换:
# 定义了 2 * 2 * 3 * 3 = 36 种增强方式!
transforms = tta.Compose(
    [
        tta.HorizontalFlip(),
        tta.Rotate90(angles=[0, 180]),
        tta.Scale(scales=[1, 2, 4]),
        tta.Multiply(factors=[0.9, 1, 1.1]),        
    ]
)

tta_model = tta.SegmentationTTAWrapper(model, transforms)
自定义模型(多输入/多输出)
# 示例:如何使用 TTA 处理一批图像
# 其中 `image`/`mask` 是 4D 张量 (B, C, H, W),`label` 是 2D 张量 (B, N)

for transformer in transforms: # 自定义变换或例如 tta.aliases.d4_transform() 
    
    # 增强图像
    augmented_image = transformer.augment_image(image)
    
    # 输入模型
    model_output = model(augmented_image, another_input_data)
    
    # 对掩码和标签进行逆增强
    deaug_mask = transformer.deaugment_mask(model_output['mask'])
    deaug_label = transformer.deaugment_label(model_output['label'])
    
    # 保存结果
    labels.append(deaug_mask)
    masks.append(deaug_label)
    
# 按照需求对结果进行聚合,例如取均值/最大值/最小值
label = mean(labels)
mask = mean(masks)

变换

变换 参数 取值
HorizontalFlip - -
VerticalFlip - -
Rotate90 角度 列表[0, 90, 180, 270]
Scale 缩放比例
插值方法
列表[浮点数]
"nearest"/"linear"
Resize 目标尺寸
原始尺寸
插值方法
列表[元组[int, int]]
元组[int,int]
"nearest"/"linear"
Add 列表[浮点数]
Multiply 因子 列表[浮点数]
FiveCrops 裁剪高度
裁剪宽度
整数
整数

别名

  • flip_transform(水平+垂直翻转)
  • hflip_transform(水平翻转)
  • d4_transform(翻转+旋转 0°、90°、180°、270°)
  • multiscale_transform(尺度变换,可指定缩放比例)
  • five_crop_transform(四个角裁剪+中心裁剪)
  • ten_crop_transform(五个角裁剪+水平翻转后的五个角裁剪)

合并模式

  • mean
  • gmean(几何平均)
  • sum
  • max
  • min
  • tsharpen(温度锐化 方法,t=0.5)

安装

PyPI:

$ pip install ttach

源码:

$ pip install git+https://github.com/qubvel/ttach

运行测试

docker build -f Dockerfile.dev -t ttach:dev . && docker run --rm ttach:dev pytest -p no:cacheprovider

版本历史

v0.0.32020/07/09
v0.0.22019/11/01
v0.0.12019/10/02

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|5天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|6天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

150.7k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|昨天
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|5天前
插件开发框架