改进DeepLabv2的实时图像语义分割算法

2020-09-15 04:47马书浩安居白
计算机工程与应用 2020年18期
关键词:池化空洞金字塔

马书浩,安居白,于 博

大连海事大学 信息科学技术学院,辽宁 大连 116026

1 引言

自2015年全卷积神经网络[1](Fully Convolution Neural Network,FCNN)的提出,语义分割技术得到国内外学者的广泛研究[2-6],它在无人驾驶[7]领域有着非常重要的作用。目前,基于可见光的无人驾驶感知系统使用语义分割技术感知路面、车道线、行人、机动车和建筑物等已成为大趋势,尤其是对路面的感知能力是目标检测技术很难达到的。由于硬件算力的限制,该领域对高精度实时语义分割算法的需求非常迫切。但是,当前大多数语义分割算法的研究工作更关注提升精度而忽略算法分割速度,而现有的实时语义分割算法存在分割精度不足的问题,针对这个问题,本文提出了基于DeepLabv2改进的实时语义分割算法。

在文献[3]中提出Unet 分割算法,Unet 是对称的U型神经网络结构,具有该结构的算法在分割较少类别时速度较快、精度较高,但是当类别较多时,靠近神经网络输出端的参数数量增加,导致大量参数与高分辨率特征做点积运算,降低分割速度。文献[8]中提出的PSPNet通过聚合多种尺度特征获取多感受视野信息,提升了算法对场景解析和语义分割的能力,但存在下采样丢失语义信息和空间信息的问题。针对该问题,文献[9]中的DeepLabv2 算法提出使用空洞金字塔池化网络避免下采样并且获得多感受视野信息,但是该算法分割速度低。文献[10]提出空洞金字塔池化网络存在网格问题,针对网格问题,Wang 等人提出了基于稠密上采样的语义分割算法,该算法是在文献[9]的基础上做的进一步研究工作,并未提升算法分割速度。在文献[11]中提出使用循环神经网络实现条件随机场进而增强算法对图像细节的分割能力,由于循环神经网络不利于并行计算,导致算法分割速度较低。上述算法在分割精度方面都取得很好的研究成果,但是无法被应用于实时分割场景,实时是指算法每秒处理图像25 帧以上。构建实时语义分割算法不仅要考虑精度性能,还要考虑速度性能,因此难度较大,文献[12]提出的SegNet 算法以最大池化索引指导上采样可以减少神经元权重与特征之间的点积运算量,使算法达到实时分割速度,但是这种上采样方式存在特征图稀疏问题,进而导致算法分割精度低。在文献[13]中提出的ENet 算法通过减少神经元权重数量使算法达到实时分割速度,但是算法的非线性程度低、拟合能力弱导致分割精度低。文献[14]中提出基于SqueezeNet[15]的SQ 无人驾驶场景实时语义分割算法,但是由于SqueezeNet 编码特征能力不足,导致该算法分割精度低。

本文认为文献[9]中的DeepLabv2 使用空洞金字塔池化网络增加算法分割不同尺度目标的能力进而提升算法分割精度是该算法的优点。但是该算法在分割速度方面存在不足,主要由以下原因导致:该算法使用ResNet[16]中参数数量较多的ResNet101作为编码器并且缺少解码特征的阶段,导致编码器输出的特征语义信息不准确,为了弥补语义不准确的问题,该算法使用大量参数构建空洞金字塔池化网络,导致空洞金字塔池化网络参数过多且与编码器输出的高分辨率特征做点积运算,增加了算法的点积运算量,降低了算法分割速度。

基于以上分析,本文对DeepLabv2 做出以下改进:使用轻量卷积神经网络Xception[17]代替ResNet101作为特征编码器并且增加解码特征的阶段以增加特征语义信息的准确性进而减少空洞金字塔池化网络的参数,提高了算法分割速度,使算法被应用在实时分割场景中变的可行。除此之外,本文针对Focal Loss[18]损失函数在多分类任务中难以选择合适的超参数问题做出改进,并将其作为损失函数训练算法,进一步提升分割精度。

2 本文算法

首先介绍算法执行流程。如图1,算法的输入数据是3×W×H像素大小的图像,输出是1×W×H大小的矩阵,矩阵中的每一个元素值都是整数,且表示像素的类别。算法在执行过程中,首先使用轻量卷积神经网络Xception 作为编码器对输入图像提取特征,Xception 由深度可分离卷积[19]构建而成,具有编码特征语义信息准确、计算量小的特点,因此可减少算法在编码特征阶段的时间消耗;其次使用特征金字塔网络(FPN)[20]作为解码器解码特征,增加解码器虽然增加额外的少量参数,但是解码后的特征语义信息更准确,可避免设计具有大量参数的空洞金字塔池化网络(ASPP)与高分辨率特征做点积运算而降低分割速度,这是本文算法对比DeepLabv2 可实时分割图像且具有较高分割精度的重要原因;最后使用具有少量参数的空洞金字塔池化网络(ASPP)获取不同感受视野信息,增加算法分割不同尺度目标的能力,另外,采用本文选择超参数方法作为损失函数的Focal Loss 可进一步提升算法分割精度。下面具体介绍编码器、解码器、空洞金字塔池化网络的结构和选择超参数的方法。

图1 算法执行流程图

2.1 算法网络结构

文献[17]在InceptionV3[21]的基础上将Inception模块替换为深度可分离卷积(图2),然后结合ResNet的跳跃连接[16]提出了 Xception。诸如 ResNet、VGG[22]等网络仅依靠堆叠卷积核对输入数据采用滑动窗口的方式进行卷积运算使网络同时学习数据的空间相关性和通道相关性。而Xception 使用深度可分离卷积将两种相关性显示地分离学习。深度可分离卷积与普通卷积相比,在卷积运算过程中,首先对特征的每个通道单独学习空间相关性,然后使用1×1 的卷积学习通道相关性,此卷积方式与普通卷积相比所具有的优点是可以使用更少的参数完成对特征的空间相关性和通道相关性的学习。具体来讲,对于维度为N×M×M(N为通道数)的特征,使用K1×K2大小卷积核输出P个通道,在步长为1且不考虑偏置项(bias)的情况下,标准卷积方式需要的参数数量为K1×K2×N×P,而深度可分离卷积需要的数量为K1×K2×N+N×P,后者参数数量是前者的1/P+1/(K1×K2)倍[23],由此可以看出,随着卷积核尺度或输出通道数的增加,深度可分离卷积参数少的优势越明显,因此其计算量越少,速度越快。本文统计,在Xception网络中,深度可分离卷积层数占到了网络总卷积层数的77.7%以上,由此可以看出Xception 使用大量深度可分离卷积减少了网络计算量,但其提取特征的能力反而提高。Xception在公开大规模数据集Image-Net[24]上取得0.790的top-1正确率[17],超过ResNet、VGG网络,并且在谷歌内部数据集JFT[25]上的分类正确率比Inception V3 提高 6.78 mAP(mean Average Precision)[17]。通俗地讲,本文将深度可分离卷积与普通卷积的关系类比为普通卷积网络与全连接网络的关系,普通卷积利用图像中的空间局部相关性进而可以使用比全连接网络更少的参数完成对特征的提取,而深度可分离卷积将空间相关性与通道相关性解耦,因此可以使用比普通卷积更少的参数完成对特征的两种相关性的学习。综上可以看出Xception 具有参数少、提取特征能力强的优势,这也是本文选择Xception作为编码器的原因。

图2 深度可分离卷积

2.1.2 特征金字塔网路

从广义上讲,特征金字塔网络是一种融合不同层级特征的方式,并非特指某种具体网络结构。如图3 所示,将深层特征上采样与浅层特征以相加的方式融合即可作为特征金字塔网络。此融合方式可有效恢复特征的空间信息和语义信息。当前,基于全卷积神经网络的语义分割技术不仅需要准确的语义信息还需要精确的空间信息。在编码阶段,输入端图像中丰富的语义信息和空间信息被编码器编码在浅层特征中[1]。为恢复这些信息,使用特征金字塔网络作为解码器解码特征,在解码时融合浅层特征与深层特征是首选,本文使用图3方式解码特征。与DeepLabv2相比,本文算法虽然增加解码器导致增加了额外计算量,但是真正影响DeepLabv2分割速度的原因是空洞金字塔池化网络中的多分枝并行卷积与高分辨率特征做点积运算。压缩空洞金字塔池化网络参数数量可在很大程度上提升算法分割速度,而本文使用解码器解码后的特征具有语义信息准确的优点,这为最大限度地压缩空洞金字塔池化网络参数数量提供了保证。

图3 特征金字塔网络

2.1.3 空洞金字塔池化网络

空洞金字塔池化由多个卷积分支组成(图4),不同分支中的卷积核膨胀率不同,同一分支中的卷积核膨胀率相同[9]。膨胀率大,卷积核尺度大,利于算法分割大目标;膨胀率小,卷积核尺度小,利于算法分割小目标。鉴于上述特性,在本文算法中使用空洞金字塔池化网络使算法具有多种尺度卷积核,进而增加算法分割不同尺度目标的能力。但空洞金字塔池化网络参数数量不宜过多,因为过多的参数与高分辨率特征做点积运算影响算法分割速度,在本文算法中的空洞金字塔池化网络由膨胀率为1、3、6 共3 个并行卷积分支构成,每个分支内部仅有2 层卷积且输入输出通道数只有128,但算法分割精度与DeepLabv2不相上下。

图4 空洞金字塔池化网络简图

2.2 超参数选择方法

基于CNN 的算法需要大量数据训练算法参数,但是由于收集数据存在困难、标注数据代价高的原因导致数据中不同类别的样本数量相差悬殊(类别不均衡),在语义分割数据集中此问题更严重,这是因为语义分割是像素级别的分类,对目标的每个像素进行类别标注代价较高,而标注小目标、边缘复杂的目标代价更高,因此导致了语义分割数据集中出现严重的类别不均衡问题,影响了算法对样本较少的类别学习效果。在文献[18]中提出Focal Loss 损失函数可以为每个样本分配重要性权重进而缓解正负样本不均衡的问题。式(1)为二分类的Focal Loss公式:

其中,y表示样本类别标签,y′表示预测概率,α表示超参数,用于平衡正负样本的重要性。

两台相机都拥有强力的机身防抖系统,并宣称配合光学防抖镜头时可以达到最高6.5挡防抖的惊人效果。不过奥林巴斯的镜头群中拥有光学防抖的镜头并不多,相比之下松下在这方面优势明显。

对于二分类任务,使用手工调整2个超参数的方式是可行的,但是在语义分割中对多个类别分类导致手工调整超参数的方式变的不可行。在Cityscapes[26]和Pascal VOC2012[27]语义分割数据集中分别有19个类别和21个类别,使用Focal Loss作为损失函数则需要分别设置19个和21 个超参数,这使得在实数空间范围内选择一组合适的超参数在语义分割中变的非常困难。针对这个问题,本文提出了一种基于数据统计的简单、直接的超参数选择方法,使得Focal Loss在多类别分类中选择合适的超参数变的可行。该方法对训练集中的数据统计每个类别的像素数量在训练集中全部像素数量的占比,以此占比作为超参数平衡每个类别重要性,比如Cityscapes有19个类别,将会通过数据集选出19个超参数。从式(1)分析可知,当某一类别的像素数量占比较高时,使用本文方法选择的超参数可将该类别样本的重要性大幅度缩减,进而降低该类别样本的损失值。

3 实验细节

3.1 实验数据

本文实验选择国际公开的Cityscapes 和Pascal VOC2012作为实验数据集。

Cityscapes 是大规模无人驾驶场景语义分割数据集,该数据集共包含来自50 个不同城市的街道场景中记录的多种立体视频序列,共有19 个语义分割类别,5 000 张精细标注的图像,其中训练集、验证集和测试集分别包含 2 975 张、500 张、1 525 张图像,每张图像大小是1 024×2 048像素。由于该图像分辨率过高导致硬件无法进行大批量训练,因此对图像缩放和剪裁768×1 536像素大小。

Pascal VOC2012语义分割数据集共有21个语义分割类别,4 369 张精细标注图像,其中训练集、验证集和测试集分别包含1 464张、1 449张、1 456张图像。由于该数据集每张图像尺度大小不同,算法无法进行批量训练,需要对图像进行预处理,本文使用0 像素值补齐的方式将所有输入图像固定在512×512像素大小,以方便算法批量训练。

3.2 实验环境

本文实验的实验显卡型号是GTX1080Ti。算法的编码器使用Xception 在Image-Net 数据集上预训练模型,初始学习速率是0.005,学习速率调整策略为多项式衰减,权重衰减使用L2 正则化,衰减系数是0.000 5,动量设置为0.9,深度学习框架为PyTorch。

3.3 评价指标

本文使用平均交并比(mean Intersection over Union,mIoU)和每秒处理帧数(Frames Per Second,FPS)作为算法性能的评价指标。

mIoU是真实值、预测值集合的交集和并集之比,用于评价算法精度。式(2)是mIoU 计算公式,其中,k表示类别数量,TP表示预测为真正数量,FN表示预测为假负数量,FP表示预测为假正数量。

FPS 用于评价算法速度,式(3)是本文计算FPS 公式,其中,N表示图像数量,Tj表示算法处理第j张图像的时间。

4 实验结果分析

为验证本文算法的分割性能,选取3 种实时和3 种非实时语义分割算法与本文算法对比。

4.1 Pascal VOC2012实验结果分析

文献[28]工作表明,深层网络提取到的特征具有更强的平移、缩放、旋转不变性,而文献[29]和文献[22]工作也表明,网络层数对特征的表达能力是至关重要的。从表1 可以看出,由于ENet 和SQ 使用网络层数较少的From Scratch和SqueezeNet[15]作为基础网络导致分割精度(mIoU)过低,虽然其分割速度比本文算法高,但是通过图5可视化结果可以看出过低的mIoU导致分割效果混乱,难以被应用于实际场景中。而另一个高速实时分割算法SegNet虽然采用参数稍多的VGG16[22]作为基础网络,但是本文分析其使用最大池化索引的上采样方式导致特征图稀疏,进而分割精度低,并且其分割速度也比本文算法低14 帧/s。文献[1,4]中的工作表明,在CNN 网络中,浅层特征保留着更多的细节信息和空间信息,利于算法分割目标的边缘。而Unet 充分地利用了浅层特征的细节信息使其分割精度高于ENet和SQ,但其使用VGG16 作为基础网络且缺少空洞金字塔池化网络导致其精度低于本文算法。CRF-RNN 以RNN实现条件随机场虽然可以对CNN 的粗分割结果进一步精细化进而提升算法分割精度,但RNN 不利于并行计算,因此在算法的实际运行中分割速度较低。再对比DeepLabv2和本文算法,可以看出在精度方面本文算法只低1.09%,但是分割速度高出DeepLabv2 接近一倍的FPS(37 帧/s),而且从图5可以看出,两者算法在分割效果上无明显不同。

图5 不同算法分割效果

表1 算法在Pascal VOC2012数据集上的性能对比

接下来通过图5进一步分析算法的性能。从图5中第二行和第三行可以看出SegNet、ENet和SQ算法对图像中人和猫区域的分割结果出现较大斑块状分类错误区域(蓝颜色),并且将较大面积的背景误分类为前景(蓝颜色),而对于第一行图像中目标较小的水瓶没有出现此分割现象,Unet 和CRF-RNN 对误分类现象有明显改善。而本文算法和DeepLabv2 中的空洞金字塔池化具有较大感受视野的卷积核,因此对三幅图的分割结果均没有产生斑块状区域。

4.2 Cityscapes实验结果分析

首先与表2中前三种实时分割算法对比,从精度评价指标(mIoU)来看,本文算法高出三种实时分割算法12.6%、10.4%和8.9%的mIoU,从速度评价指标(FPS)可以看出本文算法分割速度高于SegNet,但略低于ENet和SQ。由此可以看出本文算法在处理高分辨率图像方面依然具有高出三种实时分割算法约10%的mIoU精度优势,而且分割速度与三种实时算法更加相近。与Unet和CRF-RNN 相比,本文算法在速度和精度两方面均具有较高的优势。与DeepLabv2 相比,本文算法精度低1.3%的mIoU,但分割速度却高出13 帧/s。

接下来通过图6 中的可视化结果进一步分析算法在Cityscapes 数据集上的性能。从图6 可以看出,算法对路面、建筑、树、汽车、天空分割效果较好,没有产生斑块状的分类错误区域,这五种类别在图像中多数属于大目标;从图6中还能看出算法对杆状物体和远处的行人分割效果良好,这两种目标在图像中多数属于小目标,由此可知算法对大目标分割效果较好,对小目标分割效果良好,这主要得益于空洞金字塔池化网络中的不同尺度卷积核在进行卷积运算时所使用到信息不同,即多感受视野信息。在本文中算法中使用空洞金字塔池化网络获得多感受视野信息。

图6 算法在Cityscapes数据集分割效果

综合表1 和表2 数据可以看出本文算法处理Pascal VOC2012 和Cityscapes 数据集图像均可达到实时分割速度,并且在处理具有较高分辨率图像的Cityscapes 数据集时,仍可在保持较高的分割精度前提下,其分割速度超过三种非实时语义分割算法和SegNet实时语义分割算法。本文分析认为,当特征的维度为C×M×N(C表示通道数,M和N表示宽和高)且被2 倍上采样T次时,特征的信息量相比上采样之前增加C×2T×M×2T×N-C×M×N,当输入图像尺度较大时,M和N较大,该差值更加明显。而本文基于Xception作为编码器和增加特征金字塔网络的前提,综合考虑算法的速度和精度,对特征上采样三次,缓解了U 型网络结构或是对称网络结构算法普遍采用的五次上采样操作导致的神经网络参数与高分辨率特征做点积运算进而降低分割速度的问题。

4.3 网络结构分析

为验证本文算法采用Xception 作为编码器的有效性,选取三种不同的基础网络移除全连接层作为编码器在Pascal VOC2012 和Cityscapes 数据集上与Xception进行对比。从表3 可以看出,当使用ResNet152 作为编码器时,算法在两个数据集上均取得最高的分割精度,但是分割速度低于25 帧/s,失去了实时分割的性能;算法使用ResNet101 作为编码器在两个数据集上所取得的分割速度和精度均比Xception低,这是因为ResNet101编码特征能力不如Xception[17],而且使用普通的1×1 和3×3卷积核构建而成,缺少Xception中通道可分离卷积,导致网络参数多,影响算法分割速度;使用VGG16作为编码器所取得的分割速度比Xception略高,但是分割精度过低,这是因为VGG16的卷积层参数少,非线性程度低,导致算法拟合能力不足。综上可知,Xception 作为编码器具有计算效率高、编码特征能力强的优势。

表3 不同编码器性能对比分析

在表4 实验中,本文选取以VGG 和ResNet 作为编码器的算法与本文算法在整体网络结构方面对比。其中SegNet和Unet均以VGG16作为编码器,SegNet的解码器可以与编码器完全对称,但Unet 必须将不同层级特征在通道维度上拼接,因此其解码器参数数量与编码器稍有不同,这两种算法与本文算法相比,虽然其编码器参数少且没有空洞金字塔池化网络,但这两种算法的网络结构均为U型结构,U型结构最大的特点是在解码器端需将特征逐步上采样至输入图像同样尺度大小,因此存在解码器参数与较高分辨率特征做点积运算的问题,增加算法的分割时间。而DeepLabv2 相比表4 中其他算法,使用169 MB的ResNet101作为编码器,增加了算法的编码特征的时间,而且其空洞金字塔池化网络参数数量接近本文算法的7 倍,因此,与本文算法相比无论在编码阶段还是空洞金字塔池化阶段,本文算法在分割速度方面均有优势。

表4 网络结构对比 MB

4.4 多感受视野性能分析

在表5 实验中,对Pascal VOC2012 测试集图像按{1.25,1,0.75}共三种比例缩放,然后剪裁至原图像素大小测试算法分割精度以分析多感受视野分割不同尺度目标的性能。算法在训练阶段无图像翻转、Focal Loss、数据增强技术。从表5 中可看出使用空洞金字塔池化的算法在三种缩放比例的测试集上的分割精度均达到最高,尤其当缩放比例为1.25 时,高出3.3%的mIoU,这是因为空洞金字塔池化中较大膨胀率的卷积核更具有分割大尺度目标的能力。本文算法是基于数据驱动的算法,其要求数据的训练集和测试集具有相同分布,如果测试集图像被不同尺度缩放将会导致测试集的分布与训练集稍有不同,因此会影响算法的测试精度。而在本文实验中由于1.25 和0.75 的缩放比例导致测试集中目标的尺度与训练集相比在分布上已发生变化,进而导致其数据分布发生变化,算法的分割精度相比缩放比例为1(无缩放)时有明显下降属于正常现象,该现象也普遍存在基于CNN的分类、目标检测等任务中。

表5 感受视野性能分析(mIoU) %

接下来在同一缩放比例的前提下分析不同类别的分割精度。表6为表5中缩放比例为1时算法对五种类别的分割精度。在Pascal VOC2012 数据集中,sofa 与chair两个类别相似(图7),因此sofa一部分像素容易被误分类为chair,从表6 中可以看出,使用空洞金字塔池化算法将sofa 类别的分割精度提升了7.3%,但是chair只提升0.6%,这是因为sofa 类别中的多数目标尺度大,但是边缘不如chair 复杂,使用几种较大膨胀率的卷积核可以提升算法对大尺度目标的分割精度,而对于边缘复杂的chair 类别的精度只是稍有提升。cow 的一部分像素容易被误分类成horse、bus和train两个类的像素容易被误分类为彼此的类别,算法在使用空洞金字塔池化后对这几种类别的分割精度均有提升。而对于表6 中未列出的其他类别,算法使用空洞金字塔池化后对其分割精度虽有提升,但是幅度不大,其原因在于这些类中多数大尺度目标特征明显,无其他相近类别干扰,因此,算法不使用空洞金字塔池化技术也可取得较高的分割精度。而对于小目标,因为其空间信息在下采样过程中丢失,使用空洞金字塔池化只能小幅度提高其分割精度。综合表5 和表6 分析可知,空洞金字塔池化的多感受视野最突出的性能既是提升算法对多种尺度目标和存在类别干扰的目标的分割精度。通俗地讲,人类对于难以分辨的物体会通过不同距离、不同角度获取更多信息去辨别,而算法通过多种尺度卷积核捕捉不同感受视野信息提升算法分割不同尺度、相近的类别的精度。

表6 Pascal VOC2012五种类别分割精度(mIoU)%

图7 算法对Pascal VOC2012五种类别错误分类展示

4.5 超参数选择方法的分析

表7 和表8 数据分别是本文对Pascal VOC2012 和Cityscapes数据集中部分类别像素数量的占比统计。从中可以看出这两个数据集存在严重的像素类别不均衡问题,Pascal VOC2012中background像素数量是bus的139 倍,Cityscapes 中 road 像素数量是 motorcycle 的 407倍,这些过多像素数量的类别在训练过程中主导了梯度方向,影响算法对其他类别的学习。为验证本文选择超参数的方法可有效缓解上述类别不均衡的问题,提升算法分割精度,本文在Pascal VOC2012和Cityscapes数据集上进行了对比实验。在实验中,采用两种方法选择超参数α,一种是使用本文提出的方法设置α值,由于难以为Focal Loss 在两个数据集中手工选出合适的21 个和19 个α值,因此第二种超参数选择方式将所有类别的α设置为0,即每个类别样本的重要性均为1。具体实验结果在图8 中展示。从图8 中可以看出,算法使用本文选择超参数的方法与第二种相比,Pascal VOC2012和Cityscape 数据集的绝大多数类别分割精度均有提升,但是第一个类别的分割精度有明显下降,这两个数据集上的第一个类别分别对应表5和表6中的background和road,这两个类别像素数量占比最大,使用本文选择超参数方法的Focal Loss 将这两个类别样本重要性大幅度降低,损失值缩减较多,进而减少了算法对这两个类别的学习,相对而言,增加了其他类别的重要性,使算法加强对这些类别的学习。

表7 Pascal VOC2012部分类别像素数量占比

表8 Cityscapes部分类别像素数量占比

图8 超参数选择方法对比

5 结论

为满足实时语义分割任务的需求,本文使用轻量卷积神经网络Xception、特征金字塔网络和空洞金字塔池化网络构建实时语义分割算法,并对Focal Loss提出改进的选择超参数方法。通过在Cityscapes 和Pascal VOC2012两个数据集的实验结果表明本文算法不仅在分割精度方面高于其他算法,在分割速度方面也具有很大优势,并且本文提出的超参数选择的方法可提升算法分割精度,并简化Focal Loss中超参数的选择。

本文展示的不同类别像素占比可为后续的研究工作提供参考,并扩展至其他数据集以做进一步的研究。

猜你喜欢
池化空洞金字塔
基于高斯函数的池化算法
“金字塔”
卷积神经网络中的自适应加权池化
锻造过程中大截面塑料模具钢中空洞缺陷的闭合行为
Great Vacation Places
海上有座“金字塔”
基于卷积神经网络和池化算法的表情识别研究
用于手写汉字识别的文本分割方法
金字塔是用金子造的吗
空洞的眼神