新四季網

一種菜品識別方法與流程

2023-06-04 06:32:21 3

本發明屬於計算機圖像識別技術,具體來說涉及一種基於卷積神經網絡的用於識別菜品圖像的技術方案。



背景技術:

由於圖像的形成受到很多因素的影響,比如說拍攝角度、環境光線,原始圖像的矩陣數據並不能被計算機分析,所以圖像識別的第一步是特徵提取,即將圖像轉化為一個固定長度的向量,該向量受外界條件影響應當是較小的。並且,不同於一般的圖像識別問題,比如飛機和汽車,他們在外觀上是有很大的結構性差異的,而對於菜品,存在大量結構相似的不同種類的菜品,比如土豆絲和豆芽。現有的基於局部描述子的特徵提取方法無法捕捉到這種細緻的差異,也無法應對同一菜品的豐富變化,從而識別精確度偏低,魯棒性不夠好。



技術實現要素:

本發明提供一種菜品識別技術,即給定一張圖片,若是菜品,則輸出其菜品類別。具體來說,本發明採用的技術方案如下:

一種菜品識別方法,其特徵在於,所述方法包括以下步驟:1)獲得web請求,伺服器相應web請求,獲取相應圖像;2)保存圖像,獲取輸入數據流,生成圖像文件名並保存至磁碟;3)圖像預處理,對輸入的圖像進行尺寸調整和歸一化;4)使用預先訓練的卷積神經網絡進行處理,對圖像上的物體進行檢測及分類,如果沒有檢測到菜品則結束,如果檢測到菜品,則結合分類結果,輸出相應菜品信息。

在以上方法中,步驟3)預處理的步驟包括,使用OpenCV的cv2接口,將本地圖像讀取為一個Numpy的矩陣對象,將圖像縮放和截取為224*224像素,並將圖像的RGB通道分別減去104、117、123,獲得歸一化的圖像文件。

進一步,步驟4)包括,使用5層卷積神經網絡,卷積核依次為11×11、5×5、3×3、3×3、3×3,卷積核個數依次為96、256、384、384、256個,第一、二、五層卷積之後分別進行最大值池化,池化核2×2,第五層池化結果作為輸入進行兩層全連接,結果輸出至Softmax層,輸出節點數量為菜品的數量,每一維對應圖片屬於某個類別的概率。

更進一步,以上神經網絡分別用於菜品的檢測和識別,其中當檢測時分類為菜品和背景,當識別菜品品類時輸出概率最高的30個菜品品類,當兩者都得到肯定結果時,輸出更準確的菜品類別。

採用本發明的方案,能夠實現菜品的實時檢測與鑑別,輸出更為準確的結果,避免在沒有菜品的情況下輸出讓人覺得奇怪的結果,在有菜品的情況下輸出更為精確的結果。

附圖說明

圖1是本發明的實現流程圖。

具體實施方式

本發明的目的在於在給定一張圖片的情況下,若其中包含菜品,則輸出其菜品類別,若沒有菜品則不輸出結果。

菜品拍攝獲得的圖像會受到很多因素的影響,而且菜品本身具有複雜的特徵,例如顏色、紋理、空間位置、形狀等等,在不同的拍攝角度、環境光線等條件下,同樣的菜品拍攝的圖像會差異巨大。原始圖像的矩陣數據並不能被計算機分析,所以圖像識別的第一步是特徵提取,即將圖像轉化為一個固定長度的向量,該向量受外界條件影響應當是較小的。並且,不同於一般的圖像識別問題,比如飛機和汽車,他們在外觀上是有很大的結構性差異的,而對於菜品,存在大量結構相似的不同種類的菜品,比如土豆絲和豆芽。現有的基於局部描述子的特徵提取方法無法捕捉到這種細緻的差異,也無法應對同一菜品的豐富變化,從而識別精確度偏低,魯棒性不夠好。

至今為止特徵沒有統一和精確的定義。特徵的精確定義往往由問題或者應用類型決定。特徵是一個數字圖像中「有趣」的部分,它是許多計算機圖像分析算法的起點。因此一個識別算法是否成功往往由它使用和定義的特徵決定。特徵提取最重要的一個特性是「不變性」:同一場景的不同圖像所提取的特徵應該是沒有大的變化的。常用的圖像特徵有顏色特徵、紋理特徵、形狀特徵、空間關係特徵。(一)顏色特徵是一種全局特徵,描述了圖像或圖像區域所對應的景物的表面性質。一般顏色特徵是基於像素點的特徵。由於顏色對圖像或圖像區域的方向、大小等變化不敏感,所以顏色特徵不能很好地捕捉圖像中對象的局部信息。(二)紋理特徵也是一種全局特徵,它也描述了圖像或圖像區域所對應景物的表面性質。但由於紋理只是一種物體表面的特性,並不能完全反映出物體的本質屬性,所以僅僅利用紋理特徵是無法獲得高層次圖像內容的。(三)各種基於形狀特徵的分類方法都可以比較有效地利用圖像中感興趣的目標來進行分類,但它們也有一些共同的問題,目前基於形狀的分類方法還缺乏比較完善的數學模型;如果目標有變形時分類結果往往不太可靠;許多形狀特徵所反映的目標形狀信息與人的直觀感覺不完全一致,或者說,特徵空間的相似性與人視覺系統感受到的相似性有差別。(四)所謂空間關係,是指圖像中分割出來的多個目標之間的相互的空間位置或相對方向關係,這些關係也可分為連接/鄰接關係、交疊/重疊關係和包含/包容關係等。通常空間位置信息可以分為兩類:相對空間位置信息和絕對空間位置信息。前一種關係強調的是目標之間的相對情況,如上下左右關係等,後一種關係強調的是目標之間的距離大小以及方位。顯而易見,由絕對空間位置可推出相對空間位置,但表達相對空間位置信息常比較簡單。空間關係特徵的使用可加強對圖像內容的描述區分能力,但空間關係特徵常對圖像或目標的旋轉、反轉、尺度變化等比較敏感。另外,實際應用中,僅僅利用空間信息往往是不夠的,不能有效準確地表達場景信息,往往還要結合其他特徵。

在現已提出的圖像分類方法中,基於局部特徵的圖像分類方法取得了最好效果,尤其是建立在詞袋(bag-of-words)模型框架下的一些改進方法取得了當前最好的分類效果。BOW模型在文本分類中的成功應用使得將BOW模型應用於圖像分類成為可能。從圖像中提取出的局部特徵類似於文本中的單詞,分別代表著圖像和文本的局部信息。與文本分類的原理類似,從不同的圖像中提取出的特徵反映了不同圖像的信息,這些信息就可以作為我們分類的依據。例如對於森林場景來說,出現樹葉的局部特徵頻率要比高山出現樹葉的局部特徵的頻率要高一些。反之,在高山場景中出現山峰狀局部特徵的頻率要比森林場景要高一些。因此每一類圖像或目標總有它區分於其他類別的特徵。BOW模型正是根據這點,應用統計學的方法來計算不同特徵在圖像中出現的頻率來達到分類圖像的目的。基於BOW模型的圖像分類可以分為五個步驟:特徵提取、碼本生成、圖像表達生成、圖像分類。

局部特徵提取:對於特徵的選擇,一般情況下,人們使用的是局部不變性特徵SIFT,當然使用HOG、SUFT及LBP等局部特徵也可以獲得比較不錯的結果。

碼本(codebook)的生成:碼本生成又稱為字典學習,因為從原始圖像中提取的局部特徵非常多,不便於比對,而且其中有很多重複的。因此需要找出其中獨立的特徵,類似於構建一本字典,然後用每個字出現的次數的直方圖來表示一篇文章,比對兩個直方圖就方便多了。傳統的BOW方法採用的碼本生成方法是基於K-means聚類的方法,這種方法具有快速、高效、無監督特性,因此被廣泛地採用。將從訓練樣本中提取出的所有局部特徵進行K-means聚類,得到的聚類中心即為碼本的碼字。

圖像特徵的生成:最終判別圖像類別的是一些具有區分性特徵出現的頻率。因此我們最後用一個直方圖來表達一幅圖像,直方圖表達的是碼本中每一個碼字在圖像中出現的次數。為了更好地計算我們將直方圖歸一化,並且用一個向量表示。因此每幅圖像最終的表達就是一個與碼本大小相同的向量。

圖像分類:分類器根據其線性特徵可以分為線性分類器和非線性分類器,線性分類器沒有對數據進行處理就直接在特徵空間進行分類,而非線性分類器對數據進行了一個映射,例如採用了核函數。對於圖像的分類,因為其特徵是高維的而且數據量很大,人們通常使用的是使用RBF核函數的SVM分類器。

BOW模型被發明於文本處理領域,後引入到圖像處理。其忽略了一個圖像與文本的根本區別,文本中的單詞之間沒有空間關係這個概念,但是圖像卻是有拓撲結構的,局部特徵之間的空間關係對於分類非常重要,用局部特徵的直方圖來表示圖像並不合適。而且,菜品圖像具有圖像結構相似、紋理差別不大這樣的問題,使用基於一般的局部特徵的方法並不能很好的區分,比如豆腐和雞塊的圖像局部。它們的區別在於不同紋理的組合,我們很難形式化的定義這種組合。受到深度學習的從圖像學習特徵而非人為定義的啟發,可以推斷將其用於菜品圖像分類可以取得良好的效果。通過多層的卷積神經網絡,可以學習到最好的適用於菜品圖像的特徵提取方式。神經網絡的底層會學習到線條、顏色塊這樣的特徵,然後組合出各種食材的紋理特徵,進一步組合出菜品的部分和整體。神經網絡中的多次池化操作能夠一定程度上抵抗環境條件和拍攝方式的幹擾,提升識別系統的魯棒性。通過大量的實驗證明,我們的分類系統能夠達到實用的程度。

下面結合具體實施例來介紹我們的方案。本發明的菜品識別方案包含以下內容:1)獲取圖像;2)保存圖像;3)圖像預處理;4)使用卷積神經網絡進行處理,輸出相應菜品信息。

1、獲取/響應Web請求

Web伺服器採用Flask框架實現,該框架非常簡潔而又功能齊全,非常適合用於快速構造應用。一個最小的Flask應用如下

首先,代碼導入了Flask類。這個類的實例將會是我們的WSGI應用程式。接下來,創建一個該類的實例,第一個參數是應用模塊或者包的名稱。這裡使用__name__,因為模塊的名稱將會因其作為單獨應用啟動還是作為模塊導入而有不同。這是必須的,這樣Flask才知道到哪去找模板、靜態文件等等。詳情見Flask的文檔。然後,使用route裝飾器告訴Flask什麼樣的URL能觸發該響應函數。這個函數的名字也在生成URL時被特定的函數採用,這個函數定義了如何處理該HTTP請求。最後我們用run函數來讓應用運行在本地伺服器上。其中if__name__=='__main__':確保伺服器只會在該腳本被Python解釋器直接執行的時候才會運行,而不是作為模塊導入的時候。

2、保存/讀取圖像

獲取輸入數據流,生成一個隨機的UUID作為圖像文件名,保存至磁碟。讀取時,使用OpenCV的cv2接口,將本地圖像讀取為一個Numpy的矩陣對象,等待後續處理。

3、圖像預處理

圖像的預處理步驟一般包括尺寸調整和歸一化,這兩個步驟的具體設置會和使用的模型相關,比如說不同的模型的輸入尺寸是不一樣的。在這裡,我們使用的AlexNet網絡模型要求輸入圖像為224*224像素,所以首先將上傳的圖像縮放為短的一條邊為224像素,再截取較長的一條邊的中間224像素部分。歸一化設置需要和訓練時一致,圖像的RGB通道分別減去104,117,123。

//讀取

img=cv2.imread(img_path)

//根據短邊計算縮放率

min_size=min(img.shape[0],img.shape[1])

resize_ratio=input_shape[2]/224

//縮放操作

img=cv2.resize(img,None,fx=resize_ratio,fy=resize_ratio)

//截取

y_margin=(img.shape[0]-input_shape[2])//2

x_margin=(img.shape[1]-input_shape[2])//2

img=img[y_margin:input_shape[2]+y_margin,x_margin:input_shape[2]+x_margin]

//歸一化

mean_img=np.asarray([104,117,123]).reshape((3,1,1))

img=img.transpose((2,0,1))-mean_img

4、輸入到分類神經網絡

Caffe提供了Python的接口(pycaffe),詳見caffe/python文件夾。在python代碼中可以導入模型,前向、反向迭代,數據輸入輸出,網絡可視化,自定義優化方法。所有的模型數據、計算參數都是可供讀寫的。要使用caffe的Python接口,首先需要把caffe/python的絕對路徑添加到PYTHONPATH環境變量中,然後在Python代碼中import caffe就可以導入caffe庫。

import caffe

//創建模型,載入參數

network=caffe.Net(…)

//前向計算

output=network.forward(data=image)

//獲得菜品和概率

foods=output[『argmax』][0,0].astype(『int16』)

probs=net.blobs['prob'].data[0].tolist

圖像輸入到卷積神經網絡後,進行的是一個前向計算過程,包括卷積、激活函數和池化操作。卷積神經網絡與普通神經網絡的區別在於,卷積神經網絡包含了一個由卷積層和池化層構成的特徵抽取器。在卷積神經網絡的卷積層中,一個神經元只與部分鄰層神經元連接。在一個卷積層中,通常包含若干個特徵平面(FeatureMap),每個特徵平面由一些矩形排列的的神經元組成,同一特徵平面的神經元共享權值,這裡共享的權值就是卷積核。卷積核一般以隨機小數矩陣的形式初始化,在網絡的訓練過程中卷積核將學習得到合理的權值。共享權值(卷積核)帶來的直接好處是減少網絡各層之間的連接,同時又降低了過擬合的風險。池化也叫做池化(pooling),通常有均值池化(mean pooling)和最大值池化(max pooling)兩種形式。池化可以看作一種特殊的卷積過程。卷積和池化大大簡化了模型複雜度,減少了模型的參數。

卷積操作

卷積過程有三個二維矩陣參與,它們分別是兩個特徵圖和一個卷積核:原圖inputX、輸出圖outputY、卷積核kernelW。卷積過程可以理解為卷積核kernalW覆蓋在原圖inputX的一個局部的面上,kernalW對應位置的權重乘於inputX對應神經元的輸出,對各項乘積求和並賦值到outputY矩陣的對應位置。卷積核在inputX圖中從左向右,從上至下每次移動一個位置,完成整張inputX的卷積過程。

池化操作

池化有兩種形式,一種是均值池化(mean-pooling),一種是最大值池化(max-pooling)。兩種池化看成特殊的卷積過程:(1)均值池化的卷積核中每個權重都是0.25,卷積核在原圖inputX上的滑動的步長為2。均值池化的效果相當於把原圖模糊縮減至原來的1/4。(2)最大值池化的卷積核中各權重值中只有一個為1,其餘均為0,卷積核中為1的位置對應inputX被卷積核覆蓋部分值最大的位置。卷積核在原圖inputX上的滑動步長為2。最大值池化的效果是把原圖縮減至原來的1/4,並保留每個2*2區域的最強輸入。

激活函數

激活函數是用來加入非線性因素的,因為線性模型的表達能力不夠。在本算法使用的神經網絡的激活函數是ReLU函數,其具有求導簡便,梯度不消失的優點。

用於圖像識別的卷積神經網絡主要由卷積層、池化層和激活函數層交替連接組成,深度從幾到幾十。並且,每個模塊也有自由參數可以選擇,比如說卷積層的卷積核大小、數量,池化窗口的尺寸以及每種類型使用多少次等,不同的超參數組合得到不同的網絡結構,在分類效果上也會有一些區別。本算法的模型的基本參數如下所示:

輸入:224×224大小的圖片,3通道;

第一層卷積:11×11大小的卷積核96個;

第一層max-pooling:2×2的核;

第二層卷積:5×5卷積核256個;

第二層max-pooling:2×2的核;

第三層卷積:與上一層是全連接,3*3的卷積核384個,分到兩個GPU上個192個;

第四層卷積:3×3的卷積核384個,與上一層連接沒有經過池化層;

第五層卷積:3×3的卷積核256個;

第五層max-pooling:2×2的核;

第一層全連接:4096維,將第五層max-pooling的輸出連接成為一個一維向量,作為該層的輸入;

第二層全連接:4096維;

Softmax層:輸出節點數量為菜品的數量,每一維對應圖片屬於某類別的概率。

上面結合附圖對本發明的實施方式作了詳細的說明,但是本發明不限於上述實施方式,在所屬技術領域普通技術人員所具備的知識範圍內,還可以在不脫離本發明宗旨的前提下做出各種變化。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀