一種基於卷積神經網絡的圖像處理方法、裝置及移動終端與流程
2023-09-23 21:30:15 4
本發明涉及圖像處理
技術領域:
,特別涉及一種基於卷積神經網絡的圖像處理方法、裝置及移動終端。
背景技術:
:隨著卷積神經網絡(cnn:convolutionalneuralnetwork)的快速發展,越來越多的圖像處理手段,如分類、分割、風格轉換、畫質改善等,均採用cnn進行訓練學習,以取得比傳統處理方法更好的效果。然而,cnn在移動終端上的應用仍存在瓶頸,尤其是當cnn達到數百層時,需大量的浮點數乘法運算及大量的cpu內存申請,導致移動終端的計算效率和內存跟不上cnn的發展速度。現有的在移動終端基於卷積神經網絡處理圖像的方法,是利用gpu和如opengles的圖形程序接口來實現浮點運算的。一方面,移動終端內置的gpu具有強大的浮點運算能力,能夠將移動終端的浮點運算效率提高10倍以上,甚至更多倍數,另一方面,移動端gpu晶片基本支持opengles,而opengles的3.x系列可支持16位或32位浮點紋理,可為gpu計算提供極大的便利性,從而可用於cnn的gpu高效計算。然而,在通過紋理存儲數據時,勢必會導致大量紋理的創建,而opengles在紋理渲染過程中是需要不斷綁定和解綁不同紋理的,導致了計算效率下降。而且cnn中存在數量較多的卷積層,在利用opengles執行腳本渲染以實現卷積處理時,對於特徵圖邊界的判斷需要使用如「if…else…」的條件判斷語句,而此類語句容易給渲染過程帶來效率低下的問題。因此,需要一種新的基於卷積神經網絡的圖像處理方案來優化上述過程。技術實現要素:為此,本發明提供一種基於卷積神經網絡的圖像處理的技術方案,以力圖解決或者至少緩解上面存在的問題。根據本發明的一個方面,提供一種基於卷積神經網絡的圖像處理方法,適於在具有圖形程序接口的移動終端中執行,卷積神經網絡包括多個處理層和多個數據層,其中每個處理層用於處理與之相連的上一數據層中的多個特徵圖,以生成下一數據層中的多個特徵圖,移動終端中存儲有各數據層對應於圖形程序接口的存儲參數,存儲參數包括特徵圖尺寸、紋理橫向數量和紋理縱向數量,該方法包括如下步驟:首先,將待處理圖片作為第一個數據層輸入到卷積神經網絡;對每一個數據層,根據存儲參數,將該數據層的多個特徵圖組合形成對應的大紋理進行存儲;對每一個處理層,獲取與之相連的上一數據層對應的大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。可選地,在根據本發明的基於卷積神經網絡的圖像處理方法中,特徵圖尺寸包括特徵圖的高和寬,根據存儲參數,將該數據層的多個特徵圖組合形成對應的大紋理進行存儲的步驟包括:獲取該數據層中多個特徵圖對應的小紋理;將小紋理按照紋理橫向數量乘以紋理縱向數量的樣式進行組合,以形成對應的大紋理進行存儲,大紋理的高為特徵圖的高與紋理縱向數量的乘積,大紋理的寬為特徵圖的寬與紋理橫向數量的乘積。可選地,在根據本發明的基於卷積神經網絡的圖像處理方法中,獲取與之相連的上一數據層對應的大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖的步驟包括:獲取與該處理層相連的上一數據層對應的大紋理,大紋理由上一數據層中的多個特徵圖所形成的小紋理組成;對每一個小紋理,獲取該小紋理的各頂點的紋理坐標與像素坐標;根據各頂點的紋理坐標與像素坐標,調用圖形程序接口對該小紋理進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。可選地,在根據本發明的基於卷積神經網絡的圖像處理方法中,處理層包括卷積層,與該卷積層相連的上一數據層對應的大紋理包括由該數據層中的多個特徵圖形成的小紋理,獲取與之相連的上一數據層對應的大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理的步驟,包括調用圖形程序接口對其進行與該卷積層對應的渲染處理,調用圖形程序接口對其進行與該卷積層對應的渲染處理的步驟包括:獲取卷積層的處理參數,以及與卷積層相連的下一數據層的存儲參數中的特徵圖尺寸,處理參數包括卷積核與步長;對每一個小紋理,根據處理參數,對該小紋理中符合特徵圖尺寸的中心區域進行一次渲染處理;在完成一次渲染處理後,對中心區域以外的小紋理的邊界區域進行二次渲染處理。可選地,在根據本發明的基於卷積神經網絡的圖像處理方法中,還包括預先獲取卷積神經網絡中各數據層的對應於圖形程序接口的存儲參數。可選地,在根據本發明的基於卷積神經網絡的圖像處理方法中,預先獲取卷積神經網絡中各數據層的對應於圖形程序接口的存儲參數的步驟包括:根據預先獲取的訓練圖片集對卷積神經網絡進行訓練,以獲取各數據層的特徵圖的特徵圖尺寸和特徵圖數量;對每一個數據層,將該數據層的特徵圖數量與4的商作為特徵圖對應的小紋理的數量,小紋理的尺寸與特徵圖尺寸一致;將小紋理的數量拆分成2個儘可能接近的數值的乘積,將這2個數值分別作為紋理橫向數量和紋理縱向數量。根據本發明的又一個方面,提供一種基於卷積神經網絡的圖像處理裝置,該裝置適於駐留在具有圖形程序接口的移動終端中,卷積神經網絡包括多個處理層和多個數據層,其中每個處理層用於處理與之相連的上一數據層中的多個特徵圖,以生成下一數據層中的多個特徵圖,移動終端中存儲有各數據層對應於圖形程序接口的存儲參數,存儲參數包括特徵圖尺寸、紋理橫向數量和紋理縱向數量,該裝置包括輸入模塊、轉換模塊和處理模塊。其中,輸入模塊適於將待處理圖片作為第一個數據層輸入到卷積神經網絡;轉換模塊適於對每一個數據層,根據存儲參數,將該數據層的多個特徵圖組合形成對應的大紋理進行存儲;處理模塊適於對每一個處理層,獲取與之相連的上一數據層對應的大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。可選地,在根據本發明的基於卷積神經網絡的圖像處理裝置中,特徵圖尺寸包括特徵圖的高和寬,轉換模塊進一步適於:獲取該數據層中多個特徵圖對應的小紋理;將小紋理按照紋理橫向數量乘以紋理縱向數量的樣式進行組合,以形成對應的大紋理進行存儲,大紋理的高為特徵圖的高與紋理縱向數量的乘積,大紋理的寬為特徵圖的寬與紋理橫向數量的乘積。可選地,在根據本發明的基於卷積神經網絡的圖像處理裝置中,處理模塊進一步適於:獲取與該處理層相連的上一數據層對應的大紋理,大紋理由上一數據層中的多個特徵圖所形成的小紋理組成;對每一個小紋理,獲取該小紋理的各頂點的紋理坐標與像素坐標;根據各頂點的紋理坐標與像素坐標,調用圖形程序接口對該小紋理進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。可選地,在根據本發明的基於卷積神經網絡的圖像處理裝置中,處理層包括卷積層,與該卷積層相連的上一數據層對應的大紋理包括由該數據層中的多個特徵圖形成的小紋理,處理模塊還適於:獲取卷積層的處理參數,以及與卷積層相連的下一數據層的存儲參數中的特徵圖尺寸,處理參數包括卷積核與步長;對每一個小紋理,根據處理參數,對該小紋理中符合特徵圖尺寸的中心區域進行一次渲染處理;在完成一次渲染處理後,對中心區域以外的小紋理的邊界區域進行二次渲染處理。可選地,在根據本發明的基於卷積神經網絡的圖像處理裝置中,還包括獲取模塊,適於預先獲取卷積神經網絡中各數據層的對應於圖形程序接口的存儲參數。可選地,在根據本發明的基於卷積神經網絡的圖像處理裝置中,獲取模塊進一步適於:根據預先獲取的訓練圖片集對卷積神經網絡進行訓練,以獲取各數據層的特徵圖的特徵圖尺寸和特徵圖數量;對每一個數據層,將該數據層的特徵圖數量與4的商作為特徵圖對應的小紋理的數量,小紋理的尺寸與特徵圖尺寸一致;將小紋理的數量拆分成2個儘可能接近的數值的乘積,將這2個數值分別作為紋理橫向數量和紋理縱向數量。根據本發明的又一個方面,提供一種移動終端,包括根據本發明的基於卷積神經網絡的圖像處理裝置。根據本發明的又一個方面,還提供一種移動終端,包括一個或多個處理器、存儲器以及一個或多個程序,其中一個或多個程序存儲在存儲器中並被配置為由一個或多個處理器執行,一個或多個程序包括用於執行根據本發明的基於卷積神經網絡的圖像處理方法的指令。根據本發明的基於卷積神經網絡的圖像處理方案,首先將待處理圖片作為第一個數據層輸入到卷積神經網絡中開始進行圖像處理,在處理過程中,對於卷積神經網絡中的每一個數據層,會根據該數據層對應與圖形程序接口的存儲參數,將這一數據層的多個特徵圖組合形成對應的大紋理進行存儲,則與該數據層相連的下一處理層即獲取上述大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理,以生成與之相連的下一數據層中的多個特徵圖,而下一數據層則會繼續執行將多個特徵圖組合形成大紋理進行存儲的步驟。換言之,對於每一個處理層,相當於輸入該處理層的數據是一個大紋理,而從該處理層輸出的數據也是一個大紋理,處理層的計算過程則轉換為基於圖形程序接口的腳本渲染過程。在上述技術方案中,對於各數據層,通過將該數據層的多個特徵圖進行組合形成對應的大紋理,以提供給與之相連的下一處理層進行處理,而對於各處理層,則對與該處理層相連的上一數據層對應的大紋理中的各小紋理執行分塊渲染,不僅無需大量創建紋理,避免在紋理渲染過程中不斷綁定和解綁紋理的重複操作,而且處理層的計算環節完全在gpu中完成,無需cpu與gpu的數據來回切換,提高了計算效率。進一步地,當處理層具體為卷積層時,對當前輸入的大紋理中的各小紋理,基於邊界區域進行分次渲染,以降低因防止越界而進行條件判斷的次數,充分利用腳本渲染的計算效率,實現卷積神經網絡的加速。附圖說明為了實現上述以及相關目的,本文結合下面的描述和附圖來描述某些說明性方面,這些方面指示了可以實踐本文所公開的原理的各種方式,並且所有方面及其等效方面旨在落入所要求保護的主題的範圍內。通過結合附圖閱讀下面的詳細描述,本公開的上述以及其它目的、特徵和優勢將變得更加明顯。遍及本公開,相同的附圖標記通常指代相同的部件或元素。圖1示出了根據本發明一個實施例的移動終端100的結構框圖;圖2示出了根據本發明一個實施例的基於卷積神經網絡的圖像處理方法200的流程圖;圖3示出了根據本發明一個實施例的卷積神經網絡的結構示意圖;圖4示出了根據本發明一個實施例的卷積神經網絡中數據層a2對應的大紋理示意圖;圖5示出了根據本發明一個實施例的卷積神經網絡中數據層a3對應的大紋理示意圖;圖6示出了本發明一個實施例的基於卷積神經網絡的圖像處理裝置600的示意圖;以及圖7示出了本發明又一個實施例的基於卷積神經網絡的圖像處理裝置700的示意圖。具體實施方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這裡闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,並且能夠將本公開的範圍完整的傳達給本領域的技術人員。圖1是移動終端100的結構框圖。移動終端100可以包括存儲器接口102、一個或多個數據處理器、圖像處理器和/或中央處理單元104,以及外圍接口106。存儲器接口102、一個或多個處理器104和/或外圍接口106既可以是分立元件,也可以集成在一個或多個集成電路中。在移動終端100中,各種元件可以通過一條或多條通信總線或信號線來耦合。傳感器、設備和子系統可以耦合到外圍接口106,以便幫助實現多種功能。例如,運動傳感器110、光線傳感器112和距離傳感器114可以耦合到外圍接口106,以方便定向、照明和測距等功能。其他傳感器116同樣可以與外圍接口106相連,例如定位系統(例如gps接收機)、溫度傳感器、生物測定傳感器或其他感測設備,由此可以幫助實施相關的功能。相機子系統120和光學傳感器122可以用於方便諸如記錄照片和視頻剪輯的相機功能的實現,其中所述相機子系統和光學傳感器例如可以是電荷耦合器件(ccd)或互補金屬氧化物半導體(cmos)光學傳感器。可以通過一個或多個無線通信子系統124來幫助實現通信功能,其中無線通信子系統可以包括射頻接收機和發射機和/或光(例如紅外)接收機和發射機。無線通信子系統124的特定設計和實施方式可以取決於移動終端100所支持的一個或多個通信網絡。例如,移動終端100可以包括被設計成支持lte、3g、gsm網絡、gprs網絡、edge網絡、wi-fi或wimax網絡以及blueboothtm網絡的通信子系統124。音頻子系統126可以與揚聲器128以及麥克風130相耦合,以便幫助實施啟用語音的功能,例如語音識別、語音複製、數字記錄和電話功能。i/o子系統140可以包括觸控螢幕控制器142和/或一個或多個其他輸入控制器144。觸控螢幕控制器142可以耦合到觸控螢幕146。舉例來說,該觸控螢幕146和觸控螢幕控制器142可以使用多種觸摸感測技術中的任何一種來檢測與之進行的接觸和移動或是暫停,其中感測技術包括但不局限於電容性、電阻性、紅外和表面聲波技術。一個或多個其他輸入控制器144可以耦合到其他輸入/控制設備148,例如一個或多個按鈕、搖杆開關、拇指旋輪、紅外埠、usb埠、和/或指示筆之類的指點設備。所述一個或多個按鈕(未顯示)可以包括用於控制揚聲器128和/或麥克風130音量的向上/向下按鈕。存儲器接口102可以與存儲器150相耦合。該存儲器150可以包括高速隨機存取存儲器和/或非易失性存儲器,例如一個或多個磁碟存儲設備,一個或多個光學存儲設備,和/或快閃記憶體存儲器(例如nand,nor)。存儲器150可以存儲作業系統172,例如android、ios或是windowsphone之類的作業系統。該作業系統172可以包括用於處理基本系統服務以及執行依賴於硬體的任務的指令。存儲器150還可以存儲應用174。在行動裝置運行時,會從存儲器150中加載作業系統172,並且由處理器104執行。應用174在運行時,也會從存儲器150中加載,並由處理器104執行。應用174運行在作業系統之上,利用作業系統以及底層硬體提供的接口實現各種用戶期望的功能,如即時通信、網頁瀏覽、圖片管理等。應用174可以是獨立於作業系統提供的,也可以是作業系統自帶的。另外,應用174被安裝到移動終端100中時,也可以向作業系統添加驅動模塊。在上述各種應用174中,其中的一種應用為根據本發明的基於卷積神經網絡的圖像處理裝置600。其中,卷積神經網絡包括多個處理層和多個數據層,每個處理層用於處理與之相連的上一數據層中的多個特徵圖,以生成下一數據層的多個特徵圖。進一步地,移動終端100具有圖形程序接口(圖中未示出),例如opengl系列,並存儲有卷積神經網絡中各數據層對應於圖形程序接口的存儲參數,基於卷積神經網絡的圖像處理裝置600對於每一個數據層,根據該數據層的存儲參數,將多個特徵圖組合形成對應的大紋理以作為與該數據層相連的下一處理層的輸入,調用該圖形程序接口對該大紋理執行與該處理層對應的渲染處理。一般情況下,各數據層的存儲參數包括特徵圖尺寸、紋理橫向數量和紋理縱向數量,是在預先對卷積神經網絡進行訓練時獲取的,具體的獲取方法此處先暫且不表,後面再予以解釋說明。圖2示出了根據本發明一個實施例的基於卷積神經網絡的圖像處理方法200的流程圖。基於卷積神經網絡的圖像處理方法200適於在具有圖形程序接口的移動終端100(例如圖1所示的移動終端100)中執行。如圖2所示,方法200始於步驟s210。在步驟s210中,將待處理圖片作為第一個數據層輸入到卷積神經網絡。其中,卷積神經網絡是已經預先訓練好的,所包括的數據層的數量一般比處理層的數量多1個。圖3示出了根據本發明一個實施例的卷積神經網絡的結構示意圖。如圖3所示,該卷積神經網絡包括5個數據層a1~a5和4個處理層b1~b4,其中,數據層a1和a5分別對應卷積神經網絡的輸入數據層和輸出數據層,處理層b1~b4用於處理與之相連的上一數據層中的多個特徵圖,以生成下一數據層中的多個特徵圖。在該實施方式中,待處理圖片為rgba的4通道彩色圖片,尺寸為320px×256px,由於待處理圖片的通道數為4,表明每1個通道下的圖片對應於1個特徵圖,即該圖片包括4個不同通道,即通道r、g、b和alpha下,尺寸為320px×256px的特徵圖,將這4個特徵圖作為數據層a1輸入到上述卷積神經網絡以便進行後續圖像處理。隨後,進入步驟s220,對每一個數據層,根據存儲參數,將該數據層的多個特徵圖組合形成對應的大紋理進行存儲。其中,存儲參數與圖形程序接口對應,包括特徵圖尺寸、紋理橫向數量和紋理縱向數量,特徵圖尺寸包括特徵圖的高和寬。根據本發明的一個實施例,圖形程序接口選用opengles3.0,表1示出了該實施方式下卷積神經網絡各數據層的存儲參數示例,具體如下所示:數據層特徵圖尺寸(高px×寬px)紋理橫向數量紋理縱向數量a1320px×256px11a280px×64px31a380px×64px31a478px×62px21a578px×62px11表1根據該實施方式,可以通過以下方式對各數據層的多個特徵圖組合形成對應的大紋理進行存儲。首先,獲取該數據層中多個特徵圖對應的小紋理,由於opengles3.0的浮點紋理最大的特點是可以用4通道來存儲數據,則紋理的4通道可同時存儲4個特徵圖,則可通過將特徵圖數量與4的商作為小紋理的數量,以實現以與特徵圖尺寸相同的小紋理來存儲多個特徵圖。當然,在特徵圖數量無法被4整除時,在計算上將特徵圖數量與4的商向下取整後再加1的值作為小紋理的數量,即當不足4通道時,會湊成4通道存在紋理中。比如對數據層a1,數據層a1中共計4個特徵圖,且特徵圖尺寸為320px×256px,則小紋理的數量為4/4=1,得到了數據層a1中4個特徵圖對應的1個小紋理。然後,將得到的小紋理按照紋理橫向數量乘以紋理縱向數量的樣式進行組合,以形成對應的大紋理進行存儲,該大紋理的高為特徵圖的高與紋理縱向數量的乘積,該大紋理的寬為特徵圖的寬與紋理橫向數量的乘積。很明顯,由於數據層a1對應的小紋理只有1個,且紋理橫向數量和紋理縱向數量也均為1,則形成的大紋理實際上就是該小紋理。為了進一步說明大紋理的形成過程,下面以數據層a2為例進行補充描述。數據層a2中所包括的特徵圖是處理層b1對數據層a1對應的大紋理進行渲染處理而生成的,此時得到數據層a2共計具有11個特徵圖,由於11無法被4整除,則計算11與4的商向下取整後再加1的值作為小紋理的數量,即小紋理的數量為floor(11/4)+1=3,floor表示向下取整。對於前2個小紋理,每個小紋理的4通道均存儲有特徵圖,即總共存儲了8個特徵圖,還剩餘11-8=3個特徵圖,這3個特徵圖需要存儲在第3個小紋理中,但是考慮到1個小紋理可同時存儲4個特徵圖,基於補全原則,需要將餘下的3個特徵圖湊成4個特徵圖進行存儲,即將第4個特徵圖對應於第3個小紋理的第4通道的值全部設置為0,以湊成4通道。接下來,需要將得到的3個小紋理按照紋理橫向數量乘以紋理縱向數量的樣式進行組合,以形成大紋理來存儲,由於數據層a2的存儲參數中特徵圖的尺寸為80px×64px,紋理橫向數量為3,紋理縱向數量為1,即該大紋理由橫向排列的上述3個尺寸為80px×64px的小紋理組成。圖4示出了根據本發明一個實施例的卷積神經網絡中數據層a2對應的大紋理示意圖。如圖4所示,大紋理由小紋理a2-1、a2-2和a2-3組成,小紋理的高為80px,寬為64px,則最終形成的數據層a2對應的大紋理的高為80px×1=80px,寬為64px×3=192px。在獲取到數據層a1對應的大紋理進行存儲後,開始進入步驟s230,對每一個處理層,獲取與之相連的上一數據層對應的大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。需要說明的是,實際在執行基於卷積神經網絡的圖像處理方法200時,在待處理圖片輸入到卷積神經網絡後,步驟s220和s230中具體的處理操作是交替進行直至執行到卷積神經網絡的最後一層。例如對圖3所示的卷積神經網絡而言,數據層a1~a5與處理層b1~b4相互穿插排列,對數據層a1~a5均要執行步驟s220中形成大紋理的操作,而處理層b1~b4則是要執行步驟s230中通過opengles3.0進行紋理渲染的處理,按照上述排列順序執行相應步驟的過程即是步驟s220與步驟s230交替執行,直至獲得數據層a5對應的大紋理為止。為便於描述,這裡僅對處理層b3執行步驟s230中的具體操作進行說明,其他處理層則不予以贅述。具體地,在根據本發明的一個實施例中,可以通過以下方式來獲取與處理層相連的上一數據層對應的大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。首先,獲取與該處理層相連的上一數據層對應的大紋理,大紋理由上一數據層中的多個特徵圖所形成的小紋理組成。在該實施方式中,與處理層b3相連的上一數據層為數據層a3,則先獲取數據層a3對應的大紋理。從表1可知數據層a3與數據層a2對應的大紋理在形式上一致,因此數據層a3對應的大紋理由3個小紋理組成。隨後,對每一個小紋理,獲取該小紋理的各頂點的紋理坐標與像素坐標。圖5示出了根據本發明一個實施例的卷積神經網絡中數據層a3對應的大紋理示意圖。如圖5所示,數據層a3對應的大紋理包括小紋理a3-1、a3-2和a3-3,將小紋理的高設為h,寬設為w。以小紋理a3-1為例,小紋理a3-1具有d1、d2、d3和d4共計4個頂點,對這4個頂點而言,其像素坐標如下:頂點d1:(cx×w,cy×h)頂點d2:((cx+1)×w,cy×h)頂點d3:(cx×w,(cy+1)×h)頂點d4:((cx+1)×w,(cy+1)×h)紋理坐標如下:頂點d1:(cx/cw,cy×ch)頂點d2:((cx+1)×cw,cy×ch)頂點d3:(cx×cw,(cy+1)×ch)頂點d4:((cx+1)×cw,(cy+1)×ch)其中,cw為數據層a3對應的紋理橫向數量,ch為數據層a3對應的紋理縱向數量,cy=floor((i-1)/cw),cx=i-1-cy×cw,i表示小紋理的序號,由於數據層a3對應的大紋理包括3個小紋理,則i的取值可為1、2或3,對小紋理a3-1而言,i=1,對小紋理a3-2而言,i=2,對小紋理a3-3而言,i=3。由此,根據各頂點的紋理坐標與像素坐標,調用圖形程序接口對該小紋理進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。在該實施方式中,由表1可知,與處理層a3相連的上一數據層a3對應的大紋理包括3個小紋理,相當於有3個輸入塊,下一數據層a4對應的大紋理包括2個小紋理,相當於由2個輸出塊,考慮opengles3.0在腳本中傳入的參數有限,依次計算各輸出塊以實現分塊計算。將處理層a3的操作標記為φ,則對於各輸入塊mi(i=1,2,3),輸出塊nk(k=1,2)有:其中,∑(·)表示對所有輸入塊mi(i=1,2,3)進行φ處理後的某種組合,當然,不同的處理層對於不同的組合,比如若處理層b3為卷積層,則∑(·)表示求和。那麼,對任一輸入塊mi(i=1,2,3)進行渲染時,由於紋理坐標範圍為0~1,而腳本渲染的過程實際上是利用像素坐標來插值紋理坐標,則根據各輸入塊對應的4個頂點的像素坐標和紋理坐標,利用頂點著色器進行插值形成紋理採樣點,以供片段著色器並行使用即可實現腳本渲染。進一步地,對於卷積神經網絡而言,其處理層一般包括卷積層、池化層、激活層等多種類型,而就卷積層來說,卷積與反卷積計算佔據了卷積神經網絡處理70%以上的計算時間,採用如opengles3.0的腳本渲染進行分塊計算,可大幅度提高計算效率,但卷積操作按塊進行計算時,在邊界區域為避免越界,會涉及大量的「if…else…」條件判斷,難以充分利用腳本渲染的計算效率。為解決這一問題,根據本發明的一個實施例,當處理層為卷積層時,可通過以下方式調用圖形程序接口,對與其相連的上一數據層對應的大紋理進行與該卷積層對應的渲染處理。首先,獲取卷積層的處理參數,以及與卷積層相連的下一數據層的存儲參數中的特徵圖尺寸,處理參數包括卷積核與步長。在該實施方式中,處理層b3為卷積層,與其相連的下一數據層為數據層a4,數據層a4的存儲參數中的特徵圖尺寸為78px×62px,處理層b3的處理參數中卷積核的大小為3px×3px,步長為1。接下來,對每一個小紋理,根據處理參數,對該小紋理中符合特徵圖尺寸的中心區域進行一次渲染處理,處理層b3要進行分塊渲染處理的小紋理為圖5所示的小紋理a3-1、a3-2和a3-3,此處以小紋理a3-1進行渲染處理的示例說明。根據上述卷積核和步長,對小紋理a3-1中尺寸為78px×62px的中心區域進行一次渲染,由於中心區域為一個78px×62px的矩形,而小紋理a3-1的尺寸為80px×64px,在對中心區域的渲染時無需進行「if…else…」判斷,以中心區域的對角線對其進行分割可得到2個三角面片,則對該中心區域的渲染處理實際上是渲染這2個三角面片。最後,在完成一次渲染處理後,對中心區域以外的小紋理的邊界區域進行二次渲染處理。很明顯,邊界區域可視為4條寬度為1px的線段,直接對這4條線段進行渲染即可。上述分步渲染是卷積核大小為3px×3px的情形,若卷積核大小為5px×5px,則邊界區域相當於4條寬度為2px的線段,但二次渲染處理的對象是寬度為1px的線段,此時應將邊界區域視為8條寬度為1px的線段以進行渲染。依此類推,可得到基於7px×7px、9px×9px和11px×11px等大小的卷積核的渲染方法。在以上基於卷積神經網絡的圖像處理過程中,卷積神經網絡中各數據層的對應於圖形程序接口的存儲參數需要預先獲取,根據本發明的一個實施例,可以利用下列方法來預先獲取存儲參數。在該實施方式中,首先根據預先獲取的訓練圖片集對卷積神經網絡進行訓練,以獲取各數據層的特徵圖的特徵圖尺寸和特徵圖數量。表2示出了該實施方式下各數據層的特徵圖尺寸和特徵圖數量的存儲示例,具體如下所示:數據層特徵圖尺寸(高px×寬px)特徵圖數量a1320px×256px4a280px×64px11a380px×64px12a478px×62px8a578px×62px4表2然後,對每一個數據層,將該數據層的特徵圖數量與4的商作為特徵圖對應的小紋理的數量,小紋理的尺寸與特徵圖尺寸一致。數據層a1~a5中特徵圖的數量依次為4、11、12、8和4,很明顯數據層a2的特徵圖數量11是無法被4整除的,則計算11與4的商向下取整後再加1的值作為小紋理的數量,即小紋理的數量為floor(11/4)+1=3,floor表示向下取整,最終得到數據層a1~a5對應的小紋理的數量分別為1、3、3、2和1。最後,將小紋理的數量拆分成2個儘可能接近的數值的乘積,將這2個數值分別作為紋理橫向數量和紋理縱向數量。數據層a1和a5的小紋理數量均為1,將1拆分成1×1,則數據層a1和a5的紋理橫向數量和紋理縱向數量均為1,數據層a2和a3的小紋理數量均為3,將3拆分成1×3,則數據層a2和a3的紋理橫向數量為3,紋理縱向數量為1,數據層a4的小紋理數量為2,將2拆分成1×2,則數據層a4的紋理橫向數量為2,紋理縱向數量為1。至此,獲取到了所有數據層的存儲參數,將其全部存儲至移動終端100中,關於各數據層的存儲參數示例,具體可參見上文中的表1。圖6示出了本發明一個實施例的基於卷積神經網絡的圖像處理裝置600的示意圖。如圖6所示,基於卷積神經網絡的圖像處理裝置600包括輸入模塊610、轉換模塊620和處理模塊630。輸入模塊610適於將待處理圖片作為第一個數據層輸入到卷積神經網絡。其中,卷積神經網絡包括多個處理層和多個數據層,其中每個處理層用於處理與之相連的上一數據層中的多個特徵圖,以生成下一數據層中的多個特徵圖。轉換模塊620與輸入模塊610相連,適於對每一個數據層,根據存儲參數,將該數據層的多個特徵圖組合形成對應的大紋理進行存儲。其中,存儲參數包括特徵圖尺寸、紋理橫向數量和紋理縱向數量。特徵圖尺寸包括特徵圖的高和寬,轉換模塊620進一步適於獲取該數據層中多個特徵圖對應的小紋理;將小紋理按照紋理橫向數量乘以紋理縱向數量的樣式進行組合,以形成對應的大紋理進行存儲,大紋理的高為特徵圖的高與紋理縱向數量的乘積,大紋理的寬為特徵圖的寬與紋理橫向數量的乘積。處理模塊630與轉換模塊620相連,適於對每一個處理層,獲取與之相連的上一數據層對應的大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。處理模塊630進一步適於獲取與該處理層相連的上一數據層對應的大紋理,大紋理由上一數據層中的多個特徵圖所形成的小紋理組成;對每一個小紋理,獲取該小紋理的各頂點的紋理坐標與像素坐標;根據各頂點的紋理坐標與像素坐標,調用圖像程序接口對該小紋理進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。處理層包括卷積層,與該卷積層相連的上一數據層對應的大紋理包括由該數據層中的多個特徵圖形成的小紋理,處理模塊630還適於獲取卷積層的處理參數,以及與卷積層相連的下一數據層的存儲參數中的特徵圖尺寸,處理參數包括卷積核與步長;對每一個小紋理,根據處理參數,對該小紋理中符合特徵圖尺寸的中心區域進行一次渲染處理;在完成一次渲染處理後,對中心區域以外的小紋理的邊界區域進行二次渲染處理。圖7示出了本發明又一個實施例的基於卷積神經網絡的圖像處理裝置700的示意圖。如圖7所示,基於卷積神經網絡的圖像處理裝置700的輸入模塊710、轉換模塊720和處理模塊730,分別與圖6中基於卷積神經網絡的圖像處理裝置600的輸入模塊610、轉換模塊620和處理模塊630一一對應,是一致的,並新增了與轉換模塊720相連的獲取模塊740。獲取模塊740適於預先獲取卷積神經網絡中各數據層的對應於圖形程序接口的存儲參數。獲取模塊740進一步適於根據預先獲取的訓練圖片集對卷積神經網絡進行訓練,以獲取各數據層的特徵圖的特徵圖尺寸和特徵圖數量;對每一個數據層,將該數據層的特徵圖數量與4的商作為特徵圖對應的小紋理的數量,小紋理的尺寸與特徵圖尺寸一致;將小紋理的數量拆分成2個儘可能接近的數值的乘積,將這2個數值分別作為紋理橫向數量和紋理縱向數量。關於基於卷積神經網絡的圖像處理的具體步驟以及實施例,在基於圖2~5的描述中已經詳細公開,此處不再贅述。現有的在移動終端基於卷積神經網絡處理圖像的方法,是利用gpu和如opengles的圖形程序接口來實現浮點運算的。但在通過紋理存儲數據時,會導致大量紋理的創建,而opengles在紋理渲染過程中是需要不斷綁定和解綁不同紋理的,導致了計算效率下降。而且cnn中存在數量較多的卷積層,對於特徵圖邊界的判斷需要使用如「if…else…」的條件判斷語句,而此類語句容易給渲染過程帶來效率低下的問題。根據本發明實施例的基於卷積神經網絡的圖像處理方案,首先將待處理圖片作為第一個數據層輸入到卷積神經網絡中開始進行圖像處理,在處理過程中,對於卷積神經網絡中的每一個數據層,會根據該數據層對應與圖形程序接口的存儲參數,將這一數據層的多個特徵圖組合形成對應的大紋理進行存儲,則與該數據層相連的下一處理層即獲取上述大紋理,調用圖形程序接口對其進行與該處理層對應的渲染處理,以生成與之相連的下一數據層中的多個特徵圖,而下一數據層則會繼續執行將多個特徵圖組合形成大紋理進行存儲的步驟。換言之,對於每一個處理層,相當於輸入該處理層的數據是一個大紋理,而從該處理層輸出的數據也是一個大紋理,處理層的計算過程則轉換為基於圖形程序接口的腳本渲染過程。在上述技術方案中,對於各數據層,通過將該數據層的多個特徵圖進行組合形成對應的大紋理,以提供給與之相連的下一處理層進行處理,而對於各處理層,則對與該處理層相連的上一數據層對應的大紋理中的各小紋理執行分塊渲染,不僅無需大量創建紋理,避免在紋理渲染過程中不斷綁定和解綁紋理的重複操作,而且處理層的計算環節完全在gpu中完成,無需cpu與gpu的數據來回切換,提高了計算效率。進一步地,當處理層具體為卷積層時,對當前輸入的大紋理中的各小紋理,基於邊界區域進行分次渲染,以降低因防止越界而進行條件判斷的次數,充分利用腳本渲染的計算效率,實現卷積神經網絡的加速。b9.如b7或8所述的裝置,所述處理模塊進一步適於:獲取與該處理層相連的上一數據層對應的大紋理,所述大紋理由上一數據層中的多個特徵圖所形成的小紋理組成;對每一個小紋理,獲取該小紋理的各頂點的紋理坐標與像素坐標;根據各頂點的紋理坐標與像素坐標,調用所述圖形程序接口對該小紋理進行與該處理層對應的渲染處理,以生成下一數據層中的多個特徵圖。b10.如b7-9中任一項所述的裝置,所述處理層包括卷積層,與該卷積層相連的上一數據層對應的大紋理包括由該數據層中的多個特徵圖形成的小紋理,所述處理模塊還適於:獲取所述卷積層的處理參數,以及與所述卷積層相連的下一數據層的存儲參數中的特徵圖尺寸,所述處理參數包括卷積核與步長;對每一個小紋理,根據所述處理參數,對該小紋理中符合所述特徵圖尺寸的中心區域進行一次渲染處理;在完成一次渲染處理後,對所述中心區域以外的小紋理的邊界區域進行二次渲染處理。b11.如b7-10中任一項所述的裝置,還包括獲取模塊,適於預先獲取所述卷積神經網絡中各數據層的對應於所述圖形程序接口的存儲參數。b12.如b11所述的裝置,所述獲取模塊進一步適於:根據預先獲取的訓練圖片集對所述卷積神經網絡進行訓練,以獲取各數據層的特徵圖的特徵圖尺寸和特徵圖數量;對每一個數據層,將該數據層的特徵圖數量與4的商作為特徵圖對應的小紋理的數量,所述小紋理的尺寸與特徵圖尺寸一致;將所述小紋理的數量拆分成2個儘可能接近的數值的乘積,將這2個數值分別作為紋理橫向數量和紋理縱向數量。在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下被實踐。在一些實例中,並未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。類似地,應當理解,為了精簡本公開並幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特徵有時被一起分組到單個實施例、圖、或者對其的描述中。然而,並不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發明要求比在每個權利要求中所明確記載的特徵更多特徵。更確切地說,如下面的權利要求書所反映的那樣,發明方面在於少於前面公開的單個實施例的所有特徵。因此,遵循具體實施方式的權利要求書由此明確地併入該具體實施方式,其中每個權利要求本身都作為本發明的單獨實施例。本領域那些技術人員應當理解在本文所公開的示例中的設備的模塊或單元或組間可以布置在如該實施例中所描述的設備中,或者可替換地可以定位在與該示例中的設備不同的一個或多個設備中。前述示例中的模塊可以組合為一個模塊或者此外可以分成多個子模塊。本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變並且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組間組合成一個模塊或單元或組間,以及此外可以把它們分成多個子模塊或子單元或子組間。除了這樣的特徵和/或過程或者單元中的至少一些是相互排斥之外,可以採用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特徵以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特徵可以由提供相同、等同或相似目的的替代特徵來代替。此外,本領域的技術人員能夠理解,儘管在此所述的一些實施例包括其它實施例中所包括的某些特徵而不是其它特徵,但是不同實施例的特徵的組合意味著處於本發明的範圍之內並且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。此外,所述實施例中的一些在此被描述成可以由計算機系統的處理器或者由執行所述功能的其它裝置實施的方法或方法元素的組合。因此,具有用於實施所述方法或方法元素的必要指令的處理器形成用於實施該方法或方法元素的裝置。此外,裝置實施例的在此所述的元素是如下裝置的例子:該裝置用於實施由為了實施該發明的目的的元素所執行的功能。這裡描述的各種技術可結合硬體或軟體,或者它們的組合一起實現。從而,本發明的方法和設備,或者本發明的方法和設備的某些方面或部分可採取嵌入有形媒介,例如軟盤、cd-rom、硬碟驅動器或者其它任意機器可讀的存儲介質中的程序代碼(即指令)的形式,其中當程序被載入諸如計算機之類的機器,並被所述機器執行時,所述機器變成實踐本發明的設備。在程序代碼在可編程計算機上執行的情況下,計算設備一般包括處理器、處理器可讀的存儲介質(包括易失性和非易失性存儲器和/或存儲元件),至少一個輸入裝置,和至少一個輸出裝置。其中,存儲器被配置用於存儲程序代碼;處理器被配置用於根據該存儲器中存儲的所述程序代碼中的指令,執行本發明的基於卷積神經網絡的圖像處理方法。以示例而非限制的方式,計算機可讀介質包括計算機存儲介質和通信介質。計算機可讀介質包括計算機存儲介質和通信介質。計算機存儲介質存儲諸如計算機可讀指令、數據結構、程序模塊或其它數據等信息。通信介質一般以諸如載波或其它傳輸機制等已調製數據信號來體現計算機可讀指令、數據結構、程序模塊或其它數據,並且包括任何信息傳遞介質。以上的任一種的組合也包括在計算機可讀介質的範圍之內。如在此所使用的那樣,除非另行規定,使用序數詞「第一」、「第二」、「第三」等等來描述普通對象僅僅表示涉及類似對象的不同實例,並且並不意圖暗示這樣被描述的對象必須具有時間上、空間上、排序方面或者以任意其它方式的給定順序。儘管根據有限數量的實施例描述了本發明,但是受益於上面的描述,本
技術領域:
內的技術人員明白,在由此描述的本發明的範圍內,可以設想其它實施例。此外,應當注意,本說明書中使用的語言主要是為了可讀性和教導的目的而選擇的,而不是為了解釋或者限定本發明的主題而選擇的。因此,在不偏離所附權利要求書的範圍和精神的情況下,對於本
技術領域:
的普通技術人員來說許多修改和變更都是顯而易見的。對於本發明的範圍,對本發明所做的公開是說明性的,而非限制性的,本發明的範圍由所附權利要求書限定。當前第1頁12