发明内容
本发明针对现有技术中的基于卷积神经网络的去雾模型进行硬件部署时,对硬件资源消耗较大缺点,提供了一种去雾模型的量化剪枝技术。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种去雾模型的量化剪枝方法,包括以下步骤:
获取去雾模型的原始参数数据,并基于所述原始参数数据确定边界数据;
获取含雾图像;
获取预先配置若干个量化比特数;
基于所述边界数据和所述原始参数数据,确定最佳量化比特数,并基于所述最佳量化比特数对所述去雾模型进行量化剪枝,具体步骤为:
基于所述边界数据和所述原始参数数据,计算对应量化比特数下的量化参数数据,并对所述量化参数数据进行反量化计算,获得相应的反量化参数数据;所述量化参数数据用于进行量化剪枝,反量化参数数据用于模拟基于量化参数数据进行量化剪枝后的量化模型的去雾效果;
基于所述反量化参数数据生成相应的去雾测试模型,利用所述含雾图像对所述去雾测试模型进行去雾效果测试,获得相应的测试结果,即,检验去雾测试模型对含雾图像的去雾处理,是否能达到预设的效果;
基于所得的测试结果,确定最佳量化比特数,并提取所述最佳量化比特数所对应的量化参数数据,基于所述量化参数数据对所述去雾模型进行量化剪枝,本发明中最佳量化比特数为,满足去雾效果的最低量化比特数。
针对现有量化技术中固定比特数的方案,本发明通过设置若干个量化比特数,筛选出满足去雾效果的最低量化比特数,利用FPGA可基于任意比特数计算的特点,在模型部署时能够充分节省硬件资源。
针对量化过程中会损失精度,而反量化过程不会对精度造成影响的特点,通过对原始参数数据进行量化、反量化操作后,利用所得的反量化参数数据进行去雾效果的模拟,从而在对去雾模型进行量化、剪枝、硬件部署前即可快速、准确的确定最佳量化比特数。
作为一种可实施方式,利用所述含雾图像对各去雾测试模型进行去雾效果测试,获得相应的测试结果的具体步骤为:
预先将所述含雾图像输入所述去雾模型,获得相应的去雾参照图;
将所述含雾图像输入相应的去雾测试模型,由所述去雾测试模型输出相应的去雾测试图;
对所述去雾测试图进行图像质量评价,和/或基于所述去雾参照图对所述去雾测试图进行图像质量评价,获得相应的测试结果。
作为一种可实施方式,基于量化参数数据对去雾模型进行量化剪枝的具体步骤为:
基于所述量化参数数据,对零值参数进行统计,获得零值分布数据和零率,所述零率用于指示零值参数的占比,零率=零值参数数量/参数总量;
当所述零率高于预设的零率阈值时,基于所述量化参数数据和所述零值分布数据,对所述去雾模型进行量化并进行核级和通道级的结构化剪枝,输出所得量化模型;
如无法进行核级或通道级的结构化剪枝,则基于所述量化参数数据对所述去雾模型进行量化,输出所得量化模型;
在实际剪枝过程中,可基于分布数据判断是否能够进行结构化剪枝;
否则,基于所述量化参数数据对所述去雾模型进行量化,输出所得量化模型。
现今常用的剪枝方式是迭代剪枝方式,此方式仅能实现单粒度下的剪枝,即该剪枝方式不能同时实现核级和通道级的结构化的同时剪枝,且此方式较为耗时。
此外,不同粒度下剪枝(如核级或通道级)之后,对剪枝后模型的硬件实现也是一个难点,因此,目前较为常见是通道级的结构化剪枝;
本发明是针对基于卷积神经网络的去雾模型进行量化剪枝,通过对零率和零值分布数据的设计,根据零率判断参数冗余程度,基于零值分布数据判定哪些是分布在核级和通道级中,然后基于现有的模型重构技术,重构剪枝后的等价模型,实现核级(kernel)和通道级(channel)的结构化的同时剪枝,从而能够进一步节省硬件资源和提高硬件终端部署效率。
作为一种可实施方式,计算对应量化比特数下的量化参数数据,并对所述量化参数数据进行反量化计算,获得相应的反量化参数数据的具体步骤为:
基于目标量化比特数确定最大量化值和最小量化值;
基于所述边界数据、所述最大量化值和所述最小量化值进行计算,获得相应的尺度因子数据;
基于所述边界数据、所述最大量化值和所述尺度因子数据进行计算,获得相应的零点数据;
基于所述尺度因子数据和所述零点数据对原始参数数据进行量化平移,获得相应的量化参数数据;
对所述量化参数数据进行反量化,获得相应的反量化参数数据;
其中,所述原始参数数据、所述边界数据和所述反量化参数数据的数据类型均为单精度浮点型,所述零点数据和量化参数数据的数据类型为整数。
作为一种可实施方式:
所述原始参数数据包括若干单元参数数据;
所述边界数据若干边界对,所述边界对与所述单元参数数据一一对应,所述边界对包括第一边界和第二边界;
获取所述单元参数数据和所述边界对的具体步骤为:
以卷积层为划分节点,对去雾模型进行划分,获得若干个网络单元;
获取各网络单元所对应的单精度浮点参数,获得相应的单元参数数据;
基于各单元参数数据,确定相应的边界对。
去雾模型中提取特征的结构为卷积层,其他如池化层或者激活函数都是附属计算部分,而非核心部分,因此,本发明在量化时主要关注卷积部分,且由于每个卷积层的重要性不同,数据分布不同,其边界对必然也是不相同的,故本发明以卷积层为划分节点,对去雾模型进行划分。
进一步地,基于当前网络单元的单元参数数据,确定相应的边界对的具体步骤为:
基于当前网络单元的单元参数数据,确定第一取值区间和第二取值区间,其中第一取值区间用于指示第一边界的取值范围,第二取值区间用于指示第二边界的取值范围;
分别将第一取值区间和第二取值区间作为目标区间;
基于所述目标区间划分若干个分布区间,基于所述分布区间和所述单元参数数据进行迭代计算,获得各分布区间内的单元参数数据所对应的量化差异度,所述分布区间均落于所述目标区间中,且各分布区间的起点相同;
基于量化差异度最小时所对应的分布区间确定相应的边界值。
现有将单元参数数据的最大参数和最小参数作为边界对的方案,没有考虑离群值对量化结果的影响;
如基于单元参数数据的分布区间进行一次迭代,以获得对称的边界对,虽然考虑了离群值对量化结果的影响,但对称的边界并不符合实际中非对称模型参数数据,本发明基于两个取值区间,进行两次迭代计算,以获得非对称的第一边界和第二边界,更贴合实际的模型参数分布,能够优化各量化比特数对应的量化剪枝效果,进一步降低满足去雾效果的最低比特数,进一步节省硬件资源。
进一步地,当前迭代过程中计算量化差异度的具体步骤为:
基于所述分布区间,从单元参数数据中提取当前迭代过程中所采用的单精度浮点参数数据,获得计算数据;
对所述计算数据进行归一化处理,获得相应的原始分布数据;
对所述计算数据进行映射处理,获得相应的量化数据;
对所述量化数据进行归一化处理,获得相应的量化分布数据;
基于所述原始分布数据和所述量化分布数据进行差异度计算,获得相应的量化差异度。
进一步地,确定当前迭代过程中所采用的分布区间的具体步骤为:
预先将目标区间等分为若干个子区间;
并基于目标量化比特数确定基准区间数;
基于当前迭代次数和所述基准区间数,确定累加区间数;
基于所述累加区间数,按序提取相应数量的子区间,获得相应的分布区间。
进一步地,确定所述第一取值区间和所述第二取值区间的具体步骤为:
获取所述单元参数数据中的最小参数r min 和最大参数r max ;
基于所述最小参数r min 和所述最大参数r max 确定第一定位点T min 和第二定位点T max ,其中, 当|r min |≤|r max |时,令T min = r min ,T max = r max ,否则,令T min = r max ,T max = r min ;
当|r min |≤|r max |时,将[T min ,0]作为第一取值区间,将[-T min , T max ]作为第二取值区间;
当|r min |>|r max |时,将[T max ,-T min ]作为第一取值区间,将[0,T min ]作为第二取值区间。
本发明通过将[r min , r max ]分为[0, T min ]和[-T min , T max ]两个取值区间,能够减少迭代计算所采用的参数,从而缩短计算时间;
本发明还提出一种去雾模型的量化剪枝***,包括:
预处理模块,用于获取去雾模型的原始参数数据,并基于所述原始参数数据确定边界数据;
图像获取模块,用于获取含雾图像;
配置模块,用于获取预先配置若干个量化比特数;
量化剪枝模块,用于基于所述边界数据和所述原始参数数据,确定最佳量化比特数,并基于所述最佳量化比特数对所述去雾模型进行量化剪枝;
所述量化剪枝模块包括:
量化反量化单元,用于基于所述边界数据和所述原始参数数据,计算对应量化比特数下的量化参数数据,并对所述量化参数数据进行反量化计算,获得相应的反量化参数数据;
效果检测单元,用于基于所述反量化参数数据生成相应的去雾测试模型,利用所述含雾图像对所述去雾测试模型进行去雾效果测试,获得相应的测试结果;
量化剪枝单元,用于基于所得的测试结果,确定最佳量化比特数,并提取所述最佳量化比特数所对应的量化参数数据,基于所述量化参数数据对所述去雾模型进行量化剪枝。
本发明由于采用了以上技术方案,具有显著的技术效果:
本发明通过对原始参数数据进行量化、反量化操作后,利用所得的反量化参数数据进行去雾效果的模拟,能够快速、准确的确定最佳量化比特数,以在满足去雾效果的前提下,以最低比特数进行模型量化剪枝和硬件部署,从而节省硬件资源。
本发明通过对零率和零值分布数据的设计,根据零率判断参数冗余程度,基于零值分布数据进行核级和通道级的结构化剪枝,从而能够进一步节省硬件资源和提高硬件终端部署效率。
本发明基于两个取值区间,进行两次迭代计算,能够获得更贴合实际的模型参数分布的非对称边界对,从而优化各量化比特数对应的量化剪枝效果,进一步降低满足去雾效果的最低比特数,进一步节省硬件资源。
具体实施方式
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
实施例1、去雾模型的量化剪枝方法,如图1所示,包括以下步骤:
S100、数据准备:
S110、获取去雾模型的原始参数数据,并基于所述原始参数数据确定边界数据;
所述去雾模型为预先训练获得的单精度数据类型(float)的卷积神经网络模型。
所述原始参数数据包括若干单元参数数据。
所述边界数据若干边界对,所述边界对与所述单元参数数据一一对应,所述边界对包括第一边界和第二边界,其中第一边界小于第二边界。
具体包括以下步骤:
S111、以卷积层为划分节点,对去雾模型进行划分,获得若干个网络单元;
本领域技术人员可根据实际情况,自行设定划分规则,使得每个网络单元均包含一层卷积层即可,本说明书不对其进行详细限定。
S112、获取各网络单元所对应的单精度浮点参数,获得相应的单元参数数据。
S113、基于各单元参数数据,确定相应的边界对。
本实施例中,将所述单元参数数据中的最小参数r min 作为第一边界α,最大参数r max 作为第二边界β。
S120、获取含雾图像;
S130、获取预先配置若干个量化比特数;
本领域技术人员可根据实际需要,自行配置量化比特数的数量,以及各量化比特数的取值,本实施例中量化比特数的取值范围为[2,8]。
S200、基于所述边界数据和所述原始参数数据,确定最佳量化比特数,并基于所述最佳量化比特数对所述去雾模型进行量化剪枝;
所述最佳量化比特数为,满足去雾效果的最低量化比特数。
具体包括以下步骤:
S210、基于所述边界数据和所述原始参数数据,计算对应量化比特数下的量化参数数据,并对所述量化参数数据进行反量化计算,获得相应的反量化参数数据;
在神经网络训练和推理阶段,通常使用float数据类型,量化指将训练所得神经网络模型中的float数据映射为相应整型数据,反量化为量化的逆过程。
具体包括以下步骤:
S211、基于目标量化比特数确定最大量化值q max 和最小量化值q min ;
通过最大量化值q max 和最小量化值q min 可确定目标量化比特数下的量化参数数据的取值范围,计算公式为:
q
max
=2
Bit-1
-1;
q
min
=-2
Bit-1
;
其中,Bit为目标量化比特数,最大量化值q max 和最小量化值q min 的数据类型为整数。
S212、基于所述边界数据、所述最大量化值和所述最小量化值进行计算,获得相应的尺度因子数据;
所述尺度因子数据包括与所述网络单元一一对应的尺度因子,本实施例中,计算目标网络单元所对应的尺度因子S的公式为:
S=(β-α)/(q
max
- q
min
);
其中,α为目标网络单元的第一边界,β为目标网络单元的第二边界,第一边界α和第二边界β的数据类型为单精度浮点型。
S213、基于所述边界数据、所述最大量化值和所述尺度因子数据进行计算,获得相应的零点数据;
所述零点数据包括与所述网络单元一一对应的零点Z,本实施例中,计算目标网络单元所对应的零点Z的公式为:
Z=round(q
max
-β/ S)
其中,round(*)表示取整函数,β为目标网络单元的第二边界,S为目标网络单元的尺度因子,零点Z的数据类型为单精度浮点型。
S214、基于所述尺度因子数据和所述零点数据对原始参数数据进行量化平移,获得相应的量化参数数据;
原始参数数据包括各网络单元所对应的单精度浮点参数;
量化参数数据包括与所述单精度浮点参数一一对应的整型参数;
本实施例中,基于单精度浮点参数所在网络单元的尺度因子和零点,对所述单精度浮点参数进行量化平移,获得相应的整型参数,计算公式为:
q=round(r/ S+Z)-Z;
其中,r为目标单精度浮点参数,S为目标单精度浮点参数所在网络单元所对应的尺度因子,Z为目标单精度浮点参数所在网络单元所对应的零点,q为目标单精度浮点参数所对应的整型参数。
S215、对所述量化参数数据进行反量化,获得相应的反量化参数数据;
反量化参数数据包括与所述整型参数一一对应的反量化参数,所述反量化参数的数据类型为单精度浮点型;
反量化参数的计算公式为:
r r = q×S;其中,q为目标整型参数,S为目标整型参数所在网络单元所对应的尺度因子,r r 为目标整型参数所对应的反量化参数,×为乘运算。
S220、基于所述反量化参数数据生成相应的去雾测试模型,利用所述含雾图像对所述去雾测试模型进行去雾效果测试,获得相应的测试结果;
具体包括以下步骤:
S221、基于所述反量化参数数据生成相应的去雾测试模型;
即,将所生成的反量化参数数据作为去雾模型的模型参数,获得相应的去雾测试模型;
所述去雾测试模型用于模拟去雾模型被量化后的去雾效果。
S222、将所述含雾图像输入相应的去雾测试模型,由所述去雾测试模型输出相应的去雾测试图。
S223、对所述去雾测试图进行图像质量评价,和/或基于去雾参照图对所述去雾测试图进行图像质量评价,获得相应的测试结果;
所述去雾参照图的获取方式为:
将所述含雾图像输入所述去雾模型,由所述去雾模型对所述含雾图像进行去雾处理,由所述去雾模型输出相应的去雾参照图。
本领域技术人员可采用现有已公开的一种或多种图像质量评价方法,基于去雾参照图对所得去雾测试图进行质量评价,本说明书不对其进行详细限定。
S230、基于所得的测试结果,确定最佳量化比特数。
本领域技术人员可根据实际需要,自行设定最佳量化比特数的确定方法,例如:
按照量化比特数从低到高的顺序,依次测试各量化比特数所对应的去雾测试模型的去雾效果,获得相应的测试结果,直至基于所述测试结果判断所述去雾测试模型达到预设的去雾效果,将本次测试过程所采用的量化比特数作为最佳量化比特数;
或,分别测试各量化比特数所对应的去雾测试模型的去雾效果,获得相应的测试结果,汇总所有测试结果,基于所述测试结果变化趋势确定最佳量化比特数。
现有模型量化技术中,往往固定量化比特数,且由于处理器处理一个字节(1byte=8bit)较为容易,故本领域以8 bit作为量化比特数,对卷积神经网络模型进行量化剪枝;
但对于可任意bit(比特)计算的FPGA来说,如果固定以8bit进行模型量化剪枝,无法充分降低模型部署时所需的硬件资源;
对于量化比特数而言,量化比特数越小,量化后的卷积神经网络模型进行硬件部署是所需的硬件资源越少,但是由于量化比特数较小时,将限制数值可表示的范围,使得所得量化参数数据与原始参数数据的分布存在较大差异,从而影响最终的推断结果,故本领域技术人员选择最佳量化比特数时,需基于每一个量化比特数,对模型进行量化剪枝及硬件部署,并对部署后的模型进行去雾效果测试,以筛选出即满足去雾效果,又能有效节省硬件资源的方案,工作量较大,部署成本高。
针对量化过程存在舍入误差,故导致精度损失,将对去雾效果造成影响,而反量化过程不存在精度损失的特点,本实施例通过计算量化比特数的量化参数数据,并对量化参数数据进行反量化,基于所得反量化参数数据进行去雾效果的模拟测试,在对去雾模型进行量化、剪枝以及部署前,即可确定满足去雾效果的最低量化比特数。
S240、如图1中的虚线所示,提取所述最佳量化比特数所对应的量化参数数据,基于所述量化参数数据对所述去雾模型进行量化剪枝;
具体步骤为:
S241、基于所述量化参数数据,对零值参数进行统计,获得零值分布数据和零率,所述零率用于指示零值参数的占比;
零率=零值参数数量/参数总数;
零率用于指示量化后模型存在的冗余程度;
零值分布数据用于展示零值参数在核级和通道级的分布情况,以便于进行核级和通道级的结构化剪枝。
S242、当所述零率高于预设的零率阈值时,基于所述量化参数数据和所述零值分布数据,对所述去雾模型进行量化并进行核级和通道级的结构化剪枝,输出所得量化模型;
结构化剪枝后能够节省硬件并且加速运算,而非结构化剪枝后会使得模型参数稀疏化(或者叫做矩阵稀疏化),并不能起到节省硬件资源和加速的目的;
本实施例中基于零值分布数据判断核级和通道级中零值参数的分布情况,对所述去雾模型进行量化并进行核级和通道级的结构化剪枝;
由于卷积运算本质为乘法累加运算,剪枝的目的是去除量化后模型参数为零的运算,以达到节省硬件资源的目的,故可基于零值分布数据,通过修改输出通道数和剔除乘法累加求和为0部分,实现核级(kernel)和通道级(channel)的结构化的同时剪枝,从而能够进一步节省硬件资源和提高硬件终端部署效率,相较于其他迭代式的剪枝方法,该方法简单易行,剪枝后对模型性能几乎没有影响且不需要再训练。
注,即使零率高于预设的零率阈值,如零值参数未分布于核级和通道级中时,仅基于所述量化参数数据对所述去雾模型进行量化。
S243、当所述零率小于等于预设的零率阈值时,基于所述量化参数数据对所述去雾模型进行量化,输出所得量化模型;
当所述零率小于等于预设的零率阈值时,表示冗余程度低,无需进行剪枝处理,故此时直接基于量化参数数据对去雾模型进行量化,生成并输出相应的量化模型用于硬件部署。
实施例2、将实施例1中确定边界对的方案进行更改,其余均等同于实施例1。
所述边界对包括第一边界和第二边界,本实施例中,基于各单元参数数据,确定相应的边界对的具体步骤为:
S10、基于当前网络单元的单元参数数据,确定第一取值区间和第二取值区间。
第一取值区间用于指示第一边界的取值范围,第二取值区间用于指示第二边界的取值范围。
具体步骤包括:
S11、获取所述单元参数数据中的最小参数r min 和最大参数r max ;
S12、基于所述最小参数r min 和所述最大参数r max 确定第一取值区间和第二取值区间;
本领域技术人员可根据实际需要自行设定第一取值区间和第二取值区间的确定方式,例如:
方案一:将[0, r min ]作为第一取值区间,将[0,r max ]作为第二取值区间;
方案二:
基于所述最小参数r min 和所述最大参数r max 确定第一定位点T min 和第二定位点T max ,其中, 当|r min |≤|r max |时,令T min = r min ,T max = r max ,否则,令T min = r max ,T max = r min ;
当|r min |≤|r max |时,将[T min ,0]作为第一取值区间,将[-T min , T max ]作为第二取值区间;
当|r min |>|r max |时,将[-T min , T max ]作为第一取值区间,将[0,T min ]作为第二取值区间。
本实施例采用上述方案二确定第一取值区间与第二取值区间,在实际计算过程中,还可直接基于[0,T min ]确定边界值k 1 ,基于[-T min , T max ]确定边界值k 2 ,令第一边界值α= min(k 1 ,k 2 ),β=max(k 1 ,k 2 )。
S20、分别将第一取值区间和第二取值区间作为目标区间,基于所述目标区间划分若干个分布区间,基于所述分布区间和所述单元参数数据进行迭代计算,获得各分布区间内的单元参数数据所对应的量化差异度;
所述分布区间均落于所述目标区间中,且各分布区间的起点相同。
第一边界和第二边界的迭代计算过程相同,本领域技术人员可自行限定第一边界和第二边界的计算顺序,本说明书不对其进行详细限定。
具体步骤为:
S21、将目标区间等分为若干个子区间,并基于目标量化比特数确定基准区间数;
本实施例中,基准区间数的取值为2 Bit-1 ,Bit表示目标量化比特数;
本领域技术人员可根据实际需要自行设定等分所得子区间的数量,子区间的数量大于2倍的基准区间数即可,子区间的数量越多,计算所得的边界值的精度越高;
本实施例中子区间的数量设为2048。
S22、基于当前迭代次数和所述基准区间数,确定累加区间数;
本领域技术人员可根据实际情况自行设置区间值的累计规则,本实施例不对其进行详细限定;
例如:
方式1:将上一次迭代中所采用的累加区间数作为初始值,基于所述初始值和预设的累加步长生成当前迭代过程所对应的累加区间数,第一次迭代计算时,将基准区间数作为初始值;
方式2:基于基准区间数、当前迭代次数和预设的累加步长生成累加区间数。
本实施例采用方式1。
S23、基于所述累加区间数,按序提取相应数量的子区间,获得相应的分布区间。
即,当累加区间数为i时,提取前i个子区间,获得分布区间。
S24、基于所述分布区间提取当前迭代过程中所采用的单元参数数据,获得计算数据;
S25、对所述计算数据进行归一化处理,获得相应的原始分布数据;
S26、对所述计算数据进行映射处理,获得相应的量化数据;
本实施例采用quantize函数进行映射处理;
S27、对所述量化数据进行归一化处理,获得相应的量化分布数据;
S28、基于所述原始分布数据和所述量化分布数据进行差异度计算,获得相应的量化差异度。
本实施例采用KL散度度量公式进行差异度计算。
S30、基于量化差异度最小时所对应的累加区间数确定相应的边界值:
计算公式为:
K=(i+0.5)×(t/l);
其中,i为量化差异度最小时所对应的累加区间数;
t表示目标区间的跨度值,当目标区间为[0, T min ]时,t=T min ,当目标区间为[-T min , T max ]时,t= T max -(- T min )= T max +T min ;
l为预设的子区间的数量,本实施例中将目标区间等分为2048个子区间,故l= 2048。
S40、基于边界值生成相应的第一边界或第二边界;
即:
当目标区间为第一取值区间时,基于所得边界值生成第一边界α;
当目标区间为第二取值区间时,基于所得边界值生成第二边界β。
通过上述步骤重新生成各网络单元所对应的边界对,实现r min ≤α≤β≤r max ,相对实施例1中边界区间[r min ,r max ],本实施例所获得非对称的边界区间[α,β]范围更符合实际的数据分布,能够解决离群值对硬件部署量化时的影响,进一步优化量化结果。
案例:
使用pytorch深度学习库和python语言,搭建AOD-Net去雾模型,并在公开RESIDE数据集上训练和测试,训练所得的去雾模型的模型参数类型为单精度浮点型(float)。
以卷积层为划分节点,对所述去雾模型进行划分,获得5个网络单元,每个网络单元中具有一个卷积层;
统计各网络单元中的单精度浮点参数,并按照实施例2中步骤S10至S40,计算各网络单元所对应的第一边界α和第二边界β,结果如下表所示:
表1
网络单元 |
最小参数<i>r</i><sub><i>min</i></sub> |
最大参数<i>r</i><sub><i>max</i></sub> |
第一边界<i>α</i> |
第二边界<i>β</i> |
Layer 1 |
-0.0815 |
0.4654 |
-0.0810 |
0.3100 |
Layer2 |
-0.0244 |
0.0734 |
-0.0100 |
0.0500 |
Layer3 |
-0.0316 |
0.0868 |
-0.0300 |
0.0800 |
Layer4 |
-0.0248 |
0.0736 |
-0.0130 |
0.0600 |
Layer5 |
-0.0181 |
0.0754 |
-0.0041 |
0.0590 |
基于第一边界α和第二边界β,按照步骤S200,分别对2bit、3 bit、4bit、5bit、6bit、7bit和8bit所对应的量化参数数据和反量化参数数据,以对各量化比特数所对应的去雾效果和剪枝率进行比对。
去雾效果比对:
基于反量化参数数据生成各量化比特数所对应的去雾测试模型;
获取含雾图像和参考去雾图,其中参考去雾图为由去雾模型对该含雾图像进行处理后所得的去雾图像。
将含雾图像分别输入各去雾测试模型,获得相应的去雾测试图。
本案例选取图像均值、图像标准差、平均梯度、峰值信噪比(Peak Signal toNoise Ratio, PSNR)、结构相似性(Structural Similarity, SSIM),组成联合评价指标,其中,图像均值、图像标准差和平均梯度为针对去雾测试图本身图像质量的评价指标,PSNR和SSIM是对比参考去雾图像与去雾测试图所得的评价指标;
基于联合评价指标量化bit数对去雾效果的影响,本案例中通过对预设的评估数据集(50张去雾图片)取平均方式,统计结果如图2所示,图2中SSIM的评分从左至右依次为0.99、0.99、0.99、0.99、0.98、0.95、0.75。
参照图4可知,本案例中量化比特数在4bit及以上时,数据波动较小,说明量化对去雾的影响较小;而当量化比特数低于4bit时,数据波动较大,这也从侧面印证了主观视觉的判断。因此,综合主客观评价,本发明能够实现最低4bit的量化,能够实现节省硬件资源的目的。
注,将表1中的最小参数r min 最大参数r max 作为边界数据,按照上述方法所确定的最佳量化比特数为5bit,即,实施例1所公开的方案能够实现最低5bit的量化。
剪枝率比对:
基于各量化比特数所对应的量化参数数据,进行零值参数统计,获得零率和零值分布数据,本案例中4bit所对应的零率为59.06%,基于零值分布数据进行核级和通道级的结构化剪枝后,结构与参数的变化如下表所示:
表2
剪枝对象 |
未剪枝结构 |
剪枝后结构 |
被剪参数量 |
Conv1 |
3×3 |
3×3 |
0 |
Conv2 |
3×3×3×3 |
1×3×3×3 |
54 |
Conv3 |
3×6×5×5 |
2×4×5×5 |
250 |
Conv4 |
3×6×7×7 |
2×3×7×7 |
588 |
Conv5 |
3×12×3×3 |
3×8×3×3 |
108 |
由上可知,共计减去1000个零值,剪枝率约为56.8%(=1000/1761),能直接节省约31.3 Kbits(=1000×32 bit / 1024)的模型参数的存储资源。
实施例3、一种去雾模型的量化剪枝***,如图3所示,包括:
预处理模块100,用于获取去雾模型的原始参数数据,并基于所述原始参数数据确定边界数据;
图像获取模块200,用于获取含雾图像;
配置模块300,用于获取预先配置若干个量化比特数;
量化剪枝模块400,用于基于所述边界数据和所述原始参数数据,确定最佳量化比特数,并基于所述最佳量化比特数对所述去雾模型进行量化剪枝;
参照图4,所述量化剪枝模块400包括:
量化反量化单元410,用于基于所述边界数据和所述原始参数数据,计算对应量化比特数下的量化参数数据,并对所述量化参数数据进行反量化计算,获得相应的反量化参数数据;
效果检测单元420,用于基于所述反量化参数数据生成相应的去雾测试模型,利用所述含雾图像对所述去雾测试模型进行去雾效果测试,获得相应的测试结果;
量化剪枝单元430,用于基于所得的测试结果,确定最佳量化比特数,并提取所述最佳量化比特数所对应的量化参数数据,基于所述量化参数数据对所述去雾模型进行量化剪枝。
进一步地,所述预处理模块包括:
划分单元,用于以卷积层为划分节点,对去雾模型进行划分,获得若干个网络单元;
统计单元,用于获取各网络单元所对应的单精度浮点参数,获得相应的单元参数数据;
边界计算单元,用于基于各单元参数数据,确定相应的边界对。
进一步地:
所述量化反量化单元包括:
范围确定单元,用于基于目标量化比特数确定最大量化值和最小量化值;
尺度因子计算单元,用于基于所述边界数据、所述最大量化值和所述最小量化值进行计算,获得相应的尺度因子数据;
零点计算单元,用于基于所述边界数据、所述最大量化值和所述尺度因子数据进行计算,获得相应的零点数据;
量化单元,用于基于所述尺度因子数据和所述零点数据对原始参数数据进行量化平移,获得相应的量化参数数据;
反量化单元,用于对所述量化参数数据进行反量化,获得相应的反量化参数数据。
进一步地:
所述图像获取模块,还用于将所述含雾图像输入所述去雾模型,获得相应的去雾参照图;
所述效果检测单元,包括:
图像生成单元,用于基于所述反量化参数数据生成相应的去雾测试模型,还用于将所述含雾图像输入相应的去雾测试模型,由所述去雾测试模型输出相应的去雾测试图;
评价单元,用于对所述去雾测试图进行图像质量评价,和/或基于所述去雾参照图对所述去雾测试图进行图像质量评价,获得相应的测试结果。
进一步地:
所述量化剪枝单元包括:
零值统计单元,用于基于所述量化参数数据,对零值参数进行统计,获得零值分布数据和零率,所述零率用于指示零值参数的占比;
处理单元,用于:
当所述零率高于预设的零率阈值时,基于所述量化参数数据和所述零值分布数据,对所述去雾模型进行量化并进行核级和通道级的结构化剪枝,输出所得量化模型;
否则,基于所述量化参数数据对所述去雾模型进行量化,输出所得量化模型。
进一步地:
边界计算单元包括:
区间确定单元,用于基于当前网络单元的单元参数数据,确定第一取值区间和第二取值区间,其中第一取值区间用于指示第一边界的取值范围,第二取值区间用于指示第二边界的取值范围;
迭代计算单元,用于基于所述目标区间划分若干个分布区间,基于所述分布区间和所述单元参数数据进行迭代计算,获得各分布区间内的单元参数数据所对应的量化差异度,所述分布区间均落于所述目标区间中,且各分布区间的起点相同,所述目标区间为第一取值区间或第二取值区间;
边界值生成单元,用于基于量化差异度最小时所对应的分布区间确定相应的边界值。
进一步地,所述迭代计算单元包括:
分布确定单元,用于确定当前迭代过程所对应的分布区间;
数据提取单元,用于从单元参数数据中提取当前迭代过程中所采用的单精度浮点参数数据,获得计算数据;
映射单元,用于对所述计算数据进行映射处理,获得相应的量化数据;
归一化单元,用于对所述计算数据进行归一化处理,获得相应的原始分布数据,还用于对所述量化数据进行归一化处理,获得相应的量化分布数据;
差异度计算单元,基于所述原始分布数据和所述量化分布数据进行差异度计算,获得相应的量化差异度。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是:
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
此外,需要说明的是,本说明书中所描述的具体实施例,其零、部件的形状、所取名称等可以不同。凡依本发明专利构思所述的构造、特征及原理所做的等效或简单变化,均包括于本发明专利的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。