一种无需非线性结构的光学卷积神经网络
Optical Convolutional Neural Network for Image Recognition without Nonlinear Structures
DOI: 10.12677/mos.2024.133351, PDF, HTML, XML, 下载: 15  浏览: 45  科研立项经费支持
作者: 江 奔, 张 薇, 许 涛:上海理工大学光电信息与计算机工程学院,上海
关键词: 光学卷积神经网络激活函数马赫–曾德尔干涉仪Optical Convolutional Neural Networks Activation Function Mach-Zehnder Interferometer
摘要: 卷积神经网络在视觉处理方面具有独特的优势。最近的一些研究使用光学的卷积神经网络来实现更为快速和低功耗的图像处理系统。我们的工作提出了一种无需额外非线性结构的光学卷积神经网络,使用绝对值函数作为激活函数,设置了特定的三层卷积神经网络,该网络对MNIST和Fashion-MNIST数据集的识别准确率与目前普遍使用的激活函数相差不大。通过对软件仿真与硬件仿真的结果进行对比,发现图像经过第一层卷积和非线性后的结果误差不超过2%,输出结果验证了我们的光学卷积神经网络对图像处理的有效性。这为实现高效可编程的光学卷积神经网络提供了可行方案。
Abstract: Convolutional neural networks (CNNs) have unique advantages in visual processing. Some recent studies have used optical CNNs to realize faster and low-power image processing systems. This study proposes an optical CNN without the need for additional nonlinear structures, using the absolute value function as the activation function. A specific three-layer CNN developed in this study provided recognition accuracies for the MNIST and Fashion-MNIST datasets similar to those of the commonly used activation functions currently in use. By comparing the results of the software simulation with the hardware simulation, it is found that the error of its results after the first layer of convolution and nonlinearity was not more than 2%, and the output results verify the effectiveness of our optical CNN for image processing. This provides a viable solution for realizing efficient and programmable optical CNNs.
文章引用:江奔, 张薇, 许涛. 一种无需非线性结构的光学卷积神经网络[J]. 建模与仿真, 2024, 13(3): 3851-3860. https://doi.org/10.12677/mos.2024.133351

1. 引言

随着机器学习技术的发展,卷积神经网络(Convolutional Neural Network, CNN)已经成为应用最广泛的机器学习技术之一。尤其在视觉应用领域,CNN具有独特的特征提取和识别能力,在对图像进行检测,分类和分割中表现出突出的性能优势 [1] 。然而随着网络的规模与复杂度的增加,网络训练的效率也随之降低,传统的计算系统在提供高算力的同时也会占用大量的资源,这使得人们把注意力转移到更具优势的光学神经网络结构上 [2] 。光子神经网络能够结合光电子技术与人工智能技术两者的优势,构建出高速度和低功耗的网络结构,突破了传统电子神经网络的瓶颈,在进行图像处理和目标识别方面具有较高的前景。

2018年,Bagherian等人提出了片上光学CNN [3] ,利用时分复用的方式实现了一种基于集成器件的光学卷积方法。2021年,Xu等人采用光电混合设置方式实现光学卷积 [4] ,由MZIs阵列组成的集成光子电路执行光学矩阵乘法(MAC)操作,光学干涉装置(OIU)完成与卷积相关的矩阵乘法操作,同时FPGA对OIU进行编码和调制。另外激活函数在当前的光学神经网络研究中必不可少,但实现非线性的激活功能仍然是光子计算硬件的关键挑战之一 [5] 。通过利用光学非线性材料如饱和吸收体 [6] [7] 、石墨烯 [8] 等特有的传输特性,可以充当卷积神经网络中的非线性激活函数。Williamson等人提出了一种MZI网格兼容的非线性O/E/O (Opto-Electro-Optical) 节点设计,证明了类ReLU函数以及类似于有界激活的截断非线性响应 [9] 。J. Feldmann等将PCM (Phase-Change Material)单元集成为MRR (Micro-Ring Resonator)的一部分,通过输入光功率改变PCM晶体状态产生非线性作用 [10] 。但这些方法有的难于精准控制,有的则需要将信号通过数模转换器(Analog-to-Aigital Converter, ADC),如此便会降低运行速度。

在本文中,我们使用基于MZI的可编程的纳米光子芯片来进行矩阵乘法运算,在卷积神经网络中采用绝对值函数作为激活函数。构造的光学卷积神经网络避免了使用具体的非线性运算结构,在对图片进行卷积时,硬件仿真得到的结果能够与软件仿真得到的卷积结果基本一致,由此可以推断我们的光学卷积神经网络能够对图像进行有效的识别。

2. 卷积神经网络的背景

CNN是一种深度学习方法,与其他方法相比,CNN需要较少的预处理,是理解图片材料最有效的学习算法 [11] 。传统CNN的建立是在计算机上完成的,其主要包括卷积,池化,非线性和全连接层。在CNN中,卷积层的主要作用是提取图像特征,卷积层内部可以包含多个卷积核。

图1所示,卷积核 W N 中有 C × N × N 个元素,其中C表示卷积核的通道数,N表示卷积核的高度和长度。每个元素都对应一个权重系数和一个偏差量。输入信息先通过卷积层进行卷积操作,提取其局部特征,然后经过池化层进行特征选择,降低特征数量。在卷积神经网络比较大时,多个卷积层的叠加可以学到池化层所能提供的非线性 [12] ,甚至能够学到比池化层更好的非线性,因此可以通过步长为2的卷积来代替池化操作。激活函数的使用可以在卷积后也可以在池化后,具体放在哪里根据实际情况选择。最后经过一系列的卷积、池化和非线性操作后,通过全连接神经网络对结果进行识别分类。CNN与人工神经网络(Artificial Neural Network, ANN)一样,也是利用反向传播算法将误差层层回传,利用梯度下降法更新每一层的权值 [13] 。

激活函数是神经网络模型中的重要组成部分,目前已经发展出了各种类型的激活函数 [14] 。在表1中,我们列出了几种不同类型的激活函数在相同的网络模型中对图像识别的准确率。

MNIST数据集和Fashion-MNIST数据集都是图像识别领域中的经典数据集,其中MNIST数据集是0~9的灰质手写数字图片,而Fashion-MNIST数据集图像更为复杂,包含了10个类别的图像。它们的训练集和测试集的样本数和大小一样,分别为60,000和10,000,每张图片是一个28 * 28像素点,图像像素值为0~255。

Table 1. Image recognition accuracy with different activation functions

表1. 不同激活函数的图像识别准确率

3. 光学卷积神经网络的实现

光学卷积神经网络对图像识别的过程,我们参考了Bagherian的工作,其根据相干纳米光子电路构建了光学卷积神经网络,能够实现CNN高速和低功耗推理。下面我们介绍光学卷积神经网络的运行结构。

图1所示,对于要识别的图像,首先对图像进行预处理,C通道的图片被分割成不同的图像片面,其幅度编码图像中每个片面像素的强度,然后把每个片面的像素展开成一列。每个片面按照时间序列的形式通过光学卷积芯片s1进行卷积,卷积后的输出也是按照时间序列的方式进行输出,输出接口的数量等于卷积核的数量。输入信号在经过一层卷积后,输出信号经过放大通过一组光学延迟线,信号再经过光学延迟线进行延迟分配得到下一层卷积的输入信号,如此图片信号经过多层卷积即可实现光学卷积神经网络的前向传播过程。光学卷积芯片s1中可以集成多个卷积核,其中卷积核 W N 对应的图像片面大小为 A N 。光学延迟线由固定长度的光纤段组成,同时根据卷积核的大小从光学延迟线上分接出不同的延迟信号来作为下一层卷积的输入,每一支路的延迟信号按照下一层光学卷积输入的需要进行延迟量的分配。

对于任意一个 m × n 的实矩阵 W 都能进行奇异值分解 W = U Σ V T ,其中 U 是一个 m × m 的矩阵, Σ 是一个 m × n 的对角矩阵, V 是一个 n × n 的矩阵。 U V 都是酉矩阵, Σ 通过可调谐波导损耗实现 [15] 。 n 阶酉矩阵可以通过 n ( n 1 ) / 2 个旋转矩阵进行分解。

如果按照Bagherian对图像片面的输入方式,图像片面会分解为 C N 2 × 1 的列矩阵,此时光子芯片的规模会很大。因此我们通过把光子芯片对图像的卷积操作转换为光子芯片对图像块的每一通道进行卷积,然后再把每一通道卷积后的结果进行耦合相加,这样得到的输出结果一样,并且缩小了光子芯片的规模。

Figure 1. Structure of optical convolutional neural network

图1. 光学卷积神经网络的结构

其中在对相同的通道进行卷积时可以分解为两个矩阵相乘的形式,卷积核 W N 的一个通道被分解为 1 × N 2 的行矩阵,图像片面 A N 的一个通道被分解为 N 2 × 1 的列矩阵。

公式(1)给出了有C个通道的卷积核对图像块的卷积过程,其得到的结果与我们的卷积核对图像块进行卷积得到的结果一致。公式(2)和(3)给出了卷积核 W N 中的 i 通道经过转换后的行矩阵 W i 与图像块 A N 中的 i 通道经过转换后的列矩阵 A i 相乘的过程。旋转矩阵 T m , n 由公式(4)给出,其中第 m 行,第 m 列元素为 sin θ m , n θ φ 为待求解的相位值。

W N A N = i = 1 C [ w i 1 w i 2 w i N 2 ] × [ a i 1 a i 2 a i N 2 ] (1)

W i × A i = U i Σ i V i T × A i (2)

V i T =DT 21 T 31 T 32 T N , 1 T N , 2 T N , N 1 (3)

T m , n = [ 1 0 0 0 1 e i φ m , n sin θ m , n cos θ m , n e i φ m , n cos θ m , n sin θ m , n 1 0 0 0 1 ] (4)

我们使用由MZI组成的相干纳米光子电路来进行矩阵乘法操作,其中每一个MZI中,都包含了一个内移相器和一个外移相器。内移相器可以调节MZI的分裂比,而外移相器可以调节MZI的输出相位差。每一个MZI可以由两个3 dB的定向耦合器和与之相连的上下光波导组成。热光效应可以改变光波导的有效折射率 [16] ,从而调节上下光波导之间的折射率差,折射率差的改变会影响上下光波导之间的相位差,进而影响输出功率。公式(5)给出了当干涉臂与参考臂的长度不变时,干涉臂与参考臂之间的折射率差 Δ n e f f 与干涉臂与参考臂之间的相位差 θ 的关系。 θ 为内相位差, λ 为输入光的波长, L 为分支波导的长度。

当光先通过外移相器再通过内移相器的MZI,MZI的传输矩阵 T ( θ , φ ) 由公式(6)计算得出, φ 为外移相器的相位补偿。由公式(6)可知一个MZI可以实现一个完备的SU(2)变换,在一个光子芯片中通过改变电压,调节内外移相器的 θ φ 值来设置每一个酉矩阵参数。对于任意规模的酉矩阵可由Reck等人的三角排列或Clements等人的矩形排列实现 [17] [18] ,这样在一个光子芯片中可以对多个卷积核进行编码,其具有可扩展性强、能效高和可编程性强等优点。

θ = 2 π Δ n e f f λ L (5)

T ( θ , φ ) = 1 2 ( 1 i i 1 ) ( e i θ 0 0 1 ) 1 2 ( 1 i i 1 ) ( e i φ 0 0 1 ) = 1 2 ( e i φ ( e i θ 1 ) i ( e i θ + 1 ) e i φ i ( e i θ + 1 ) 1 e i θ ) = e i π + θ 2 ( e i φ sin θ 2 cos θ 2 e i φ cos θ 2 sin θ 2 ) (6)

当然非线性激活层的使用在卷积神经网络中必不可少,在这里我们采用Absolute函数进行激活。这样做的好处在于用电脑模拟的卷积神经网络中,每一层经过非线性激活后的输出都为正值,这样就可以在硬件中,通过直接检测的光信号的功率来作为神经网络的输入和输出,不需要我们另外添加其他的硬件结构来实现非线性激活功能。

4. 模拟仿真

4.1. 软件仿真

为了更好演示我们CNN网络的有效性,我们在Pytorch环境下构建特定的卷积神经网络,其包含三层卷积和一个全连接层,每一层的末尾都用Absolute函数进行激活。数据集使用MNIST和Fashion-MNIST数据集,在训练阶段使用Adam优化器和反向传播算法来计算梯度。为了使我们的模拟器与我们的光子神经网络更接近,在我们的神经网络中没有添加权重偏置同时对每一层的输出数据没有进行归一化处理。我们通过训练数据集优化卷积神经网络的权重参数,其里面包括每层卷积核的权重参数和全连接层里面的2个权重矩阵参数。权重参数在经过优化后,利用Python编程语言对提取出来的权重参数进行奇异值分解和旋转矩阵分解,得到光学神经网络的内移相器参数 θ 值。

图2所示,第一层卷积使用2个大小为2 × 2的卷积核。为了提取更有效的图像特征,第二层使用4个大小为3 × 3的卷积核,对图片的填充大小设置为1,此时在大小为14 × 14的图像周围填充一层大小为0的像素,经过卷积后图像大小变为了7 × 7的图像。第三层卷积使用8个大小为3 × 3的卷积核,但对图片没有填充,每一层的卷积核对图像进行卷积的步长我们都设置为2。图3给出了特定卷积神经网络模型对图像识别准确率与其训练次数的曲线,这里给出了30次训练的结果。通过测试数据集检测优化后卷积神经网络的识别准确率,MNIST数据集准确率可以达到97%以上,Fashion-MNIST数据集准确率可以达到86%以上。为了更加直观的比较,我们给出了MNIST数据集中的输入图像0,经过训练好的特定卷积神经网络的第一层卷积和非线性计算后的输出值。由于第一层卷积有两个卷积核,而MNIST数据集中的输入图片0只有一个通道,经过第一层卷积后输出结果变为两个通道,图4中左边给出了软件仿真第一通道的输出结果,图4中右边给出了软件仿真第二通道的输出结果。

Figure 2. Network structure of CNN

图2. CNN的网络结构

Figure 3. Curve of CNN image recognition accuracy versus its number of training epochs

图3. CNN图像识别准确率与其训练次数的曲线

4.2. INTERCONNET仿真实现卷积

INTERCONNET软件包含丰富的光电器件和光学集成设计工具包,可用于设计,仿真和分析多种复杂光学系统。我们在MNIST数据集中选取图片0,输入功率参数由与卷积核相乘的图像片面转换成的列矩阵 A i 构成。 A i 的值在Python中反映的是电场的大小,而在INTERCONNET中进行仿真时输入的是功率值,因此需要对 A i 中的值进行平方处理来设定CW激光器的功率值。为了满足光波导所能承受的功率范围,需要对图片进行预处理,输入功率的范围控制在0~300 mW之间。之后通过INTERCONNET进行仿真得到输出功率结果,然后对功率结果开根号可以得到图像经过卷积和非线性激活后的电场结果。

图5展示了光子芯片通过INTERCONNET进行仿真的一个等效MZI单元结构,其由内移相器 θ 和外移相器 φ ,还有2个定向耦合器组成,代表一个SU (2)的矩阵变换。通过调节分支波导的长度或者改变波导的有效折射率的方法可以影响干涉臂和参考臂的相位差,这里我们通过改变直波导有效折射率的方法,模拟热光移相器的相位调节,改变直波导WGD_1的有效折射率进而调节外移相器 φ 值,改变直波导WGD_2的有效折射率进而调节内移相器 θ 值。

Figure 4. Output results of software simulation

图4. 软件仿真输出结果

Figure 5. Structure of the optical basic unit

图5. 光学基本单元的结构

Figure 6. Unitary-matrix optical network of 4 × 4

图6. 4 × 4的酉矩阵光学网络

图6模拟了4 × 4的酉矩阵光学网络,其由6个光学基本单元组成。我们在Ansys Lumerical 2020 R2上利用INTERCONNET进行硬件仿真,整个系统工作在光波长为1550 nm下,光波导长度为18 um,定向耦合器的耦合系数为0.5。在INTERCONNET中输出相位差是可以直接测定的,因此直波导WGD_1的有效折射率可以由输入光学基本单元两端的相位差求得,而直波导WGD_2的有效折射率可以通过内移相器参数 θ 值求出,P代表功率检测器件。

我们提取输入图像0中的图像像素,对像素进行处理后,转换为INTERCONNET软件的输入,然后根据预先训练好的网络参数,通过我们设置好的与软件模拟结构相对应的硬件网络结构后,经过仿真计算得到输出结果,在这里,我们模拟了图像经过硬件仿真的第一层卷积和非线性计算的结果。为了与软件仿真的结果相比较,同样求出了两个通道的结果,图7中左边为硬件仿真第一通道的输出结果,图7中右边为硬件仿真第二通道的输出结果。

5. 讨论

我们知道计算机模拟的权重是随机分配的,当我们的神经网络经过完整的训练后,得到的权重值可能为负数,输入值乘以我们的权重系数后的输出可能有负值。一般为了在光神经网络中模拟传统的激活函数,需要添加额外的非线性结构,而我们使用绝对值函数作为激活函数对图像进行识别时,与功率作为检测结果的网络相匹配,简化了光学卷积神经网络的结构,并且可以得到与传统激活函数相近的准确率。

在INTERCONNET中构造对应的光学卷积神经网络,与Python中卷积神经网络输出的结果进行对比,通过比较图4图7,可以得出第一层卷积与非线性激活后的软件仿真结果与硬件仿真结果相吻合。图8中给出了两个通道输出值的误差结果,可以看出其相对误差不超过2%,证明我们的网络结构是有效的。由于没有附加的非线性驱动,整个网络所需要的能量也变得更少。

Figure 7. Output results of hardware simulation

图7. 硬件仿真输出结果

在实际应用中光在波导中传输时是有损耗的,包括插入损耗和传输损耗等。输入数据可以根据损耗公式进行预处理,由此计算出来的权重矩阵符合实际。SOI脊型波导的传输损耗一般在2 dB/cm左右 [19] ,在INTERCONNET仿真中加入波导传输损耗时,对功率输出结果的影响很小。相位编码噪声和热串扰对整个网络也有一定的影响,把MZI中的相位设置在8位精度,此时的网络性能没有显著下降,这在现有的技术下是可以实现的 [20] 。另外光子芯片中的热串扰也可以通过添加隔热槽或改变刻蚀工艺来减小 [21] 。

Figure 8. Error results

图8. 误差结果

6. 结论

在这篇文章中,基于MZI的可编程纳米光子芯片,提出了一种三层卷积神经网络,其采用绝对值函数作为激活函数,通过Python训练卷积神经网络中的权重值并进行分解,可以求出光子芯片中每一个MZI的相位值。在INTERCONNET上构造与软件仿真相对应的光学卷积神经网络结构,模拟了输入图像0经过第一层卷积和非线性激活后的硬件结果,其与软件模拟的结果基本一致。仿真表明这种光学卷积神经网络使用Absolute函数作为激活函数,输入数据通过光强进行调制,经过每一层光学卷积和非线性处理后的输出结果与软件仿真的输出结果在允许的误差范围内,通过直接检测输出功率值即能够对图像进行有效识别,因此通过仿真证明了这种光学卷积神经网络是有效的,并且对比传统的卷积神经网络其具有能耗低、速度快的优点。

我们所提出的结构适用于目前普遍的卷积网络,可以进行扩展来应对更为复杂的任务。在对芯片进行编程的过程中,调节相位的精度会受到噪声和热串扰的影响,另外随着卷积层数的增加,最后的结果误差可能会变大,这在以后的工作中还需要进一步的研究。

基金项目

国家重点研发计划资助(2021YFB2802300)。

参考文献

[1] Malik, A.S., Boyko, O., Aktar, N. and Young, W.F. (2001) A Comparative Study of MR Imaging Profile of Titanium Pedicle Screws. Acta Radiologica, 42, 291-293.
[2] Sui, X., Wu, Q., Liu, J., Chen, Q. and Gu, G. (2020) A Review of Optical Neural Networks. IEEE Access, 8, 70773-70783.
https://doi.org/10.1109/ACCESS.2020.2987333
[3] Bagherian, H., Skirlo, S., Shen, Y., Meng, H., Ceperic, V. and Soljacic, M. (2018) On-Chip Optical Convolutional Neural Networks. arXiv preprint arXiv: 1808.03303.
[4] Xu, X., Zhu, L., Zhuang, W., Lu, L. and Yuan, P. (2022) A Convolution Neural Network Implemented by Three 3× 3 Photonic Integrated Reconfigurable Linear Processors. Photonics, 9, 80.
https://doi.org/10.3390/photonics9020080
[5] Xu, R., Lv, P., Xu, F. and Shi, Y. (2021) A Survey of Approaches for Implementing Optical Neural Networks. Optics & Laser Technology, 136, Article ID: 106787.
https://doi.org/10.1016/j.optlastec.2020.106787
[6] Selden, A. (1967) Pulse Transmission through a Saturable Absorber. British Journal of Applied Physics, 18, Article 743.
https://doi.org/10.1088/0508-3443/18/6/306
[7] Soljačić, M., Ibanescu, M., Johnson, S.G., Fink, Y. and Joannopoulos, J.D. (2002) Optimal Bistable Switching in Nonlinear Photonic Crystals. Physical Review E, 66, Article ID: 055601.
https://doi.org/10.1103/PhysRevE.66.055601
[8] Cheng, Z., Tsang, H.K., Wang, X., Xu, K. and Xu, J.B. (2013) In-Plane Optical Absorption and Free Carrier Absorption in Graphene-on-Silicon Waveguides. IEEE Journal of Selected Topics in Quantum Electronics, 20, 43-48.
https://doi.org/10.1109/JSTQE.2013.2263115
[9] Williamson, I.A., Hughes, T.W., Minkov, M., Bartlett, B., Pai, S. and Fan, S. (2019) Reprogrammable Electro-Optic Nonlinear Activation Functions for Optical Neural Networks. IEEE Journal of Selected Topics in Quantum Electronics, 26, 1-12.
https://doi.org/10.1109/JSTQE.2019.2930455
[10] Feldmann, J., Youngblood, N., Wright, C.D., Bhaskaran, H. and Pernice, W.H. (2019) All-Optical Spiking Neurosynaptic Networks with Self-Learning Capabilities. Nature, 569, 208-214.
https://doi.org/10.1038/s41586-019-1157-8
[11] Bhatt, D., Patel, C., Talsania, H., Patel, J., Vaghela, R., Pandya, S., et al. (2021) CNN Variants for Computer Vision: History, Architecture, Application, Challenges and Future Scope. Electronics, 10, Article 2470.
https://doi.org/10.3390/electronics10202470
[12] Springenberg, J.T., Dosovitskiy, A., Brox, T. and Riedmiller, M. (2014) Striving for Simplicity: The All Convolutional net. arXiv preprint arXiv: 1412.6806.
[13] Ruder, S. (2016) An Overview of Gradient Descent Optimization Algorithms. arXiv preprint arXiv: 1609.04747.
[14] Apicella, A., Donnarumma, F., Isgrò, F. and Prevete, R. (2021) A Survey on Modern Trainable Activation Functions. Neural Networks, 138, 14-32.
https://doi.org/10.1016/j.neunet.2021.01.026
[15] Connelly, M.J. (2007) Semiconductor Optical Amplifiers. Springer Science & Business, Berlin.
[16] Harris, N.C., Ma, Y., Mower, J., Baehr-Jones, T., Englund, D., Hochberg, M. and Galland, C. (2014) Efficient, Compact and Low Loss Thermo-Optic Phase Shifter in Silicon. Optics Express, 22, 10487-10493.
https://doi.org/10.1364/OE.22.010487
[17] Reck, M., Zeilinger, A., Bernstein, H.J. and Bertani, P. (1994) Experimental Realization of Any Discrete Unitary Operator. Physical Review Letters, 73, 58.
https://doi.org/10.1103/PhysRevLett.73.58
[18] Clements, W.R., Humphreys, P.C., Metcalf, B.J., Kolthammer, W.S. and Walmsley, I.A. (2016) Optimal Design for Universal Multiport Interferometers. Optica, 3, 1460-1465.
https://doi.org/10.1364/OPTICA.3.001460
[19] Chrostowski, L. and Hochberg, M. (2015) Silicon Photonics Design: From Devices to Systems. Cambridge University Press, Cambridge.
https://doi.org/10.1017/CBO9781316084168
[20] Shen, Y., Harris, N. C., Skirlo, S., Prabhu, M., Baehr-Jones, T., Hochberg, M., et al. (2017) Deep Learning with Coherent Nanophotonic Circuits. Nature Photonics, 11, 441-446.
https://doi.org/10.1038/nphoton.2017.93
[21] Chrostowski, L., Shoman, H., Hammood, M., Yun, H., Jhoja, J., Luan, E., et al. (2019) Silicon Photonic Circuit Design Using Rapid Prototyping Foundry Process Design Kits. IEEE Journal of Selected Topics in Quantum Electronics, 25, 1-26.
https://doi.org/10.1109/JSTQE.2019.2917501