本發(fā)明屬于人工智能,涉及一種生成標(biāo)準(zhǔn)圖像數(shù)據(jù)及利用標(biāo)準(zhǔn)圖像數(shù)據(jù)提高神經(jīng)網(wǎng)絡(luò)模型精度的量化方法、系統(tǒng)及應(yīng)用。
背景技術(shù):
1、現(xiàn)有對(duì)稱的基于范圍的線性量化編碼技術(shù)不能很好地適配fpga,其原因除了需要對(duì)每一張輸入圖像數(shù)據(jù)重新在線計(jì)算量化系數(shù)以及計(jì)算的量化系數(shù)為浮點(diǎn)數(shù)之外,對(duì)于圖像數(shù)據(jù)的預(yù)處理的方式的不同也會(huì)影響最終模型推理的性能。例如,中國(guó)發(fā)明專利申請(qǐng)《一種優(yōu)化int8的量化方法及系統(tǒng)與流程》(專利申請(qǐng)?zhí)枺篶n202010863091.7)。該方法主要提供了一種優(yōu)化int8的量化方法及系統(tǒng),利用獲取訓(xùn)練神經(jīng)網(wǎng)絡(luò)后保存的浮點(diǎn)模型;計(jì)算神經(jīng)網(wǎng)絡(luò)各層中各通道中的權(quán)重量化縮放因子;采用kl散度算法計(jì)算神經(jīng)網(wǎng)絡(luò)各層中的激活值量化縮放因子;根據(jù)余弦距離確定神經(jīng)網(wǎng)絡(luò)各層中的最優(yōu)權(quán)重量化縮放因子和最優(yōu)激活值量化縮放因子;基于最優(yōu)權(quán)重量化縮放因子和最優(yōu)激活值量化縮放因子,得到int8的整型結(jié)果.根據(jù)本發(fā)明的方法,根據(jù)最優(yōu)權(quán)重量化縮放因子和最優(yōu)激活值量化縮放因子,自動(dòng)進(jìn)行微調(diào),得到int8的整型結(jié)果,可以避免極端值的影響;同時(shí),采用kl散度計(jì)算激活值量化縮放因子,并利用余弦距離自動(dòng)地進(jìn)行微調(diào),可以減小量化誤差,避免極端值的影響。中國(guó)發(fā)明專利《一種通過權(quán)重預(yù)處理提高低比特神經(jīng)網(wǎng)絡(luò)模型精度的方法》(專利申請(qǐng)?zhí)枺篶n202010497769.4)。該發(fā)明提供一種通過權(quán)重預(yù)處理提高低比特神經(jīng)網(wǎng)絡(luò)模型精度的方法,首先,獲取神經(jīng)網(wǎng)絡(luò)的全精度數(shù)據(jù),然后,對(duì)全精度的權(quán)重進(jìn)行預(yù)處理,即在量化權(quán)重之前對(duì)權(quán)重做預(yù)處理;對(duì)于待量化的數(shù)據(jù)進(jìn)行量化,得到低比特的數(shù)據(jù);該方法在訓(xùn)練低比特模型之前就考慮到了位寬限制,所以在訓(xùn)練全精度模型的時(shí)候會(huì)考慮到低比特時(shí)所表示的數(shù)值是有限的,為了充分利用每個(gè)數(shù)值,將對(duì)權(quán)重做預(yù)處理,從而能充分的利用每一個(gè)數(shù)值,從而提高模型的精度。
2、fpga需要圖像的輸入尺寸為2的冪次方,量化系數(shù)也需要是2的冪次方的整數(shù)。同時(shí)fpga由于內(nèi)存大小的限制,圖像輸入尺寸不能太大,因此對(duì)于較高分辨率的圖像需要進(jìn)行圖像預(yù)處理之后才能滿足fpga的輸入尺寸要求。在送入網(wǎng)絡(luò)模型訓(xùn)練前,為了降低原始圖像尺寸的大小,一般的圖像預(yù)處理的過程如下,首先進(jìn)行數(shù)據(jù)歸一化操作,然后進(jìn)行圖像尺寸的等比縮放,為了滿足輸入的尺寸滿足正方形的尺寸要求,對(duì)于缺失部分進(jìn)行灰色邊框補(bǔ)齊。但是這種圖像預(yù)處理方式會(huì)導(dǎo)致量化后的模型在fpga中會(huì)存在較大的推理性能下降,導(dǎo)致模型推理結(jié)果不可用。
技術(shù)實(shí)現(xiàn)思路
1、為了解決現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的是提供一種提高圖像推理效果的圖像預(yù)處理方法,能夠生成標(biāo)準(zhǔn)圖像數(shù)據(jù),通過圖像預(yù)處理提高低比特神經(jīng)網(wǎng)絡(luò)模型精度,是一種圖像處理歸一化技術(shù)在fpga推理上的使用。
2、本發(fā)明提供了一種生成標(biāo)準(zhǔn)圖像數(shù)據(jù)的方法,所述方法通過將輸入的圖像數(shù)據(jù)進(jìn)行縮放、標(biāo)準(zhǔn)化,再經(jīng)過插值處理后獲得標(biāo)準(zhǔn)圖像數(shù)據(jù),包括如下步驟:
3、步驟一、輸入圖像,對(duì)圖像數(shù)據(jù)縮放至區(qū)間[0,1];
4、步驟二、對(duì)步驟一中獲得的縮放后的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化并處理,獲得標(biāo)準(zhǔn)化數(shù)據(jù)yt;
5、
6、其中,y為圖像數(shù)據(jù)標(biāo)準(zhǔn)化后的值,∈為標(biāo)準(zhǔn)的正態(tài)分布,t為區(qū)間[0,1]的均勻分布,π(t)為從0到1的單調(diào)遞增函數(shù);在具體實(shí)施過程中,所述單調(diào)遞增函數(shù)可以是一次線性函數(shù)、對(duì)數(shù)函數(shù)、sigmoid函數(shù),或其他高階函數(shù)等,可以根據(jù)實(shí)際需要選用不同的單調(diào)遞增函數(shù);
7、步驟三、對(duì)步驟二中得到的標(biāo)準(zhǔn)化數(shù)據(jù)進(jìn)行插值處理,獲得目標(biāo)尺寸大小的圖像數(shù)據(jù)z。
8、步驟一中,將輸入圖像中的像素值逐一除以256,對(duì)圖像數(shù)據(jù)進(jìn)行縮放;
9、和/或,
10、步驟二中,步驟一中獲得的縮放后的數(shù)據(jù)通過標(biāo)準(zhǔn)化為均值為0,方差為1的分布;其中,x為輸入圖像的像素值,xmean為輸入圖像像素的平均值,xσ為輸入圖像像素的方差;
11、和/或,
12、步驟三中,所述插值處理包括雙線性插值、三線性插值、最近鄰插值中的至少一種,使圖像大小匹配模型輸入。
13、本發(fā)明還提出了一種利用標(biāo)準(zhǔn)圖像數(shù)據(jù)提高神經(jīng)網(wǎng)絡(luò)模型精度的量化方法,所述方法包括如下步驟:
14、步驟i.根據(jù)上述的生成標(biāo)準(zhǔn)圖像數(shù)據(jù)的方法獲取標(biāo)準(zhǔn)圖像數(shù)據(jù);
15、步驟ii.將所述標(biāo)準(zhǔn)圖像數(shù)據(jù)輸入深度學(xué)習(xí)模型進(jìn)行訓(xùn)練,獲得推理網(wǎng)絡(luò)模型;
16、步驟iii.將所述推理網(wǎng)絡(luò)模型轉(zhuǎn)換為onnx模型,并合并onnx模型中的批標(biāo)準(zhǔn)化(bn)層與卷積層;
17、步驟iv.利用校準(zhǔn)圖像進(jìn)行kl散度計(jì)算量化系數(shù),得到激活函數(shù)的閾值t;
18、步驟v.基于量化公式利用各個(gè)網(wǎng)絡(luò)層的包括權(quán)重、偏置、方差、均值信息計(jì)算量化系數(shù),并驗(yàn)證量化系數(shù)的準(zhǔn)確性。
19、所述標(biāo)準(zhǔn)圖像數(shù)據(jù)適配所述深度學(xué)習(xí)模型的輸入尺寸大??;和/或,
20、步驟ii中,所述深度學(xué)習(xí)模型為適用于圖像處理的神經(jīng)網(wǎng)絡(luò)模型(例如resnet等),用于fpga上的推理;訓(xùn)練過程中利用分組卷積或者可分離卷積代替原始卷積算子;訓(xùn)練完成后還包括模型的交叉驗(yàn)證和測(cè)試步驟;和/或,
21、步驟iii中,將推理網(wǎng)絡(luò)模型從其原始框架中導(dǎo)出為onnx格式文件,并進(jìn)行兼容性調(diào)整;從bn層中提取所述推理網(wǎng)絡(luò)模型訓(xùn)練好的參數(shù),重新計(jì)算卷積層的權(quán)重和偏置,使得卷積操作可以直接包含bn的效果,將原本包含bn層和卷積層的模型替換為僅包含合并后的卷積層的模型;和/或,
22、步驟iv中,使用校準(zhǔn)圖像通過網(wǎng)絡(luò)層生成輸出分布,對(duì)所述輸出分布進(jìn)行量化處理,計(jì)算量化后分布與原始浮點(diǎn)數(shù)分布之間的kl散度,使得kl散度達(dá)到最小值,確定激活函數(shù)的閾值t;和/或,
23、步驟v中,根據(jù)量化公式xf為輸入數(shù)據(jù),n為量化后數(shù)值的位寬,為量化系數(shù),利用各個(gè)網(wǎng)絡(luò)層的包括權(quán)重信息、偏置信息、方差信息、均值信息得到量化系數(shù)。
24、將推理網(wǎng)絡(luò)模型從其原始框架中導(dǎo)出為onnx格式文件時(shí),將模型的架構(gòu)、權(quán)重信息進(jìn)行轉(zhuǎn)換和保存;通過兼容性調(diào)整使模型結(jié)構(gòu)適應(yīng)onnx格式要求;和/或,
25、對(duì)onnx模型進(jìn)行網(wǎng)絡(luò)解析,按照順序依次讀取網(wǎng)絡(luò)的輸入層和輸出層并依次順序標(biāo),確保后續(xù)對(duì)模型的處理(如量化、優(yōu)化等)可以基于明確的層次結(jié)構(gòu)進(jìn)行,不會(huì)發(fā)生層次混淆或處理錯(cuò)誤。
26、步驟v后還可以包括量化自檢步驟:對(duì)每一層網(wǎng)絡(luò)的量化輸出與其前一層的輸出進(jìn)行比較,確保輸出的一致性和量化系數(shù)的準(zhǔn)確性;如果發(fā)現(xiàn)輸出不一致,自動(dòng)調(diào)整量化系數(shù),直至輸出滿足一致性要求,保證模型量化后的推理精度與未量化模型接近。
27、本發(fā)明還提供了一種實(shí)現(xiàn)上述方法的系統(tǒng),所述系統(tǒng)包括:數(shù)據(jù)預(yù)處理模塊、模型訓(xùn)練模塊、模型轉(zhuǎn)換模塊、網(wǎng)絡(luò)解析模塊、校準(zhǔn)與量化模塊、模型驗(yàn)證模塊;
28、數(shù)據(jù)預(yù)處理模塊:該模塊負(fù)責(zé)對(duì)原始圖像數(shù)據(jù)進(jìn)行縮放、標(biāo)準(zhǔn)化和插值處理,將圖像數(shù)據(jù)轉(zhuǎn)換為均值為0、標(biāo)準(zhǔn)差為1的分布,并將其調(diào)整為目標(biāo)尺寸。這個(gè)模塊的輸出是標(biāo)準(zhǔn)化和調(diào)整后的圖像數(shù)據(jù),準(zhǔn)備好進(jìn)入模型訓(xùn)練。
29、模型訓(xùn)練模塊:將預(yù)處理后的數(shù)據(jù)輸入到深度學(xué)習(xí)模型中進(jìn)行訓(xùn)練。此模塊可包括卷積神經(jīng)網(wǎng)絡(luò)的配置與訓(xùn)練、模型結(jié)構(gòu)的優(yōu)化(如使用分組卷積或可分離卷積),并生成初步的推理網(wǎng)絡(luò)模型。
30、模型轉(zhuǎn)換模塊:該模塊將訓(xùn)練好的模型轉(zhuǎn)換為onnx格式,便于跨平臺(tái)部署。轉(zhuǎn)換過程中,該模塊還將批標(biāo)準(zhǔn)化(bn)層與卷積層進(jìn)行合并,以簡(jiǎn)化模型結(jié)構(gòu)并提高推理效率。
31、網(wǎng)絡(luò)解析模塊:負(fù)責(zé)讀取和分析onnx模型的結(jié)構(gòu),提取網(wǎng)絡(luò)的輸入輸出關(guān)系和權(quán)重參數(shù),標(biāo)記層之間的連接順序,為后續(xù)的優(yōu)化和量化過程做準(zhǔn)備。
32、校準(zhǔn)與量化模塊:利用校準(zhǔn)圖像集計(jì)算kl散度,最小化誤差以確定激活函數(shù)的最佳閾值。隨后,根據(jù)量化公式對(duì)各層的權(quán)重、偏置、方差、均值等參數(shù)進(jìn)行量化處理,生成適合fpga推理的低比特寬度模型。
33、模型驗(yàn)證模塊:最后,該模塊驗(yàn)證量化后的模型,確保其推理輸出與未量化模型相一致,保證模型在硬件上的高效運(yùn)行。
34、本發(fā)明還提供了上述生成標(biāo)準(zhǔn)圖像數(shù)據(jù)的方法,上述提高神經(jīng)網(wǎng)絡(luò)模型精度的量化方法,或上述系統(tǒng)在匹配模型的標(biāo)準(zhǔn)化圖像生成、提高模型推理效果、加速模型訓(xùn)練、減少模型量化損失等中的應(yīng)用。
35、本發(fā)明還提供了一種實(shí)現(xiàn)上述方法的硬件系統(tǒng),所述硬件系統(tǒng)包括:存儲(chǔ)器和處理器;所述存儲(chǔ)器上存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)所述計(jì)算機(jī)程序被所述處理器執(zhí)行時(shí),實(shí)現(xiàn)上述生成標(biāo)準(zhǔn)圖像數(shù)據(jù)及利用標(biāo)準(zhǔn)圖像數(shù)據(jù)提高神經(jīng)網(wǎng)絡(luò)模型精度的量化方法。
36、本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí),實(shí)現(xiàn)上述生成標(biāo)準(zhǔn)圖像數(shù)據(jù)及利用標(biāo)準(zhǔn)圖像數(shù)據(jù)提高神經(jīng)網(wǎng)絡(luò)模型精度的量化方法。
37、本發(fā)明的有益效果包括:現(xiàn)有對(duì)稱的基于范圍的線性量化編碼技術(shù)如distiller,需要對(duì)每一張輸入圖像數(shù)據(jù)重新在線計(jì)算量化系數(shù),而且其量化系數(shù)為浮點(diǎn)數(shù),前者會(huì)導(dǎo)致比較大的精度損失,后者會(huì)導(dǎo)致fpga的存儲(chǔ)和計(jì)算資源的需求提升,通過對(duì)圖像原始數(shù)據(jù)進(jìn)行針對(duì)性的歸一化處理,再結(jié)合多張圖離線計(jì)算其量化系數(shù)使得量化后的模型檢測(cè)性能與不做這些處理,直接進(jìn)行量化的檢測(cè)性能相比,在測(cè)試集上平均交并比相差10個(gè)點(diǎn)左右,同時(shí)對(duì)于浮點(diǎn)數(shù)進(jìn)行取其最近2的冪次方整數(shù)進(jìn)行替換,大大加速fpga的推理計(jì)算。