Adaptive optimization of SPGD method in wavefront distortion correction of space light
0 引 言
近年来,自由空间光通信(Free Space Optical Communication, FSOC)以其高带宽、低成本和良好的保密性受到广泛关注[1]。然而,FSOC系统容易受到大气湍流的影响,使得接收到的光束产生波前畸变,从而导致通信性能下降[2]。无波前传感器自适应光学(Wavefront Sensor-less Adaptive Optics,WFS-less AO)系统以波前校正器所需的控制信号为优化参数,以图像清晰度或接收光强等性能指标为控制算法的目标函数,通过迭代实现了波前畸变的校正[3]。在WFS-less AO系统中,常用的优化控制算法有随机并行梯度下降(Stochastic Parallel Gradient Descent, SPGD)算法[4]、模拟退火算法[5]和遗传算法[6],其中SPGD算法由于易于实现而成为最常用的算法[7]。但是,固定的增益系数使得SPGD算法的收敛速度缓慢[8]。此外,当参数设置不当或系统扰动较大时,SPGD算法也容易陷入局部极值[9]。
为了提高SPGD算法的性能,研究人员做了很多尝试。2015年,Wu等[10]提出了一种收敛速度更快的多扰动SPGD算法,但是该算法的快速下降模式和模态基更新模式大大增加了系统的复杂度。2017年,Yang等[9]将模式识别与SPGD算法相结合以避免算法陷入局部极值点。遗憾的是,该算法的收敛速度没有得到有效提高。2018年,Huang等[11]提出采用带精确时延的SPGD方法提高收敛速度,通过设置干扰电压与性能测量之间的精确时延来补偿被控系统固有的响应时延。然而该方法需要不断手动调整增益系数来保证系统在湍流强度变化时的校正能力,这极大地影响了系统的实时性。2020年,Hu等[12]利用深度学习中的Adam优化器对原有SPGD算法进行改进,实现了光纤的有效耦合。但是作者仅仅对该方法在弱湍流下的性能进行了分析,没有在更强湍流下分析该方法的性能。此外,该方法虽然提高了SPGD算法的收敛速度,但是其性能指标曲线在迭代过程中会产生震荡,导致算法的收敛精度降低。而且,该算法的收敛速度仍有提升的空间。
为此,文中提出了一种改进型SPGD算法,即亚当信仰随机并行梯度下降(AdaBelief Stochastic Parallel Gradient Descent, ABSPGD)算法。该算法采用了AdaBelief优化器[13]的一阶动量和二阶动量的思想,以一阶动量代替梯度减少算法的迭代次数,通过二阶动量不仅使算法能够自适应地调整增益系数,又能进一步提高算法的收敛速度。最后,以性能评价指标作为参数,对算法的实际增益系数进行自适应动态裁剪,保证算法迭代过程的稳定。文中以37单元变形镜为校正器,建立了WFS-less AO系统模型,并使用前65阶Zernike多项式拟合波前畸变,通过仿真分析了ABSPGD算法对不同湍流强度下波前畸变的校正效果,并对ABSPGD算法、传统SPGD算法以及其它优化算法的收敛速度及稳定性进行了对比分析。最后,以69单元变形镜为例分析了变形镜单元数的增加对各个算法校正波前畸变性能的影响。
1 基本原理
1.1 WFS-less AO系统模型
如图1所示,WFS-less AO系统主要由可变形镜(Deformable Mirror, DM)、电荷耦合器件(Charge-coupled Device, CCD)和波前控制器组成。首先,光源发出的光束经过大气湍流后产生波前畸变,畸变光束入射到DM中,DM在初始电压的控制下对畸变光束进行初始校正,并将残余波前反射到CCD相机中。然后,性能分析器根据采集到的数据计算出性能指标。最后,算法根据性能指标值计算出下次校正时DM驱动器的控制电压矩阵,并根据得到的电压矩阵控制DM对波前畸变进行校正。如此循环迭代直到算法满足停止条件。
图 1. WFS-less AO系统原理图
Fig. 1. Schematic diagram of WFS-less AO system
下载图片 查看所有图片
1.2 Zernike多项式和性能评价指标
Zernike多项式是定义在单位圆上的一组多项式。在WFS-less AO系统中,通常用Zernike多项式来拟合大气湍流引起的波前畸变
$ \varphi (r,\theta ) $,其表达式为:
$ \varphi \left( {r,\theta } \right) = \sum\limits_{j = 1}^q {{a_j}{Z_j}\left( {r,\theta } \right)} $ (1)
式中:
$ (r,\theta ) $为单位圆的极坐标;
$ {a_j} $为第
$ j $阶Zernike多项式系数;
$ {Z_j}(r,\theta ) $为第
$ j $阶Zernike多项式,其表达式为:
$ \left\{ {\begin{array}{*{20}{c}} {{Z_{even{\kern 1pt} {\kern 1pt} j}} = \sqrt {n + 1} R_n^m\left( r \right)\sqrt 2 \cos m\theta {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} m \ne 0} \\ {{Z_{odd{\kern 1pt} {\kern 1pt} j}} = \sqrt {n + 1} R_n^m\left( r \right)\sqrt 2 \sin m\theta {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} m \ne 0} \\ {{Z_{{\kern 1pt} j}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} = \sqrt {n + 1} R_n^0\left( r \right){\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} m = 0} \end{array}} \right. $ (2)
其中
$ R_n^m\left( r \right) = \sum\limits_{s = 0}^{\left( {n - m} \right)/2} {\frac{{{{\left( { - 1} \right)}^s}\left( {n - s} \right)!}}{{s![\left( {n + m} \right)/2 - s]![\left( {n - m} \right)/2 - s]!}}} {r^{n - 2s}} $ (3)
这里,
$ n $和
$ m $是整数且满足
$ m \leqslant n,n - \left| m \right| = even $。
$ j $是Zernike模式阶数,且是
$ n $和
$ m $的函数。
文中采用斯特列尔比(Strehl Ratio, SR)作为性能评价指标,其定义为实际峰值强度与衍射极限峰值强度之比。用Zernike多项式拟合波前畸变后,SR可表示为[14]:
$ SR = \exp \left( { - RM{S^2}} \right) $ (4)
式中:
$RMS = \sqrt {\left\langle {{\varphi ^2}\left( {r,\theta } \right)} \right\rangle - {{\left\langle {\varphi \left( {r,\theta } \right)} \right\rangle }^2}} $为均方根;
$\left\langle . \right\rangle $为平均值。SR值在0~1之间,且SR值越大,光束质量越高。
1.3 DM模型
WFS-less AO系统通过对DM驱动器施加控制信号来改变DM的镜面分布,进而对波前畸变进行校正。文中采用37单元的DM(如图2所示),其产生的相位补偿
$ u\left( {x,y} \right) $为:
图 2. 37单元DM驱动器布局
Fig. 2. Layout of 37-element DM actuators
下载图片 查看所有图片
$ u\left( {x,y} \right) = \sum\limits_{i = 1}^{37} {{v_i}{S_i}\left( {x,y} \right)} $ (5)
式中:
$ {v_i} $为第
$ i $个驱动器的控制电压;
$ {S_i}\left( {x,y} \right) $为第
$ i $个单元的镜面影响函数且表达式为[15]:
$ {S_i}\left( {x,y} \right) = \exp \left\{ {\ln \omega {{\left[ {\frac{1}{d}\sqrt {{{\left( {x - {x_i}} \right)}^2} + {{\left( {y - {y_i}} \right)}^2}} } \right]}^\alpha }} \right\} $ (6)
式中:
$ ({x_i},{y_i}) $是第
$ i $个驱动器的位置坐标;
$ \alpha $为高斯指数;
$ d $为DM中各驱动器之间的归一化距离;
$ \omega $为交联值。
1.4 SPGD算法原理
SPGD算法校正波前畸变的步骤如下:
(1) 设置初始控制电压
$u = \left( {{u_1},{u_2}, \cdots ,{u_N}} \right)$,
$ N $代表DM驱动器个数;
(2) 生成随机扰动电压
$\delta u = \left( {\delta u_1^{},\delta u_2^{}, \cdots ,\delta u_N^{}} \right)$;
(3) 将正向扰动电压
$ {u^ + } = u + \delta u = $$\left( {{u_1} + \delta {u_1},{u_2} + \delta {u_2},\cdots ,}\right. \left.{{u_N} + \delta {u_N}} \right)$施加于DM,计算正向扰动性能指标
$ J_{}^ + $;
(4) 将负向扰动电压
${u^ - } = u - \delta u = $$\left( {{u_1} - \delta {u_1},{u_2} - \delta {u_2}, \cdots ,}\right. \left.{{u_N} - \delta {u_N}} \right)$施加于DM,计算负向扰动性能指标
$ J_{}^ - $;
(5) 计算性能指标的变化量
$ \delta J = J_{}^ + - J_{}^ - $;
(6) 通过公式
$ u_k^{\left( {n + 1} \right)} = u_k^{\left( n \right)} + \lambda \delta J_k^{\left( n \right)}\delta u_k^{\left( n \right)} $计算下次迭代的控制电压,其中
$ \lambda $为增益系数,
$ n $为迭代次数,
$k \in \{ 1, 2,\cdots,N\}$;
(7) 将步骤(6)得到的控制电压施加于DM,并判断性能指标函数是否达到预设条件,若未满足条件则重复步骤(2) ~ (7),直至满足预设条件。
由于SPGD算法的增益系数是固定值,所以其收敛速度缓慢。而且,如果增益系数设置得不合理,算法便会陷入局部极值。
2 基于AdaBelief优化器的改进型SPGD算法
2020年,Hu等[12]基于Adam优化器对SPGD算法进行了改进,提出了亚当随机并行梯度下降(Adam Stochastic Parallel Gradient Descent, ASPGD)算法,该算法使用一阶动量:
$ \begin{split} m_k^{\left( n \right)} = {\alpha _1}m_k^{\left( {n - 1} \right)} + \left( {1 - {\alpha _1}} \right)g_k^{\left( n \right)}= \left( {1 - {\alpha _1}} \right)\sum\limits_{i = 1}^n {\alpha _1^{n - i}g_k^{\left( i \right)}} \end{split}$ (7)
和二阶动量
$ \begin{split} v_k^{\left( n \right)} =& {\alpha _2}v_k^{\left( {n - 1} \right)} + \left( {1 - {\alpha _2}} \right){\left( {g_k^{\left( n \right)}} \right)^2}= \left( {1 - {\alpha _2}} \right)\sum\limits_{i = 1}^n {\alpha _2^{n - i}{{\left( {g_k^{\left( i \right)}} \right)}^2}} \end{split} $ (8)
提高收敛速度且自适应地调整增益系数。式中
$ g_k^{\left( n \right)} = \delta J_k^{\left( n \right)}\delta u_k^{\left( n \right)} $为当前迭代的梯度,
$ m_k^{\left( n \right)} $为当前迭代的一阶动量,
$ {\alpha _1} $是一个标量参数,控制上次迭代过程中一阶动量的衰减率;
$ v_k^{\left( n \right)} $表示当前迭代的二阶动量;
$ {\alpha _2} $是控制上次迭代过程中二阶动量衰减率的标量参数。算法的控制电压更新公式为:
$ u_k^{\left( n \right)} = u_k^{\left( {n - 1} \right)} + \frac{\lambda }{{\sqrt {v_k^{\left( n \right)}} + \varepsilon }}m_k^{\left( n \right)} $ (9)
式中:
$ \varepsilon $用于避免数值问题,其通常被设置为
$ {10^{ - 8}} $。从公式(9)可以看出,
$ m_k^{\left( n \right)} $和
$ v_k^{\left( n \right)} $在迭代开始时会偏向于它们的初始值,导致初始化偏差,特别是当
$ {\alpha _1} $和
$ {\alpha _2} $接近1时。因此,需要对初始化偏差进行修正,修正公式为:
$ \begin{split} &\hat m_k^{\left( n \right)} = m_k^{\left( n \right)}/[1 - {\left( {{\alpha _1}} \right)^n}] \\ &\hat v_k^{\left( n \right)} = v_k^{\left( n \right)}/[1 - {\left( {{\alpha _2}} \right)^n}] \\[-5pt] \end{split}$ (10)
因此,公式(9)可改写为:
$ u_k^{\left( n \right)} = u_k^{\left( {n - 1} \right)} + \frac{\lambda }{{\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon }}\hat m_k^{\left( n \right)} $ (11)
虽然ASPGD算法的收敛速度相对于传统SPGD算法有所提高,但仍有很大的提升空间。此外,ASPGD算法的实际增益系数
$ \lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right) $在迭代后期会不断出现一些极大和极小值,导致算法产生震荡,使得算法的性能指标下降。最后,Hu等仅在弱湍流下对ASPGD算法的性能进行了分析,并没有分析ASPGD算法在更强湍流下的性能。
为了解决上述问题,文中首先对ASPGD算法的二阶动量进行改进,即使用
$ g_k^{\left( n \right)} - m_k^{\left( n \right)} $取代
$ g_k^{\left( n \right)} $,改进后的二阶动量表达式为:
$ \begin{split} \tilde v_k^{\left( n \right)} =& {\alpha _2}v_k^{\left( {n - 1} \right)} + \left( {1 - {\alpha _2}} \right){\left( {g_k^{\left( n \right)} - m_k^{\left( n \right)}} \right)^2}= \\ &\left( {1 - {\alpha _2}} \right)\sum\limits_{i = 1}^n {\alpha _2^{n - i}{{\left( {g_k^{\left( i \right)} - m_k^{\left( i \right)}} \right)}^2}} \\[-5pt] \end{split} $ (12)
式中:
$ m_k^{\left( n \right)} $作为梯度预测。根据公式(11)和(12)可以看出,如果
$ g_k^{\left( n \right)} $和
$ m_k^{\left( n \right)} $的值相差较大,则当前迭代不信任本次的
$ g_k^{\left( n \right)} $,进而采取一个较小的迭代步长。当
$ g_k^{\left( n \right)} $接近
$ m_k^{\left( n \right)} $时,则当前迭代信任此次的
$ g_k^{\left( n \right)} $,进而采取一个较大的迭代步长。这种方式既能使算法可以自适应地调整增益系数,又进一步提高了算法的收敛速度。
此外,为了解决ASPGD算法的震荡问题,对实际增益系数
$ \lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right) $ 进行动态裁剪,即令:
$ \begin{split} \hat \lambda =& clip\left( {\lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right),{n_l},{n_u}} \right),{\text{ }}{n_l} \leqslant {n_u} = \\ &\left\{ {\begin{array}{*{20}{c}} {\lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right),{\text{ }}\lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right){\text{ }} \in {\text{ }}[{n_l},{n_u}]} \\ {rand\left( {{n_l},{n_u}} \right),{\text{ }}\lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right){\text{ }} \notin {\text{ }}[{n_l},{n_u}]} \end{array}} \right. \end{split} $ (13)
其中
$ {n_l} = 1 - \frac{1}{{s + 1}} $ (14)
$ {n_u} = 1 + \frac{1}{s} $ (15)
式中:
$ \hat \lambda $为动态裁剪后的实际增益系数;
$ s $为SR的值,它会随着迭代的进行逐渐增大,直到收敛平稳。这种方法为实际增益系数设置了下界
$ {n_l} $和上界
$ {n_u} $。在迭代初期,
$ {n_l} $相对于
$ \lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right) $是个较小的数,
$ {n_u} $相对于
$ \lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right) $是个较大的数。随着迭代的进行,
$ {n_l} $根据SR的增大而自适应增大,
$ {n_u} $根据SR的减小而自适应减小,最终
$ [{n_l},{n_u}] $将收敛到一个数值稳定的范围。因此,在迭代初期
$ {n_l} $和
$ {n_u} $对
$ \lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right) $几乎没有影响,这意味着算法的收敛速度不受影响。在迭代的后期,实际增益系数在一个小而稳定的区间内随机选取,这样可以解决因实际增益系数出现极端值而造成的震荡。
综上,文中提出的ABSPGD算法的控制电压更新公式为:
$ \begin{split} u_k^{\left( n \right)} =& u_k^{\left( {n - 1} \right)} + \hat \lambda \hat m_k^{\left( n \right)} = \\ &u_k^{\left( {n - 1} \right)} + clip\left( {\lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right),{n_l},{n_u}} \right)\hat m_k^{\left( n \right)} = u_k^{\left( {n - 1} \right)} +\\ & clip\left( {\lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right),1 - \frac{1}{{s + 1}},1 + \frac{1}{s}} \right)\hat m_k^{\left( n \right)} \end{split} $ (16)
算法的流程如下:
Algorithm 1 The procedure of the proposed ABSPGD algorithm
Parameter settings:
$ \lambda = 0.06{\text{5}},{\alpha _1} = 0.9,{\alpha _2} = 0.999 $
Goal: The optimal parameters
$ u_1^{},u_2^{},\cdots,u_N^{} $
1:
$ {m_0} \leftarrow 0,{v_0} \leftarrow 0,\varepsilon = {10^{ - 8}} $
2: Initialize the parameters
$ u_k^0 = [u_1^0,\;u_2^0,\;\cdots,\;u_N^0] $=[0, 0, ··· , 0]
3: for
$n = 1,\cdots,T$do
4: Randomly generate the values of
$\delta u_1^{},\delta u_2,...,\delta u_N^{}$ based on
$ \left| {\delta u} \right| = 1 $
5:
$\delta J^{(n)}\, \leftarrow \, J(u_1^{(n - 1)} \,+ \,\delta {u_1},\;u_2^{(n - 1)} \,+\, \delta {u_2},\;\cdots,\;u_N^{(n - 1)} \,+\, \delta {u_N})$−
$J(u_1^{(n - 1)} - \delta {u_1},u_2^{(n - 1)} - \delta {u_2},\cdots ,u_N^{(n - 1)} - \delta {u_N})$
6: for
$ k = 1,2,\cdots N $do
7:
$g_k^{\left( n \right)} = \delta J^{\left( n \right)}\delta u_k^{\left( n \right)}$
8:
$ m_k^{\left( n \right)} = {\alpha _1}m_k^{\left( {n - 1} \right)} + \left( {1 - {\alpha _1}} \right)g_k^{\left( n \right)} $
9:
$ \tilde v_k^{\left( n \right)} = {\alpha _2}v_k^{\left( {n - 1} \right)} + \left( {1 - {\alpha _2}} \right){\left( {g_k^{\left( n \right)} - m_k^{\left( n \right)}} \right)^2} $
10:
$\hat m_k^{\left( n \right)} = m_k^{\left( n \right)}/[1 - {\left( {{\alpha _1}} \right)}]$
11:
$\hat v_k^{\left( n \right)} = \tilde v_k^{\left( n \right)}/[1 - {\left( {{\alpha _2}} \right)}]$
12:
$ \hat \lambda = clip\left( {\lambda /\left( {\sqrt {\hat v_k^{\left( n \right)}} + \varepsilon } \right),1 - \frac{1}{{s + 1}},1 + \frac{1}{s}} \right) $
13:
$ u_k^{\left( n \right)} = u_k^{\left( {n - 1} \right)} + \hat \lambda \hat m_k^{\left( n \right)} $
14: end for
15: end for
3 仿真结果和分析
首先,在37单元DM下仿真分析了所提ABSPGD算法对波前畸变的校正效果,并比较了ABSPGD、ASPGD和SPGD算法在不同湍流强度下的收敛速度和稳定性。然后在69单元DM下分析了DM单元数的增加对算法性能的影响。这里使用
$ D/{r_0} = 5,10,15 $表示不同强度的大气湍流,其中
$ {r_0} $是大气相干长度,
$ D $是接收端望远镜的直径。采用前65阶Zernike多项式拟合不同湍流强度的波前畸变,并将SR作为性能评价指标。37单元DM中的参数
$ \alpha $、
$ d $、
$ \omega $分别设置为2、0.3、0.36、69单元DM中相应参数分别设置为2、0.22、0.36。
3.1 校正效果及分析
不同湍流强度下的波前畸变以及经过ABSPGD算法校正后的残余波前如图3所示。图3也给出了相应的峰谷值(Peak-to-Valley, PV)和均方根(Root Mean Square, RMS),PV和RMS的值越小,证明波前畸变程度越弱,光束质量越好。在不同湍流强度下,校正前后的SR值如表1所示。
图 3.
Fig. 3. The wavefront distortion and the residual wavefront corrected by ABSPGD algorithm under different turbulence intensities. (a)
; (b)
; (c)
不同湍流强度下的波前畸变及经过ABSPGD算法校正后的残余波前。(a)
;(b)
;(c)
下载图片 查看所有图片
表 1. ABSPGD算法校正前后的波前畸变SR值
Table 1. SR values of wavefront distortion before and after correction by ABSPGD algorithm
Intensity of turbulence | Before correction | After correction | 5 | $ {\text{0}}{\text{.33}} $ | $ 0.83 $ | 10 | ${\text{9} }{\text{.62} } \times {\text{1} }{ {\text{0} }^ {-4} }$ | $ 0.47 $ | 15 | ${\text{7} }{\text{.48} } \times {\text{1} }{ {\text{0} }^{-5} }$ | $ 0.31 $ |
|
查看所有表
从图3可以清楚地看出,对波前畸变校正之前,图中存在严重的像差。随着湍流强度的增加,PV和RMS的值增大,波前畸变越严重。对波前畸变校正后,像差明显变小,PV和RMS的值也相应地减小,这说明所提ABSPGD算法可以有效地校正波前畸变。根据表1可知,随着波前畸变程度的增加,校正后的SR值变小。校正后的SR值分别为0.83、0.47和0.31,这说明相同条件下,湍流强度越强,算法的收敛精度越低。
3.2 收敛速度及稳定性分析
在实际应用中,算法的收敛速度和稳定性尤为重要。为了验证所提算法在收敛速度和稳定性方面的有效性,仿真了ABSPGD、ASPGD和SPGD算法在三种湍流强度下的SR曲线。由于算法本身的随机性,在不同湍流强度下,针对每个算法分别进行了30次仿真,取数据的平均值进行对比分析,同时分别随机选取每种算法的10组数据来对比算法稳定性。仿真结果如图4所示,不同湍流强度下各算法的最优增益系数如表2所示。
图 4.
Fig. 4. SR variation curves of SPGD, ASPGD and ABSPGD algorithms under different turbulence intensities. (a)
;(b)
;(c)
不同湍流强度下SPGD、ASPGD和ABSPGD算法的SR变化曲线。(a)
;(b)
;(c)
下载图片 查看所有图片
表 2. 不同湍流强度下SPGD、ASPGD和ABSPGD算法的最优增益系数
Table 2. Optimal gain coefficients of SPGD, ASPGD and ABSPGD algorithms under different turbulence intensities
Intensity of turbulence | SPGD | ASPGD | ABSPGD | 5 | 0.7 | 0.065 | 0.065 | 10 | 2.8 | 0.065 | 0.065 | 15 | 4 | 0.065 | 0.065 |
|
查看所有表
为了方便比较各个算法的收敛性能,文中在不同湍流下分别选取0.8、0.45、0.3作为阈值,对各个算法收敛到阈值时的迭代次数进行比较,因为在这几个阈值处,各个算法的收敛精度已经几乎达到了稳定。从图4可以看出,在不同湍流强度下,SPGD算法的收敛速度均低于ABSPGD和ASPGD算法。当湍流强度增大时,SPGD算法在收敛速度方面的劣势更加明显。在这三个算法当中,ABSPGD算法的收敛速度最快。对各组数据的平均值进行分析后可以得出,当湍流强度为5时,ABSPGD、ASPGD和SPGD算法的SR分别经过149次,179次和217次迭代后达到阈值0.8。当湍流强度为10和15时,SPGD算法的SR曲线在迭代100次和800次后开始上升,在447次和1247次时分别达到阈值0.45和0.3。ABSPGD算法和ASPGD算法的SR曲线在迭代开始时快速上升,其中ASPGD算法分别在323次迭代和312次迭代后达到阈值,而ABSPGD算法只需要229次迭代和230次迭代就可以达到阈值。此外,从图4中也可明显看出,虽然ASPGD算法在不同湍流强度下的收敛速度比传统SPGD算法有优势,但在迭代后期会出现震荡,导致算法收敛精度降低。相比之下,文中提出的ABSPGD算法不仅在收敛速度上优于ASPGD和SPGD算法,而且在迭代过程中不会产生震荡。
由表2可知,随着湍流强度的增加,传统SPGD算法的增益系数需要不断调整,以保证算法的校正能力。但在实际应用中,这种调整一般是根据经验进行的,难以保证系统的及时性和准确性。相比之下,所提出的ABSPGD算法可以在不同湍流强度下自适应调整增益系数,大大提高了系统的实时性。
3.3 DM单元数对算法性能的影响
从图4中可以明显看出,算法的收敛精度随着湍流强度的增加而下降。为了研究DM单元数对算法性能的影响,本节采用69单元DM校正湍流强度为15的波前畸变,并对ABSPGD、ASPGD、SPGD算法在69单元DM和37单元DM下的SR曲线进行了对比分析。
如图5所示,在69单元DM下,SPGD算法的收敛速度相对于37单元DM有了明显的下降,且收敛精度也从0.31降为0.29。而ABSPGD算法的收敛精度从0.31提高到0.38,并且不会像ASPGD算法那样因为震荡而有所下降。除此之外,ABSPGD算法的收敛速度也要优于ASPGD算法。因此,当湍流强度增大时,可以通过增加DM单元数提高ABSPGD算法的收敛精度,进一步提升算法校正波前畸变的性能。
图 5. 不同DM单元数下ABSPGD、ASPGD和SPGD算法的SR变化曲线
Fig. 5. SR variation curves of ABSPGD, ASPGD and SPGD algorithms under different number of DM units
下载图片 查看所有图片
4 结 论
SPGD算法能够有效地对波前畸变进行校正,但是其收敛速度缓慢。相关研究人员对SPGD算法进行了改进,虽然收敛速度有了很大的提升,但是改进后的算法会产生严重的振荡。文中基于深度学习中AdaBelief优化器对传统SPGD算法进行了自适应优化,仿真分析了所提算法在不同湍流强度下对波前畸变的校正效果,且对所提算法和其它算法在收敛速度和稳定性方面的性能也进行了对比分析。仿真结果表明,在37单元DM下,不同波前畸变经所提算法校正后的SR分别提升至0.83、0.47和0.31,且所提算法在收敛速度和稳定性方面也优于其它算法。除此之外,当湍流强度变化时,该算法能够自适应调整增益系数,极大提高了系统的实时性。需要指出的是,文中仅在静态像差条件下验证了所提算法的可行性,但真实的大气湍流是动态变化的,所提算法在动态湍流下的性能表现需要进一步研究验证。
赵辉, 邝凯达, 吕典楷, 余孟洁, 安静, 张天骐. 空间光波前畸变校正中SPGD方法的自适应优化[J]. 红外与激光工程, 2022, 51(8): 20210697. Hui Zhao, Kaida Kuang, Diankai Lv, Mengjie Yu, Jing An, Tianqi Zhang. Adaptive optimization of SPGD method in wavefront distortion correction of space light[J]. Infrared and Laser Engineering, 2022, 51(8): 20210697.