1. 引言
最近,人工神经网络(Artificial neural networks, ANN)的发展在各种机器学习应用中取得了令人瞩目的成功 [1] ,如医学图像诊断 [2] 、视频监控 [3] 、机器人 [4] 和自动驾驶 [5] 。然而,随着人工智能算法越来越复杂,传统电子硬件的性能面临着计算机体系结构、加工工艺、功耗、散热等方面的限制,传统计算机芯片的速度提升变得越来越困难,摩尔定律的突破也变得更具挑战性。
为了克服电子平台的缺点,引入光学神经网络(ONN)来进行基于光子而不是电子的神经形态计算。得益于光的自然特性,ONN具有高度并行、高速和多维度的计算能力,同时具有大数据吞吐量和极低的能耗。据报道,国内外已经提出了多种ONN架构,例如基于马赫–曾德尔波导干涉仪的光学神经网络 [6] ,基于频率梳的集成光学神经网络 [7] ,以及衍射深度神经网络 [8] (Diffraction Deep Neural Network, D2NN)。其中D2NN利用了光衍射的原理进行神经元之间的互联与计算,可以更大规模的并行处理数据,得到了广泛的研究和应用。D2NN的衍射面由多层物理层组成,一旦网络训练完成,便可以以光速获得结果。然而,目前的D2NN更多的还是应用于图像分类任务,对于处理更高级的计算机视觉任务还没有过多的研究,在此,我们基于D2NN算法架构实现了其在语义分割任务中的应用。
语义分割(Image Segmentation)是一种像素级别的分类任务,它可以实现对图片中的每一个像素分配到不同的种类,是将标签或类别与图片中的每个像素关联的一种深度学习算法,它用来识别构成可区分类别的像素集合。语义分割可用于自动驾驶、医学影像和工业检测等多种应用场合。早期的语义分割方法有阈值法 [9] 、基于直方图的捆绑 [10] 、区域扩展 [11] 、k-means聚类 [12] 、分水岭 [13] 等,这些方法分割精度较低且容易受到噪声影响。随着深度学习的出现,语义分割技术开始基于计算机架构进行,比如卷积神经网络 [14] ,虽然能够高精度实现语义分割,但其受限于电子计算机的速度和能耗。在这篇文章中,我们基于光学神经网络实现了语义分割,它以光速进行推理计算,完成一次语义分割仅需1.1 ns,同时能耗极低,在需要实时动态的图像处理场景中有着潜在的应用。
2. 网络设计
根据卷积神经网络的算法,我们针对语义分割任务设计了光学神经网络框架,如图1所示。每个衍射层包含一个可调的相位板,相位板之间通过光的衍射实现连接。每层的相位板包含的像素为N*M,每个像素可以看作是一个光学神经元。对于人脑来说,其神经元之间的联系是通过轴突来实现的,对于神经网络来说,后一层神经元的输入是前一层多个神经元的输出,因此每个神经元必须有多个突触用来接收上一层的输出,同时又必须有多个树突来将处理后的信号输入到下一层的不同神经元。在光学中,光的衍射很好的实现神经元的这种功能,根据惠更斯原理,在光的传播过程中,波面上每一个点可以看作是一个子波源,下一个波面是前一个波面所有子波源发出的球面波的相干叠加。因此,超表面上每一个基元可以看作由前面一层所有基元所发出球面波的相干叠加,而这个基元又会通过发出球面子波传播到下一层的所有基元处,从而实现类似于神经元的连接功能。
光学神经网络的连接如下图2所示。由相位板构成的不同层的神经元通过衍射联系在一起,前一层的神经元通过衍射建立与下一层的神经元之间的联系。设计过程分为四个步骤:(1) 光波的前向衍射传播,(2) 损失函数的计算,(3) 光波的反向衍射传播,(4) 梯度更新。
![](//html.hanspub.org/file/170-2571656x8_hanspub.png?20240606101454681)
Figure 1. Propagation process of optical neural network
图1. 光学神经网络传播过程
步骤1:光的前向传播。光的前向传播基于菲涅尔基尔霍夫衍射积分公式进行计算,建立光从第
层到第k层的衍射传播矩阵。光在第
层的复振幅分布为
,在第k层的复振幅分布为
,光从第k层传播到
层的的衍射公式如所(1)示:
(1)
(2)
通过将二维光场分布
以及
向量化,
表示为光的前向传播矩阵,则第
层神经网络与第k层神经网络所对应的关系为式:
。上式中
代表第k层神经元对应的相位版的调制相位
。经过多层传播后,神经网络的最终输出的光场分布
如公式(3)所示,由于探测器所探测的是光场的振幅,所以最终的探测结果如公式(4)所示:
(3)
(4)
上式中,
代表神经网络的层数,
代表系统的最终输出。
步骤2:损失函数(Loss function)的计算。根据上一步所得到的系统的最终的输出函数
,我们需要建立系统的损失函数
,其中
为输入对应的输出标签,其中输出标签为CCD所对应的某一区间的光强值。其中ONN的损失函数可以选择不同的形式,针对语义分割任务,常规的均方差损失函数和交叉熵损失函数在光学神经网络中都不能达到相应的效果,因此我们选用了皮尔逊相关系数的负数(Negative Pearson Correlation Coefficient, NPCC)函数作为损失函数,它的表达式为公式(5):
(5)
上式中,NPCC代表了负的PCC,PCC是相关系数,它代表了神经网络的输出值与标签值之间的相关性,PCC为0代表完全不相关,PCC为1或者−1,代表完全相关或者负相关。
步骤3:误差反向传播。根据上一步所得到的系统的损失函数L,计算光学神经网络在最后一层的误差函数为公式(6):
(6)
上式中,
代表
的的共轭分布,然后根据第
层误差函数,通过反向传播的方法 [15] ,计算第k层的误差函数
如公式(7)所示,第k层的相位的梯度可以通过误差函数来求得,其表达式如(8)所示:
(7)
(8)
上式中,
表示相位梯度,
表示反向传播算子,它表示
的转置矩阵。
步骤4:梯度更新。根据上一步所得到相位梯度更新相位板的相位,更新算法可以采用梯度下降法 [16] 来更新网络参数,其公式为公式(9)所示:
(9)
其中
代表学习率,通常可以设置为0.01。梯度下降算法可以在一个凸函数中寻找目标函数的最优解法,这个最优解法也就是全局的最优解法,对于非凸函数,则会找到局部的最优解法。
3. ONN仿真结果
我们使用香港中文大学在2016年发布的Portrait Dataset 2000数据集 [17] 作为训练和测试,我们选取了训练图片包含1000张,测试图片包含了100张,我们将使用PCC作为语义分割的性能指标。数据集的部分展示如图2所示,整个数据集一共有两个类别,人物和背景。本次实验,计算机CPU的型号为12th Gen Intel(R) Core(TM) i5-12490F 3.00 GHz,我们基于Numpy工具包作为基础开展网络的设计,使用Python3.7的版本。网络结构为四层衍射层,由于光学神经网络所处理的数据图为灰度图,因此输入彩色图片首先进行灰度化,然后将其尺寸重新采样为128 ´ 128像素。光的波长为500 nm,光学神经网络的相位调制层通过空间光调制器(Spatial Light Modulator, SLM)来实现,每层的像素个数为256 ´ 256,其像素尺寸为8 μm ´ 8 μm,衍射层之间的距离为D,我们根据在传统最大半锥衍射角理论 [18] 应满足以下公式(10):
(10)
其中N为输入图片尺寸,
为SLM单元尺寸,
为波长,在本文中D取值为6.5 cm,因为总共包含4层结构,因此从输入到输出的总距离为l = 32.5cm,光学计算一次所花的时间为t = l/c = 1.1 ns。
![](//html.hanspub.org/file/170-2571656x48_hanspub.png?20240606101454681)
Figure 3. Training results of semantic segmentation of portrait dataset
图3. 人像数据集语义分割训练结果
我们针对1000个数据集,训练50个Epochs后的损失函数变化如图3所示,蓝色的是训练集的损失函数随着训练过程的变化示意图,红色的是测试集的损失函数随着训练过程的变化示意图。可以看到,对于训练集来说,人脸识别数据集的精度可以达到0.8以上。对于测试集来说,人脸识别数据集的精度在0.78左右。在图4中给出了神经网络的输出结果,以及其本身的标签值,可以看到光学神经网络的输出结果与标签值类似,准确的恢复了人脸的轮廓,对于位于人脸的像素,其光强值高于背景的像素,说明了光学神经网络可以较好地实现图片中人脸信息的分割。
![](//html.hanspub.org/file/170-2571656x49_hanspub.png?20240606101454681)
Figure 4. Display of the semantic segmentation effect of portrait dataset
图4. 人像数据集语义分割效果展示图
4. ONN性能分析
接下来我们对该网络进行性能分析,通过对不同层数对网络性能的影响,不同填充尺寸对网络性能的影响,以及不同批次量(batchsize)对网络性能的影响进行分析。
4.1. 层数的变化对网络性能的影响分析
我们设置了从两层到六层的相位板进行测试,其余条件不变,最终结果如图5所示,我们不难发现随着层数的增多,网络的性能也在提升,但是当网络层数提升到四层后,从PCC指标上来看,随着层数的增加,提升的效果逐渐变小。因此我们可以猜测层数的增加确实可以提高网络的性能,但是考虑到层数增加,网络复杂度也在增加,并且会增加训练时间,并且超过四层网络,性能提升不大,所以我们综合考虑选用四层网络结构为最佳。
4.2. 输入图片填充尺寸对网络性能的影响分析
图片信息在进行传输过程中边缘信息会有所缺失,因此我们会在图片四周填充0保留图片的边缘信息。我们使用的原始图片尺寸大小为128 * 128,我们通过对比分析探究填充尺寸对分割性能的影响。我们设置的填充后的尺寸有160 * 160,192 * 192,256 * 256,320 * 320,具体结果如图6所示。我们发现在进行少量填充如尺寸160 * 160和192 * 192的图片,其测试效果明显偏低,其对应的PCC值分别为0.757和0.775。当图片填充至256 * 256时效果为最佳,PCC的值为0.782,当图片填充量继续变大,如填充至320 * 320时,PCC的值变为0.778,测试效果开始降低。由此可见,对于该光学神经网络128 * 128的输入图片,当其填充至256 * 256时,可以获得最佳结果,继续填充效果会逐渐变差。
![](//html.hanspub.org/file/170-2571656x50_hanspub.png?20240606101454681)
Figure 5. Comparison of network performance at different layers
图5. 不同层数网络性能对比图
![](//html.hanspub.org/file/170-2571656x51_hanspub.png?20240606101454681)
Figure 6. A comparison of the effects of different filling sizes on network performance
图6. 不同填充尺寸对网络性能的影响对比图
4.3. 小样本容量对网络性能的影响分析
合适的小批量随机梯度下降算法能够提高计算效率、加快计算速度,收敛更加彻底同时拥有很好的泛化性。因此,我们针对不同批量的输入,探究网络的性能。我们选取了样本容量分别为1、5、10、20、25,其余条件不变。测试结果如图7所示,从对比图我们可以发现,当batchsize为1时,出现了过拟合的现象,而当batchsize取10,20,25时,其拟合速度都随着batchsize数量的增加而减慢,因此综合考虑batchsize选用5为最佳。
![](//html.hanspub.org/file/170-2571656x52_hanspub.png?20240606101454681)
Figure 7. Comparison of network performance with different sample sizes
图7. 不同样本容量网络性能对比图
5. 总结和展望
本文基于光学神经网络成功地实现了像素级别的语义分割任务,可以从包含人脸的图片中提取出人脸的轮廓,并为图片中的每一个像素分配其属性,属于人脸的像素相对于背景像素有着更高的输出光强度。通过这种光学神经网络架构,我们解决了目前传统电学神经网络所面临的算力,架构,能耗,散热等困境。经过对比测试,我们对所设计的光学神经网络的层数,填充像素数,以及batchsize等训练参数进行了分析,得出了当使用4层网络架构,图片填充至256 * 256,以及使用batchsize为5的组合时,该光学神经网络可以获得最佳的语义分割效果。该光学网络在语义分割任务的实现可以推动其进一步实现更复杂的视觉学习任务。同时,它以光速进行推理计算,完成一次128 * 128像素图片的语义分割仅需1.1 ns,并且仅需极低的能耗来进行计算,只需要普通的毫瓦激光器就可以完成光学计算,具备极高的能量使用效率,可以为人工智能提供新的平台。
目前,该网络只能实现二分类的语义分割任务,在实际生活中,比如说自动驾驶中,机器视觉系统需要分辨不同种类的物体,因此实现多任务多目标的语义分割是我们下一步的工作内容。我们在之后会继续对网络进行设计,构建多任务多目标的语义分割光学神经网络框架,进一步填充光学神经网络在复杂视觉任务领域的空白。
NOTES
*通讯作者。