APP下载

一种新型高效的移动端深度学习图像分类系统

2021-05-24刘国庆王丽华黄泽宇陈美燕

物联网技术 2021年5期
关键词:粗粒度标签卷积

任 磊,刘国庆,王丽华,黄泽宇,陈美燕

(1.中国电子科技集团公司第二十研究所,陕西 西安 710068;2.西北大学 信息科学与技术学院,陕西 西安 710127)

0 引 言

智能手机、无人机、可穿戴摄像头和自动驾驶汽车等拥有高清摄像头的移动设备,极大地改变了人们的生活方式。移动计算可以处理视频流数据,为用户提供多种服务。例如,无人机可以监控交通量,识别特定区域的道路标志;自动驾驶汽车可以分析车载摄像头传输的流视频,识别物体、行人、其他车辆和交通灯。此外,用户也可以佩戴增强现实头盔与现实世界进行互动。这些智能服务一般都是通过分析和计算连续的视频信息提供的。在过去几年里,基于深度学习的方法在各种计算机视觉任务中表现出了其优势,这得益于CNN可以提取图像或流媒体视频数据帧。

与云计算相比,在移动设备上处理深度学习有天然优势。整个工作流程不用将数据上传到云,可以在离线运行的同时避免云计算过程中数据传输与异地存储带来的隐私风险。虽然深度学习模型具有卓越的性能,但是CNN中的卷积层需要消耗大量的计算量和能量资源,给设备带来了严峻的挑战。AlexNet[1]、VGG[2]、GoogleNet[3]、ResNet[4]都 是 ILSVRC 的优秀算法模型,其中,AlexNet的Top5错误率为16.4%,但它拥有6 000万个参数,如果用float 32存储这些参数,它将占用移动设备上228 MB的内存,与此同时,AlexNet卷积层的FLOPS为663 MB,约占整个模型FLOPS的92%。显然,AlexNet并不适合资源有限的移动设备。VGG也是一个经典的分类模型,Top5错误率达到7.3%,在准确率上有较大的提高,其参数是AlexNet的3倍。不论考虑计算量还是内存开销,在移动设备上部署深度学习模型都是一个更为严峻的挑战。GoogleNet和ResNet也必须要面对这个问题。为了解决这个问题,研究人员使用一种主流技术,即压缩预先训练的深度学习模型。这种策略能够有效地对神经网络模型进行修剪,但都是以牺牲精度为代价的。

本文把分类任务分为两个阶段:第一阶段定义为粗粒度聚类过程,这个阶段最主要的作用是减少解空间(神经网络模型需要识别数据集中包含的类数)。在此之后,可以将数据聚类为几个彼此不相关的小数据集,但在同一聚类中的图像比在不同聚类中的图像具有更强的相似性;第二阶段是分类过程,在这一阶段设计了几个自定义的轻量级分类器,分别识别图像的特定类。

要完成这项工作,将面临两大挑战:一是需要得出一个粗粒度的聚类方法,用来划分数据集的解空间;二是现有的聚类模型都是为了对图像进行聚类,使图像尽可能接近标签,目的是训练一个模型来推断某一类的图像信息。为了解决第一个问题,本文提出了一种粗粒度聚类方法,对图像特征进行粗聚类,将图像分为不同的簇。此外,由于移动设备的计算成本和能耗有限,需要一个标准来衡量模型是否可以在移动设备上实现,因此本文提出了一种能量预测模型来解决第二个挑战。

本文系统的优势和主要工作如下:

(1)本文创新性地利用聚类和分类完成分类任务,使用几个轻量级的神经网络代替单一的庞大模型,使其在每次推理时消耗更少的资源。

(2)本文提出了一种能量预测方法,通过探索能量与计算量的关系,得到一个转换因子,根据这个因子和模型的复杂性预测模型的能耗。

(3)对于解空间的划分,本文模型在两个阶段都可以利用轻量级神经网络达到一定的精度,并且花费较少的能量和时间进行推断。

1 相关工作

1.1 数据聚类

现有的聚类方法[5-6]大多利用或改进传统的机器学习技术聚类数据,如K-means[6],这类机器学习聚类方法在cifa-100[7]、ILSVRC2012 1k[8]等各种数据集上准确率较低,因为它们依赖于SIFT[9]、SURF[10]等特征提取算法,无法提高图像的表示效果。文献[11-12]利用深度神经网络逐步提取更有效的特征表示。深度聚类通过利用K-means对数据特征进行聚类,然后使用聚类标签作为伪标签训练ConvNet,获得了较好的精度[11]。DAC通过将图像聚类任务转化为二值两两分类问题对数据进行聚类,分析对图像是否属于同一个聚类[12]。这些基于深度学习的聚类方法在一定程度上提高了聚类精度,虽然性能仍然不尽如人意,但是这些方法为粗粒度聚类提供了有价值的设计思路。

1.2 数据分类

图像分类是计算机视觉领域的一个热门课题,有很多优秀的研究成果,具体见文献[1-4]。这些成果为后来的研究提供了许多极好的思路,但是这些模型非常庞大,难以在移动设备上实现,文献[13-14]致力于将普通模型压缩成合适的模型。其中,文献[13]提出了一种利用f×1和1×f滤波器的线性组合代替f×f滤波器实现低秩近似的压缩方法。这些框架确实能在移动设备上运行,但它们中的大多数通过牺牲模型的准确性来削减模型大小。与这类工作相比,一些神经网络设计方法直接设计轻量化模型,见文献[15-18]。文献[16]提出了包含挤压层和扩展层的火灾模块,以减小模型参数,文献[17]采用组卷积和通道shuffle两种操作减少参数。本文提出了一种考虑解决方案空间和能量消耗的高效深度学习框架,使基于卷积网络的模型可在资源感知型移动设备上执行。

2 系统设计

本节主要介绍了系统设计模型,阐述了使用粗粒度聚类的必要性,以及所使用的聚类方法,通过自定义的神经网络框架对解空间划分产生的每个聚类数据进行分类。

2.1 解空间

将解空间定义为一个完整数据集需要识别特定数量的类。一般来说,随着样本数据量的增加,数据集的解空间也随之增大。目前在图像或视频帧分类方面有很多研究成果能够表现出良好的图像分析性能。但是,这些基于神经网络的模型通常情况下参数较多,结构极其复杂,不适合移动设备。尽管压缩模型可以减少模型在计算和内存上的消耗,但对于资源有限的移动设备来说,仍然存在不可忽视的问题。此外,由于压缩方法可能会对一些可以产生良好特征的导入滤波器进行删减,压缩后的模型通常不能达到与原始模型相同的性能。现实世界的对象是不可估计的,单一的数据集不能代表现实世界的数据和数据分布。当不断向原始数据集中添加新的图像,使解空间变得更大时,传统的单一神经网络设计方法会使模型变得更加复杂和繁琐,甚至难以设计。针对这种情况,本文提出了一种新的分类模型,将分类任务分为两步,即大规模解空间划分和自定义神经网络框架设计。

2.2 大规模解空间划分

首先将一个大的数据集划分成若干个小的数据集,以减小解空间的规模,该过程如图1所示。为了划分数据集,一种简单的方法是将整个数据集中的图像随机分布到K(K<N,N是一个数据集中的类数)个小数据集中。理想情况下,希望小数据集具有弱相关性,甚至彼此无关,但每个小数据集中的数据具有强相关性。针对这一思想,聚类是实现这一目标的合理方法,然而,传统的机器学习技术由于精度较低,已经不能适应当前的要求。因此,本文利用基于CNN的模型划分数据集来减少解空间,并将该聚类模型定义为粗粒度聚类模型,该模型的体系结构见表1所列,在此过程中需要识别的聚类数目比传统基于CNN的聚类模型要少,所以聚类模型就会变成轻量级,本文也采取了一些技术来提高模型的性能,使模型易于在移动设备上实现,接下来将详细介绍基于CNN的粗粒度聚类方法。

表1 粗粒度聚类网络结构

图1 解空间划分

(1)卷积层

卷积层是卷积网络中计算密集型的一层,它涉及大量的卷积计算,因此,为ConvNet选择合适的滤波器是很有意义的。在粗粒度聚类的神经网络设计中,只使用了3×3的核,因为3×3的核相比1×1的核具有更大的接受域。在神经网络设计中没有使用5×5或7×7滤波器,是希望减少参数并获得同等的性能。值得一提的是,两个连续的3×3滤波器可以分析有25个像素信息的特征图,相当于一个5×5滤波器,这使得神经网络的学习能力与其他实现5×5滤波器的算法相当甚至更强。

(2)限制层

本文期望用神经网络的输出来完成粗粒度聚类。为了获得更好的特征表示,避免损失函数中存在ln 0等无意义的解,对ConvNet生成的输出进行限制,使其保持一定的间隔,这有利于训练ConvNet。具体来说,在神经网络模型的最后一层之后实现了限制,将每个元素限制为(0,1)。该过程的表述如下:

式中:Lin,Lout分别为限制层的输入和输出;K表示粗粒度聚类后簇数的超参数。

式(1)限制了神经网络输出的所有元素,式(2)限制输出为一个单位向量。这个过程只是对神经网络的输出进行线性变换,使其学习效率更高。在实现限制层后,对限制层生成的输出进行聚类,将聚类标签作为伪标签,以分类方式训练模型。

(3)聚类步骤

受深度聚类[11]的启发,认为选择什么样的方法对特征输出聚类并不重要,只需要一种聚类模式就可以给出聚类图像所属的标准。因此,本文选择K-means聚类方法完成这一步。当得到聚类标签时,将聚类标签转换为一个热向量,使得数据集中的每幅图像与热标签相关;可以使输出的限制和聚类标签拥有相同的维度,其中,k与限制层中表示聚类数的K相同。

(4)损失函数

在这一部分中,分布p(x),q(x)分别表示样本图像的伪标签和神经网络模型的输出,两者中的x都是特征信息。使用Kullback-Leibler(KL)散度度量特征表示与伪标签之间的差异。注意KL散度是对两个不同分布p(x)和q(x)的非对称度量。由式(5)可知,右边第一项为p(x)的熵,在优化过程中为常数,因此,只关注后一项,它被定义为交叉熵,传播损失来更新神经网络的权值。通过解决以下问题计算损失:

(5)粗粒度聚类标签推理

对于映像,它必须属于某个集群。理想情况下,图像特征可以是标准的one-hot向量的一种形式,值为1的指标是图像所属的聚类。基于这一观点,分析了神经网络模型对聚类图像的输出。训练后,基于卷积神经网络的聚类模型可以从图像中提取有效的特征,通过分析神经网络的输出对数据进行分类是可取的,该过程可制定如下:

式中:li为k维张量,是图像i的卷积神经网络的输出;f(*)为映射函数;ω为模型的权值;ci是图像i的聚类标号,由张量的最大值产生。理想情况下,一幅图像的特征li是一个热点向量,1表示该图像属于这个簇,0表示该图像不属于这个簇。然而,在现实中很难通过训练模型得到全局最优解,因此,取CNN产生的高级表示的最大响应。

2.3 自定义神经网络框架设计

这部分详细介绍了自定义神经网络框架的设计。设计K分类器分别对粗粒度聚类过程生成的K个数据集进行分类,从聚类步骤中得到一个有意义的结论,即聚类的大小不同。因此,本文提出一种自定义的神经网络设计策略,使模型能够有效地在目标设备上运行,接下来,介绍了神经网络设计中的能量预测模型和其他细节。

在手机上实现深度学习模型最重要的问题是能耗和计算。执行一次推理所产生的能量决定了手机的工作时间。对于深度学习模型,能耗主要来自两个方面:占用的CPU资源;RAM与ROM之间的数据交换。这两个方面都受到模型处理图像产生的计算量的影响。为了确保模型能够在移动设备上有效地执行,本文提出了一个能量预测模型,该模型可以预测神经网络在处理图像过程中因为计算而产生的能量消耗,预测能耗的方法可表述如下:

式中:O代表神经网络的计算;Cin,Cout分别是第j个卷积层的输入通道和输出通道;hj-1,ωj-1是输入要素图的大小;K是内核的大小;Ri代表与特定计算有关的能耗;α是能量开销和计算量的转换因子,每个分类器都有自己的转换因子。

由于解空间的减小,可以利用轻权重神经网络对图像进行识别。因此,在分类器设计中,广泛采用与聚类方法相同的神经网络设计策略。确切地说,只是在卷积层中使用3×3个过滤器来分析图像信息,在最后的卷积层之后加入LRN(Local Response,归一化),使特征分布变得稳定。值得注意的是,在最终的完全连接层之后添加softmax层,使用的损失函数是交叉熵,采用小批量梯度下降优化函数解决了随机梯度下降过程中损失不稳定的问题。

3 性能测试预评估

在本节中用提出的系统对图像进行分类,并在CIFAR-10、CIFAR-100、ILSVRC2012 1k三个流行的数据集上评估其性能。

3.1 数据集和数据预处理

两个CIFAR数据集包含50 000张训练图像和10 000张像素为32×32的测试图像。CIFAR-10包含10个类别,而CIFAR-100有100个更为细粒度的类别,也可以分为20个粗粒度的类别。ILSVRC2012 1k数据集有1 000个类别,共120万张训练图像和50 000张像素为96×96的测试图像(调整ILSVRC2012的图像大小以方便处理)。

因为把原始数据集分为若干个不同的簇,所以就会导致每个簇中的图像大幅度减少。因此,应用了一些数据增强技术来扩展数据集:首先对图像零填充4个像素,然后随机裁剪它们以生成大小为32×32的图像;再人为地在图像中产生一些噪点;Z分数归一化用于提高原始数据的质量,在此步骤中,通过通道均值减去图像的像素数据,然后除以标准差。该过程可通过式(10)表示。这些主流的数据增强技术能够扩展原始数据集并增强神经网络的推理能力。

在第一阶段将图像分为几个簇。在此阶段中不需要使用标签训练模型,但是需要标签测试模型的性能。因此,采用一种简单的方法标注图像的粗粒度标签。注意,CIFAR-100数据集为每个图像标注了粗粒度标签,以表示它的超类,例如,时钟、电视、键盘都是家用电器,因此,在此阶段中不会对CIFAR-100做任何处理。在训练提出的模型之前,首先分析了100张图像的潜在关系,然后对原始数据集进行粗粒度标记,最后为数据集添加粗粒度列表。

3.2 粗粒度聚类

在对聚类性能评估的初步研究中,引入了NMI度量两个不同的赋值X,Y之间共享的信息。NMI公式如下:

式中:I(*)为X,Y的互信息;H(*)表示熵。具体来说,如果NMI的值越小,则两个赋值的相关性越独立。

(1)聚类和粗粒度标签之间的关联

在神经网络训练之后,通过报告NMI的演变显示聚类与人工或自然粗粒度标签之间的动态关联。该度量的目标是度量模型的性能,以预测图像的粗粒度簇级信息。当对一个神经网络模型进行训练时,模型会逐渐更新权重,使推理更加有效。在图2中,分别展示了CIFAR-10、CIFAR-100和ILSVRC2012 1k数据集在训练过程中聚类和粗粒度标签的趋势。可以发现,这三条曲线都持续上升,即粗粒度簇与标签之间的依赖性不断增加,这说明本文模型可以逐渐产生有效的特征信息来提高聚类性能。

图2 聚类和粗粒度标签的趋势

(2)相邻训练阶段簇间的关联

这一部分简要分析了聚类模型在训练阶段的稳定性。在训练过程中,该模型根据图像的特征信息对图像进行聚类。然而,由于图像分配的变化情况未知,因此无法断言聚类的稳定性。因此,本文分析了簇在相邻时间(t-1和t)的分布。在图3中报告了相邻训练时段的NMI,以表示模型的内部变化。图中显示,NMI不断增加,即训练过程中重新分配的图像数量变少,此度量表示本文模型可以有效地对图像进行聚类,使图像分布稳定。

图3 相邻训练时段的NMI变化

(3)粗粒度聚类性能

本文创新性地探索使用粗粒度聚类来划分原始数据集的解空间,因此没有将聚类性能与其他旨在预测特定类的工作进行比较。为了将本文模型与其他已有的工作进行比较,对本文模型进行了扩展,使其能够预测图像的某类信息。表2中展示了模型在两个方面的性能,即NMI和精度。首先,基于深度学习方法(如DAC)的性能优于传统机器学习方法(如K-means),因此可以得到特征信息比聚类方法更重要的结论;其次,与其他工作相比,本文扩展模型表现出不错的性能,因为本文只设计了一个简单的基于深度学习的方法来划分数据集的解空间,因此,粗粒度聚类方法在这些聚类方法中能够表现出最好的性能。

表2 不同聚类方法在三个数据集上的聚类性能对比

3.3 分类器

本文主要从分类精度和能耗两个方面来评估系统性能。前者验证了模型推理的有效性,后者保证了模型在目标设备上的良好性能。可以用式(8)获得近似的能耗,然后通过对预测能量和能量存储量的分析,判断模型是否适用于移动设备。图4给出了本文系统和其他主流模型在2个数据集上的性能(数据取自其他论文)。本文系统达到了与其他移动服务模型相当的精度,这表明本文系统能够满足用户的需求。在评估了系统的准确性之后,使用能量预测模型评估该模型是否能够有效地在手机上运行。在表3中,本文展示了在ILSVRC2012 1k上训练的几个模型的能耗和一些其他特征。计算量和权重参数会对内存、CPU和GPU造成巨大的压力,所以计算量和参数在一定程度上可以代表能耗。通过与其他模型的比较,发现本文模型计算量比其他模型要少,在无人机上推理一次仅消耗264 mA。因此,本文模型可以满足目前大多数移动设备的需求。

图4 准确性比较

表3 能量消耗和其他特征的比较

4 结 语

本文提出了一种新的神经网络,通过引入划分解空间和分类数据两个阶段对数据进行分类。前者利用粗粒度聚类方法,允许将数据分布到多个聚类中,后者由上一步产生的具有相同聚类数的一系列分类器对每个聚类进行精确分类。这个过程的优点是:可以在两个步骤中减轻神经网络模型的压力,例如,在聚类步骤中只需要找到一个大致的聚类模式,使神经网络不要过于庞大,而在推理步骤中只需要将一个轻量级的模型调用到内存中,它可能是单个模型所占大小的一小部分,这个过程的结果使得模型消耗更少的能量,有利于在各种手机上实现该模型。与现有的单一神经网络设计方法相比,本文系统在解空间发生变化时是等价稳定的,因为在第一阶段划分解空间时,本文模型将数据分布到一个簇中,例如,利用多个数据集代替原来的数据集减轻数据集的压力,通过增加解空间产生神经网络。大量实验结果表明,本文模型在CIFAR-10、CIFAR-100和ILSVRC2012 1k的数据集上具有良好的性能,并且能耗较低,可以在手机上进行有效的处理。

猜你喜欢

粗粒度标签卷积
一种端到端的加密流量多分类粗粒度融合算法*
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于卷积神经网络的粗粒度数据分布式算法
从滤波器理解卷积
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
基于傅里叶域卷积表示的目标跟踪算法
在线评论情感分析研究综述
标签化伤害了谁
基于多进制查询树的多标签识别方法