常用架构
卷积神经网络(CNN)
1. 卷积层(Convolutional Layer)
- 主要作用:通过卷积核提取输入数据的特征。卷积层可以捕捉到如边缘、角点、纹理等局部特征。
- 卷积核大小:
- 小卷积核(如3x3):能够捕捉细粒度的特征,更适用于捕捉小的和细致的图像细节。多个小卷积核的堆叠可以有效增加网络的深度,提高模型的非线性处理能力,同时扩大感受野。
- 大卷积核(如5x5或7x7):可以捕捉更广泛的特征,但使用较大卷积核会导致更多的参数,增加计算量。在较深的网络中,多个小卷积核层叠加效果可以等效一个大卷积核,但参数更少,效率更高。
- 感受野:表示卷积神经网络中的神经元可以观察到的输入数据的区域大小。随着网络层数的增加,神经元的感受野逐渐增大,能够捕捉到更高级的特征。
2. 激活函数(Activation Function)
- 主要作用:引入非线性因素,使得网络可以学习和模拟非线性复杂函数,解决非线性问题。
- 常用激活函数:
- ReLU(Rectified Linear Unit):最常用的激活函数,形式简单,计算效率高,输出是非线性的。主要优点是解决了梯度消失问题,加速了神经网络的收敛。
- Sigmoid:将输出压缩到0到1之间,常用于二分类任务的最后输出。
- Tanh:将输出压缩到-1到1之间,形状和性质类似Sigmoid,但通常表现得比Sigmoid更好。
3. 池化层(Pooling Layer)
- 主要作用:减小特征图的尺寸,降低计算复杂度,同时使特征具有一定的平移不变性。
- 类型:
- 最大池化(Max Pooling):从覆盖的区域中取最大值,能够保留最显著的特征。
- 平均池化(Average Pooling):计算覆盖区域的平均值,使特征图平滑化。
4. 全连接层(Fully Connected Layer)
- 主要作用:将前面卷积层或池化层提取的局部特征综合起来进行最终的分类或回归。
- 工作方式:每个神经元与前一层的所有神经元相连接,输出通过一个或多个全连接层映射到最终的输出类别上。
- 用途:在传统的CNN中,全连接层通常位于网络的末端,用于整合所有特征进行决策。
5. Dropout层(可选)
- 主要作用:防止神经网络过拟合的一种技术。在训练过程中随机关闭网络中的部分神经元。
- 优点:使模型的泛化能力增强,通过减少神经元的相互依赖性来提高模型的健壮性。
优势:
- 高效特征提取:自动从训练数据中学习和提取有用的特征,无需手动特征工程。
- 不变性质:通过池化层实现对图像旋转、平移和缩放的一定程度的不变性。
- 网络层次化:通过多层结构实现从简单到复杂的特征自动学习。
应用:
- 图像分类:如识别图片中的对象(猫、狗、车等)。
- 物体检测:如在图像中检测和定位不同的物体。
- 图像分割:如医学图像中的肿瘤分割。
- 自动驾驶:如道路和障碍物的视觉识别。
Diffusion模型
优势:
- 高质量图像生成:Diffusion模型以其能生成高分辨率、高质量的图像而著名,这些图像在细节和真实感上与真实图片难以区分。
- 灵活性和多样性:这种模型能生成多样的图像输出,反映了潜在空间的丰富性和多样性,适用于创意和艺术生成任务。
- 稳健性:通过逐步去除噪声的过程,diffusion模型能有效避免生成过程中的模式崩溃问题,使得训练更加稳定。
应用:
- 艺术和创意生成:用于生成高质量的艺术作品,如绘画、插图等。
- 数据增强:在医学图像处理和其他需要大量训练数据的领域中,用于生成新的、现实的训练样本。
- 条件图像生成:如风格迁移、超分辨率等,可以根据给定条件生成指定风格的图像。
ResNet 结构
优势:
- 残差连接:ResNet 的核心是引入了残差连接,可以有效缓解更深层网络中的梯度消失问题,使网络能够进行更深层的训练。这种跳跃连接方式还帮助网络在不同层间传递原始信息,有利于保持特征的完整性,从而降低训练过程中的误差。
- 易于优化:通过跳跃连接,残差网络可以更容易地训练深层网络,因为这些连接提供了一种直接的路径来传递梯度,有助于快速优化和减少训练时间。
应用:
- 在各种视觉任务中得到广泛应用,如图像分类、目标检测和语义分割等。
- 在非视觉任务中也逐渐展现出其通用性,如语音识别和自然语言处理。
UNet 结构
优势:
- 对称性和跳跃连接:UNet 采用对称的编码器-解码器结构,利用跳跃连接保留了更多的位置和上下文信息,有助于更精准的像素级预测。这些连接不仅帮助在解码过程中恢复详细的空间信息,还能减少训练过程中的信息损失,提高分割精度。
- 有效的利用数据:特别适合于数据量较少的情况,能够有效地从少量标记数据中学习。
应用:
- 主要应用于医学图像分割,如细胞分割、器官定位等。
- 在其他图像分割任务中也表现出色,如卫星图像处理。
Attention机制
Self-attention(自注意力)
优点:
- 上下文感知:Self-attention 允许模型在处理序列的每个元素时,考虑到序列中的所有其他元素,从而更好地理解上下文。
- 并行计算:与递归神经网络相比,self-attention 可以并行处理序列中的所有元素,显著提高了计算效率。
- 长距离依赖:它可以有效地捕捉长距离依赖关系,这在处理长文本或复杂序列时非常有用。
应用:
- 在自然语言处理中,如BERT和Transformer模型中广泛使用self-attention来处理语言数据。
- 在生成任务中,如文本生成、机器翻译等,self-attention帮助模型生成更连贯、语义上一致的内容。
Cross-attention(交叉注意力)
优点:
- 模态融合:Cross-attention 通过在一个模态的表示上使用另一个模态的信息进行加权,实现不同模态之间的信息融合。比如可以将文字和图像两个模态的信息交融,从而实现文生图。
- 灵活性:它为模型提供了一种灵活的方式来关注输入中最相关的部分,这对于处理复杂的输入特别重要。
- 提升性能:在多模态任务中,cross-attention 显著提升了模型处理不同来源信息的能力。
应用:
- 在多模态学习中,如图像字幕生成或视频理解任务,cross-attention 使模型能够同时理解视觉内容和相关的文本信息。
- 在机器翻译中,如Transformer模型,它允许目标语言侧的每个词关注输入语言中最相关的部分,提高翻译的准确性和流畅性。
- Cross-attention 机制的核心在于它可以在多个模态之间进行信息交融和加权。这意味着模型能够在生成图像的每个步骤中,根据文本描述中的语义信息动态调整对图像特征的关注点,从而实现文生图。
CLIP (Contrastive Language-Image Pre-training)
优势:
- 多模态理解:CLIP可以很好实现多模态的对齐,如CLIP通过同时学习图像和文本并在联合多模态嵌入空间中对齐,能够更好地理解和关联这两种模态的信息。
- 灵活的应用:能够处理各种类型的图像和文本查询,对于未见过的对象和场景也有很好的泛化能力。
- 鲁棒性:经过大规模数据训练的CLIP模型在多种视觉任务上显示出较强的鲁棒性和适应性。
应用:
- 图像搜索和分类:使用自然语言查询来搜索和分类图像。
- 零样本学习:在没有显式示例的情况下识别和分类图像,如识别新的动物种类。
- 图像标注:自动生成与图像内容相关的文本描述。
- 文生图质量评估:在文生图任务中,CLIP可以用来评估生成的图像与文本描述之间的语义对齐程度,帮助优化生成模型以提高图像质量和相关性。
ControlNet
优势:
- 精细控制:ControlNet 通过引入图像条件(如边缘、深度、姿势图等),允许对生成图像的具体区域和特征进行精确控制,增强了图像的细节表达能力。
- 模态融合能力:它不仅处理文本信息,还能将图像与其他模态数据(如姿态图、边缘图)有效融合,提升生成图像的相关性和准确性。
- 定制化生成:用户可以更精确地定义生成内容的需求,实现高度定制化的图像生成,满足特定的视觉表达需求。
应用:
- 图像编辑和合成:允许在保持背景不变的同时,修改图像中的特定对象或特征,例如调整人物的姿态或改变物体的位置。
- 增强现有模型:可以作为现有生成模型的增强插件,通过提供图像条件控制,增强模型在特定场景下的生成能力,如精确控制人体动作的生成。
- 交互式图像生成:提供了一种允许用户直接通过图像输入影响生成过程的方式,改善了用户的交互体验。
- 加入图像条件的文生图生成:在传统的文本到图像生成模型基础上,ControlNet 在文本到图像的生成流程中加入图像到图像的条件控制,通过精确的图像输入,如边缘图或姿态图,实现对生成图像细节的精确控制。
损失函数
1. 交叉熵损失函数(Cross-Entropy Loss)
交叉熵损失函数用于衡量模型预测的概率分布与真实的标签分布之间的差异。它在分类任务中非常常见,包括二元分类和多类别分类。
二元交叉熵损失(Binary Cross-Entropy Loss)
- 用途:用于二分类问题。
- 表达式:
L = − 1 N ∑ i = 1 N [ y i log ( p i ) + ( 1 − y i ) log ( 1 − p i ) ] L = -\frac{1}{N} \sum_{i=1}^{N} [y_i \log(p_i) + (1 - y_i) \log(1 - p_i)]