(武漢輕工大學 湖北 武漢 430000)
我們可以從網站上獲取大量的中國菜品圖片組成數據集,例如豆果美食網,大眾點評網。我們可以把這些圖片中的菜品有效的識別和分割出來,進一步分析人們的飲食情況和健康狀況,實現個性化服務。我們研究的是菜品和健康等眾多領域之中最有應用前景的產品之一。使用這項技術可以解決菜品領域的識別和分割問題。
在深度學習技術發展之前,有使用統計的方法,根據計算出的圖像的特征,來進行圖像分類,顯然這種方法不具有泛化性,不能被推廣使用,有使用隨機森林提取局部特征來進行分類的方法。在深度學習發展起來以后,使用CNN技術分類圖像的方法成為了主流。4種依次出現的模型:AlexNet模型、VGG模型、Inception模型、ResNet模型被用于提取圖片的特征,實現圖片的分類。在生活中,有時我們不僅需要物體的種類,同時也需要它所在的位置,這樣即使圖像中含有多個目標物體,也可以將其識別出來,顯然這些方法無法解決這樣的問題。
R-CNN系列模型,解決了這一問題,他們能準確的識別圖片中目標的種類,并生成檢測框,同時進行多個目標物體的分類。Mask R-CNN模型在此基礎上,進一步生成了高質量的掩碼,成功的將目標分割了出來。該模型分為兩個階段:首先生成大量的候選目標生成框,然后對每個候選框提取特征,并行生成框偏移量、預測類以及預測掩碼。我們在自己制作的數據集上進行訓練,包括16個種類,3200張圖片。實驗結果表明,該模型與其它模型相比,能夠提取更加具有代表性的特征,在菜品圖像識別的任務中,性能得到了大大的提升,同時分割出了高質量的掩碼。
我們的主要貢獻有以下的2個方面:(1)制作出可以用于菜品圖像識別的數據集;(2)將數據集用于多個模型,大量的實驗結果驗證了使用Mask R-CNN模型識別和分割菜品圖像的有效性。
本節介紹用于菜品圖像分類和識別的相關方法和模型,主要包括3個部分,第1部分介紹深度學習發展起來之前的圖片分類方法,第2部分介紹深度學習高速發展之后,用于圖片分類的4種經典分類模型,第3部分介紹R-CNN系列模型。
分類菜品圖片一直是一個受到關注的研究方向。例如,提出了基于紋理 Anti-Textons 特征來分類菜品圖像的Farinella等人。使用統計方法,計算出菜品圖像的特征,來分類圖片的Yang等人。用隨機森林的方法提取局部特征來進行菜品分類的Xu等人。
傳統分類方法不具有泛化性,正確率也不高,在深度學習發展起來之后,就放棄了使用,卷積神經網絡(CNN)成為了圖片分類的主流。
卷積神經網絡作為特征的提取方法,被應用到各種各樣的任務中,如圖像的分類和檢索。將其使用在圖像分類中可以大大降低錯誤率,GPU加速的成功應用為增加計算量提供了基礎,4種在ILSVRC比賽上獲得冠軍的經典圖片分類模型(AlexNet模型、VGG模型、Inception模型、ResNet模型),按照時間順序依次出現。
Alex Krizhevsky 提出的深度卷積神經網絡模型AlexNet,首次在CNN中成功使用了ReLU、Dropout等Trick,將top-5的錯誤率降低至16.4%。AlexNet模型具有5個卷積層,3個最大池化層,第一個卷積層使用11*11大小的卷積核,步長為4,其余的使用大小為5*5或3*3的卷積核,步長都為1,所使用的最大池化層均為3*3,步長為2。AlexNet推動深度卷積網絡的發展。
為了進一步提高卷積神經網絡的性能,Visual Geometry Group和Google DeepMind公司的研究員研究的VGG模型成功出世。VGG模型全部使用3*3的卷積核和2*2的池化層,利用網絡的深度來提升性能。VGG模型包含5段卷積,每段卷積都包含2~3個卷積層和一個最大池化層,以此來提取圖片的特征。VGG模型將top-5的錯誤率降低至7.5%,同時具有強大的拓展性。
Google以減小模型的參數量,提高模型參數的利用效率為目標提出了Inception V1模型。Inception V1模型將最大池化層改為平均池化層,同時使用把小網絡反復疊加在一起形成大網絡的思想設計而成,將top-5的錯誤率降低至6.67%。Inception V1模型學習了VGG模型,使用3*3的卷積核代替5*5的大卷積,同時使用了Batch Normalization的正則化方法,升級成為了Inception V2[12],將top-5的錯誤率降低至4.5%。進一步引進了將一個較大的二維卷積拆成兩個較小的一維卷積,在小網絡中生成更小的網絡的思想后,Inception V2模型變為了Inception V3模型。
微軟研究院的Kaiming He等4名華人不再使用網絡學習一個完整的輸出,而是從另一個角度輸出與輸入的差別去設計網絡,ResNet模型就此誕生。ResNet模型雖然具有152層深的網絡,但是模型中包含參數量卻比VGG模型的低,極大的降低了運算量。ResNet模型解決了在持續增加神經網絡深度的時候,準確率會先上升然后達到飽和,最后會下降的問題,將top-5的錯誤率降低至3.57%,效果十分突出。
為了識別圖片中的出現多個目標物體,并生成檢測框,R-CNN系列模型成功出世。
首先是Girshick等人提出的R-CNN模型,他有三個模塊組成。首先對圖片提取2000個左右的候選框,然后將所有的候選框變為227*227尺寸大小,對每個候選框使用深度卷積網絡提取特征,最后使用SVM分類器進行分類,得到合理的檢測框。該模型對所有需要分類的類別都單獨訓練一個邊框回歸器,計算量十分龐大,訓練時間非常長,速度慢,需要消耗大量的資源。在PASCAL VOC 2012上mAP達到了62%。
為了解決R-CNN模型運行時間長、速度慢等問題,Ren等人提出了Fast R-CNN模型。Fast R-CNN模型中最突出的是使用了Roi Pooling層,將特征層上候選框變為固定大小的特征。Fast R-CNN模型具有以下幾個步驟:(1)使用深度卷積神經網絡進行特征提取;(2)將候選框投影到最后特征層;(3)使用Roi Pooling處理候選框;(4)使用二分類softmax做目標識別,使用回歸微調邊框的位置和大小。Fast R-CNN模型大大的縮短了訓練時間,提高了運行速度,在PASCAL VOC 2012上mAP達到了66%。
為了解決候選框的提取問題,Ren等人提出了Faster R-CNN模型。Faster R-CNN模型使用全卷積網絡RPN以及錨點來生成高質量的候選框。Faster R-CNN模型具有兩個模塊,第一個是提出目標候選框的深度全卷積網絡,根據(128,256,512)三種倍數(0.5,1,2)三種比例的錨點生成大量候選框,在以和真值框之間的iou大于0.7為真,其它為負來訓練RPN;第二個是使用Fast R-CNN檢測器進行檢測。Faster R-CNN模型使用以下步驟來共享卷積層特征:(1)訓練RPN網絡;(2)使用RPN得到的候選框,訓練Fast R-CNN網絡;(3)固定共享參數,訓練RPN獨有參數;(4)固定共享參數,根據得到的候選框,訓練Fast R-CNN網絡的獨有部分。
Mask R-CNN模型是Faster R-CNN模型的直接拓展,在識別目標種類的同時,生成高質量的掩碼,將其分割出來。Mask R-CNN模型具有以下兩個階段:(1)與Faster R-CNN模型相同的使用RPN;(2)在預測類和邊框偏移量的時候,對每個類別都生成一個二進制掩碼。
Mask R-CNN模型使用ResNet網絡提取特征,使用FPN(feature pyramid networks)網絡采用高層上采樣的方法融合特征,充分利用了各階段的特征。同時使用了RolAlign層代替了Roi Pooling層,將候選框變為固定大小時使用取整的方法,變為了使用雙線性插值的方法,降低了識別小物體時,誤差帶來的巨大影響。
Mask R-CNN模型已經成為目標檢測、目標分割的有效方法,因而可以使用該模型進行菜品圖像的識別與分割。但是已經訓練好的模型是基于coco數據集80個種類訓練的,沒有包含我們需要的菜品類別。因此,我們使用從網絡上爬取下來并標注好的菜品圖片微調Mask R-CNN模型,最終得到基于菜品圖像的Mask R-CNN模型。
Mask R-CNN模型對于每個Roi的損失為
L=Lcls+Lbox+Lmask(1)
這里Lcls,Lbox分別表示分類損失,以及回歸損失,Lmask表示分割損失;其中

微調Mask R-CNN模型后,可以得到效果較好的用于識別和分割菜品圖像的模型。對于菜品圖像的識別與分割任務,給定一張圖像,模型會生成大量的候選框,得到評分最高的候選框,并生成二進制掩碼,最后輸出含有邊框,類別,掩碼的菜品圖片。
在本節中,首先介紹數據集和實驗細節,然后通過實驗結果驗證Mask R-CNN識別和分割菜品圖片的有效性。
首先使用爬蟲從網絡上爬取16個種類的菜品圖片,然后清洗爬取下來的圖片,每個類別選擇3000張圖片,共48000張圖片作為數據集,用來驗證VGG-19模型、Inception-V3模型、ResNet-50模型中ResNet分類菜品圖片的優越性。再從每個類選擇200張圖片使用labelme進行一一標注,組成新的數據集,稱這個數據集為food-16,用來驗證使用Mask R-CNN識別和分割菜品圖片的有效性。
使用數據集food-16微調(fine-tune)Mask R-CNN模型,需要對模型的參數進行重新設置。將預測的類別改為16(菜品)+1(背景)個類,設置輸入模型圖片的大小為[1024,1024,3],設置錨點anchor的尺寸為(8,16,32,64,128),比例為(0.5,1,2),每張圖片產生256個anchor,迭代次數設為100,學習率設為0.001,learning_momentum設為0.9,權重衰減參數設為0.0001。
將數據集food-16隨機分為2個部分,一部分為80%的訓練集,另一部分為20%的測試集。使用訓練集微調Mask R-CNN,使用測試集查看微調的結果。圖1是微調的Mask R-CNN模型得到菜品圖像的識別結果,從中可以看出不僅成功的檢測出菜品區域,也很好的分割了菜品。

圖1 部分菜品原圖、預測圖
我們使用MAP評價指標,評價模型識別菜品圖像是否有效。我們使用兩種模型完成菜品圖像的識別任務:1)Faster R-CNN模型;2)Mask R-CNN模型。分別使用這兩種模型在數據集food-11上進行實驗,表1展示了兩種模型在iou=0.5的情況下的MAP指標。從中可以看出,在識別菜品圖像的任務中,Mask R-CNN模型比Faster R-CNN模型具有更好的識別性能。

表1 iou=0.5情況下兩種模型的MAP值
我們使用Mask R-CNN模型來識別和分割菜品圖像。該方法主要利用經過標注的數據集微調模型,實現對新的菜品圖像的檢測和分割。與Faster R-CNN模型相比,Mask R-CNN模型效果更好,并成功的將目標菜品分割出來。使用Mask R-CNN模型,并在數據集food-16上進行實驗,實驗結果證明了在菜品圖像識別和分割任務中使用Mask R-CNN模型的有效性。在未來將在以下的方面進行研究:(1)制作數據量更大,種類更多的菜品的數據集;(2)在此數據集上進行實驗,增強模型的實用性;(3)從菜品圖像中獲得更多的信息,并展示出來,比如生成一段描述性的文字描述圖像中的目標菜品。另外,顯示目標菜品的制作方法,為特定人群提供是否可以使用的建議,部署到移動端等都將作為后續探索工作的研究方向。