e2cnn

GitHub
673 85 简单 1 次阅读 2天前NOASSERTION开发框架
AI 解读 由 AI 自动生成,仅供参考

e2cnn 是一个基于 PyTorch 的开源扩展库,专为构建具有几何对称性的深度学习模型而设计。传统卷积神经网络(CNN)通常只能自动处理图像的平移变化,一旦图像发生旋转或翻转,模型性能往往大幅下降,需要依赖大量数据增强来弥补。e2cnn 通过引入 E(2)-等变可操纵卷积网络,从根本上解决了这一痛点,确保模型特征空间在输入图像经历平移、旋转及反射等多种几何变换时,仍能保持严格的数学对应关系。

该工具的核心亮点在于将传统的“通道数”概念升级为更丰富的“特征场”类型(如标量场、向量场),并提供了动态类型检查机制,保证几何处理的严谨性。它统一并泛化了多种现有的等变 CNN 架构,让开发者能够以更少的数据训练出泛化能力更强的模型。

e2cnn 非常适合计算机视觉领域的研究人员和深度学习开发者使用,特别是那些致力于医学影像分析、遥感图像处理或机器人感知等对方向敏感性要求较高场景的专业人士。需要注意的是,虽然 e2cnn 功能强大,但其开发团队已推出功能更全面的继任者 escnn 库,建议新用户优先关注新版本,但 e2cnn 仍可作为理解等变深度学习原理的优秀参考实现。

使用场景

某医疗影像团队正在开发一套自动检测肺部结节的 AI 系统,需要确保模型能精准识别任意角度拍摄的 CT 切片。

没有 e2cnn 时

  • 数据依赖严重:为了让模型学会识别旋转后的结节,必须对训练数据进行大量人工旋转增强,导致数据集膨胀且训练时间成倍增加。
  • 泛化能力不足:当遇到训练集中未覆盖的特殊角度或翻转图像时,传统 CNN 容易漏检或误报,因为平移等变性无法天然保证旋转一致性。
  • 特征提取低效:网络需要消耗大量算力去“重新学习”旋转不变性这一基础几何规律,而非专注于结节本身的病理特征。
  • 调试困难:难以从数学层面保证特征图在空间变换下的行为符合预期,模型鲁棒性往往只能靠反复试错来碰运气。

使用 e2cnn 后

  • 数据效率飞跃:利用 e2cnn 构建的 E(2)-等变网络天然具备旋转和反射等变性,无需大量数据增强即可在小样本下实现高精度识别。
  • 几何一致性保障:无论 CT 切片如何旋转或翻转,e2cnn 都能保证特征图发生对应的几何变换,从根本上消除了因角度变化导致的漏检。
  • 专注核心任务:网络不再浪费资源学习基础几何变换,而是将全部容量用于提取结节的纹理与形态特征,显著提升了检测准确率。
  • 类型安全开发:通过 GeometricTensor 对象和动态类型检查,开发者能确保每一步操作都符合几何逻辑,大幅降低了架构设计的出错率。

e2cnn 通过将几何先验知识直接嵌入网络架构,让 AI 模型用更少的数据学会了更稳健的空间理解能力。

运行环境要求

操作系统
  • 未说明
GPU

未说明(作为 PyTorch 扩展,支持 CPU 和 GPU,具体取决于底层 PyTorch 配置)

内存

未说明

依赖
notes该库是 PyTorch 的扩展,用于构建 E(2) 等变卷积神经网络。官方已声明此库 (e2cnn) 处于弃用状态,建议用户迁移至新版库 'escnn',后者包含 e2cnn 的所有功能并支持更广泛的等变群。安装前需确保已正确安装 PyTorch。训练后可通过 .export() 方法将模型转换为标准 PyTorch 模型以消除推理时的额外开销。
python3.x (基于代码示例推断,具体版本未说明)
torch
numpy
e2cnn hero image

快速开始

通用E(2)等变可导CNN

文档 | 实验 | 论文 | 加布里埃莱的学位论文 | 莫里斯的学位论文 | 新的escnn


请查看我们新的escnn,它将e2cnn扩展到了更广泛的等变群类。

尽管我们仍会为这个旧版本提供一定支持, 但该库已被弃用,我们计划逐步停止维护,转而使用更新的版本**escnn。 请注意,escnn*已经包含了e2cnn*的所有功能,并且还有更多新特性。 您可以在新版本中找到主要差异的简要总结这里



e2cnn是用于等变深度学习的PyTorch扩展。

等变神经网络保证其特征空间在输入变换下的特定变换行为。例如,经典的卷积神经网络(CNN)在设计上对其输入的平移具有等变性。 这意味着图像的平移会导致网络特征图的相应平移。本库提供了在图像平面$\mathbb{R}^2$的所有等距变换E(2)下——即平移旋转反射——都具有等变性的神经网络模块实现。 与传统CNN不同,E(2)等变模型能够保证在这些变换上的泛化能力,因此数据效率更高。

E(2)等变可导CNN的特征空间被定义为特征场的空间,其特点是由它们在旋转和反射下的变换规律所决定。典型的例子包括标量场(如灰度图像或温度场)或矢量场(如光流或电磁场)。

特征场示例

用户无需指定通道数,而是需要明确字段的类型及其多重性来定义特征空间。给定指定的输入和输出特征空间,我们的R2conv模块会实例化两者之间最通用的卷积映射。 我们的库还提供了许多其他处理特征场的等变操作,包括非线性层、生成不变特征的映射、批归一化和丢弃层等。特征场由GeometricTensor对象表示,它封装了一个带有相应变换规律的torch.Tensor。所有等变操作都会进行动态类型检查,以确保对特征场的几何处理是合理的。

E(2)等变可导CNN在一个统一的框架中整合并推广了多种等距变换等变的CNN。示例包括:

更多细节请参阅我们在NeurIPS 2019发表的论文通用E(2)等变可导CNN

该库还支持等变可导偏微分算子,如用于等变神经网络的可导偏微分算子中所述。


该库由五个子包组成,每个子包具有不同的高级功能:

组件 描述
e2cnn.group 实现了表示论的基本概念
e2cnn.kernels 求解等变卷积核的空间
e2cnn.diffops 求解等变微分算子的空间
e2cnn.gspaces 定义图像平面及其对称性
e2cnn.nn 包含用于构建深度神经网络的等变模块

演示

由于 E(2) 可导向 CNN 在旋转和反射下具有等变性,因此其推理结果与图像的方向选择无关。 下方的可视化演示了这一观点:我们将旋转后的图像输入到一个随机初始化的 E(2) 可导向 CNN 中(左图)。 中间的图表展示了经过几层网络后,特征空间的等变变换,该特征空间由一个标量场(颜色编码)和一个向量场(箭头)组成。 在右图中,我们通过将响应场反向旋转,将其转换为随动参考系(稳定视图)。

等变 CNN 输出

在随动参考系中特征的不变性从实验上验证了 E(2) 可导向 CNN 的旋转等变性。 请注意,响应的波动是由于在像素网格上对图像进行采样所导致的离散化伪影,这使得精确的连续旋转无法实现。

为了进行对比,我们在下方展示了传统 CNN 在不同图像方向下的特征图响应。

传统 CNN 输出

由于传统 CNN 不具备旋转等变性,其响应会随着图像方向的不同而随机变化。这阻碍了 CNN 自动地在不同参考系之间泛化已学习的模式。

实验结果

E(2) 可导向卷积可以作为传统 CNN 中使用的常规卷积的直接替代品。 在保持相同的训练设置且未进行超参数调优的情况下,与 CNN 基线相比,性能显著提升(数值为测试误差,以百分比表示):

模型 CIFAR-10 CIFAR-100 STL-10
CNN 基线 2.6   ± 0.1   17.1   ± 0.3   12.74 ± 0.23
E(2)-CNN * 2.39 ± 0.11 15.55 ± 0.13 10.57 ± 0.70
E(2)-CNN 2.05 ± 0.03 14.30 ± 0.09   9.80 ± 0.40

没有 * 的模型是为了公平比较而设计的,其参数数量大致与基线保持一致;而带有 * 的模型则保留了通道数,从而保持了计算量。 更多细节请参阅我们的论文

入门指南

e2cnn 使用起来非常简单,因为它提供了一个高层次的用户界面,抽象掉了群论和表示论中的大部分复杂细节。 以下代码片段展示了如何从一张 RGB 图像执行一次等变卷积,生成 10 个 正则 特征场(对应于 群卷积)。

from e2cnn import gspaces                                          #  1
from e2cnn import nn                                               #  2
import torch                                                       #  3
                                                                   #  4
r2_act = gspaces.Rot2dOnR2(N=8)                                    #  5
feat_type_in  = nn.FieldType(r2_act,  3*[r2_act.trivial_repr])     #  6
feat_type_out = nn.FieldType(r2_act, 10*[r2_act.regular_repr])     #  7
                                                                   #  8
conv = nn.R2Conv(feat_type_in, feat_type_out, kernel_size=5)       #  9
relu = nn.ReLU(feat_type_out)                                      # 10
                                                                   # 11
x = torch.randn(16, 3, 32, 32)                                     # 12
x = nn.GeometricTensor(x, feat_type_in)                            # 13
                                                                   # 14
y = relu(conv(x))                                                  # 15

第 5 行指定了网络应在其上保持等变性的图像平面 $\mathbb{R}^2$ 上的对称群作用。我们选择了 循环群 C8,它描述了以 2π/8 为步长的离散旋转。 第 6 行指定了输入特征场的类型。RGB 图像的三个颜色通道被视为三个独立的标量场,它们按照 C8平凡表示 进行变换。 同样地,第 7 行指定了输出特征空间由 10 个特征场组成,这些特征场按照 C8正则表示 进行变换。 然后,通过将输入和输出类型以及卷积核大小传递给构造函数(第 9 行),实例化了 C8 等变卷积。 第 10 行实例化了一个等变的 ReLU 非线性激活函数,它将作用于输出特征场,因此传入了输出特征类型的参数。

第 12 和 13 行生成了一组随机的 RGB 图像小批量,并将其包装进 nn.GeometricTensor 中,以便将其与正确的场类型相关联。等变模块在第 15 行处理这个几何张量。每个模块都会检查传入的几何张量是否符合预期的变换规则。

由于在测试时无需再更新参数,因此在训练完成后,任何等变网络都可以转换为纯 PyTorch 模型,且不会比传统 CNN 增加额外的计算开销。当前代码支持通过 .export() 方法自动转换一些常用模块;更多详情请参阅文档

关于 e2cnn 基本功能的动手教程,请参阅 introduction.ipynb。 用于在 旋转 MNIST 数据集上训练和评估简单模型的代码可在 model.ipynb 中找到。

更复杂的等变 Wide Resnet 模型已在 e2wrn.py 中实现。要尝试一个在反射下等变的模型,请运行:

cd examples
python e2wrn.py

如果需要同时在反射以及 90 度整数倍旋转下等变的版本,可以运行:

python e2wrn.py --rot90

依赖项

该库基于 Python 3.7。

torch>=1.1
numpy
scipy

可选依赖:

pymanopt
autograd

以下包

sympy
rbf

是使用可导向微分算子所必需的。

如需 Python 3.6 兼容版本,请查看分支 legacy_py3.6

安装

您可以安装最新的 release,命令如下:

pip install e2cnn

或者,您也可以克隆此仓库并手动安装:

pip install git+https://github.com/QUVA-Lab/e2cnn

注意:rbf 依赖项(用于使用微分算子)无法自动安装,因为 PyPI 不支持直接依赖(详见 这里)。您可以按照 这些 指导手动安装 rbf

引用

本库的开发是我们论文《General E(2)-Equivariant Steerable CNNs》(arXiv:1911.08251)工作的一部分。如果您使用我们的代码,请引用该工作:

@inproceedings{e2cnn,
    title={{General E(2)-Equivariant Steerable CNNs}},
    author={Weiler, Maurice and Cesa, Gabriele},
    booktitle={Conference on Neural Information Processing Systems (NeurIPS)},
    year={2019},
}

可导向偏微分算子的实现则属于论文《Steerable Partial Differential Operators for Equivariant Neural Networks》(arXiv:2106.10163)的工作内容。如果您在自己的工作中使用了这部分代码,请引用该论文:

@inproceedings{jenner2022steerable,
    title={Steerable Partial Differential Operators for Equivariant Neural Networks},
    author={Erik Jenner and Maurice Weiler},
    booktitle={International Conference on Learning Representations},
    year={2022},
    url={https://openreview.net/forum?id=N9W24a4zU}
}

欢迎随时 联系我们

许可证

e2cnn 采用 BSD Clear 许可证发布。详情请参阅 LICENSE 文件。

版本历史

v0.2.12021/10/21
v0.2.02021/10/20
v0.1.92021/07/06
v0.1.72021/03/29
v0.1.62021/03/17
v0.1.52020/11/12
v0.1.32020/10/23
v0.1.22020/10/09
v0.1.12020/10/08
v0.12020/09/28

相似工具推荐

stable-diffusion-webui

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

162.1k|★★★☆☆|今天
开发框架图像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 真正成长为懂上

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

ComfyUI

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

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|昨天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架