system: [SYSTEM]

user: 4. 实验及结果分析 本文程序由Python3.6编写完成。实验采用的计算机硬件环境为Intel(R) Core(TM) i9-7900X CPU@3.30GHz，内存大小64GB，GTX1080 Ti显卡。软件环境选择Ubuntu16.04系统和TensorFlow深度学习框架。 4.1. 数据集与性能评价 本文算法选择在两个公开的细粒度图像数据集上进行实验：加利福尼亚理工学院鸟类数据库Caltech-UCSD Birds200 (CUB-200-2011)和斯坦福大学的犬类图片数据集Stanford Dogs。CUB-200-2011包含200不同种鸟类，共计11788张鸟类图片。每张图片都有不同的姿态，但差异往往只存在于比如鸟嘴、翅膀颜色等局部区域。因此在模型训练和测试仅仅采用图像的标签数据，如图6所示。Stanford Dogs数据集提供了来自世界各地的120种狗的共20580张图片。包括各种不同视角和姿态，由ImageNet的图像和标注构建。如图7所示，列举两个不同品种的狗，从图中可知这类数据集存在背景复杂的特点，需要通过一定的数据预处理以降低背景的影响。 图6. CUB-200-2011数据集 图7. Stanford Dogs数据集 基于上述不同的数据集，本文使用分类准确度accuracy指标来检验细粒度图像分类模型的训练效果，其计算公式如下： a c c u r a c y = n t n (8) 其中：n表示总测试样本数量， n t 表示分类预测正确的图像个数，能够比较直观地反映出模型的分类性能。 4.2. 数据预处理 由于细粒度图像样本少，为避免出现过拟合的现象，实验开始前对图像进行预处理(去噪、降维、归一化、标准化等)以及数据扩充操作。 1) 裁剪相同尺度。不同的细粒度图像数据集图像大小不同，由于本文采用了Inception_V3网络在ImageNet数据上进行预训练，而Inception_V3的输入图像尺寸固定为 299 × 299 × 3 ，因此将输入网络模型的图像统一裁剪为 299 × 299 大小。 2) 数据归一化。由于数据每一维度的数值变化范围有所差异，为降低模型的分类误差，需要事先对原始图像序列进行处理，将这些像素值都除以255，使得每一个通道的数值变化范围缩放到0~1，且每一个维度具有零均值和单位方差。这不仅可以加快神经网络的收敛速度，还能够防止梯度弥散。 3) 数据扩充。考虑到网络参数的数量巨大，可能出现过拟合现象，但受限于图像数据量，往往需要对现有数据进行扩充处理。在本实验中对细粒度图像数据集采用多种方法来扩充数据， 包括随机翻转及扭曲图像、随机裁剪图像、随机添加噪音、随机修改图像的对比度和饱和度等。使得细粒度图像每一类的训练样本数量保持相对均衡。 同时把每个数据集训练时的基本学习率的初始值 l 设置为0.001，在迭代的过程，根据衰减函数 d = 1 / t 进行逐渐减少，其中t的计算公式为 t = l ( 1 + 10 − 5 ⋅ i ) ，i为训练迭代次数。 4.3. 实验结果与分析 4.3.1. 不同分类算法的比较 考虑到现有细粒度图像分类算法在设计相关算法模型时存在针对不同数据集表现相差较大的问题，为验证本文提出的模型在不同的细粒度数据集上具有鲁棒性和先进性。将本文算法分别在Stanford Dogs和CUB-200-2011数据集上，与其他算法的分类精度进行对比。由于CUB-200-2011数据集中的数据提供了关键点信息，因此在进行对比实验时与强监督学习方法进行比较。实验结果如表1和表2所示。 Table 1 Classification accuracy on the Stanford Dogs datase 不同算法 Accuracy (%) PD [ 19 ] 75.00 Part R-CNN [ 11 ] 73.89 姿态归一化CNN [ 12 ] 75.70 B-CNN [ 17 ] 82.66 RA-CNN [ 18 ] 85.05 DVAN [ 20 ] 80.23 FCAN [ 21 ] 81.57 本文算法 84.36 表1. Stanford Dogs数据集上的分类准确度 Table 2 Classification accuracy on the CUB-200-2011 datase 不同算法 标注框 关键点 Accuracy (%) Part R-CNN [ 11 ] √ √ 79.89 姿态归一化CNN [ 12 ] √ √ 80.73 Two level attention [ 13 ] 82.95 B-CNN [ 17 ] 84.10 HSnet [ 14 ] √ √ 85.69 LRBP [ 22 ] 83.57 本文算法 84.94 表2. CUB-200-2011数据集上的分类准确度 从表1可以看出，在Stanford Dogs数据集上，本文算法的分类精度远高于PD、Part R-CNN和姿态归一化CNN算法，与目前在该数据集上分类精度最高的RA-CNN算法相当。 从表2可以看出，在Stanford Dogs数据集上，本文算法比Two level attention、B-CNN、LRBP等基于弱监督学习算法的分类精度分别高出1.99%，0.84%，1.37%，和基于强监督信息模型的B-CNN分类精度相当，比目前最新的基于强监督学习算法的HSnet算法仅低0.75%。同时，较之R-CNN这一基于强监督算法，分类精度提高5%左右，因此可以得出结论，融合显著性特征，在整体上优于单独使用某一特征。即显著图可以提高模型的性能。 4.3.2. 不同CNN基础模型的识别效果分析 本实验分别采用目前广泛使用的深度网络结构VGG16，ResNet50，Inception_V3，Inception_ResNet和DenseNet作为原图分支的基础网络结构，目标是从中选取对分类效果影响最大的CNN基础网络模型。25，000个训练样本从包含250类汽车共25500张图像的Cars数据集中选取，每个类别车型的数量大致为100。在CUB-200-2011数据集中随机选取500个测试图像作为测试样本。采用在500个测试样本检测速度的平均值与分类准确度进行性能评价。 Table 3 Classification accuracy of different CNN models on different dataset 网络结构 Cars Birds 测试速度(pic/s) VGG16 0.581 0.682 1.34 VGG16 + Salienc分支(SALICON) 0.603 0.721 2.78 ResNet50 0.642 0.755 3.12 ResNet50 + Saliency分支(SALICON) 0.687 0.768 4.23 Inception_V3 0.701 0.761 3.85 Inception_V3 + Saliency分支(SALICON) 0.724 0.789 4.43 Inception_ResNet 0.718 0.770 6.16 Inception_ResNet + Saliency分支(SALICON) 0.741 0.793 7.91 DenseNet 0.731 0.781 6.72 DenseNet + Saliency分支(SALICON) 0.753 0.802 8.31 表3. 不同CNN模型在两种数据集上的分类准确度 如表3所示，随着网络深度加深，图像分类准确度存在不同程度的提升。整体上网络结构DenseNet的分类性能最好，Inception_V3和ResNet50网络结构的分类性能相差不大，在分类精度上次之，VGG16网络结构性能最差。但网络深度加深的同时，测试时间明显增加，本研究将识别速度和分类准确度作为考量指标，最终选择Inception_V3作为基础网络。 4.3.3. 不同显著性检测算法对图像分类的影响 关于不同的显著性检测算法产生的显著图，其侧重的显著区域差异较大，已在1.1节中详细阐述。为选择出显著性检测的优化算法，本文采用Inception_V3作为基础特征提取网络，在鸟类数据集CUB-200-2011上进行各种不同的对比实验组。 图8. 不同显著性检测算法的比较 实验结果如图8所示，当迭代次数小于50时，随着次数的增加，各种显著性检测算法提升图像分类准确度的速率比较大；当迭代次数大于50时，图像准确度的提升速度趋于平缓。与其他传统的显著性检测算法较之，SALICON显著性检测算法相对更集中显著区域信息，在提高图像分类准确度上表现最优，大约可提升5%。 4.3.4. 融合网络结构变体的选取 为证明本文模型中所选择的结构为最优网络结构，实验同时提取多个融合结构变体并进行对比实验，其中一个结构体只是采用一层的融合结构用Fusion1_S1进行表示，采用两层的融合结构用Fusion2__S2表示，以此类推。另外其中一个结构体没有采用原图分支跳过连接点，采用显著性分支信息集成到深度神经网络的结构用Fusion0表示。比较项中还包括将基础Inception_V3网络作为原始网络结构，只包括原图分支，不添加任何显著信息的情况。在Stanford Dogs数据集上进行实验，实验结果如图9所示。 图9. 不同融合结构对分类的影响 分析可知，在Stanford Dogs数据集上，相比Murabito等人提出的早期融合方法，本文提出的显著性融合方法在分类准确度上更加优异，且2层的融合结构较之3层或者1层融合结构，可获得更优实验性能，本文采取的是2层的融合结构。