本公開涉及圖像處理領域,尤其涉及一種圖像類別的確定方法、裝置及存儲介質。
背景技術:
在相關技術中,深度卷積神經網絡(英文:convolutionneuralnetworks簡稱:cnn)被經常使用于圖像識別中,能夠支持對圖像的單標簽的分類,例如,對于1000個類別的分類問題,通過目前的cnn對圖像進行識別,輸出結果為一個1000維的概率向量,用于表示對應的1000個類別中每一個類別的置信度,這1000個類別的置信度之和為1,其中置信度最高的類別就是該待識別圖像的類別標簽,也就是說利用該cnn只能從這1000個類別中確定該圖像的一個類別標簽。
技術實現要素:
為克服相關技術中存在的問題,本公開提供一種圖像類別的確定方法、裝置及存儲介質。
根據本公開實施例的第一方面,提供一種圖像類別的確定方法,包括:
獲取目標圖像的圖像數據;
通過后向傳遞算法確定深度卷積神經網絡的目標參數,所述深度卷積神經網絡用于對所述圖像數據進行識別;
在確定所述深度卷積神經網絡的目標參數后,將所述圖像數據作為所述深度卷積神經網絡輸入,獲取所述深度卷積神經網絡輸出的預設個數的二分類概率,其中,每個所述二分類概率對應一個類別,且每個所述二分類概率互不相關;
根據所有的所述二分類概率確定所述目標圖像的類別。
可選的,所述深度卷積神經網絡,包括:二維神經元全連接層,至少一個一維神經元全連接層和至少一個卷積層,其中,所述二維神經元全連接層位于所述至少一個一維神經元全連接層的下層,所述至少一個一維神經元全連接層位于所述至少一個卷積層的下層。
可選的,所述通過后向傳遞算法確定深度卷積神經網絡的目標參數,包括:
分別對所述深度卷積神經網絡的每層的每個參數建立臨時存儲器;
利用為所述深度卷積神經網絡的每層的每個參數建立的臨時存儲器,通過所述后向傳遞算法訓練所述深度卷積神經網絡的參數;
其中,當所述深度卷積神經網絡中的所有層執行一次所述訓練所述深度卷積神經網絡的參數的步驟后,再次執行所述訓練所述深度卷積神經網絡的參數的步驟,直至所述深度卷積神經網絡中每層的每個參數的梯度值滿足預設的收斂條件時,將所述深度卷積神經網絡中每層的每個參數的當前值確定為所述深度卷積神經網絡的目標參數。
可選的,所述訓練所述深度卷積神經網絡的參數的步驟包括:
在所述深度卷積神經網絡的當前層不存在下一層時,將所述當前層的每個參數,分別與所述當前層的每個參數對應的臨時存儲器中存儲的梯度值相加,得到所述當前層的更新后的參數;其中,每個參數對應的臨時存儲器中存儲的梯度值是在上次執行所述訓練所述深度卷積神經網絡的參數的步驟時得到的,所述深度卷積神經網絡的每層的每個參數對應的臨時存儲器中存儲的梯度值的初始值為零;
獲取所述當前層的每個更新后的參數的當前梯度值;
將所述當前層的每個更新后的參數的當前梯度值存儲在與所述當前層的每個參數對應的臨時存儲器中。
可選的,所述訓練所述深度卷積神經網絡的參數的步驟包括:
在所述深度卷積神經網絡的當前層存在下一層時,將所述當前層的每個參數對應的臨時存儲器中存儲的梯度值,分別與所述下一層的臨時存儲器中存儲的與所述當前層的每個參數關聯的參數的梯度值相加,得到所述當前層的每個參數的新的梯度值;其中,每個參數對應的臨時存儲器中存儲的梯度值是在上次執行所述訓練所述深度卷積神經網絡的參數的步驟時得到的,所述深度卷積神經網絡的每層的每個參數對應的臨時存儲器中存儲的梯度值的初始值為零;
將所述當前層的每個參數的新的梯度值,分別與所述當前層的每個參數相加,得到所述當前層的更新后的參數;
獲取所述當前層的每個更新后的參數的當前梯度值;
將所述當前層的每個更新后的參數的當前梯度值存儲在與所述當前層的每個參數對應的臨時存儲器中;
其中,所述當前層和所述下一層為所述深度卷積神經網絡中任意相鄰的兩層。
可選的,所述二分類概率包括,肯定概率值和否定概率值,所述肯定概率值是所述圖像屬于所述二分類概率對應分類的概率值,所述根據所有的所述二分類概率確定所述目標圖像的類別,包括:
將所述所有的所述二分類概率中所述肯定概率值大于預設概率閾值的所述二分類概率,確定為目標二分類概率;
將所有所述目標二分類概率所對應類別確定為所述目標圖像的類別。
可選的,所述二維神經元全連接層包括利用邏輯回歸函數確定的預設個數的二維神經元。
根據本公開實施例的第二方面,提供一種圖像類別的確定裝置,包括:
圖像數據獲取模塊,被配置為獲取目標圖像的圖像數據;
圖像數據識別模塊,被配置為通過后向傳遞算法確定深度卷積神經網絡的目標參數,所述深度卷積神經網絡用于對所述圖像數據進行識別;
二分類概率輸出模塊,被配置為在確定所述深度卷積神經網絡的目標參數后,將所述圖像數據作為所述深度卷積神經網絡輸入,獲取所述深度卷積神經網絡輸出的預設個數的二分類概率,其中,每個所述二分類概率對應一個類別,且每個所述二分類概率互不相關;
圖像類別確定模塊,被配置為根據所有的所述二分類概率確定所述目標圖像的類別。
可選的,所述深度卷積神經網絡,包括:二維神經元全連接層,至少一個一維神經元全連接層和至少一個卷積層,其中,所述二維神經元全連接層位于所述至少一個一維神經元全連接層的下層,所述至少一個一維神經元全連接層位于所述至少一個卷積層的下層。
可選的,所述圖像數據識別模塊,包括存儲器建立子模塊和參數訓練子模塊:
所述存儲器建立子模塊,被配置為分別對所述深度卷積神經網絡的每層的每個參數建立臨時存儲器;
所述參數訓練子模塊,被配置為利用為所述深度卷積神經網絡的每層的每個參數建立的臨時存儲器,通過所述后向傳遞算法訓練所述深度卷積神經網絡的參數;
其中,當所述深度卷積神經網絡中的所有層執行一次所述訓練所述深度卷積神經網絡的參數的步驟后,再次執行所述訓練所述深度卷積神經網絡的參數的步驟,直至所述深度卷積神經網絡中每層的每個參數的梯度值滿足預設的收斂條件時,將所述深度卷積神經網絡中每層的每個參數的當前值確定為所述深度卷積神經網絡的目標參數。
可選的,所述參數訓練子模塊,被配置為:
在所述深度卷積神經網絡的當前層不存在下一層時,將所述當前層的每個參數,分別與所述當前層的每個參數對應的臨時存儲器中存儲的梯度值相加,得到所述當前層的更新后的參數;其中,每個參數對應的臨時存儲器中存儲的梯度值是在上次執行所述訓練所述深度卷積神經網絡的參數的步驟時得到的,所述深度卷積神經網絡的每層的每個參數對應的臨時存儲器中存儲的梯度值的初始值為零;
獲取所述當前層的每個更新后的參數的當前梯度值;
將所述當前層的每個更新后的參數的當前梯度值存儲在與所述當前層的每個參數對應的臨時存儲器中。
可選的,所述參數訓練子模塊,被配置為:
在所述深度卷積神經網絡的當前層存在下一層時,將所述當前層的每個參數對應的臨時存儲器中存儲的梯度值,分別與所述下一層的臨時存儲器中存儲的與所述當前層的每個參數關聯的參數的梯度值相加,得到所述當前層的每個參數的新的梯度值;其中,每個參數對應的臨時存儲器中存儲的梯度值是在上次執行所述訓練所述深度卷積神經網絡的參數的步驟時得到的,所述深度卷積神經網絡的每層的每個參數對應的臨時存儲器中存儲的梯度值的初始值為零;
將所述當前層的每個參數的新的梯度值,分別與所述當前層的每個參數相加,得到所述當前層的更新后的參數;
獲取所述當前層的每個更新后的參數的當前梯度值;
將所述當前層的每個更新后的參數的當前梯度值存儲在與所述當前層的每個參數對應的臨時存儲器中;
其中,所述當前層和所述下一層為所述深度卷積神經網絡中任意相鄰的兩層。
可選的,所述二分類概率包括,肯定概率值和否定概率值,所述肯定概率值是所述圖像屬于所述二分類概率對應分類的概率值;所述圖像類別確定模塊,包括:
二分類概率識別子模塊,被配置為將所述所有的所述二分類概率中所述肯定概率值大于預設概率閾值的所述二分類概率,確定為目標二分類概率;
圖像類別確定子模塊,被配置為將所有所述目標二分類概率所對應類別確定為所述目標圖像的類別。
可選的,所述二維神經元全連接層包括利用邏輯回歸函數確定的預設個數的二維神經元。
根據本公開實施例的第三方面,提供一種圖像類別的確定裝置,所述裝置包括:
處理器;
用于存儲處理器可執行指令的存儲器;
其中,所述處理器被配置為:獲取目標圖像的圖像數據;通過后向傳遞算法確定深度卷積神經網絡的目標參數,所述深度卷積神經網絡用于對所述圖像數據進行識別;在確定所述深度卷積神經網絡的目標參數后,將所述圖像數據作為所述深度卷積神經網絡輸入,獲取所述深度卷積神經網絡輸出的預設個數的二分類概率,其中,每個所述二分類概率對應一個類別,且每個所述二分類概率互不相關;根據所有的所述二分類概率確定所述目標圖像的類別。
根據本公開實施例的第四方面,提供一種計算機可讀存儲介質,當所述存儲介質中的計算機程序指令由處理器執行時,能夠實現第一方面所述方法的步驟。
本公開的實施例提供的技術方案可以包括以下有益效果:
上述技術方案在獲取目標圖像的圖像數據后,通過后向傳遞算法確定深度卷積神經網絡的目標參數,所述深度卷積神經網絡用于對所述圖像數據進行識別,在確定所述深度卷積神經網絡的目標參數后,將所述圖像數據作為所述深度卷積神經網絡輸入,獲取所述深度卷積神經網絡輸出的預設個數的二分類概率,其中,每個所述二分類概率對應一個類別,且每個所述二分類概率互不相關,并根據所有的所述二分類概率確定所述目標圖像的類別。本公開所提供的技術方案通過改進深度卷積神經網絡的結構,使得深度卷積神經網絡輸出互不相關的二分類概率,能夠實現對圖像的多標簽分類。
應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。
圖1是相關技術中的基于alexnet網絡結構的cnn的結構示意圖;
圖2是根據一示例性實施例示出一種基于alexnet網絡結構的cnn的結構示意圖;
圖3是根據一示例性實施例示出的一種圖像類別的確定方法的流程圖;
圖4是根據一示例性實施例示出的一種圖像類別的確定方法的流程圖;
圖5是根據一示例性實施例示出的一種圖像類別的確定方法的流程圖;
圖6是根據一示例性實施例示出的一種圖像類別的確定方法的流程圖;
圖7是根據一示例性實施例示出的一種圖像類別的確定裝置的框圖;
圖8是根據一示例性實施例示出的一種圖像數據識別模塊的框圖;
圖9是根據一示例性實施例示出的一種圖像類別確定模塊的框圖;
圖10是根據另一示例性實施例示出的一種圖像類別的確定裝置的框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本公開相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
在介紹本公開的實施例之前,首先對深度卷積神經網絡進行介紹。
在本公開實施例中,涉及的cnn結構,可以基于alexnet網絡結構,在基于該結構的cnn中,圖像數據會分別經過一系列的卷積層(英文:convolutionlayer)、激活層(英文:activationlayer)、池化層(英文:poolinglayer)、全連接層(英文:fullyconnectedlayer)的處理,并通過類別概率層(英文:softmaxlayer)進行結果的輸出。采用cnn進行圖像數據的識別能夠獲取對平移、縮放和旋轉不變的觀測數據的顯著特征,圖像數據的局部感受區域允許神經元(或者處理單元)訪問到基礎的圖像特征,例如定向邊緣或者角點。但是相關技術中的cnn只支持單標簽分類,并不支持多標簽分類,即可以理解為只能識別出圖像的一個分類,因此對于包括多個類別對象的圖像也只能識別出其中的一個類別。例如,在一幅圖像中同時出現了貓和狗,當相關技術中的cnn對圖像進行識別后所輸出的識別結果中,貓和狗的置信度是此消彼長的關系,即其識別結果非貓即狗,無法實現在同一圖像中對多個類別的對象的識別。
因此,本公開實施例所提出的cnn的網絡結構是基于alexnet的網絡結構進行的改進。alexnet是最初應用于大規模圖像識別并取得積極結果的深度卷積神經網絡的結構,相關技術中alexnet網絡結構包括8層,如圖1所示。其中第一層到第五層是卷積層,以第一層為例,當輸入的圖像規格采用224*224*3時,第一層的卷積濾波器的大小是11*11,卷積步幅設置為4,包括96個卷積濾波器,因此該第一層的輸出是96個55*55大小的圖像,在卷積濾波之后還可以接有relus(英文:rectifiedlinearunits,中文:激活函數)操作和最大池化(英文:max-pooling)處理操作,用于提高深度卷積神經網絡的訓練速度以及提高訓練的經度,不容易產生過擬合的訓練結果。從第一層到第五層,每層設置有不同大小和個數的濾波器,如圖1所示,第二層的卷積濾波器的大小是5*5,設置有256個卷積濾波器,第三層和第四層的卷積濾波器的大小是3*3,設置有384個卷積濾波器,第五層的的卷積濾波器的大小是3*3,設置有256個卷積濾波器,通過對輸入圖像數據進行逐層的卷積處理,其處理過程與上述的第一層相同,最終輸出256個6*6的特征圖像。之后第六層到第八層是全連接層,是在前五層卷積層的基礎上再加上一個三層的全連接神經網絡分類器。以第六層為例,該第六層的神經元個數為4096個,用于對第五層輸出的256個大小為6*6特征圖像進行一個全連接處理以將上述256個特征圖像進行卷積變為一個特征點,然后對于4096個神經元中的每一個神經元,都是由256個特征圖中某些個特征圖卷積之后得到的特征點乘以相應的權重之后,再加上一個偏置得到的。而第八層的神經元個數設置為1000(個數可以根據需要設置),用于訓練目標圖像的1000個類別,因此第八層最終的輸出結果為一個1000維的概率向量,該概率向量中的每個元素用于表示上述1000個類別中的每一個類別的置信度,這1000個類別的置信度的和為1,置信度最高的類別就是該目標圖像的類別。
在本公開一實施例中,cnn的結構如圖2所示,其與相關技術中的cnn的結構不同之處在于,在第八層使用1000個(二維神經元的數量可以根據實際需要來設置)互不影響的二維神經元代替原來的一維神經元,其中,每個二維神經元對應一個類別。舉例來說,在本公開一實施例中,cnn網絡的輸出表示為output,output=[c_1,c_2,…,c_k],其中,k=1000,其中c_1,c_2,…,c_k分別表示上述1000個二維神經元輸出的二分類概率,c_i表示第i個類別的二分類概率的編號,因為二維神經元輸出的是二分類概率,因此c_i包括:c_i=0和c_i=1,其中c_i=0用于表示待識別的樣本圖像不屬于該c_i對應的類別,c_i=1則表示這幅圖像屬于該c_i對應類別,所有的c_i的概率值相加和不等于1,且c_i=0和c_i=1的概率之和等于1。為了實現這一目的,在本公開一實施例提供的cnn的輸出不再是一個k維的概率向量,而是k個不相互干擾的二維概率向量,從而能夠對圖像進行k個分類的識別,因此能夠實現圖像的多標簽分類。
圖3是根據一示例性實施例示出的一種圖像類別的確定方法的流程圖,如圖3所示,該方法包括以下步驟:
在步驟301中,獲取目標圖像的圖像數據。
在步驟302中,通過后向傳遞算法確定深度卷積神經網絡的目標參數,該深度卷積神經網絡用于對圖像數據進行識別。
示例地,該深度卷積神經網絡包括:二維神經元全連接層,至少一個一維神經元全連接層和至少一個卷積層,其中,二維神經元全連接層位于至少一個一維神經元全連接層的下層,至少一個一維神經元全連接層位于至少一個卷積層的下層。也就是說,該深度卷積神經網絡的結構從上至下,依次是卷積層,一維神經元全連接層和二維神經元全連接層,示例地,卷積層的層數可以為5,一維神經元全連接層的層數可以為2,該深度卷積神經網絡的最后一層為二維神經元全連接層,其結構可以如圖2所示。
其中,后向傳遞算法(英文:back-propagation,簡稱bp)是一種神經網絡學習算法,是在多層前饋神經網絡上的學習,它能夠迭代地處理訓練卷積神經網絡中的數據集(參數和參數的梯度的集合),直至滿足預設的收斂條件。簡單的說,就是從最后一層即輸出層開始,經由各個全連接層和卷積層到第一層為止,逐層向前訓練各層的每個參數,依次求出每層的每個參數的梯度值,求出的梯度值可以用于對每層以及每層的上一層的參數更新,因此稱作后向傳遞,在所有層的參數更新過一次后再次執行上述方法,直至每層的每個參數的梯度滿足收斂條件為止,因此也可以看做是一種逐層求梯度值的算法。
另外,步驟302和步驟301沒有固定的執行順序,也可以先執行步驟302,再執行步驟301。
在步驟303中,在確定深度卷積神經網絡的目標參數后,將圖像數據作為深度卷積神經網絡輸入,獲取深度卷積神經網絡輸出的預設個數的二分類概率,其中,每個二分類概率對應一個類別,且每個二分類概率互不相關。
其中,該深度卷積神經網絡的二維神經元全連接層包括利用邏輯回歸函數確定的預設個數的二維神經元。
邏輯回歸(logisticregression)是當前比較常用的機器學習方法,用于估計某種事物的可能性,是一個非線性分類模型,它與普通線性回歸的不同點在于能夠將線性回歸輸出的很大范圍的數,例如從負無窮到正無窮,壓縮到0和1之間,以0到1之間的浮點數為輸出值表示為該函數的概率值。邏輯回歸函數經常用于分類,主要是二分類,也可以是多分類。所謂二分類,包含正類和負類,正類代表該樣本所表示命題為真,負類代表該樣本所表示命題為假,因此二分類概率就包括樣本屬于正類的概率值和屬于負類的概率值,示例的,當樣本屬于正類的概率值大于0.5,那么就可以判定它是正類,否則就是負類,其中正類的概率值和負類的概率值之和為1,即可以理解為該二分類概率包括了該目標圖像屬于對應類別的概率,以及不屬于該對應類別的概率,當該目標圖像屬于(該二分類概率的)對應類別的概率大于一定閾值時,可以確定該目標圖像屬于這一類別,當該目標圖像不屬于該對應類別的概率大于一定閾值時,可以確定該目標圖像不屬于這一類別。
因此,經過二維神經元全連接層后輸出的深度卷積神經網絡的可以是1000個互不干擾的二分類概率,每個二分類概率分別對應一個類別,用于分別指示該目標圖像屬于和不屬于每個類別的概率,之后根據該輸出的[c_1,c_2,…,c_k]可以確定該目標圖像的所有類別標簽。
在步驟304中,根據所有的二分類概率確定目標圖像的類別。
示例地,由于在步驟303中輸出的1000個c_i互不相關,因此根據這1000個c_i互不相關的二分類概率能確定出目標圖像的類別可能有1到1000個,因此根據所有二分類概率能確定出的目標圖像的類別不再唯一。
綜上所述,本公開實施例所提供的圖像類別的確定方法,該方法通過獲取目標圖像的圖像數據;通過后向傳遞算法確定深度卷積神經網絡的目標參數,該深度卷積神經網絡用于對圖像數據進行識別;在確定深度卷積神經網絡的目標參數后,將圖像數據作為深度卷積神經網絡輸入,獲取深度卷積神經網絡輸出的預設個數的二分類概率;之后根據所有的二分類概率確定目標圖像的類別。本公開實施例所提供的技術方案通過改進深度卷積神經網絡的結構,使得深度卷積神經網絡輸出互不相關的二分類概率,能夠實現對圖像的多標簽分類。
圖4是根據一示例性實施例示出的一種圖像類別的確定方法的流程圖,如圖4所示,圖3中的步驟302所述的通過后向傳遞算法確定深度卷積神經網絡的目標參數,該深度卷積神經網絡用于對圖像數據進行識別,包括以下步驟:
在步驟3021中,分別對深度卷積神經網絡的每層的每個參數建立臨時存儲器。
為了防止在迭代鏈式求導確定參數的過程中,會造成參數的逐層覆蓋,可以分別為每層的每個參數度一應的建立臨時的存儲器,以在每一輪計算中存儲對應參數的梯度值,確保深度卷積神經網絡的輸出結果之間相互獨立。其中,需要說明的是,在本實施例中意圖2所示的網絡結構為例,上述的一輪計算是指從輸入層(第一個卷基層)到輸出層(二維神經元全連接層)完成一次參數更新。
在步驟3022中,利用為深度卷積神經網絡的每層的每個參數建立的臨時存儲器,通過后向傳遞算法訓練深度卷積神經網絡的參數。
其中,當深度卷積神經網絡中的所有層執行一次訓練深度卷積神經網絡的參數的步驟后,再次執行所述訓練深度卷積神經網絡的參數的步驟,直至深度卷積神經網絡中每層的每個參數的梯度值滿足預設的收斂條件時,將深度卷積神經網絡中每層的每個參數的當前值確定為深度卷積神經網絡的目標參數。
也就是說,通過后向傳遞算法訓練深度卷積神經網絡的參數的方式是迭代的,該步驟實施方式參見下面圖5的實施例,首先從深度卷積神經網絡的最后一層,也就是二維神經元全連接層開始進行步驟30221,除了最后一層外其他層進行步驟30222的操作。本實施例中所述的當前層可以理解為正在進行參數更新計算的這一層,該當前層可以是深度卷積神經網絡中的任一層。另外,對該深度卷積神經網絡進行訓練時,該輸入數據可以為預設置的若干個標簽圖像。
圖5是根據一示例性實施例示出的一種圖像類別的確定方法的流程圖,如圖5所示,以深度卷積神經網絡中的任一層為例,圖4中的步驟3022所述的訓練所述深度卷積神經網絡的參數的步驟包括:
在步驟30221中,在深度卷積神經網絡的當前層不存在下一層時,將當前層的每個參數,分別與當前層的每個參數對應的臨時存儲器中存儲的梯度值相加,得到當前層的更新后的參數。
例如,輸出層(二維神經元全連接層)是上述cnn網絡中的第八層,也是最后一層,因此輸出層的每個參數的更新可以執行步驟30221,以該層中的參數a為例,該參數a的原值(或稱為當前值,即本次更新以前參數a的值)為a0,那么參數a更新后的參數是參數a對應的臨時存儲器中的梯度值ad與參數a的原值a0之和,表示為anew=ad+a0,之后進行步驟30224的操作。其中,參數a可以是輸出層中的任一參數,在第一次更新參數a時,參數a對應的臨時存儲器中的梯度值ad是在上一次更新參數a后計算得到的參數a的梯度值,因此如果是第一次更新參數a,參數a對應的臨時存儲器中的梯度值ad為零。
在步驟30222中,在深度卷積神經網絡的當前層存在下一層時,將當前層的每個參數對應的臨時存儲器中存儲的梯度值,分別與下一層的臨時存儲器中存儲的與當前層的每個參數關聯的參數的梯度值相加,得到當前層的每個參數的新的梯度值。
其中,當前層和下一層為深度卷積神經網絡中任意相鄰的兩層。每個參數對應的臨時存儲器中存儲的梯度值是在上次執行所述訓練深度卷積神經網絡的參數的步驟時得到的,該深度卷積神經網絡的每層的每個參數對應的臨時存儲器中存儲的梯度值的初始值為零。
例如,對于上述cnn網絡的第一層至第七層,均具有下一層,以第七層為例,第七層的下一層就是上述的第八層,也就是輸出層。假設對于第七層的參數b,該參數的原值為b0,參數b對應的臨時存儲器中存儲的梯度值為bd,bd是在上一次更新參數b后計算得到的參數b的梯度值,因此如果是第一次更新參數b,參數b對應的臨時存儲器中的梯度值bd為零。假設在第八層與參數b關聯的參數分別有d、e、f,參數d、e、f分別對應的臨時存儲其中分別存儲了參數d、e、f的梯度值dd’、ed’和fd’(梯度值dd’、ed’和fd’,是在第八層執行完步驟3021以及步驟3024~3026后得到的),則參數b的新的梯度值bdnew為bd、dd’、ed’和fd’之和。
在步驟30223中,將當前層的每個參數的新的梯度值,分別與當前層的每個參數相加,得到當前層的更新后的參數。
例如,對于第七層的參數b,更新后的參數b為參數b的原值b0與參數b的新的梯度值bdnew之和。
綜上,通過上述步驟30221可以對cnn網絡中最后一層進行參數更新,通過步驟30222和步驟30223可以對除了最后一層以外其他所有層的參數進行更新,在每一層的參數完成更新后,再對更新后的參數進行步驟30224的操作,以確定更新后的參數的梯度值,進而完成對臨時存儲器中的梯度值的更新。
在步驟30224中,獲取當前層的每個更新后的參數的當前梯度值。
示例的,以步驟30221中的參數a為例,在得到參數a的更新后的參數anew后,計算anew的當前梯度值,記為ad’,并執行步驟30223以將ad’存儲在參數a對應的臨時存儲器中替換之前存儲的ad。其中,步驟30222中涉及的梯度值dd’、ed’和fd’也是通過同樣方法得到并存儲在對應的臨時存儲器中的。這樣,在后向傳遞算法中對梯度值的逐層求解,每層的每個參數的當前梯度值都是根據更新后的參數而確定的,以保證的該參數的實時更迭。
在步驟30225中,將當前層的每個更新后的參數的當前梯度值存儲在與當前層的每個參數對應的臨時存儲器中。
將當前層的每個更新后的參數的當前梯度值存儲在對應的臨時存儲器中,以便在再一次執行步驟30221~30226所述的訓練深度卷積神經網絡的參數的步驟時,用于對各層的各個參數進行更新,也就是步驟30221或者步驟30222所進行的參數更新。由此可見,通過為每層的每個參數設置臨時存儲器,使得每一層的每個參數在更新后,都將更新后的梯度值進行獨立存儲,使得上一層在更新參數時能夠利用相鄰的下層中相關聯參數的梯度值進行參數更新,因此參數更新后的梯度值在迭代過程中并非被直接覆蓋,而是傳遞到了上一層。
在步驟30226中,判斷深度卷積神經網絡中每層的每個參數的梯度值是否滿足預設的收斂條件。
當滿足預設的收斂條件時,結束對該深度卷積神經網絡的參數的訓練,繼續步驟303的操作。如果深度卷積神經網絡中還存在不滿足收斂條件的參數,則再次執行步驟30221~30226所述的訓練深度卷積神經網絡的參數的步驟,直至深度卷積神經網絡中每層的每個參數的梯度值均滿足預設的收斂條件時,將深度卷積神經網絡中每層的每個參數的當前值確定為深度卷積神經網絡的目標參數,此時就完成了深度卷積神經網絡的參數的訓練。
示例的,該預設的收斂條件可以設置為深度卷積神經網絡的每層的參數的梯度值為0,或者該梯度值小于一個較小的預設值,當滿足該預設的收斂條件時,說明此時的深度卷積神經網絡的各層的每個參數已經接近理想需求,可以結束對參數的訓練,進行對圖像的類別的識別操作。
而當仍不滿足預設的收斂條件時,說明還需對深度卷積神經網絡的參數進行訓練,返回步驟30221,重新從最后一層從后向前再次開始參數訓練,直到滿足本步驟的判斷條件為止。
圖6是根據一示例性實施例示出的一種圖像類別的確定方法的流程圖,如圖6所示,圖3中的步驟304所述的根據所有的二分類概率確定目標圖像的類別,包括:
在步驟3041中,將所有的二分類概率中肯定概率值大于預設概率閾值的二分類概率,確定為目標二分類概率。
以步驟304中輸出的1000個c_i為例,可以預先設置一個概率閾值,用于過濾肯定概率值過低的二分類概率所對應的類別,例如可以設置該概率閾值為:0.5,當c_i=1的概率值低于或等于0.5時,可以確定該目標圖像不屬于該c_i對應的類別,當c_i=1的概率值大于0.5時,可以確定該目標圖像屬于該c_i對應的類別。當然,也可以通過否定概率來確定目標圖像的分類,例如,可以是將所有的二分類概率中否定概率值小于預設概率閾值的二分類概率,確定為目標二分類概率。
在步驟3042中,將所有目標二分類概率所對應類別確定為目標圖像的類別。
經過步驟3041的確定的目標二分類概率所有對應的類別是目標圖像可能屬于的類別集合,類別集合中可以包括一個或者多個類別標簽。由于所有二分類概率是相互獨立的,因此所有二分類概率互相不干擾,因此目標圖像是各個目標二分類概率對應的類別的概率也不再是此消彼長,而是互不影響的,因此基于上述方法能夠確定的該目標圖像的多個分類,從而能夠實現該目標圖像的多標簽分類。
綜上所述,本公開實施例所提供的圖像類別的確定方法,該方法通過獲取目標圖像的圖像數據;通過后向傳遞算法確定深度卷積神經網絡的目標參數,該深度卷積神經網絡用于對圖像數據進行識別;在確定深度卷積神經網絡的目標參數后,將圖像數據作為深度卷積神經網絡輸入,獲取深度卷積神經網絡輸出的預設個數的二分類概率;之后根據所有的二分類概率確定目標圖像的類別。本公開實施例所提供的技術方案通過改進深度卷積神經網絡的結構,使得深度卷積神經網絡輸出互不相關的二分類概率,能夠實現對圖像的多標簽分類。
圖7是根據一示例性實施例示出的一種圖像類別的確定裝置的框圖,如圖7所示,該裝置700包括:
圖像數據獲取模塊710,被配置為獲取目標圖像的圖像數據。
圖像數據識別模塊720,被配置為通過后向傳遞算法確定深度卷積神經網絡的目標參數,深度卷積神經網絡用于對圖像數據進行識別。
二分類概率輸出模塊730,被配置為在確定深度卷積神經網絡的目標參數后,將圖像數據作為深度卷積神經網絡輸入,獲取深度卷積神經網絡輸出的預設個數的二分類概率,其中,每個二分類概率對應一個類別,且每個二分類概率互不相關。
圖像類別確定模塊740,被配置為根據所有的二分類概率確定目標圖像的類別。
可選的,該深度卷積神經網絡,包括:二維神經元全連接層,至少一個一維神經元全連接層和至少一個卷積層,其中,二維神經元全連接層位于至少一個一維神經元全連接層的下層,至少一個一維神經元全連接層位于至少一個卷積層的下層。
可選的,圖8是根據一示例性實施例示出的一種圖像數據識別模塊的框圖,如圖8所示,該圖像數據識別模塊720,包括存儲器建立子模塊721和參數訓練子模塊722:
存儲器建立子模塊721,被配置為分別對深度卷積神經網絡的每層的每個參數建立臨時存儲器。
參數訓練子模塊722,被配置為利用為深度卷積神經網絡的每層的每個參數建立的臨時存儲器,通過后向傳遞算法訓練深度卷積神經網絡的參數。
其中,當深度卷積神經網絡中的所有層執行一次訓練深度卷積神經網絡的參數的步驟后,再次執行訓練深度卷積神經網絡的參數的步驟,直至深度卷積神經網絡中每層的每個參數的梯度值滿足預設的收斂條件時,將深度卷積神經網絡中每層的每個參數的當前值確定為深度卷積神經網絡的目標參數。
可選的,該參數訓練子模塊722,被配置為:在深度卷積神經網絡的當前層不存在下一層時,將當前層的每個參數,分別與當前層的每個參數對應的臨時存儲器中存儲的梯度值相加,得到當前層的更新后的參數;其中,每個參數對應的臨時存儲器中存儲的梯度值是在上次執行訓練深度卷積神經網絡的參數的步驟時得到的,深度卷積神經網絡的每層的每個參數對應的臨時存儲器中存儲的梯度值的初始值為零;
獲取當前層的每個更新后的參數的當前梯度值;
將當前層的每個更新后的參數的當前梯度值存儲在與當前層的每個參數對應的臨時存儲器中。
可選的,參數訓練子模塊722,還被配置為:在深度卷積神經網絡的當前層存在下一層時,將當前層的每個參數對應的臨時存儲器中存儲的梯度值,分別與下一層的臨時存儲器中存儲的與當前層的每個參數關聯的參數的梯度值相加,得到當前層的每個參數的新的梯度值;其中,每個參數對應的臨時存儲器中存儲的梯度值是在上次執行訓練深度卷積神經網絡的參數的步驟時得到的,深度卷積神經網絡的每層的每個參數對應的臨時存儲器中存儲的梯度值的初始值為零;
將當前層的每個參數的新的梯度值,分別與當前層的每個參數相加,得到當前層的更新后的參數;
獲取當前層的每個更新后的參數的當前梯度值;
將當前層的每個更新后的參數的當前梯度值存儲在與當前層的每個參數對應的臨時存儲器中;
其中,當前層和下一層為深度卷積神經網絡中任意相鄰的兩層。
可選的,二分類概率包括,肯定概率值和否定概率值,肯定概率值是圖像屬于二分類概率對應分類的概率值,肯定概率值和否定概率值之和為1。
圖9是根據一示例性實施例示出的一種圖像類別確定模塊的框圖,如圖9所示,該圖像數據識別模塊740,包括:
二分類概率識別子模塊741,被配置為將所有的二分類概率中肯定概率值大于預設概率閾值的二分類概率,確定為目標二分類概率。
圖像類別確定子模塊742,被配置為將所有目標二分類概率所對應類別確定為目標圖像的類別。
可選的,二維神經元全連接層包括利用邏輯回歸函數確定的預設個數的二維神經元。
綜上所述,本公開所提供的圖像類別的確定裝置,該方法通過獲取目標圖像的圖像數據;通過后向傳遞算法確定深度卷積神經網絡的目標參數,該深度卷積神經網絡用于對圖像數據進行識別;在確定深度卷積神經網絡的目標參數后,將圖像數據作為深度卷積神經網絡輸入,獲取深度卷積神經網絡輸出的預設個數的二分類概率;之后根據所有的二分類概率確定目標圖像的類別。本公開所提供的技術方案通過改進深度卷積神經網絡的結構,使得深度卷積神經網絡輸出互不相關的二分類概率,能夠實現對圖像的多標簽分類。
關于上述實施例中的裝置,其中各個模塊執行操作的具體方式已經在有關該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
圖10是根據另一示例性實施例示出的一種圖像類別的確定裝置1000的框圖。例如,裝置1000可以是移動電話,計算機,數字廣播終端,消息收發設備,游戲控制臺,平板設備,醫療設備,健身設備,個人數字助理等。
參照圖10,裝置1000可以包括以下一個或多個組件:處理組件1002,存儲器1004,電力組件1006,多媒體組件1008,音頻組件1010,輸入/輸出(i/o)的接口1012,傳感器組件1014,以及通信組件1016。
處理組件1002通常控制裝置1000的整體操作,諸如與顯示,電話呼叫,數據通信,相機操作和記錄操作相關聯的操作。處理組件1002可以包括一個或多個處理器1020來執行指令,以完成圖像類別的確定的全部或部分步驟。此外,處理組件1002可以包括一個或多個模塊,便于處理組件1002和其他組件之間的交互。例如,處理組件1002可以包括多媒體模塊,以方便多媒體組件1008和處理組件1002之間的交互。
存儲器1004被配置為存儲各種類型的數據以支持在裝置1000的操作。這些數據的示例包括用于在裝置1000上操作的任何應用程序或方法的指令,聯系人數據,電話簿數據,消息,圖像,視頻等。存儲器1004可以由任何類型的易失性或非易失性存儲設備或者它們的組合實現,如靜態隨機存取存儲器(sram),電可擦除可編程只讀存儲器(eeprom),可擦除可編程只讀存儲器(eprom),可編程只讀存儲器(prom),只讀存儲器(rom),磁存儲器,快閃存儲器,磁盤或光盤。
電力組件1006為裝置1000的各種組件提供電力。電力組件1006可以包括電源管理系統,一個或多個電源,及其他與為裝置1000生成、管理和分配電力相關聯的組件。
多媒體組件1008包括在所述裝置1000和用戶之間的提供一個輸出接口的屏幕。在一些實施例中,屏幕可以包括液晶顯示器(lcd)和觸摸面板(tp)。如果屏幕包括觸摸面板,屏幕可以被實現為觸摸屏,以接收來自用戶的輸入信號。觸摸面板包括一個或多個觸摸傳感器以感測觸摸、滑動和觸摸面板上的手勢。所述觸摸傳感器可以不僅感測觸摸或滑動動作的邊界,而且還檢測與所述觸摸或滑動操作相關的持續時間和壓力。在一些實施例中,多媒體組件1008包括一個前置攝像頭和/或后置攝像頭。當裝置1000處于操作模式,如拍攝模式或視頻模式時,前置攝像頭和/或后置攝像頭可以接收外部的多媒體數據。每個前置攝像頭和后置攝像頭可以是一個固定的光學透鏡系統或具有焦距和光學變焦能力。
音頻組件1010被配置為輸出和/或輸入音頻信號。例如,音頻組件1010包括一個麥克風(mic),當裝置1000處于操作模式,如呼叫模式、記錄模式和語音識別模式時,麥克風被配置為接收外部音頻信號。所接收的音頻信號可以被進一步存儲在存儲器1004或經由通信組件1016發送。在一些實施例中,音頻組件1010還包括一個揚聲器,用于輸出音頻信號。
i/o接口1012為處理組件1002和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤,點擊輪,按鈕等。這些按鈕可包括但不限于:主頁按鈕、音量按鈕、啟動按鈕和鎖定按鈕。
傳感器組件1014包括一個或多個傳感器,用于為裝置1000提供各個方面的狀態評估。例如,傳感器組件1014可以檢測到裝置1000的打開/關閉狀態,組件的相對定位,例如所述組件為裝置1000的顯示器和小鍵盤,傳感器組件1014還可以檢測裝置1000或裝置1000一個組件的位置改變,用戶與裝置1000接觸的存在或不存在,裝置1000方位或加速/減速和裝置1000的溫度變化。傳感器組件1014可以包括接近傳感器,被配置用來在沒有任何的物理接觸時檢測附近物體的存在。傳感器組件1014還可以包括光傳感器,如cmos或ccd圖像傳感器,用于在成像應用中使用。在一些實施例中,該傳感器組件1014還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
通信組件1016被配置為便于裝置1000和其他設備之間有線或無線方式的通信。裝置1000可以接入基于通信標準的無線網絡,如wifi,2g或3g,或它們的組合。在一個示例性實施例中,通信組件1016經由廣播信道接收來自外部廣播管理系統的廣播信號或廣播相關信息。在一個示例性實施例中,所述通信組件1016還包括近場通信(nfc)模塊,以促進短程通信。例如,在nfc模塊可基于射頻識別(rfid)技術,紅外數據協會(irda)技術,超寬帶(uwb)技術,藍牙(bt)技術和其他技術來實現。
在示例性實施例中,裝置1000可以被一個或多個應用專用集成電路(asic)、數字信號處理器(dsp)、數字信號處理設備(dspd)、可編程邏輯器件(pld)、現場可編程門陣列(fpga)、控制器、微控制器、微處理器或其他電子元件實現,用于執行圖像類別的確定。
在示例性實施例中,還提供了一種包括指令的非臨時性計算機可讀存儲介質,例如包括指令的存儲器1004,上述指令可由裝置1000的處理器1020執行以完成圖像類別的確定。例如,所述非臨時性計算機可讀存儲介質可以是rom、隨機存取存儲器(ram)、cd-rom、磁帶、軟盤和光數據存儲設備等。
本領域技術人員在考慮說明書及實踐本公開后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本公開的一般性原理并包括本公開未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由下面的權利要求指出。
應當理解的是,本公開并不局限于上面已經描述并在附圖中示出的精確結構,并且可以在不脫離其范圍進行各種修改和改變。本公開的范圍僅由所附的權利要求來限制。