PCA Jittering 图像增强
文章目录
- PCA Jittering
- 具体流程
- 具体步骤
- 参考文献
PCA Jittering
PCA Jittering [ 1 ] ^{[1]} [1] 可以找出图像 RGB 通道中的主要色系,并大幅改变主要色系的值,而图像的整体色调不发生改变。简言之,PCA Jittering 通过扰动颜色通道,在不过度扭曲图像语义的前提下,提升了模型对颜色变化的鲁棒性,因此也是一种有效的图像增强方法。效果图如下:
具体流程
PCA Jittering的具体流程 [ 2 ] ^{[2]} [2]:首先,对整个训练集图像的 RGB 三通道进行主成分分析,得到协方差矩阵,并计算特征值和特征向量;其次,在特征值中添加高斯抖动(Jittering),并将特征值与特征向量相乘;最后,将相乘后的结果添加到原图像中,从而改变原图像 RGB 三通道的强度,并将通过 PCA Jittering 处理过的图像添加到训练集中进行训练,从而增加训练集的数量,具体流程图如下:
具体步骤
-
获取原图像 I x y I_\mathrm{xy} Ixy,拆分原图像 I x y I_\mathrm{xy} Ixy 的 RGB 三通道,得到三通道的值 I x y R 、 I x y G 、 I x y B 。 I_{xy}^R、I_{xy}^G、I_{xy}^B。 IxyR、IxyG、IxyB。
-
以 I x y R I_{xy}^R IxyR 为例,为了消除奇异数据的影响,对 I x y R I_{xy}^R IxyR 进行归一化。归一化的公式如下:
I x y R = I x y R 255.0 I_{xy}^R=\frac{I_{xy}^R}{255.0} IxyR=255.0IxyR
- 为消除不同量纲的影响,对 I x y R I_{xy}^R IxyR 进行标准化。标准化公式如下:
g i j R = x i j R − μ R σ R g_{ij}^{R}=\frac{x_{ij}^{R}-\mu^{R}}{\sigma^{R}} gijR=σRxijR−μR
其中,
x
i
j
R
x_{ij}^{R}
xijR 表示原图
R
R
R 通道图像的第
i
i
i 行、第
j
j
j 列的灰度值;
g
i
j
R
g_{ij}^{R}
gijR 表示原图
R
R
R 通道图像第
i
i
i 行、第
j
j
j 列标准化后的灰度值;
μ
R
\mu^R
μR 表示
R
R
R 通道的算术平均值,由下式表示:
μ
R
=
1
n
×
m
∑
i
=
1
n
∑
i
=
1
m
x
i
j
R
\mu^R=\frac1{n\times m}\sum_{i=1}^n\sum_{i=1}^mx_{ij}^R
μR=n×m1i=1∑ni=1∑mxijR
上式中,
n
n
n 表示图像的行数,
m
m
m 表示图像的列数;
σ
R
\sigma^R
σR 表示
R
R
R 通道的标准差,公式如下:
σ
R
=
1
n
−
1
∑
i
=
1
n
(
x
i
j
R
−
μ
R
)
2
\sigma^R=\sqrt{\frac{1}{n-1}\sum_{i=1}^n(x_{ij}^R-\mu^R)^2}
σR=n−11i=1∑n(xijR−μR)2
-
将标准化后的 g i j R g_{ij}^R gijR 展开成一列向量 g R = [ g 1 R g 2 R … g m × n R ] T g^R=\begin{bmatrix}g_1^R&g_2^R&\ldots&g_{m\times n}^R\end{bmatrix}^\mathrm{T} gR=[g1Rg2R…gm×nR]T 。
-
I x y G I_{xy}^G IxyG、 I x y B I_{xy}^B IxyB 的处理方法与 I x y R I_xy^R IxyR相同,处理完后会得到 G G G 通道和 B B B 通道标准化后的向量
g G g^G gG、 g B g^B gB。接着将 g R g^R gR、 g G g^G gG、 g B g^B gB 向量组成矩阵 T T T。矩阵 T T T 的公式如下所示:
T = [ g 1 R g 1 G g 1 B g 2 R g 2 G g 2 B ⋮ ⋮ ⋮ g m × n R g m × n G g m × n B ] = [ g R g G g B ] T=\begin{bmatrix}g_1^R&g_1^G&g_1^B\\g_2^R&g_2^G&g_2^B\\\vdots&\vdots&\vdots\\g_{m\times n}^R&g_{m\times n}^G&g_{m\times n}^B\end{bmatrix}=\begin{bmatrix}g^R&g^G&g^B\end{bmatrix} T= g1Rg2R⋮gm×nRg1Gg2G⋮gm×nGg1Bg2B⋮gm×nB =[gRgGgB]
- 创建 T T T 的协方差矩阵:
S = [ c o ν ( g R , g R ) c o ν ( g R , g G ) c o ν ( g R , g B ) c o ν ( g G , g R ) c o ν ( g G , g G ) c o ν ( g G , g B ) c o ν ( g B , g R ) c o ν ( g B , g G ) c o ν ( g B , g B ) ] S=\begin{bmatrix}co\nu(g^R,g^R)&co\nu(g^R,g^G)&co\nu(g^R,g^B)\\co\nu(g^G,g^R)&co\nu(g^G,g^G)&co\nu(g^G,g^B)\\co\nu(g^B,g^R)&co\nu(g^B,g^G)&co\nu(g^B,g^B)\end{bmatrix} S= coν(gR,gR)coν(gG,gR)coν(gB,gR)coν(gR,gG)coν(gG,gG)coν(gB,gG)coν(gR,gB)coν(gG,gB)coν(gB,gB)
其中, c o v ( g w , g ν ) = 1 n − 1 ∑ i = 1 m × n ( g i w − g w ‾ ) ( g i ν − g ν ‾ ) \mathrm{cov}(g^w,g^\nu)=\frac{1}{n-1}\sum_{i=1}^{m\times n}(g_i^w-\overline{g^w})(g_i^\nu-\overline{g^\nu}) cov(gw,gν)=n−11∑i=1m×n(giw−gw)(giν−gν), w , ν ∈ [ R , G , B ] w,\nu\in[R,G,B] w,ν∈[R,G,B]
而 g w ‾ \overline{g^w} gw、 g ν ‾ \overline{g^\nu} gν 表示 w w w、 ν \nu ν 列的平均值。
-
求解协方差矩阵 S S S 的特征向量 p i p_i pi 和特征值 λ i \lambda_{i} λi ,其中 i ∈ [ 1 , 2 , 3 ] i\in[1,2,3] i∈[1,2,3]。
-
将特征值 λ i \lambda_i λi 乘以一个以 0 0 0 为均值, 0.1 0.1 0.1 为方差的高斯扰动 a i a_i ai,将添加扰动后的特征值与特征向量相乘,并将结果乘以 255 255 255 后添加到原有像素值 I x y = [ I x y R , I x y G , I x y B ] I_{xy}=[I_xy^R,I_{xy}^G,I_{xy}^B] Ixy=[IxyR,IxyG,IxyB] 中。使用PCA Jittering 图像增强后的图像像素值如下式所示:
I x y ′ = [ I x y R 、 I x y G 、 I x y B ] + 255 × [ p 1 , p 2 , p 3 ] [ α 1 λ 1 , α 2 λ 2 , α 3 λ 3 ] I_{xy}^{\prime}=[I_{xy}^{R}、I_{xy}^{G}、I_{xy}^{B}]+255\times[p_{1},p_{2},p_{3}][\alpha_{1}\lambda_{1},\alpha_{2}\lambda_{2},\alpha_{3}\lambda_{3}] Ixy′=[IxyR、IxyG、IxyB]+255×[p1,p2,p3][α1λ1,α2λ2,α3λ3]
参考文献
[1] Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[J]. Advances in neural information processing systems, 2012, 25.
[2] 陈刚.基于卷积神经网络的森林火灾识别系统的研究与设计[D].南京林业大学,2023.DOI:10.27242/d.cnki.gnjlu.2023.000651.