朱槐雨,李博
(1.电子科技大学机械与电气工程学院,成都 611731;2.电子科技大学中山学院机电工程学院,广东中山 528400)
近年来,随着无人机(Unmanned Aerial Vehicle,UAV)技术的快速发展,基于无人机地面航拍成像在军事侦察、地质勘探、罪犯追踪等领域[1-2]得到了广泛的应用。但无人机航拍图像属于远距离成像,成像视场较大,图像中的目标较小并且融入复杂的背景中难以区分[3-4]。因此,如何快速准确地检测出航拍图像中的各类目标成为目标检测领域重要的研究方向。
目前,基于卷积神经网络(Convolution Neural Network,CNN)[5]的目标检测模型大致分为Two-Stage 和One-Stage 两种类型。前者先在特征图上生成若干个候选框,再通过卷积神经网络对候选框里面的目标进行分类回归;后者直接在特征层上进行分类回归,免去候选框提取的步骤,尽管对目标分类准确度和位置坐标回归精度有所损失,但One-Stage 检测速度相较Two-Stage 有着明显的优势。Girshick 等[6]提出了区域卷积神经网络(Region-based Convolutional Neural Network,R-CNN)模型,但该模型步骤繁琐、训练速度慢;针对R-CNN的不足之处,Girshick[7]又提出了快速区域卷积神经网络(Fast Region-based Convolutional Neural Network,Fast R-CNN)目标检测模型,该模型在公共特征层上截取候选区域,并引入感兴趣区域(Region Of Interest,ROI)池化,大幅度加快了训练过程;Ren 等[8]利用区域建议网络(Region Proposal Nerwork,RPN)通过卷积过程直接在公共特征层上生成候选区域,从而进一步加快训练检测过程,并由此提出了更快速区域卷积神经网络(Faster R-CNN,Faster R-CNN)模型。两阶段目标检测模型具有很高的分类精度,但检测太慢不能满足实时检测要求。Redmon 等[9]提出了YOLO(You Only Look Once)目标检测模型,YOLO 在多个位置直接回归目标的分类情况。Liu等[10]提出单阶段多框检测器(Single Shot multibox Detector,SSD),该模型结合了Faster R-CNN 快速生成候选框的优点和YOLO 检测速度快的优点,同时SSD300(输入图像分辨率为300 × 300)和SSD512(输入图像分辨率为512 × 512)采用多尺度特征检测的方法,使其同时具有较快检测速度和较高的检测精度。不同目标检测模型在PASCAL VOC2007数据集上的各类平均精度均值(mean Average Precision,mAP)和帧率对比[11]如表1所示。
表1 不同目标检测模型在PASCAL VOC2007数据集上的mAP与帧率对比Tab.1 Comparison of mAP and frame rate of different target detection models on PASCAL VOC2007 dataset
在表1 中,SSD 在准确率和检测速度两方面相较R-CNN系列和YOLO 都有着明显的优势;但是SSD 对中小目标特征提取较弱,容易出现漏检的情况,并且SSD 模型中6 个特征层(Conv4_3、fc7、Conv6_2、Conv7_2、Conv8_2、Conv9_2)相互独立没有关联。针对上述情况,Cao等[12]通过双线性插值将SSD的fc7 和Conv6_2 特征层上采样 到38×38 的维度,并与Conv4_3 特征层进行融合,同时引入Inception block 模块增强特征提取,该模型在KITTI 数据集上mAP 达到了92.18%,同时满足实时检测要求(67 frame/s),相较SSD效果提升显著;但该模型引入过多特征融合模块,这样势必会增加冗余信息,并且对小目标仍然会出现漏检的情况。Li等[13]提出了一种多块SSD 检测方法,将输入图像分为四个区域,分别将这四个区域输入SSD 模型进行检测,输出时对四块SSD 进行子层非极大值抑制(Non-Maximum Suppression,NMS)[14],该模型在自制的无人机航拍数据集中相较原版SSD 的mAP 提高了9.20%,改善了SSD 模型漏检的情况;显然分块SSD 计算量庞大,导致该模型只能进行点采样,无法实现对一个特定地区的实时监控。Zhu等[15]将注意力机制[16]引入SSD,提出了Attention_SSD目标检测模型,在VOC2007和VOC2012公开数据集上的mAP达到了81.70%;但该模型缺少特征层的融合,低层特征缺少小目标语义信息,对小目标的检测效果仍然不及预期。姚桐等[17]将宽残差网络(Wide Residual Network,WRN)和焦点损失函数引入SSD,模型AP达到了76%,帧率为16 frame/s,相较于原有模型提升有限。Fu 等[18]提出了DSSD(Deconvolutional SSD)目标检测模型,该模型在主干网络的末端增加了反卷积层,并将VGG16[19]替换为特征提取能力更强的残差网络(Residual Network,ResNet)[20],高层特征通过反卷积与低层特征融合引入上下文信息,从而更加准确地检测小目标;在PASCAL VOC2007测试集上mAP达到了78.60%,而且对小目标的检测准确率提升尤为明显,如鸟(bird)和瓶子(bottle)提升幅度达到了5.92% 和6.31%,但它的检测速度仅有9.5 frame/s。其检测速度慢有两点原因:1)反卷积的引入不仅增加了计算量还引入了新的参数;2)ResNet101属于深层卷积神经网络,会大量消耗计算资源。Redmon 等[21]基于YOLO模型提出了YOLOv3(YOLO version3)目标检测模型,该模型通过上采样实现多尺度检测,对小目标检测效果优于SSD。赵爽等[22]通过在YOLOv2 中引入图像切分和特征融合机制来改善原有模型对小目标检测效果较差的情况,实验结果表明,改进后的模型mAP 提升了8%,优点在于没有增加先验框的数量,但综合准确率仍然处于较低的水平,且图像切分会额外增加计算量。Li 等[23]通过对比Faster-RCNN、SSD、YOLOv3 在高分卫星对农业温室成像的检测效果,来找到最适合检测地面上温室大棚的目标检测模型;实验中,温室在图像中的占比非常小,YOLOv3 模型中因为上采样的存在,对小目标检测效果较好,因而在实验中获得了比Faster-RCNN和SSD更高的准确率。刘英杰等[24]引入级联网络结构Cascade R-CNN,通过级联多个交并比(Intersection over Union,IoU)阈值递增的检测器使模型mAP 提升了9.7%,多次级联可以提升对小目标的检测能力,但级联后的卷积层有大量的冗余信息,增加了计算量。
针对现有SSD 模型难以对小目标实现准确的检测,在现有SSD 基础上提出了一种连续上采样(Continuous Upsampling,CU)特征融合的航拍目标检测方法CU-SSD。
SSD模型结构如图1所示。
图1 SSD模型结构Fig.1 SSD model structure
SSD 模型的主要思路是在图像上均匀密集地生成具有不同尺度和长宽比的先验框,利用CNN 提取特征后,物体分类与先验框的回归同时进行,整个过程只需要一步,所以优势是速度快。输入图像经过VGG16主干网络生成6个不同尺度的特征层,在6 个特征层上分别进行两次3×3 的卷积过程,卷积维度Channel分别为:
其中:loc 和conf 分别表示卷积过程在坐标回归层和分类层上;num_ priors为特征层上每一个像素对应的先验框数量;classes表示需要检测的类别数量(包括背景)。由式(1)得到每个先验框的4 个调整参数loc(x,y,w,h)和每个类别的置信度,调整参数对先验框的长宽和中心位置进行微调得到预测框。在SSD模型中生成8732个预测框,最后经过非极大值抑制后,取出每一类分数大于显示阈值(只有模型输出框分数大于阈值才会在图像上显示,这里设为0.5)的框作为最终输出。
SSD 模型通过在各特征层上进行密集采样生成默认框即先验框,假设模型中特征层数为m,则第i层特征层上的先验框尺度Si可表示为:
其中:Smin表示先验框占输入图像的最小比例;Smax表示先验框占输入图像的最大比例。此外,SSD 模型在生成先验框时设定了不同的长宽比rj∈{1,2,1/2,3,1/3},由尺度Si和长宽比rj可以得到第i个特征层上的先验框的长(Wij)和宽(Hij):
式中,j表示5 种长宽比的先验框。当长宽比等于1 时额外增加一种尺度的先验框:
式中,j=6代表第6个先验框的长和宽。
各特征层上的先验框映射到输入图像得到候选框,候选框将与对应图像的原标记框(ground truth bound)即真实框进行对比,计算交并比(IoU):
其中:A为真实框覆盖区域;B为候选框覆盖区域。对比过程如图2 所示,候选框与原标记框的重叠率即它们的交集与并集的比值,最理想情况是完全重叠,比值为1。
图2 交并比计算Fig.2 IoU calculation
SSD总的损失函数表示为:
其中:x为预测框预测得到的类别;c表示真实的类别;l代表预测框位置坐标;g代表真实框的位置坐标;N表示与真实框匹配的所有预测框的数量,当N=0时,L(x,c,l,g)=0;Lcon(fx,c)表示分类损失函数;Llo(cx,l,g)表示预测框位置损失函数;α表示分类损失和位置损失两者的权重,这里设置为1。
现有SSD模型中,高层特征与低层特征之间没有关联,模型对小目标检测效果较差,容易出现漏识别的情况,并且现有SSD模型主要依赖Conv4_3特征层对小目标进行检测,该特征层对小目标的检测能力有限。针对这类情况,本文通过新增Conv3_3 特征层、连续上采样特征融合和调整先验框尺寸的方法对SSD模型进行改进。
在卷积神经网络结构中,较浅的特征层预测较小的目标,而更深的特征层预测较大的目标。在较浅的特征层中往往含有目标的位置和细节信息,但是缺少对分类影响较大的语义信息。Conv4_3特征层在VGG16主干特征提取网络中的第10层,语义信息提取能力不足。因此,对网络中的特征层进行特征融合,增强各特征层的分类效果。CU-SSD 模型结构如图3所示。
图3 CU-SSD模型结构Fig.3 CU-SSD model structure
在原有6 层特征中,新增Conv3_3 特征层与原有6 层特征共同构成7 层特征金字塔(Feature Pyramid Network,FPN)。首先,输入层会把任意输入尺寸(M×N× 3)图像的长边缩放到320,短边同比例变换保证图像不失真,将输入图像变换成320 ×N的尺寸(N≤320),短边不足320 的部分按像素(128,128,128)填充,这样输入图像被归一化到320×320;其次,输入图像经过主干网络后,前4 个特征层的尺寸为偶数,使得相邻两个特征层尺寸相差2倍(包括第5个层特征),这样便于连续上采样;然后,因为Conv8_2 和Conv9_2 特征层所含信息量较少,所以从Conv7_2 特征层开始进行2 倍上采样,将上采样完成后的特征层命名为UpConv7_2,再将UpConv7_2 层和Conv6_2 层进行特征融合,融合后特征层(称为Fuse6_2)替换Conv6_2层进行下一步的分类;最后,将Fuse6_2再进行2倍上采样与fc7 特征融合,重复上述过程直到Conv3_3 特征层完成融合。经过特征融合后,各特征层的相互关系为:
式中:Xk为VGG16中前4个特征层;Yk为Xk特征融合后的特征层;Yk将替换原有的Xk层,并作为后续的分类层;U()表示对特征层Yk+1进行上采样。
采用热力图即类激活映射(Class Activation Map,CAM)[25]对上采样结果进行分析。原始图像如图4(a)所示;经过卷积神经网络后特征层Conv7_2的输出结果如图4(b)表示。考虑两种上采样方式:双线性插值和最近邻域插值,采样结果如图4(c)和图4(d)所示。1)在上采样的结果方面:最近邻域插值最大限度地保留了特征层的原始信息;2)在上采样的过程方面:由于最近邻域插值算法简单,运算速度更快。在对Conv7_2(5× 5× 256)特征层上采样为UpConv7_2(10 ×10 × 256)的过程中,双线性插值耗时1.164 ms,而最近邻域插值仅为0.626 ms。因此,上采样方式采用最近邻域插值。
图4 特征层上采样结果Fig.4 Upsampling results on feature layer
在卷积神经网络中,特征融合方式主要有Concatenate 和Add两种方式,如图5所示。
假设特征图Feature Map1 的维度为W1*H1*C1,特征图Feature Map2 的维度为W2*H2*C2。在Concatenate 的情况下Feature Map1 和Feature Map2 在通道数(C)方向上直接重叠,需要重叠的两个矩阵可以拥有不同的通道数,重叠后的通道数代数相加,如图5(a)所示;在Add 的情况下Feature Map1 和Feature Map2 特征图对应位置元素相加,此时需要相加的两个矩阵拥有相同的宽高和通道数,如图5(b)所示。
图5 特征融合方式Fig.5 Feature fusion methods
通常来说,经过Concatenate 和Add 操作后还会进行一次卷积过程:
式中:[X,Y]和(X+Y)分别代表特征图Feature Map1、Feature Map2 通过Concatenate 和Add 操作后的矩阵块。通过改变卷积过程W1和W2可以使得[W1X,W1Y]和W2X+W2Y结果相等,这样也说明了Add 是Concatenate 的一种特殊情况(当W1=W2)。Concatenate 表示通道数的合并,图像通过增加通道数从而增加信息量;而Add 描述的是特征图像每个通道的信息量增多,图像的维度并未增加。对最终分类结果而言Add 效果更好,并且Add 不会增加通道数,计算量会比Concatenate 更小,因此本文使用Add 特征融合方式。特征融合模块如图6所示。
图6 特征融合模块Fig.6 Feature fusion module
特征层k表示VGG16 主干网络中Conv3_3、Conv4_3、fc7、Conv6_2 和Conv7_2 前5 个特征层。首先,将前5 个特征层进行一次卷积核大小为1× 1、通道数为256 的卷积,使这5 个特征层的维度统一到256;其次,特征层k的宽高为特征层k+1的2倍,将特征层k+1进行尺寸为(2,2)的上采样,使其与特征层k有相同的宽高和通道数;再将特征层k和上采样后的特征层k+1通过Add方式进行特征融合;最后融合产生的新特征层作为分类层输出,同时也作为下一个特征融合模块的输入,直到Conv3_3特征层完成融合。
以Conv3_3 特征层为例,原图像经过卷积神经网络后的热力图如图7 所示。热力图的颜色表示特征层输出的概率大小,由深蓝到深红概率值逐渐增大,概率越高则特征层认为对应位置是目标的可能性越大。融合前Conv3_3 层和融合后Conv3_3层的热力图分别如图7(b)和图7(c)所示。融合后的热力图真实目标对应的位置色温高,表明该区域比融合前更容易识别为目标。
图7 Conv3_3层热力图Fig.7 Heat map of Conv3_3 layer
SSD 模型在图像输入之前会根据式(2)、(3)、(4)在不同尺度的特征层上生成不同规模和不同长宽比的先验框。本文中,CU-SSD 的模型结构除了增加了特征融合模块还新增了Conv3_3 特征层,同时还调整了输入图像的尺寸,因此需要对原有的先验框尺寸进行调整,调整结果如表2所示。
表2 中,Min_size和Max_size分别代表不同特征层的先验框尺度映射到原图像上的最小值和最大值。在CU-SSD中,把S1调整为0.05 即Conv3_3 对应的Min_size为16(0.05× 320);S2为0.1。现有SSD 最低特征层为Conv4_3,对应先验框尺寸为30 和60;CU-SSD 中加入了Conv3_3 特征层,对应先验框尺寸为16 和32;两种先验框在原图上的情况如图8 所示。在CU-SSD 模型结构中,选取IoU≥0.7 的候选框作为正样本(候选框中含有目标);选取IoU≤0.3 的候选框作为负样本(候选框中为背景);其余部分(0.3 表2 先验框尺寸Tab.2 Size of anchor box 图8 不同特征层先验框比较Fig.8 Comparison of anchor boxes of different feature layers 本文实验数据集来自于中国科学院大学公开的高清航拍目标数据集UCAS-AOD,该数据集使用Google Earth 软件对全球部分区域进行截取。数据集中的目标为地面上的飞机和车辆,数据集的组成如表3 所示。从数据集中随机取出1283 张图像作为训练集,227张图像作为测试集。 表3 数据集组成Tab.3 Dataset composition 实验硬件配置如下:CPU 为Intel Core i5-9300H@2.4 GHz;内存为16 GB;GPU 为NVIDIA GeForce GTX 1650(4 GB)。软件平台为:Windows 1064 位系统;Python 版本为3.6;tensorflow-gpu 版本为1.12.0;Keras 版本为2.1.5;CUDA版本为9.0,cuDNN版本为7.3;编程软件为PyCharm。参与对比的目标检测模型有:SSD、FSSD(feature Fusion SSD)、RFBNet(Receptive Field Block Net)、YOLOv3 和CU-SSD。输入层图像尺寸均调整为320×320;训练策略统一采用迁移学习,预加载的参数权重均来自于在PASCAL VOC2007 数据集上预训练得到的权重;迁移训练时SSD、FSSD、RFBNet 和CU-SSD 冻结前21 层,YOLOv3 冻结前184 层;Batch Size 设为8。冻结训练时学习率为5E-4,解冻后学习率为2E-4。训练过程中对输入图像进行随机剪裁、平移、缩放、镜像和饱和度对比度调整。 训练过程如图9 所示,总共迭代90 个epoch。冻结训练时部分神经网络权值不会更新,随着训练次数的增加,验证集和训练集loss前期快速下降,但很快趋于平缓。神经网络权值解冻后(epoch=15 时),全局权值都可以更新,验证集和训练集loss继续快速下降,整体训练过程呈现出两个阶梯形状。65个epoch后验证集loss开始震荡,训练集loss继续缓慢下降;epoch=86 时验证集loss最低为1.763,用该权重进行后续对比实验,防止模型过拟合。 图9 训练过程中的loss曲线Fig.9 Loss curves during training process 为了准确地评测CU-SSD模型的实际性能,采用各类平均精度均值(mAP)作为评测指标。mAP 中,AP 为各类别P-R(Precision-Recall)曲线下的面积。其中,Precision为查准率即正确分类的正样本占所有正样本的比例,Recall为查全率即预测到的正样本占真实正样本的比例,计算式如下: 式中:TP为正确分类的正样本数;FP为错误分类的正样本数;FN表示将正样本错误分类为负样本的数量。各类AP 曲线围成的面积越接近于1,mAP值越高,模型性能越好。 不同模型在UCAS-AOD 数据集上的mAP、帧率以及模型大小(Size)如表4 所示。现有SSD 和FSSD 模型由于结构简单,速度较快,但mAP 较低,并且汽车(car)类别的AP 值明显低于飞机(plane)类别;航拍汽车目标比飞机目标小,特征不如飞机明显,特征层之间没有特征融合(FSSD 仅有主干网络特征融合)导致模型对汽车识别效果差。RFBNet通过空洞卷积进行特征层内部的特征增强,但没有特征层之间的融合模块;在本文实验中相较于现有SSD 准确率提升了4.05%,提升不明显,并且降低了运算速度,模型增大到142 MB。YOLOv3模型结构中存在上采样特征融合模块,因此,在现有SSD的基础上mAP 提升了11.78%,car 类别的AP 提升更明显,提升幅度达到了24.15%;对plane 类别AP 提升了2.42%。同时YOLOv3 有着较快的运算速度,但是模型达到了235 MB。相较于现有SSD,CU-SSD 的mAP 提升幅度达到了17.62%,对car 类别检测的AP 提升达到了34.78%,对plane 类别的AP 提升也有4.66%,同时模型仅为79 MB。综上,CU-SSD 的mAP相较于现有SSD有明显的提升,但也注意到,运算速度下降到了9 frame/s,对模型实时性的影响也较大。 表4 不同模型的性能结果Tab.4 Performance results of different models CU-SSD 不同特征层融合结果如表5 所示,融合层数表示SSD 模型中特征层融合层数(如“3”表示前3 层融合,“0”表示无特征融合)。实验结果表明:随着参与融合的特征层数的增加,模型预测准确率逐渐增加;融合层数达到5 层时,mAP 达到最大值,大于5层后有下降的趋势;融合5层时对car类别效果最好,准确率为93.44%;融合4 层时对plane 类别效果最佳,准确率为96.24%;前5 个特征层进行融合时,模型的整体效果达到了最佳。 表5 不同特征融合层数的实验结果Tab.5 Experimental results of different feature fusion layers SSD、YOLOv3 和CU-SSD 的car 和plane 类别P-R 曲线如图10 所示。在car 类别中,三种模型的P-R 曲线差异较大,在相同召回率的情况下,CU-SSD 的预测率远高于SSD;并且随着召回率的增加,CU-SSD 相较于SSD 的预测率的提升也愈加明显。在plane 类别中,由于该类别在图像中占的比例较大,三种模型P-R 曲线差异不明显;仅当Recall>0.7 时,CU-SSD的性能相较于SSD、YOLOv3模型有所提升,提升幅度较小。 图10 car和plane类别的P-R曲线Fig.10 P-R curves of car and plane categories 在SSD和CU-SSD对车辆和飞机的检测过程中,显示阈值均设为0.5,检测结果如图11和图12所示。 图11 SSD和CU-SSD对车辆类别的检测效果Fig.11 Detection effects of SSD and CU-SSD on car category 图12 SSD和CU-SSD对飞机类别的检测效果Fig.12 Detection effects of SSD and CU-SSD on plane category 在对车辆类别的检测结果中,现有SSD 对图像中的车辆目标检测率非常低,大多数目标被漏检,同时也出现了错误检测的情况;而CU-SSD 对图像中目标的检测效果远优于现有SSD,并且没有出现误检的情况,只有少数目标会被漏检,在目标被树木部分遮挡的情况下仍然正确能检测出目标,CU-SSD检测性能提升明显。在对飞机类别的检测结果中,现有SSD 的检测效果和对车辆的检测效果类似,仍然会出现大量目标无法检测的现象。SSD 可以检测到在图像中所占像素比例较大的飞机目标,但是当飞机目标较小时,SSD 模型就不能正确地将其检测出来;在CU-SSD 中,对不同尺度的飞机目标都能正确检测,未出现漏检的情况。本文改进的SSD 方法对小目标的检测效果相较于现有SSD 模型有了明显的改善,改进后的模型有较强的鲁棒性,在复杂的环境下对航拍图像中的车辆和飞机目标有着良好的检测效果。 本文从三个方面对SSD 进行改进:1)新增Conv3_3 特征层,记作Conv3_3 模块;2)增加不同特征层之间的特征融合,记作Fusion 模块;3)对先验框尺寸进行调整,记作anchors 模块。为了进一步探究各模块对SSD 检测效果的提升情况,进行了SSD+Fusion、SSD+anchors、SSD+anchors+Fusion 和SSD+Conv3_3+anchors的实验。由于Conv3_3特征层需要为其分配先验框尺寸,Conv3_3 和anchors 模块必须同时存在,因此,对于Conv3_3 模块的对比仅进行Conv3_3+anchors 的实验。该实验过程与3.1节中的步骤相同,实验结果如表6所示。 表6 不同改进模块的性能对比Tab.6 Performance comparison of different improved modules 从组1 与组2、3 的对比结果可以得出:单独增加anchors模块对模型的检测效果提升最大,特别是对小目标car类别的提升最明显;而单独增加Fusion模块模型性能反而下降,这与表4 中的SSD 和FSSD 结果类似,其中FSSD 对原有VGG16 网络仅增加了特征融合,这表明在SSD模型中,仅引入特征融合不利于本文数据集的检测。从组3 与组4、5 的对比结果可以得出:在加入了anchors 模块的前提下,再增加Conv3_3 或Fusion 模块对模型性能都有提升且提升幅度相当。从组1~6对比结果可以得出:实验中的最优组合为SSD+Conv3_3+Fusion+anchors即CU-SSD。 针对航拍图像中目标普遍较小、图像质量欠佳等问题,本文在现有SSD 模型基础上,通过新增Conv3_3 特征层提高对小目标的检测能力;并进一步通过对Conv3_3、Conv4_3、fc7、Conv6_2 和Conv7_2 前5 个特征层进行连续上采样特征融合,使主干网络中低层的细节信息和高层的语义信息有机地融合在一起;最后,通过调整先验框尺寸,使得模型将尺度较小的正样本和负样本准确地分开。与SSD、FSSD、RFBNet 和YOLOv3 等模型相比,CU-SSD 模型在UCAS-AOD 数据集上准确率达到了94.78%,在参与对比的模型中效果最佳。进一步通过对比SSD中不同改进模块的实验结果表明:新增Conv3_3特征层、前5 个特征层融合和调整先验框尺寸的组合可使模型效果达到最优。但由于CU-SSD 模型新增了Conv3_3 特征层,先验框数量达到了35190个,同时特征融合使得模型结构更加复杂,增加了整个模型的计算量,降低了检测的实时性。因此,后续要优化先验框的数量和特征融合策略,以进一步提升检测精度和速度。3 实验与结果分析
3.1 实验数据集和平台
3.2 结果分析
3.3 SSD不同改进模块对比
4 结语