2. 上海宇航系统工程研究所,上海 201109
2. Institute of Aerospace System Engineering of Shanghai, Shanghai 201109, China
近年来,动作识别已成为计算机视觉领域的一个重要的分支,在人机交互、自动驾驶方面都有着广泛的应用。由于人类行为环境的复杂性,在执行动作识别任务时,经常受到相机移动、遮挡等复杂场景的干扰,限制了直接使用视频进行动作识别的方法的性能。随着深度相机的广泛应用和高性能姿态估计算法的出现,人们可以简单快速地获得人体骨架关节点位置信息。骨架关节点位置信息对于环境的干扰有较强的鲁棒性,因此基于骨架的动作识别算法取得了较好的效果,得到了动作识别领域越来越多的关注。
基于骨架的动作识别方法包括早期的手工特征设计方法[1-2]和近年来发展的基于深度学习的方法。手工特征设计方法由于其设计复杂、通用性差等原因,现在已基本不再使用。基于深度学习的骨架动作识别方法又分为卷积神经网络(convolutional neural network, CNN)类方法[3-5]和图卷积神经网路(graph convolutional network, GCN)类方法。CNN类动作识别方法大多使用循环神经网络(recurrent neural network, RNN)[6-8]对骨架帧序列的时间和空间特征进行提取。虽然这类方法能够较好地描述时间维度特征,但对空间维度信息提取能力不足,主要原因是CNN类方法将骨架数据表示为向量序列或2D网格,不能完全表达关节之间的依赖性,忽略了人体的结构信息。数学上,人体骨架结构可以自然地看作以关节为顶点、以骨骼为边的图(Graph),因此GCN可以有效地建模人体节点之间的结构信息,从而较好地提取人体的运动信息,虽然GCN直到近几年才被应用于骨架动作识别,但现已成为基于骨架动作识别任务的主流方法。
2018年,ST-GCN[9]首次将GCN方法应用于骨架动作识别任务。它从时间和空间两个维度来处理骨架数据,较CNN类的方法取得了长足的性能提升,开创了基于GCN的骨架动作识别新领域。近三年的很多方法都是针对ST-GCN的改进[10-17]。ST-GCN使用固定的邻接矩阵来表示人体的物理连接,对非物理连接节点间的互动信息提取能力不足。比如“拍手”这类动作,很大程度上依赖于左右手的互动,但骨架图上两手之间不存在直接的物理连接,ST-GCN对此类动作识别效果较差。针对此问题,Dynamic GCN[12]提出了一种内容编码网络来自动地学习和更新节点间的连接关系;2s-AGCN[13]提出了一种自适应图卷积模块,该模块使用两个嵌入函数生成样本相关的关节点间连接程度C,并添加了一个可学习的邻接矩阵B,最后使用加法操作将原始邻接矩阵A和B,C相加得到一个自适应的邻接矩阵,取得了不错的效果。ST-GCN只使用关节点坐标序列作为输入,信息来源较单一。针对此问题,ResGCN[11]和2s-AGCN[13]分别提出了三流(节点流、骨骼流和速度流)和双流(节点流和骨骼流)输入的数据预处理方法,增加了模型信息来源,提高了动作识别准确度。
大多数现有的基于GCN的动作识别方法使用简单图描述人体连接关系,简单图的边只能连接两个节点,因此基于简单图的GCN层只能通过邻接矩阵学习节点间的低阶关系。然而,现实生活中人的动作往往需要多个节点相互配合才能完成,基于简单图的GCN网络需要堆叠多层才能描述这种高阶关系,但多层堆叠会导致过平滑、计算量大等问题。超图是简单图的扩展,超图的边可以连接多个节点,同一个节点可以属于不同的超边。因此将超图引入GCN动作识别网络可以较好地描述多节点间的关系。Hyper-GCN[18]首次尝试将超图网络引入骨架动作识别领域,构造局部超边和全局超边提取高阶特征信息,并使用超图注意力机制获得相邻节点的不同权值。
受以上思想的启发,本文设计了一种用于骨架动作识别的多尺度超图卷积网络,主要贡献包括:首先将原始骨骼信息转换为节点序列、骨骼序列、动态序列分别输入多尺度超图卷积网络,形成一个三流网络,提高原始信息利用率;其次设计了一个以超图卷积模块为编码器、以超图融合模块为解码器的编解码结构,更好地建模多节点间的空间依赖关系;最后基于时间空洞卷积设计了一种多尺度时间图卷积模块,以建模动作的时间依赖关系。
1 算法 1.1 动作识别流程动作识别的具体流程如图1所示。整个流程由输入数据预处理、多尺度超图卷积特征提取网络和预测分类三部分组成。对于输入的视频序列,人体关节点的三维坐标信息可由姿态估计算法得出。输入数据预处理部分,对人体关节点三维坐标
|
图 1 动作识别流程 Figure 1 Action recognition process |
本文提出的多尺度超图卷积网络结构如图2所示。该网络整体上属于一种三阶段的编解码结构U型网络,输入可以是关节、骨骼或动态数据。编码器部分使用两个本文设计的超图卷积模块(hypergraph convolution block, HCB)逐步减少特征维度,以聚集节点间的高阶信息;解码器部分使用两个本文设计的超图融合模块(hypergraph merging block, HMB)逐渐恢复原始骨架尺寸大小;编解码器之间采用跳级连接融合同阶段的编码器浅层信息与解码器深层信息。编码器和解码器的每个阶段都采用若干个自适应图卷积模块(adaptive graph convolution block, AGCB)来聚集同尺度特征的相邻节点信息。为了更好地建模输入序列帧间的相互依赖关系,设计了一种基于空洞卷积的多尺度时间图卷积模块(multiscale temporal graph convolution block, MTGCB)对解码器的输出特征进行处理。图2中模块下面的数字三元组分别表示本模块的输入通道数、输出通道数、时间维度卷积步长。比如编码器第一阶段AGCB下面的(3,64,2)代表本AGCB的输入通道数是3(即输入关节、骨骼或动态的三维数据),输出通道数是64,时间维度卷积步长为2。
|
图 2 多尺度超图卷积网络结构 Figure 2 Structure of multiscale hypergraph convolutional network |
多尺度超图卷积网络每个阶段的特征提取模块,本文借鉴了2s-AGCN[13]设计的AGCB,AGCB的结构如图3所示。在空间维度骨架数据具有不规则的空间结构,在时间维度骨架数据具有规则的几何结构,因此AGCB将骨架数据分为时间和空间两个维度进行特征提取。图3中的自适应图卷积网络(adaptive graph convolutional network, AGCN)用来聚集空间维度节点信息,时间卷积网络(temporal convolutional network, TCN)沿时间轴使用3×1卷积来聚集时间维度节点信息。这两个卷积层后面都有一个批归一化层(batch normalization, BN)和Relu激活层。此外为了增加AGCB网络训练的稳定性,还使用了残差连接。
|
图 3 自适应图卷积模块 Figure 3 Structure of adaptive graph convolution block |
普通图卷积通常使用固定的物理连接关系来表示骨架,但是固定的物理连接缺乏对非相邻关节点依赖关系的建模能力,然而对于某些动作(比如拍手等)非相邻的关节点(左、右手等)间的依赖关系对动作的识别非常重要。针对此问题,图3中的AGCN部分通过卷积网络学习一个自适应邻接矩阵。不同于固定的物理连接,图的拓扑结构随着网络和参数一起优化,大大提高了模型的灵活性。依据输入数据的多样性,模型可以自适应地学习节点之间的拓扑结构。在动作识别任务中,骨架被定义为图
| $ {{{f}}_{{\text{AGCN}}}}{\text{ = }}\displaystyle \sum\limits_k^{{{{k}}_{\text{v}}}} {{{\boldsymbol{W}}_{{k}}}{\text{(}}{{\boldsymbol{f}}_{{\text{in}}}}{\text{(}}{{\boldsymbol{A}}_{{k}}}{\text{ + }}{{\boldsymbol{B}}_{{k}}}{\text{ + }}{{\boldsymbol{C}}_{{k}}}{\text{))}}} $ | (1) |
式中:输入为
人体动作是复杂多样的,像跳跃、站起、拍手等动作都需要多对关节点相互协调才能完成,因此建模多对关节点之间的高阶依赖关系对骨架动作识别任务至关重要。基于简单图的GCN,无论其图结构是固定的还是自适应变化的,都很难描述这种多对关节点之间的高阶依赖关系。为此,本文将超图引入骨架动作识别任务,设计了一种编解码结构的多尺度超图卷积网络。编码器部分使用了两个超图卷积模块HCB来进行超边的融合,图4给出了本文设计的HCB在NTU-RGB+D和Kinetics两个数据集上的超边融合分配策略。由于超边可以包含多个关节点,超图卷积是对超边内多个关节点之间信息的聚合,因此HCB能够更好地建模多对关节点之间的依赖关系,加快关节点信息聚合的速度。HCB的计算过程如下。
|
图 4 超边融合的分配策略 Figure 4 Allocation strategy for hyperedge merging |
首先定义超图的表示为
|
图 5 多尺度时间图卷积模块 Figure 5 Structure of multiscale temporal graph convolution block |
为了防止超边多次融合后信息爆炸,本文使用标准化超图连接,即通过归一化使节点的最大连接度不大于1,对于N个节点和M个超边的超图,其标准化超图连接度的计算方法如下:
| $ {\boldsymbol{H}} = {\boldsymbol{D}}_v^{ - \frac{1}{2}}{\boldsymbol{Q}}{{\boldsymbol{W}}_\varepsilon }{\boldsymbol{D}}_\varepsilon ^{ - 1}{{\boldsymbol{Q}}^{\rm{T}}}{\boldsymbol{D}}_v^{\frac{1}{2}} $ | (2) |
式中:
| $ {{\boldsymbol{f}}_{{\text{HCB}}}} = \sigma ({{\boldsymbol{W}}_1}{{\boldsymbol{f}}_{{\rm{in}}}}{\boldsymbol{HQ}}) $ | (3) |
式中:
HCB使空间维度的特征图变小、感受野增大,解码器部分需要恢复特征的空间分辨率。图像领域通常用反卷积和反池化等上采样方法获取更高分辨率的特征图,然而这些方法并不适用于没有规则空间结构的图网络。为此,本文基于HCB的一种逆运算,设计了一种超图融合模块HMB。HMB的主要作用有两点:(1)编码器部分进行HCB操作后,图的空间维度变小,这意味着如果不进行上采样操作,同阶段解码器部分的图的空间维度将无法与编码器特征对齐,从而无法通过跳级连接进行特征融合。所以HMB的第一个作用是使编解码结构同阶段的空间特征图的维度对齐;(2)HMB可以学到人体不同部分(即不同超边)的重要性,例如拍手动作,人的手这部分的重要性比较高,HMB可通过权重参数对人的手所涉及的关节点进行加权增强。
类似图卷积定义的方式,本文利用标准化超图连接
| $ {{\boldsymbol{f}}_{{\text{HMB}}}} = \sigma ({{\boldsymbol{W}}_{{2}}}{{\boldsymbol{f}}_{{\text{in}}}}{\boldsymbol{H}}{{\boldsymbol{Q}}^{\rm{T}}}) $ | (4) |
式中:
对于编解码结构的同一阶段,编码器部分输出的特征包含丰富的细节信息,解码器部分输出的特征包含丰富的高阶信息,融合两部分的特征可为后续动作识别分类提供更丰富的信息。为此,本文采用跳级连接和逐元素相加对编解码器的特征进行融合。
| $ {{\boldsymbol{f}}_{{\text{out}}}} = {{\boldsymbol{f}}_{{\text{HMB}}}}{\text{ + }}{{\boldsymbol{f}}_{{\text{AGCB}}}} $ | (5) |
式中:
HCB和HMB在空间维度获得了更大的感受野,但缺乏对时间维度信息的描述。虽然AGCB中的TCN操作使用了3×1卷积来聚集时间维度节点信息,但本文提出的多尺度超图卷积网络层数较少,其中仅包含8个AGCB,在时间维度上的建模能力是有限的。有些方法[19]为了获得时间维度上较大的感受野将卷积核扩大,但这样会导致计算量大大增加。针对此问题,本文在AGCB的基础上,设计了一种多尺度时间图卷积模块MTGCB,其结构是使用图5所示的通道分离多尺度空洞卷积模块代替图3所示AGCB中的TCN模块。
MTGCB首先使用AGCN对输入特征的空间维度信息进行聚合,之后将AGCN输出的特征按通道维度平均分成4份,即图5中所示的通道分离操作,这样可以减少模块的计算量。然后不同分支采用
本部分在NTU-RGB+D[20]和Kinetics[21]两个大规模动作识别数据集上验证本文提出的多尺度超图卷积网络(multiscale hypergraph convolutional Network, MHCN)。
2.1 数据集NTU-RGB+D[20]是一个著名且广泛使用的动作识别数据集,由56880个动作剪辑、60个动作类和4000000帧组成,包括日常动作、互动动作和与健康有关的动作。他们邀请了40名志愿者进行数据收集工作。3个相同高度不同水平视角的深度摄像机同时捕捉同一动作,3个深度摄像机的水平视角分别为45°、0°、−45°。数据集包含每个志愿者25个关节点的3D位置。每个视频中最多包含2个人。NTU-RGB+D数据集通常使用CS精度(Cross Subject Accuracy)和CV精度(Cross View Accuracy)来评价模型性能。
Kinetics[21]是一个大规模且重要的人体动作识别数据集,包括30万个YouTube视频剪辑,共有40个动作种类。视频剪辑分为训练集(240000个剪辑)和验证集(20000个剪辑)。数据集使用OpenPose[22]姿态估计算法得到人体骨架序列,每个人有18个关节点,每个关节点由其在像素坐标中的二维坐标
模型是使用PyTorch框架搭建的,使用交叉熵作为损失函数,优化方法采用带惯量的梯度下降,惯量系数为0.9,权重衰减系数0.0001,批量大小为64。对于NTU-RGB+D数据集,每个序列最多包含2人,当人数不足2人时,使用0填充操作将输入数据扩充为2人。另外该数据集的每个序列最多包含300帧,当帧数少于300帧时,使用重复填充将其扩充为300帧。初始学习率设置为0.1,在第30个epoch和第40个epoch时下降至0.01,共训练60个epoch。对于Kinetics数据集,每个序列包含150帧,每帧中包含2个人体骨架。初始学习率设置为0.1,在第45个epoch和第55个epoch时下降至0.01,总训练次数同样为60个epoch。
2.3 消融分析为了验证本文所提出的各模块的有效性,在NTU-RGB+D数据集上进行消融分析。首先验证本文所提出的HCB和HMB的有效性,为了进行公平的比较,本文在2s-AGCN基础上,通过修改输入为三流,修改2s-AGCN最后一个AGCB为MTGCB,得到基准算法。然后在基准算法基础上逐渐添加10节点的HCB、HMB和5节点的HCB、HMB。实验结果如表1所示。表1中+
|
|
表 1 HCB和HMB的消融分析 Table 1 Ablation study of HCB and HMB |
为了验证不同骨架输入数据对结果的影响,本文使用所设计的多尺度超图卷积网络分别进行了多种单流、两流、三流对比实验,实验结果如表2所示。表2中的w/o表示“没有”的意思,比如w/o骨架表示三流中除去骨架流,只剩下关节和动态两流输入。从表2可以看出,两流的方法比单流方法效果好,三流方法比两流方法效果好,这表明每个输入数据分支对模型性能提高都是必要的。从“w/o动态”两流方法的结果可知,去掉动态输入流后模型精度降低了1.9%,性能下降非常明显,这表明本文添加的动态输入流数据中包含了很多具有动作分辨力的信息。
|
|
表 2 不同骨架输入数据对结果的影响 Table 2 Comparison of results obtained via different skeleton input data |
为了验证MTGCB中不同空洞率的效果,本文进行了不同空洞率组合的实验,表3列出了实验结果。如表3所示,当4个分支的时间空洞率都设置为1时,MTGCB就退化成了AGCB;增大4个分支的时间空洞率可以增大时间维度的感受野,从而提高模型的表现,但当空洞率大于3时,模型表现开始下降,这说明不同时间空洞率都能够提取一定的动作信息。本文所提方法在MTGCB 4个分支上分别使用不同时间空洞率,并将4个分支的结果通过级联融合,从而可以提取多种时间尺度上的动作信息,如表3所示,达到了最优的效果。
|
|
表 3 不同空洞率下模型的表现 Table 3 The performance of models with different dilation factors |
图6所示为本文算法在NTU-RGB+D数据集上的学习曲线,其中左y轴表示的是训练精度,右y轴表示的是训练损失。由图6可知在训练过程中,随着epoch的增加,模型的训练精度逐渐提高,训练的损失则逐渐减少。
|
图 6 多尺度超图卷积网络在NTU-RGB+D数据集上的学习曲线 Figure 6 Learning curve of multiscale hypergraph convolutional network on NTU-RGB+D dataset |
为了验证所提方法的优越性,将多尺度超图卷积网络MHCN和当前主流的骨架动作识别方法在NTU-RGB+D和Kinetics数据集上进行比较。表4和表5分别给出了各模型在NTU-RGB+D和Kinetics数据集上的表现。相较于当前最优模型,MHCN在NTU-RGB+D数据集上,CS精度提高了1.1%,CV精度提高了0.9%;MHCN在Kinetics数据集上,TOP1精度提高了1%,TOP5精度提高了1.7%。
|
|
表 4 在NTU-RGB+D数据集上与最新方法的比较 Table 4 Comparison with state-of-the-art methods on the NTU-RGB+D dataset |
|
|
表 5 在Kinetics数据集上与最新方法的比较 Table 5 Comparison with state-of-the-art methods on the Kinetics dataset |
骨架动作识别任务中,简单图不能很好地建模多个关节点之间的高阶信息,为此本文将超图引入骨架动作识别任务,设计了以超图卷积模块为超边融合算法、以超图融合模块为骨架尺寸恢复算法的编解码结构多尺度超图卷积骨架识别网络。该网络同时将关节、骨骼、动态三流数据作为输入以充分利用输入信息。该网络中的多尺度时间图卷积模块,使用不同的时间空洞率提取不同时间跨度的动作信息。消融分析验证了本文所提各模块的有效性,对比实验验证了本文所提方法的优越性。
| [1] | GOWAYYED M A, TORKI M, HUSSEIN M E, et al. Histogram of oriented displacements (HOD): describing trajectories of human joints for action recognition[C]//Proceedings of the Twenty-Third International Joint Conference on Artificial Intelligence. Beijing: IJCAI, 2013. |
| [2] | VEMULAPALLI R, ARRATE F, CHELLAPPA R. Human action recognition by representing 3D skeletons as points in a lie group[C]//Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014: 588 – 595. |
| [3] | DING Z W, WANG P C, OGUNBONA P O, et al. Investigation of different skeleton features for CNN-based 3D action recognition[C]//Proceedings of 2017 IEEE International Conference on Multimedia & Expo Workshops (ICMEW). Hong Kong, China: IEEE, 2017: 617 – 622. |
| [4] | LI C, ZHONG Q Y, XIE D, et al. Skeleton-based action recognition with convolutional neural networks[C]//Proceedings of 2017 IEEE International Conference on Multimedia & Expo Workshops (ICMEW). Hong Kong, China: IEEE, 2017: 597 – 600. |
| [5] | LI C K, WANG P C, WANG S, et al. Skeleton-based action recognition using LSTM and CNN[C]//Proceedings of 2017 IEEE International Conference on Multimedia & Expo Workshops (ICMEW). Hong Kong, China: IEEE, 2017: 585 – 590. |
| [6] | LIU J, SHAHROUDY A, XU D, et al. Spatio-temporal LSTM with trust gates for 3D human action recognition[C]//Proceedings of the 14th European Conference on Computer Vision. Amsterdam: Springer, 2016: 816 – 833. |
| [7] | LIU J, WANG G, DUAN L Y, et al. Skeleton-based human action recognition with global context-aware attention LSTM networks[J]. IEEE Transactions on Image Processing, 2018, 27(4): 1586–1599. DOI:10.1109/TIP.2017.2785279 |
| [8] | SI C Y, CHEN W T, WANG W, et al. An attention enhanced graph convolutional LSTM network for skeleton-based action recognition[C]//Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 1227 – 1236. |
| [9] | YAN S J, XIONG Y J, LIN D H. Spatial temporal graph convolutional networks for skeleton-based action recognition[C]//Proceedings of the Thirty-Second AAAI Conference on Artificial Intelligence and Thirtieth Innovative Applications of Artificial Intelligence Conference and Eighth AAAI Symposium on Educational Advances in Artificial Intelligence. New Orleans: AAAI, 2018. |
| [10] | CHEN Y X, MA G Q, YUAN C F, et al. Graph convolutional network with structure pooling and joint-wise channel attention for action recognition[J]. Pattern Recognition, 2020, 103: 107321. DOI:10.1016/j.patcog.2020.107321 |
| [11] | SONG Y F, ZHANG Z, SHAN C F, et al. Stronger, faster and more explainable: a graph convolutional baseline for skeleton-based action recognition[C]//Proceedings of the 28th ACM International Conference on Multimedia. Virtual Event: ACM, 2020: 1625 – 1633. |
| [12] | YE F F, PU S L, ZHONG Q Y, et al. Dynamic GCN: context-enriched topology learning for skeleton-based action recognition[C]//Proceedings of the 28th ACM International Conference on Multimedia. Virtual Event: ACM, 2020: 55 – 63. |
| [13] | SHI L, ZHANG Y F, CHENG J, et al. Two-stream adaptive graph convolutional networks for skeleton-based action recognition[C]//Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 12026 – 12035. |
| [14] | LI M S, CHEN S H, CHEN X, et al. Actional-structural graph convolutional networks for skeleton-based action recognition[C]//Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 3590 – 3598. |
| [15] | LI M S, CHEN S H, ZHAO Y H, et al. Dynamic multiscale graph neural networks for 3D skeleton based human motion prediction[C]//Proceedings of 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 211 – 220. |
| [16] | YANG W J, ZHANG J L, CAI J J, et al. Shallow graph convolutional network for skeleton-based action recognition[J]. Sensors, 2021, 21(2): 452. DOI:10.3390/s21020452 |
| [17] | ZHANG P F, LAN C L, ZENG W J, et al. Semantics-guided neural networks for efficient skeleton-based human action recognition[C]//Proceedings of 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 1109 – 1118. |
| [18] | HAO X K, LI J, GUO Y C, et al. Hypergraph neural network for skeleton-based action recognition[J]. IEEE Transactions on Image Processing, 2021, 30: 2263–2275. DOI:10.1109/TIP.2021.3051495 |
| [19] | LIU Z Y, ZHANG H W, CHEN Z H, et al. Disentangling and unifying graph convolutions for skeleton-based action recognition[C]//Proceedings of 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Seattle: IEEE, 2020: 140 – 149. |
| [20] | SHAHROUDY A, LIU J, NG T T, et al. NTU RGB+ D: a large scale dataset for 3D human activity analysis[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2016: 1010 – 1019. |
| [21] | KAY W, CARREIRA J, SIMONYAN K, et al. The Kinetics human action video dataset[Z]. arXiv: 1705.06950, 2017. |
| [22] | CAO Z, HIDALGO G, SIMON T, et al. OpenPose: realtime multi-person 2D pose estimation using Part Affinity Fields[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2021, 43(1): 172–186. DOI:10.1109/TPAMI.2019.2929257 |
| [23] | KIM T S, REITER A. Interpretable 3D human action analysis with temporal convolutional networks[C]//Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu: IEEE, 2017: 1623 – 1631. |
| [24] | SHI L, ZHANG Y F, CHENG J, et al. Skeleton-based action recognition with directed graph neural networks[C]//Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 7904 – 7913. |
2022, Vol. 44
Issue (4): 39-48

