CN112580772B - 卷积神经网络的压缩方法及装置 - Google Patents
卷积神经网络的压缩方法及装置 Download PDFInfo
- Publication number
- CN112580772B CN112580772B CN201910945937.9A CN201910945937A CN112580772B CN 112580772 B CN112580772 B CN 112580772B CN 201910945937 A CN201910945937 A CN 201910945937A CN 112580772 B CN112580772 B CN 112580772B
- Authority
- CN
- China
- Prior art keywords
- convolution
- convolution layer
- primitives
- layer
- neural network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 134
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000007906 compression Methods 0.000 title claims abstract description 58
- 230000006835 compression Effects 0.000 title claims abstract description 57
- 238000013528 artificial neural network Methods 0.000 claims abstract description 58
- 238000012549 training Methods 0.000 claims abstract description 40
- 238000004364 calculation method Methods 0.000 claims abstract description 22
- 230000011218 segmentation Effects 0.000 claims abstract description 17
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000003062 neural network model Methods 0.000 abstract description 2
- 239000010410 layer Substances 0.000 description 588
- 230000015654 memory Effects 0.000 description 54
- 230000006870 function Effects 0.000 description 26
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000005284 basis set Methods 0.000 description 7
- 238000013473 artificial intelligence Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 5
- 230000004913 activation Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 4
- 238000010606 normalization Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000000926 separation method Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 3
- 239000010931 gold Substances 0.000 description 3
- 229910052737 gold Inorganic materials 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 101100365548 Caenorhabditis elegans set-14 gene Proteins 0.000 description 2
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Error Detection And Correction (AREA)
- Image Analysis (AREA)
Abstract
本发明公开了一种卷积神经网络的压缩方法,包括:根据第一卷积神经网络中每个卷积层的参数压缩比计算得到所述每个卷积层通道维的切分数s;将第一卷积神经网络中每个卷积层转换为第一卷积层和第二卷积层,根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,根据第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式、基元的个数及对应的第二卷积层确定重建卷积神经网络模型;基于重建损失函数对重建卷积神经网络模型进行训练,以得到第二卷积神经网络。本发明还公开了一种压缩装置。采用本发明的实施例有利于降低计算开销和存储开销。
Description
技术领域
本发明涉及人工智能领域,尤其涉及一种卷积神经网络的压缩方法及装置。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
卷积神经网络的快速发展导致了计算机视觉领域今年来的快速突破。在高层视觉(分类、分割、目标跟踪)和低层视觉(超分辨率重建、去噪、去雨、去模糊)任务中,基于卷积神经网络的方法相继被提出,都取得了当前最优的性能。
然而,取得上述高性能依赖于复杂的神经网络结构,结构复杂的神经网络导致其计算开销和运行时内存开销也越来越大,无法达到实时性要求,严重限制了上述方法在实际场景中的消费级设备上的应用。例如,针对模糊的低分辨率图像,2019年提出的深度即插即用超分辨率(deep plug-and-play super-resolution,DPSR)网络对联合退化过程进行建模,同时进行去模糊与超分辨率重建,在峰值信噪比(peak signal-to-noise ratio,PSNR)等客观指标和主观评价上均取得了当前最优的重建效果。然而,强大的性能表现背后面临着时间代价的显著提升。在单个GTX1080Ti上,DPSR网络处理一张分辨率为256x256的图像需要大约1.8秒的时间。而这样的时间代价在实际场景,尤其是消费级设备上,是难以接受的。
因此,设计高效的压缩算法对现有优良神经网络进行压缩以减少计算代价和存储代价,是目前神经网络应用中亟待解决的需求。
发明内容
本发明实施例提供一种卷积神经网络的压缩方法及装置,采用本发明的实施例有利于在保证卷积神经网络的性能的前提下,降低计算开销和存储开销。
第一方面,本发明实施例提供一种卷积神经网络的压缩方法,包括:
根据第一卷积神经网络中每个卷积层的参数压缩比计算得到所述每个卷积层通道维的切分数s;将第一卷积神经网络中每个卷积层转换为第一卷积层和第二卷积层,其中,第一卷积层由基元组成,第二卷积层由基元的系数组成;根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,每个卷积层对应的第一卷积层中基元的大小是基于该卷积层通道维的切分数s得到的;根据第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式、基元的个数及对应的第二卷积层确定重建卷积神经网络模型;基于重建损失函数对重建卷积神经网络模型进行训练,以得到第二卷积神经网络。
可以看出,在本发明实施例的方案中,将第一卷积神经网络中每个卷积层中的卷积核以基元及其系数表示,有效降低了卷积神经网络的参数量;并将基元及其系数分别转换为卷积网络的形式,降低了第二卷积神经网络在参数重建的代价,提升了第二卷积神经网络的运行效率。
在一个可行的实施例中,根据每个卷积层的基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,包括:
根据第一卷积神经网络中的每个卷积层对应的第一卷积层中基元的大小,对第一卷积神经网络的卷积层进行分组,以得到多组卷积层,该多组卷积层中的每组包含的卷积层对应的基元的大小相同;
其中,多组卷积层的中第k组包含的卷积层对应的第一卷积层中的基元相同,或者;多组卷积层中第k组内输入数据相同的卷积层对应的第一卷积层中的基元相同,或者;多组卷积层中的第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同;
其中,第k组卷积层为多组卷积层中的任一组,第k组卷积层对应的第一卷积层中包含的基元的个数为m,该m为预设值。
采用本发明实施例使得第二卷积神经网络中卷积层对应的第一卷积层中的基元相同,可进一步降低第二卷积神经网络的参数量。
在一个可行的实施例中,若第k组包括M个子结构,M个子结构中的一个子结构包括一个或多个卷积层,多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同,包括:
M个子结构中的第t个子结构包括的卷金层对应的第一卷积层中的基元相同,且第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元,
其中,t大于1且不大于M,M为大于1的整数。
采用本发明实施例有利于在保证第二卷积神经网络性能的前提下,可进一步降低第二卷积神经网络的参数量,进而降低了存储开销。
在一个可行的实施例中,第t个子结构中卷积层对应的第一卷积层中的基元个数与第t-1个子结构中卷积层对应的第一卷积层中的基元个数之差与第t-1个子结构中卷积层对应的第一卷积层中的基元个数与第t-2个子结构中卷积层对应的第一卷积层中的基元个数之差相等。
在一个可行的实施例中,重建损失函数是基于参数重建误差和第一卷积神经网络的损失函数确定的。
其中,参数重建误差为所述第一卷积神经网络中每个卷积层参数的重建误差之和。
基于重建损失函数对重建卷积神经网络模型进行训练,可同时保证第二卷积神经网络的参数重建精度和性能。
第二方面,本发明实施例提供一种压缩装置,包括:
计算单元,用于根据第一卷积神经网络中每个卷积层的参数压缩比计算得到所述每个卷积层通道维的切分数s;
转换单元,用于将第一卷积神经网络中每个卷积层转换为第一卷积层和第二卷积层,其中,第一卷积层由基元组成,第二卷积层由基元的系数组成;
确定单元,用于根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,每个卷积层对应的第一卷积层中基元的大小是基于该卷积层通道维的切分数s得到的;根据第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式、基元的个数及对应的第二卷积层确定重建卷积神经网络模型;
训练单元,用于基于重建损失函数对重建卷积神经网络模型进行训练,以得到第二卷积神经网络。
在一个可行的实施例中,在根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式的方面,确定单元具体用于:
根据第一卷积神经网络中的每个卷积层对应的第一卷积层中基元的大小,对第一卷积神经网络的卷积层进行分组,以得到多组卷积层,该多组卷积层中的每组包含的卷积层对应的基元的大小相同;
其中,多组卷积层的中第k组包含的卷积层对应的第一卷积层中的基元相同,或者;多组卷积层中第k组内输入数据相同的卷积层对应的第一卷积层中的基元相同,或者;多组卷积层中的第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同;
其中,第k组卷积层为多组卷积层中的任一组,第k组卷积层对应的第一卷积层中包含的基元的个数为m,该m为预设值。
在一个可行的实施例中,若第k组包括M个子结构,M个子结构中的一个子结构包括一个或多个卷积层,多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同,包括:
M个子结构中的第t个子结构包括的卷金层对应的第一卷积层中的基元相同,且第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元,
其中,t大于1且不大于M,M为大于1的整数。
在一个可行的实施例中,第t个子结构中卷积层对应的第一卷积层中的基元个数与第t-1个子结构中卷积层对应的第一卷积层中的基元个数之差与第t-1个子结构中卷积层对应的第一卷积层中的基元个数与第t-2个子结构中卷积层对应的第一卷积层中的基元个数之差相等。
在一个可行的实施例中,在一个可行的实施例中,重建损失函数是基于参数重建误差和第一卷积神经网络的损失函数确定的。
其中,参数重建误差为所述第一卷积神经网络中每个卷积层参数的重建误差之和。
第三方面,本发明实施例提供一种压缩装置,包括:
用于存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;所述处理器调用所述存储器中存储的可执行程序代码时执行如第一方面所述方法中的部分或全部。
第四方面,本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序被具有处理能力的计算平台或者处理器执行时以实现如第一方面所述方法的部分或全部步骤。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1-1为本发明实施例提供的一种应用场景示意图;
图1-2为本发明实施例提供的一种系统架构示意图;
图1-3为本发明实施例提供的一种卷积神经网络压缩的方法流程示意图;
图2为本发明实施例提供的一种卷积层分组方式示意图;
图3为本发明实施例提供的另一种卷积层分组方式示意图;
图4为本发明实施例提供的另一种卷积层分组方式示意图;
图5为本发明实施例提供的一种卷积神经网络示意图;
图6为本发明实施例提供的一种基元共享方式示意图;;
图7-1为本发明实施例提供的用于进行超分辨处理的卷积神经网络中残差模块压缩前后对比示意图;
图7-2为本发明实施例提供的另一种基元共享方式示意图;
图8为用于处理图像分类的DenseNet架构示意图;
图9为本发明实施例提供的另一种基元共享方式示意图;
图10为本发明实施例提供的一种压缩装置的结构示意图;
图11为本发明实施例提供的另一种压缩装置的结构示意图;
图12为本发明实施例提供的一种芯片架构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1-1,图1-1为本发明实施例提供的一种应用场景示意图。如图1-1所示,该应用场景包括安防系统10、客户设备20和卷积神经网络压缩装置30。
客户设备20可以是智能终端,比如智能手机、平板电脑、便携式笔记本或者台式电脑等。
安防系统10获取其所监控区域的安防视频或安防图像。用户可使用客户设备20访问安防系统获取安防视频或者安防图像。
在用户对安防视频或者安防图像的分辨率不满意时,可通过客户设备20从卷积神经网络压缩装置30中获取压缩后的超分辨卷积神经网络,客户设备20基于压缩后的超分辨卷积神经网络对安防视频或者安防图像进行超分辨处理,得到高分辨里的安防视频或者安防图像。
可选地,安防系统可从卷积神经网络压缩装置30中获取压缩后的超分辨卷积神经网络,基于压缩后的超分辨卷积神经网络对安防视频或者安防图像进行超分辨处理,得到高分辨率的安防视频或者安防图像。
卷积神经网络压缩装置20可基于本发明所述的卷积神经网络压缩方法对超分辨卷积神经网络进行压缩,以得到压缩后的超分辨卷积神经网络。
可选地,卷积神经网络压缩装置30可集成于安防系统10,或者客户设备20。
在此需要说明的是,图1-1所示的场景只是一个示例,不是对本发明的限定,本发明可用于需要使用卷积神经网络的场景,在此不再一一列举。
参见附图1-2,本发明实施例提供了一种系统架构200。数据采集设备260用于采集训练样本数据并存入数据库230,其中,训练样本数据包括原始数据和标签数据;训练设备220基于数据库230中维护的训练样本数据生成压缩卷积神经网络201。下面将更详细地描述训练设备220如何基于训练样本数据得到压缩卷积神经网络201。
根据第一卷积神经网络中每个卷积层的参数压缩比计算得到所述每个卷积层通道维的切分数s;将第一卷积神经网络中每个卷积层转换为第一卷积层和第二卷积层,其中,第一卷积层由基元组成,第二卷积层由基元的系数组成;根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,每个卷积层对应的第一卷积层中基元的大小是基于该卷积层通道维的切分数s得到的;根据第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式、基元的个数及对应的第二卷积层确定重建卷积神经网络模型;基于训练样本数据和重建损失函数对重建卷积神经网络模型进行训练,以得到第二卷积神经网络,这里的第二卷积神经网络即为上述压缩卷积神经网络201。
训练设备220得到的压缩卷积神经网络201可以应用不同的系统或设备中。在图1-2中,执行设备210配置有I/O接口212,与外部设备进行数据交互,“用户”可以通过客户设备240向I/O接口212输入数据。
执行设备210可以调用数据存储系统250中的数据、代码等,也可以将数据、指令等存入数据存储系统250中。
计算模块211使用压缩卷积神经网络201对输入的数据进行处理,得到处理结果,比如使用压缩卷积神经网络对输入数据进行超分辨处理,得到超分辨处理结果。
最后,I/O接口212将处理结果返回给客户设备240,提供给用户。
更深层地,训练设备220可以针对不同的目标,基于不同的数据生成相应的压缩卷积神经网络201,以给用户提供更佳的结果。
在图1-2中所示情况下,用户可以手动指定输入执行设备210中的数据,例如,在I/O接口212提供的界面中操作。另一种情况下,客户设备240可以自动地向I/O接口212输入数据并获得结果,如果客户设备240自动输入数据需要获得用户的授权,用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端将采集到输入数据和输出结果(即上述处理结果)存入数据库230。
值得注意的,图1-2仅是本发明实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图1-2中,数据存储系统250相对执行设备210是外部存储器,在其它情况下,也可以将数据存储系统250置于执行设备210中。
参见图1-3,图1-3为本发明实施例提供的一种卷积神经网络压缩的方法流程示意图。如图1-3所示,该方法包括:
S101、根据第一卷积神经网络中每个卷积层的参数压缩比计算得到所述每个卷积层通道维的切分数s。
其中,每个卷积层通道维的参数压缩比是指该卷积层压缩后参数的个数与压缩前参数的个数之比。
假设某卷积层的卷积核K的大小为n×c×h×w,该层对应的通道维切分数为s,那么s=Nearest_Int(sqrt(c×h×w/n),c)。其中sqrt(x)表示开方运算,Nearest_Int(x,c)返回距x最近的能够被c整除的整数。
应理解,由于输入特征的每一个通道都被该卷积层的多个滤波器(卷积核)使用卷积操作,因此同一层卷积的不同滤波器在通道维具有相关性。因此,训练后的单个滤波器的通道维具有低秩特性。
在此,将单个滤波器的通道维分离为s(c为s的倍数)份,即形成s个滤波器分离单元换言之,将一个卷积核在通道维上划分为s份子卷积核,卷积核为上述滤波器,子卷积核为上述滤波器分离单元。
假设滤波器分离单元可由个数不大于m的一组基元来线性表示,即:
其中Bj表示滤波器分离单元的基元,αj,i,g为基元Bj的系数。
如此,压缩后与压缩前参数的比率(即参数压缩比)可表示为:
其中,n·c·w·h表示压缩前卷积层中参数的个数,m·p·w·h+m·n·s表示压缩后该卷积层中参数的个数,压缩比越小,压缩效果越好。
最小化参数压缩比rr可以得到最优的s,p取值:
从而得到最优的s为:
最优的s即为上述卷积层通道维的切分数。
S102、将第一卷积神经网络中的每个卷积层转换为第一卷积层和第二卷积层,其中,第一卷积层由基元组成,所述第二卷积层由基元的系数组成。
具体地,假设第一卷积神经网络中任一卷积层V对应的第一卷积层中滤波器基或者基元的数量为m,则该卷积层V的单个滤波器可拆分为由m个基元组成的卷积层和该基元对应的s*m个线性表示系数组成卷积层。
其中,m为预设值。
需要指出的是,当m<ncwhs/(cwh+ns2)时,将卷积层V拆分为由基元组成的第一卷积层和由基元系数组成的第二卷积层,由于第一卷积层和第二卷积层中的参数量小于卷积层V中的参数量,因此将卷积层V拆分为第一卷积层和第二卷积层可以看成是对卷积层V进行参数压缩,第一卷积层和第二卷积层可以看成卷积层V的压缩表示形式。
若将第一卷积神经网络中的每个卷积层均转换为由第一卷积层和第二卷积层表示的形式,可以看成对第一卷积神经网络进行参数压缩,得到第二卷积神经网络为压缩后的第一卷积神经网络。
其中,基元可以看作一个卷积核,基元的系数为一维数据,因此该系数可以看成尺寸为1*1的卷积核。
在使用压缩表示形式的卷积层V进行输入特征进行卷积操作时,具体卷积操作过程如下:
首先将大小为N×c×H×W的输入特征F变形为(N*s)×p×H×W,变形后的输入特征F记为F’,其中c=s×p;利用m个基元组成的第一卷积层对变形后输入特征F’的每个分组进行卷积,卷积结果记为O,其大小为(N*s)×m×H×W;将卷积结果O变形为O’,大小为N*(s×m)×H×W;最后利用输入通道维大小为s*m的1×1的滤波器(基元系数)对卷积结果O’进行卷积,滤波器个数与卷积层V的滤波器个数n相同,以得到输出特征。
需要指出的是,m的大小影响着卷积层的压缩比率与精度。比如卷积层C,其重建后表示为卷积层C’,卷积层C对应的m越大,该卷积层的压缩效果越差,卷积层C’的精度越大;反之,卷积层C对应的m越小,该卷积层的压缩效果越好,卷积层C’的精度越小。
S103、根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式。
其中,每个卷积层对应的第一卷积层中基元的大小由该卷积层通道维的切分数s得到的。
在一个可行的实施例中,根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,包括:
根据第一卷积神经网络中每个卷积层对应的第一卷积层中基元的大小,对第一卷积神经网络的卷积层进行分组,以得到多组卷积层,多组卷积层中的每组包含的卷积层对应的基元大小的相同;
其中,多组卷积层中的第k组包含的卷积层对应的基元相同,或者;多组卷积层中的第k组输入数据相同的卷积层对应的基元相同,或者;多组卷积层中的第k组内属于同一子结构的卷积层对应的基元相同,
在一个示例中,举例说明,如图2所示,第一卷积神经网络包括Q个卷积层,在确定第一卷积神经网络中每个卷积层的压缩表示形式后,根据每个卷积层对应的基元大小,对第一卷积神经网络中的卷积层进行分组,分组结果为:卷积层1、卷积层2和卷积层3为一组,卷积层4和卷积层5为一组,…,卷积层Q-2、卷积层Q-1和卷积层Q为一组。
卷积层1对应的第一卷积层中的基元、卷积层2对应的第一卷积层中的基元和卷积层3对应的第一卷积层中的基元相同;卷积层4对应的第一卷积层中的基元和卷积层5对应的第一卷积层中的基元相同,卷积层Q-2对应的第一卷积层中的基元、卷积层Q-1对应的第一卷积层中的基元和卷积层Q对应的第一卷积层中的基元相同。
在此需要说明的是,图2仅仅是个示例,分为一组的卷积层在对数据处理顺序上可以是连续的,分为一组的卷积层在对数据处理顺序上也可以是非连续的,比如可将卷积层1、卷积层2和卷积层4分为一组,此时卷积层1对应的第一卷积层中的基元、卷积层2对应的第一卷积层中的基元和卷积层4对应的第一卷积层中的基元相同;可将卷积层3、卷积层5和卷积层Q-1分为一组,此时卷积层3对应的第一卷积层中的基元、卷积层5对应的基元和卷积层Q-1对应的第一卷积层中的基元相同。
在另一个示例中,举例说明,如图3所示,第一卷积神经网络包括Q个卷积层,在确定第一卷积神经网络中每个卷积层的压缩表示形式后,根据每个卷积层对应的第一卷积层中的基元大小,对第一卷积神经网络中的卷积层进行分组,分组结果为:卷积层1、卷积层2和卷积层3为一组,…,卷积层Q-2、卷积层Q-1和卷积层Q为一组。其中,卷积层1和卷积层2的输入数据相同,卷积层Q-2和卷积层Q-1的输入数据相同,卷积层1对应的第一卷积层中的基元和卷积层2对应的第一卷积层中的基元相同,卷积层1对应的基元和卷积层3对应的第一卷积层中的基元不相同;卷积层Q-1对应的第一卷积层中的基元和卷积层Q-2对应的第一卷积层中的基元相同,卷积层Q-1对应的第一卷积层中的基元和卷积层Q对应的第一卷积层中的基元不相同。
在另一个示例中,举例说明,如图4所示,卷积层c1,卷积层c2,卷积层c3,卷积层c4和卷积层c5为第一卷积神经网络中的部分卷积层,且卷积层c1,卷积层c2,卷积层c3和卷积层c4属于同一子结构,卷积层c1对应的第一卷积层中的基元、卷积层c2对应的第一卷积层中的基元、卷积层c3对应的第一卷积层中的基元和卷积层c4对应的第一卷积层中的基元相同,卷积层c1对应的第一卷积层中的基元与卷积层c5对应的第一卷积层中的基元不相同。
若需要对第一卷积神经网络中的参数做进一步压缩,可采用如下方式:
方式一:在一个可行的实施例中,若多组卷积层中的第k组包括M个子结构,所述M个子结构中的每个子结构包括一个或多个卷积层,所述多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同,包括:
所述M个子结构中的第t个子结构包括的卷积层对应的第一卷积层中的基元相同,且所述第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元,其中,t大于1且不大于M,该M为大于1的整数,第k组为多组卷积层中的任一层。
进一步地,第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元。
在一个示例中,举例说明,上述多组卷积层中的第k组包括的卷积层之间的连接关系如图6所示,第k组卷积层包括卷积层c11,卷积层c12,卷积层c13,卷积层c14和卷积层c15,卷积层c11对应的第一卷积层为第一卷积层A1,卷积层c12对应的第一卷积层为第一卷积层A2,卷积层c13对应的第一卷积层为第一卷积层A3,卷积层c14对应的第一卷积层为第一卷积层A4,卷积层c15对应的第一卷积层为第一卷积层A5。
第k组中包括3个子结构,包括第1子结构、第2子结构和第3子结构。第2个子结构中卷积层对应的第一卷积层中的基元包含第1个子结构中卷积层对应的第一卷积层中的基元,换言之,第一卷积层A3中的基元包含第一卷积层A1中的基元和第一卷积层A2中的基元。第3个子结构中卷积层对应的第一卷积层中的基元包含第2个子结构中卷积层对应的第一卷积层中的基元,换言之,第一卷积层A4中的基元或第一卷积层A5中的基元包含第一卷积层A3中的基元。
其中,第1子结构中包括卷积层c11和卷积层c12,即卷积层c11和卷积层c12属于同一子结构,第一卷积层A1中的基元和第一卷积层A2中的基元相同;第3子结构中包括卷积层c14和卷积层c15,即卷积层c14和卷积层c15属于同一子结构,第一卷积层A4中的基元和第一卷积层A5中的基元相同。
方式二:在另一个可行的实施例中,若多组卷积层中的第k组为存在跨层连接的卷积层,且所述第k组包括M个子结构,所述M个子结构中的每个子结构包括一个或多个卷积层,所述多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同,包括:
所述M个子结构中的t个子结构包括的卷积层对应的第一卷积层中的基元相同,且所述第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元,其中,t大于1且不大于M,该M为大于1的整数,第k组为多组卷积层中的任一层。
进一步地,第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元。
在另一个示例中,举例说明,上述多组卷积层中的第k组包括的卷积层之间的连接关系如图6所示,第k组卷积层包括卷积层c11,卷积层c12,卷积层c13,卷积层c14和卷积层c15,卷积层c11对应的第一卷积层为第一卷积层A1,卷积层c12对应的第一卷积层为第一卷积层A2,卷积层c13对应的第一卷积层为第一卷积层A3,卷积层c14对应的第一卷积层为第一卷积层A4,卷积层c15对应的第一卷积层为第一卷积层A。对于第k组卷积层,其输入数据与输出数据相加,作为下一卷积层的输入数据,即卷积层c11的输入数据与卷积层c12的输出数据相加,作为下一卷积层的输入。由此可见为第k组卷积层为存在跨层连接的卷积层。
第k组中包括3个子结构,包括第1子结构、第2子结构和第3子结构。第2个子结构中卷积层对应的第一卷积层中的基元包含第1个子结构中卷积层对应的第一卷积层中的基元,换言之,第一卷积层A3中的基元包含第一卷积层A1中的基元和第一卷积层A2中的基元。第3个子结构中卷积层对应的第一卷积层中的基元包含第2个子结构中卷积层对应的第一卷积层中的基元,换言之,第一卷积层A4中的基元或第一卷积层A5中的基元包含第一卷积层A3中的基元。
其中,第1子结构中包括卷积层c11和卷积层c12,即卷积层c11和卷积层c12属于同一子结构,第一卷积层A1中的基元和第一卷积层A2中的基元相同;第3子结构中包括卷积层c14和卷积层c15,即卷积层c14和卷积层c15属于同一子结构,第一卷积层A4中的基元和第一卷积层A5中的基元相同。
进一步地,第2个子结构中卷积层对应的第一卷积层中的基元个数与第1个子结构中卷积层对应的第一卷积层中的基元个数之差,与第3个子结构中卷积层对应的第一卷积层中的基元个数与第2个子结构中卷积层对应的第一卷积层中的基元个数的之差相同,换言之,第一卷积层A3中的基元个数与第一卷积层A1中的基元个数之差或者与第一卷积层A2中的基元个数之差,与第一卷积层A4中的基元个数或第一卷积层A5中的基元个数与第一卷积层A3中的基元个数之差相同。
在此需要指出的是,步骤S103所描述的过程可以看成参数共享策略。上述基元相同是指基元的尺寸和取值相同。
S104、根据第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式及基元的个数确定重建卷积神经网络模型;基于重建损失函数对重建卷积神经网络模型进行训练,以得到第二卷积神经网络。
应理解,在确定第一卷积神经网络中每个卷积层对应的第一卷积层中基元的共享方式后,基于每个卷积层对应的第一卷积层中基元共享方式及基元的个数就可以确定重建卷积神经网络模型。然后基于损失函数对重建卷积神经网络模型进行训练,以得到所述第二卷积神经网络模型。可以理解,对重建卷积神经网络模型进行训练的过程可以看成确定重建神经网络模型中的基元和系数的值。
需要指出的是,第一卷积神经网络中各个卷积层对应的第一卷积层中基元的个数为预设值。
其中,重建损失函数是基于参数重建误差和第一卷积神经网络的损失函数确定的。进一步地,重建损失函数为参数重建误差与第一卷积神经网络的损失函数之和,或者加权之和。
其中,参数重建误差为重建卷积神经网络中每个卷积层参数的重建误差之和,每个卷积层参数的重建误差是根据重建卷积神经网络中卷积层的参数与在第一卷积神经网络中与该卷积层对应的卷积层的参数得到的。
具体地,初始化重建卷积神经网络中参数,该参数包括每个卷积层的基元和对应的系数,并获取训练样本集合,该训练样本集合中包括多个训练样本,每个训练样本包括原始数据和标签数据;将训练样本中的原始数据输入到重建卷积神经网络中进行计算,得到计算结果,根据该计算结果与上述训练样本中的标签数据得到重建卷积神经网络的损失值,基于重建卷积神经网络中参数的初始值和第一卷积神经网络参数的得到参数重建误差,将重建卷积神经网络的损失值和参数重建误差输入到重建损失函数中进行计算,得到损失值。若该损失值不满足预设条件,则基于该损失值调整重建卷积神经网络中的参数,以得到新的重建卷积神经网络。
根据新的重建卷积神经网络的参数和第一卷积神经网络的参数得到新的参数重建误差,再将上述训练样本中的原始数据输入到新的重建卷积神经网络中进行计算,得到新的计算结果,根据该新的计算结果与上述训练样本中的标签数据得到重建卷积神经网络的损失值,将该重建卷积神经网络的损失值和新的参数重建误差输入到重建损失函数中进行计算,得到新的损失值。若该损失值不满足预设条件,则基于该损失值调整上述重建卷积神经网络中的参数,以得到新的重建卷积神经网络。再按照上述方法重新获取损失值,直至损失值满足预设条件。至此,对重建卷积神经网络训练完毕,训练好的重建卷积神经网络即为第二卷积神经网络。
在此需要说明的是,上述标签数据为原始数据对应的超分辨率图像,上述训练样本集合可以是从已有的样本集中得到的,比如Set5、Set14、B100和Urban100等样本集。
在一个可行的实施例中,上述训练样本中的标签数据是将该训练样本中的原始数据输入到第一卷积神经网络中进行计算得到的。
在一个具体的实施例中,假设第一卷积神经网络应用于图像的超分辨率处理。以实现超分辨率过程中残差操作的残差模块在通道维切分为例,说明本发明的架构。
图7-1中的a图示意出了原始残差模块结构。该结构由两层卷积组成,两层卷积中间引入了激活函数ReLU,且该残差模块中存在跨层连接的卷积层,即该残差模块的输入数据与输出数据之和作为下一层的输入数据。其中,[h_1,…,h_n]表示单层卷积中的一组滤波器或卷积核,单个滤波器或卷积核的大小为c*h*w,输入特征大小为N×c×H×W。
图7-1中的b图示意出了采用本发明的方法得到压缩后的残差模块。其中滤波器基或者基元的数量为m,每个滤波器通道维的切分数为s。将原始残差模块中的每个卷积层分解为由[B_1,…,B_m]组成的第一卷积层和由[A_1,…,A_n]组成的第二卷积层,其中每个滤波器基或基元的大小为pxhxw,p=c/s。使用滤波器基或基元对输入特征的每个分组进行卷积,得到大小为sxmxHxW(不考虑批处理的大小)的中间特征。之后,利用[A_1,…,A_n]对该中间特征进行卷积,得到该层输出结果。
同一模块或者子结构中不同的卷积层共享同一组滤波器基,即图7-1中的b图两个卷积层的滤波器基[B_1,…,B_m]为同一组滤波器基或基元。新的残差模块保留了原始残差模块中的激活函数ReLU和跨层结构。
图7-1所示的残差模块内的卷积层采用跨层连接,因此可通过控制每个模块或者子结构从整体滤波器基组中引入的滤波器基数量来进一步对卷积网络进行压缩。
具体的,如图7-2所示,对含有N个残差块(Residual Block,简称为ResBlock)的卷积神经网络,ResBlock为深度卷积网络中常用的一类结构,该结构由若干(通常为2-3个)卷积层级联,并在外侧添加从输入到输出的跨层连接构成。首先确定整体滤波器基组,然后对于第一个模块引入整体滤波器基组中前1/N的滤波器基,第二个模块引入整体滤波器基组中前2/N的滤波器基,……,最后一个模块引入整体滤波器基组,其中,整体滤波器基组是预设的。换言之,第二个模块中卷积层对应的第一卷积层中的基元包括第一个模块中卷积层对应的第一卷积层中的基元,第三个模块中卷积层对应的第一卷积层中的基元包括第二个模块中卷积层对应的第一卷积层中的基元,且第二个模块中卷积层对应的第一卷积层中的基元的个数与第一个模块中卷积层对应的第一卷积层中的基元个数之差,与第三个模块中卷积层对应的第一卷积层中的基元的个数与第二个模块中卷积层对应的第一卷积层中的基元个数的之差相同,依次类推,最后一个模块中卷积层对应的第一卷积层中的基元为上述整体滤波器基组中的基元。
再换言之,第一个模块中卷积层对应的第一卷积层中的基元的个数、第二个模块中卷积层对应的第一卷积层中的基元的个数、第三个模块中卷积层对应的第一卷积层中的基元的个数,…最后一个模块中卷积层对应的第一卷积层中的基元的个数为等差数列。
按照本发明的实施流程与现有的,在公开的数据集Set5、Set14、B100和Urban100上进行了超分辨率重建测试。
比较对象如下:
EDSR:一种多残差模块超分辨率卷积网络,作为待压缩网络,比较的基准(Baseline);
Factor:一种基于拓扑连接的卷积核分解方法,具体实现过程参见文件“M.Wang,B.Liu,and H.Foroosh.Factorized convolutional neural networks.In Proceedingsof the IEEE International Conference on Computer Vision,pages 545–553,2017”的相关描述,在此不再叙述;
Group:一种基于滤波器分组近似的卷积分解方法,具体实现过程参见文件“B.Peng,W.Tan,Z.Li,S.Zhang,D.Xie,and S.Pu.Extreme network compression viafilter group approximation.In Proceedings of the European Conference onComputer Vision,pages 300–316,2018”的相关描述,在此不再叙述。
表1给出本了采用本发明实施例对超分辨率卷积网络进行参数压缩过程中采用的第一卷积层中滤波器基或基元个数m对增强深度超分辨率网络(Enhanced Deep Super-Resolution Network,EDSR)压缩结果的影响。
表1
由上表1可以看出,本发明的方法可以有效地降低原始网络的参数量,并且滤波器基的数目越小,网络的压缩量越大。表中“Share”表示是否采用滤波器基共享模式。实验结果表明,参数共享策略不会影响网络的整体性能。
表2和表3展示了本发明与比较对象的结果对比。其中表2展示了在简化的EDSR上,各个方法的性能比较。表3展示了不同的超分辨率倍数下各个方法的比较结果。
表2
表2的对比结果表明,采用本发明的方案,在降低参数量的同时,与对比方案相比,重建的超分辨率卷积网络(即上述第二卷积神经网络)的性能有所提高。
表3
表3“Basis-S”表示在“Basis”基础上采用参数共享后的压缩网络。可以看到,在各个超分辨率重建倍数下,本发明均能起到降低参数量、保证超分辨率重建效果的作用,明显优于对比方法。
在另一个具体的实施例中,本发明的方法还可应用于非超分辨率重建网络的压缩任务。以处理图像分类任务中的DenseNet为例,说明本发明的架构。如图8和9所示,DenseNet中的主要模块为密集连接块(DenseBlock)。DenseBlock中的卷积层以Step为步长逐步增加输入通道数量。DenseNet由多个DenseBlock串联组成。
DenseBlock为深度卷积网络中常用的一类结构。如图8所示,该结构考虑了块中卷积层之间所有的前向连接关系。图中Concat表示将输入的特征在通道维进行堆叠。
为了对DenseNet进行压缩,本发明首先根据压缩比计算DenseNet中的每个卷积层通道为切分数,然后将DenseNet中的每个卷积层转换为由第一卷积层和第二卷积层表示的形式。第一卷积层由基元构成,第二卷积层由基元的系数构成。接下来确定第一卷积层中基元的共享方式。依据DenseNet特点,本发明首先将各个DenseNet中的卷积层分为多个独立的组,每个组中的卷积层共享同一组滤波器基或者同一个第一卷积层。然后,采用渐进式的参数共享策略,假设DenseNet中含有N个DenseBlock,第一个DenseBlock引入整体滤波器基组中前1/N的滤波器基,第二个DenseBlock引入整体滤波器基组中前2/N的滤波器基,……,最后的残差模块引入所有的滤波器基。以参数重建误差和分类误差作为损失函数,同时学习滤波器基(或基元)和滤波器基的系数,进而得到压缩后的DenseNet。
本节按照本发明实施流程,在公开的数据集CIFAR10上进行了图像分类测试。
比较对象为:
DenseNet:待压缩网络,比较的基准(Baseline);
K-means:基于K-means聚类的卷积网络压缩方法,具体实现过程参见文件“S.Son,S.Nah,and K.Mu Lee.Clustering convolutional kernels to compress deep neuralnetworks.In Proceedings of the European Conference on Computer Vision,pages216–232,2018”的相关描述,在此不再叙述。
Factor:一种基于拓扑连接的卷积核分解方法;
Group:一种基于滤波器分组近似的卷积分解方法。
表4给出本发明方法和其他方法的对比结果。
表4
由表4结果可以看出,在参数量与现有方法相当的情况下,本发明能够取得更低的错误率,甚至略优于原始分类网络。
可以看出,在本发明实施例的方案中,应用对滤波器通道维切分分解,并将切分后的滤波器基表示方式转换为卷积操作的方式进行网络压缩。首次将参数重建误差和分类误差相结合,通过学习的方式获得压缩表示关系,得到压缩后图像分类网络,保证了压缩图像分辨网络的精度。应用渐进式的参数共享策略确定压缩表示形式中的基元,在保证精度的同时,进一步降低卷积神经网络参数量。
参见图10,图10为本发明实施例提供的一种压缩装置的结构示意图。如图10所示,该压缩装置1000包括:
计算单元1001,用于根据第一卷积神经网络中每个卷积层的参数压缩比计算得到所述每个卷积层通道维的切分数s;
转换单元1002,用于将第一卷积神经网络中每个卷积层转换为第一卷积层和第二卷积层,其中,第一卷积层由基元组成,第二卷积层由基元的系数组成;
确定单元1003,用于根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,每个卷积层对应的第一卷积层中基元的大小是基于该卷积层通道维的切分数s得到的;根据第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式、基元的个数及对应的第二卷积层确定重建卷积神经网络模型;
训练单元1004,用于基于重建损失函数对重建卷积神经网络模型进行训练,以得到第二卷积神经网络。
在一个可行的实施例中,在根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式的方面,确定单元1003具体用于:
根据第一卷积神经网络中的每个卷积层对应的第一卷积层中基元的大小,对第一卷积神经网络的卷积层进行分组,以得到多组卷积层,该多组卷积层中的每组包含的卷积层对应的基元的大小相同;
其中,多组卷积层的中第k组包含的卷积层对应的第一卷积层中的基元相同,或者;多组卷积层中第k组内输入数据相同的卷积层对应的第一卷积层中的基元相同,或者;多组卷积层中的第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同;
其中,第k组卷积层为多组卷积层中的任一组,第k组卷积层对应的第一卷积层中包含的基元的个数为m,该m为预设值。
在一个可行的实施例中,若第k组包括M个子结构,M个子结构中的一个子结构包括一个或多个卷积层,多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同,包括:
M个子结构中的第t个子结构包括的卷金层对应的第一卷积层中的基元相同,且第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元,
其中,t大于1且不大于M,M为大于1的整数。
在一个可行的实施例中,第t个子结构中卷积层对应的第一卷积层中的基元个数与第t-1个子结构中卷积层对应的第一卷积层中的基元个数之差与第t-1个子结构中卷积层对应的第一卷积层中的基元个数与第t-2个子结构中卷积层对应的第一卷积层中的基元个数之差相等。
在一个可行的实施例中,在一个可行的实施例中,重建损失函数是基于参数重建误差和第一卷积神经网络的损失函数确定的。
其中,参数重建误差为所述第一卷积神经网络中每个卷积层参数的重建误差之和。
需要说明的是,上述各单元(计算单元1001、转换单元1002、确定单元1003和训练单元1004)用于执行上述方法的相关步骤。比如计算单元1001用于执行步骤S101的相关内容,转换单元1002用于执行步骤S1002的相关内容,确定单元1003用于执行步骤S103和S104的相关内容,训练单元1004用于执行步骤S104的相关内容。
在本实施例中,压缩装置1000是以单元的形式来呈现。这里的“单元”可以指特定应用集成电路(application-specific integrated circuit,ASIC),执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。此外,以上计算单元1001、转换单元1002、确定单元1003和训练单元1004可通过图11所示的压缩装置的处理器1101来实现。
如图11所示压缩装置1100可以以图11中的结构来实现,该压缩装置1100包括至少一个处理器1101,至少一个存储器1102以及至少一个通信接口1103。所述处理器1101、所述存储器1102和所述通信接口1103通过所述通信总线连接并完成相互间的通信。
处理器1101可以是通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
通信接口1103,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
存储器1102可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器1102用于存储执行以上方案的应用程序代码,并由处理器501来控制执行。所述处理器1101用于执行所述存储器1102中存储的应用程序代码。
存储器1102存储的代码可执行以上提供的一种卷积神经网络压缩方法,比如:根据第一卷积神经网络中每个卷积层的参数压缩比计算得到每个卷积层通道维的切分数s;将第一卷积神经网络中每个卷积层转换为第一卷积层和第二卷积层,其中,第一卷积层由基元组成,第二卷积层由基元的系数组成;根据每个卷积层对应的第一卷积层中基元的大小确定第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,每个卷积层的基元的大小是基于该卷积层通道维的切分数s得到的;根据第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式、基元的个数及第二卷积层确定重建卷积神经网络模型;基于重建损失函数对重建卷积神经网络模型进行训练,以得到第二卷积神经网络。
图12,是本发明实施例提供的一种芯片硬件结构图。图1-3中所示的基于卷积神经网络的算法可以在图12所示的NPU芯片中实现。
神经网络处理器NPU 50作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路50,控制器504控制运算电路503提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路503内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路503是二维脉动阵列。运算电路503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路503是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器502中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器501中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器508accumulator中。
向量计算单元507可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元507可以用于神经网络中非卷积/非FC层的网络计算,如池化(Pooling),批归一化(Batch Normalization),局部响应归一化(Local Response Normalization)等。
在一些实现种,向量计算单元能507将经处理的输出的向量存储到统一缓存器506。例如,向量计算单元507可以将非线性函数应用到运算电路503的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元507生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路503的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器506用于存放输入数据以及输出数据。
权存储单元访问控制器505(Direct Memory Access Controller,DMAC)将外部存储器中的输入数据搬运到输入存储器501和/或统一存储器506、将外部存储器中的权重数据存入权重存储器502,以及将统一存储器506中的数据存入外部存储器。
总线接口单元(Bus Interface Unit,BIU)510,用于通过总线实现主CPU、DMAC和取指存储器509之间进行交互。
与控制器504连接的取指存储器(instruction fetch buffer)509,用于存储控制器504使用的指令;
控制器504,用于调用指存储器509中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器506,输入存储器501,权重存储器502以及取指存储器509均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,简称DDR SDRAM)、高带宽存储器(High Bandwidth Memory,HBM)或其他可读可写的存储器。
其中,主CPU用于执行步骤S101-S103中的相关内容,NPU50用于执行步骤S104的相关内容,在此不再叙述。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种卷积神经网络的压缩方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种卷积神经网络的压缩方法,其特征在于,包括:
根据第一卷积神经网络中每个卷积层的参数压缩比计算得到所述每个卷积层通道维的切分数s;
将所述第一卷积神经网络中每个卷积层转换为第一卷积层和第二卷积层,其中,所述第一卷积层由基元组成,所述第二卷积层由基元的系数组成,
根据所述每个卷积层对应的第一卷积层中基元的大小确定所述第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,所述每个卷积层对应的第一卷积层中基元的大小是基于该卷积层通道维的切分数s得到的;
根据所述第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式、所述基元的个数及对应的第二卷积层确定重建卷积神经网络模型;基于重建损失函数对所述重建卷积神经网络模型进行训练,以得到第二卷积神经网络。
2.根据权利要求1所述的方法,其特征在于,所述根据所述每个卷积层的基元的大小确定所述第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,包括:
根据所述第一卷积神经网络中每个卷积层对应的第一卷积层中基元的大小,对所述第一卷积神经网络的卷积层进行分组,以得到多组卷积层,所述多组卷积层中的每组包含的卷积层对应的基元的大小相同;
其中,所述多组卷积层中第k组包含的卷积层对应的第一卷积层中的基元相同,或者;
所述多组卷积层中第k组内输入数据相同的卷积层对应的第一卷积层中的基元相同,或者;
所述多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同;
所述第k组为所述多组卷积层中的任一组。
3.根据权利要求2所述的方法,其特征在于,若所述多组卷积层中的第k组包括M个子结构,所述M个子结构中的每个子结构包括一个或多个卷积层,所述多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同,包括:
所述M个子结构中的第t个子结构包括的卷积层对应的第一卷积层中的基元相同,且所述第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元,
其中,所述t大于1且不大于M,所述M为大于1的整数。
4.根据权利要求3所述的方法,其特征在于,所述第t个子结构中卷积层对应的第一卷积层中的基元个数与所述第t-1个子结构中卷积层对应的第一卷积层中的基元个数之差与所述第t-1个子结构中卷积层对应的第一卷积层中的基元个数与第t-2个子结构中卷积层对应的第一卷积层中的基元个数之差相等。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述重建损失函数是基于参数重建误差和所述第一卷积神经网络的损失函数确定的。
6.一种卷积神经网络压缩装置,其特征在于,包括:
计算单元,用于根据第一卷积神经网络中每个卷积层的参数压缩比计算得到所述每个卷积层通道维的切分数s;
转换单元,用于将所述第一卷积神经网络中每个卷积层转换为第一卷积层和第二卷积层,其中,所述第一卷积层由基元组成,所述第二卷积层由基元的系数组成,
确定单元,用于根据所述每个卷积层对应的第一卷积层中基元的大小确定所述第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式,所述每个卷积层对应的第一卷积层中基元的大小是基于该卷积层通道维的切分数s得到的;根据所述第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式、所述基元的个数及对应的第二卷积层确定重建卷积神经网络模型;
训练单元,用于基于重建损失函数对所述重建卷积神经网络模型进行训练,以得到第二卷积神经网络。
7.根据权利要求6所述的装置,其特征在于,在所述根据所述每个卷积层的基元的大小确定所述第一卷积神经网络中各个卷积层对应的第一卷积层中基元的共享方式的方面,所述确定单元具体用于:
根据所述第一卷积神经网络中每个卷积层对应的第一卷积层中基元的大小,对所述第一卷积神经网络的卷积层进行分组,以得到多组卷积层,所述多组卷积层中的每组包含的卷积层对应的基元的大小相同;
其中,所述多组卷积层中第k组包含的卷积层对应的第一卷积层中的基元相同,或者;
所述多组卷积层中第k组内输入数据相同的卷积层对应的第一卷积层中的基元相同,或者;
所述多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同;
所述第k组为所述多组卷积层中的任一组。
8.根据权利要求7所述的装置,其特征在于,若所述多组卷积层中的第k组包括M个子结构,所述M个子结构中的每个子结构包括一个或多个卷积层,所述多组卷积层中第k组内属于同一子结构的卷积层对应的第一卷积层中的基元相同,包括:
所述M个子结构中的第t个子结构包括的卷积层对应的第一卷积层中的基元相同,且所述第t个子结构中卷积层对应的第一卷积层中的基元包含第t-1个子结构中卷积层对应的第一卷积层中的基元,
其中,所述t大于1且不大于M,所述M为大于1的整数。
9.根据权利要求8所述的装置,其特征在于,所述第t个子结构中卷积层对应的第一卷积层中的基元个数与所述第t-1个子结构中卷积层对应的第一卷积层中的基元个数之差与所述第t-1个子结构中卷积层对应的第一卷积层中的基元个数与第t-2个子结构中卷积层对应的第一卷积层中的基元个数之差相等。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述重建损失函数是基于参数重建误差和所述第一卷积神经网络的损失函数确定的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910945937.9A CN112580772B (zh) | 2019-09-30 | 2019-09-30 | 卷积神经网络的压缩方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910945937.9A CN112580772B (zh) | 2019-09-30 | 2019-09-30 | 卷积神经网络的压缩方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112580772A CN112580772A (zh) | 2021-03-30 |
CN112580772B true CN112580772B (zh) | 2024-04-26 |
Family
ID=75117100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910945937.9A Active CN112580772B (zh) | 2019-09-30 | 2019-09-30 | 卷积神经网络的压缩方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112580772B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256544A (zh) * | 2016-12-29 | 2018-07-06 | 深圳光启合众科技有限公司 | 图片分类方法和装置、机器人 |
CN109063666A (zh) * | 2018-08-14 | 2018-12-21 | 电子科技大学 | 基于深度可分离卷积的轻量化人脸识别方法及系统 |
CN109426858A (zh) * | 2017-08-29 | 2019-03-05 | 京东方科技集团股份有限公司 | 神经网络、训练方法、图像处理方法及图像处理装置 |
WO2019095333A1 (zh) * | 2017-11-17 | 2019-05-23 | 华为技术有限公司 | 一种数据处理方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936913B2 (en) * | 2018-03-20 | 2021-03-02 | The Regents Of The University Of Michigan | Automatic filter pruning technique for convolutional neural networks |
-
2019
- 2019-09-30 CN CN201910945937.9A patent/CN112580772B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256544A (zh) * | 2016-12-29 | 2018-07-06 | 深圳光启合众科技有限公司 | 图片分类方法和装置、机器人 |
CN109426858A (zh) * | 2017-08-29 | 2019-03-05 | 京东方科技集团股份有限公司 | 神经网络、训练方法、图像处理方法及图像处理装置 |
WO2019095333A1 (zh) * | 2017-11-17 | 2019-05-23 | 华为技术有限公司 | 一种数据处理方法及设备 |
CN109063666A (zh) * | 2018-08-14 | 2018-12-21 | 电子科技大学 | 基于深度可分离卷积的轻量化人脸识别方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112580772A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110473141B (zh) | 图像处理方法、装置、存储介质及电子设备 | |
US10929746B2 (en) | Low-power hardware acceleration method and system for convolution neural network computation | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN113259665B (zh) | 一种图像处理方法以及相关设备 | |
CN110263913A (zh) | 一种深度神经网络压缩方法及相关设备 | |
KR20180073118A (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
CN112950471A (zh) | 视频超分处理方法、装置、超分辨率重建模型、介质 | |
US20210056357A1 (en) | Systems and methods for implementing flexible, input-adaptive deep learning neural networks | |
CN112219210B (zh) | 信号处理装置和信号处理方法 | |
CN112561028A (zh) | 训练神经网络模型的方法、数据处理的方法及装置 | |
CN114973049A (zh) | 一种统一卷积与自注意力的轻量视频分类方法 | |
CN114978189A (zh) | 一种数据编码方法以及相关设备 | |
CN112906853A (zh) | 模型自动优化的方法及装置、设备、存储介质 | |
WO2021147276A1 (zh) | 数据处理方法、装置及芯片、电子设备、存储介质 | |
CN114071141A (zh) | 一种图像处理方法及其设备 | |
WO2022022176A1 (zh) | 一种图像处理方法以及相关设备 | |
CN115409697A (zh) | 一种图像处理方法及相关装置 | |
CN113205137A (zh) | 一种基于胶囊参数优化的图像识别方法及系统 | |
CN112580772B (zh) | 卷积神经网络的压缩方法及装置 | |
CN114091648A (zh) | 基于卷积神经网络的图像分类方法、装置及卷积神经网络 | |
WO2021179117A1 (zh) | 神经网络通道数搜索方法和装置 | |
CN113887719B (zh) | 一种模型压缩方法及装置 | |
CN113919479B (zh) | 一种提取数据特征的方法和相关装置 | |
CN112733585B (zh) | 图像识别方法 | |
CN115913245A (zh) | 数据编码方法、数据解码方法以及数据处理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |