超分辨率卷积神经网络(SRCNN)的关键算法与公式讲解
1. 卷积层
卷积层通过对输入数据进行卷积操作来提取特征。此操作包括一个过滤器(或称为内核),该过滤器在输入图像上滑动,并计算过滤器与其覆盖的图像像素的点积。二维卷积的公式(步长为1,填充适当)如下:
( f ∗ g ) ( i , j ) = ∑ m ∑ n f ( m , n ) ⋅ g ( i − m , j − n ) (f \ast g)(i, j) = \sum_m \sum_n f(m, n) \cdot g(i - m, j - n) (f∗g)(i,j)=m∑n∑f(m,n)⋅g(i−m,j−n)
其中 ( f ) 是过滤器,( g ) 是图像。
2. ReLU激活函数
ReLU(线性整流单元)激活函数为网络引入非线性,定义如下:
ReLU ( x ) = max ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)
此函数对元素逐个应用,将特征图中的负像素值替换为零。
3. 批量归一化
批量归一化通过以下公式来归一化每个特征,减少内部协变量偏移。公式如下:
x ^ i = x i − μ B σ B 2 + ϵ \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i=σB2+ϵxi−μB
其中 ( \mu_B ) 是批量均值,( \sigma_B^2 ) 是批量方差,( \epsilon ) 是一个很小的常数,以避免除以零。
4. 残差块
残差块的输出通过以下公式进行非线性激活后输出,这有助于网络学习更深层次的特征。公式如下:
x out = ReLU ( x + F ( x ) ) x_{\text{out}} = \text{ReLU}(x + F(x)) xout=ReLU(x+F(x))
其中 ( x ) 是输入的激活,( F(x) ) 是网络学习的残差映射。
5. 均方误差(MSE)损失
均方误差损失用于衡量预测值与真实值之间的误差,公式如下:
MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^n (y_i - \hat{y}_i)^2 MSE=n1i=1∑n(yi−y^i)2
其中 ( \hat{y}_i ) 是预测值,( y_i ) 是真实值,( n ) 是样本数量。
6. Adam优化器
Adam优化器用于随机优化,结合了两种扩展的随机梯度下降法——AdaGrad和RMSProp的优点。Adam为每个参数计算自适应学习率。
7. 数据处理与转换
- 图像加载与转换:使用PIL库和torchvision变换来加载和转换图像,包括调整图像大小并将其转换为张量格式。
- DataLoader:用于有效管理数据集的批次,支持选项如随机排序和并行处理。