天天看點

你的食物變質沒?用AI算法來檢測一下吧

       最近一條幼稚園采用過期食物的新聞引起了社會的強烈關注,對于食品安全而言,國家一直是嚴格要求的,尤其是對于嬰幼兒食品安全的标準,部分已經超越了國際上的标準。但可能是由于無法嚴格地執行到每一個地方且檢測周期較長,造成這一現象的出現,着實有些令人憤怒。程式員,用代碼改變世界的一群人,今天向大家介紹用AI算法來檢測食物是否過期,希望能夠在以後普及應用到食物安全的初步檢測之中,下面以披薩為例。

你的食物變質沒?用AI算法來檢測一下吧

       在俄羅斯最大的披薩連鎖店“Dodo Pizza”的最新Dbrain用例中,首席資料科學家Arthur Kuzin解釋了開發的AI算法如何通過短信控制披薩品質,将披薩面團打分1到10分。下面詳細解釋如何教AI算法來評估披薩品質!

       本文重點關注以下内容:i)僅從少數标記樣本中擷取完整資料集的标記; ii)将方框拉伸到對象的分割掩模(将方框的方形掩模應用于任何形狀)。

想法

       Dodo pizza有許多活躍的客戶,在完成訂單後,他們同意分享他們對披薩品質的看法。為了簡化回報環節及其處理過程,Dbrain開發了一個AI算法驅動的應用程式來檢查披薩品質。此應用程式類似于聊天機器人,客戶上傳照片後可以獲得得分為1到10的等級評分。

你的食物變質沒?用AI算法來檢測一下吧

問題陳述

       當程式員收到開發請求時,就着手開發一種可以客觀地确定面團品質的算法。問題在于确定披薩烘焙過程是何時停止的,披薩外皮上的白色氣泡與産品的變質相關。

資料挖掘

       該資料集收集了披薩烘焙的照片,還包括了一些不相關的圖像。如果配方不正确,披薩外皮上就會出現白色氣泡。此外,專家還對面團品質進行了二進制标記。是以,得到資料集之後,算法的開發就隻是時間問題了。

       這些資料集的照片是在不同的手機上、在不同的光線條件下以及從不同的角度拍攝得到的。整個資料集有17k張的披薩标本圖像,而整個資料集的圖檔總數為60k張。

       由于該任務需求非常簡單明了,是以用不同的方法來處理資料是一個很好的操練場。那麼,以下就是我們解決任務所需要的:

  • 1.選擇能夠看到披薩外殼的照片;
  • 2.區分所選照片中的披薩外皮與背景區域;
  • 3.在標明區域訓練神經網絡。

資料過濾

       此外,我自己标記了一小部分照片,而不是向其他人解釋我真正需要的東西,因為,如果你想要做得好,自己就需要對資料進行處理,以下就是我所做的:

  • 1.标記了50張有披薩外皮圖像,标記了50張沒有披薩外皮圖像:
    你的食物變質沒?用AI算法來檢測一下吧
  • 2.使用 resnet-152網絡 在imagenet11k上預訓練權重等參數,在全連接配接層後提取特征;
    你的食物變質沒?用AI算法來檢測一下吧
  • 3.将兩個類别的特征的平均值作為基準點;
  • 4.計算從該基準點與剩餘的60k圖檔的所有特征之間的距離;
  • 5.确定前300個與正類别相關的樣本,後500個與負類别相關的樣本;
    你的食物變質沒?用AI算法來檢測一下吧
  • 6.基于這些樣本的特征訓練LightGBM;
  • 7.使用此模型在整個資料集上預測出标簽;
    你的食物變質沒?用AI算法來檢測一下吧

       這與我在kaggle比賽中用作

基線的方法

大緻相同。

前傳

       大約一年前,我和

Evgeny Nizhibitsky

一起參加了“海獅”

 kaggle比賽

。任務是從無人機拍攝的圖像上統計海豹的個數。标記隻是給出了屍體的坐标,但在某些時候,

Vladimir Iglovikov

用方框标記了它們,并在社群慷慨地進行了分享。

       我決定通過

分割

來解決這個任務,在第一階段隻将海豹方框作為目标。經過幾次訓練疊代後,很容易找到一些硬樣品,但是效果不好。

你的食物變質沒?用AI算法來檢測一下吧

       對于此示例,可以選擇沒有海豹的大區域,手動将蒙版設定為零,還可以添加到訓練集。是以,Evgeny和我訓練了一個模型,該模型已經學會了分割大型海豹鳍。

你的食物變質沒?用AI算法來檢測一下吧

披薩外皮檢測和提取

       再次回到主題披薩,為了識别所選和過濾後的圖像上的外殼,最佳選在标簽上做文章。通常,一些貼标機工作對同一樣本的工作方式是不同的,但當時我們已經對這種情況應用了一緻性算法并将其用于方框中。這就是為什麼我隻是做了幾個例子就把它交給了貼标機。最後,獲得了500個樣本,這些樣本特别突出了披薩外皮區域。

       為了識别所選過濾照片上的外殼,我為貼标機做了幾個例子。

       第一次疊代模型訓練的結果仍然是錯誤的,預測的可信度定義如下:

1 ——(灰色區域的面積)/(掩膜的面積)

你的食物變質沒?用AI算法來檢測一下吧

       接下來,為了完成獲得接近掩模方框的下一次疊代,在小的樣本集上用TTA預測掩模。這在某種程度上可以被認為是WAAAAGH式的

知識蒸餾

,但更為正确地将其稱之為

僞标簽

你的食物變質沒?用AI算法來檢測一下吧

       然後,我人為地确定某個門檻值,用于形成新訓練集的置信度,還可以選擇出标記出內建失敗的最複雜樣本。我認為這将是有用的,并在自己休息時标記了20張圖檔。

你的食物變質沒?用AI算法來檢測一下吧

最終模型訓練

       最後——模型的訓練。為了準備樣品,我用掩膜提取了披薩外皮區域。此外,我通過擴大掩膜并将其應用于圖檔以去除背景來略微充氣掩膜,因為它不包含有關面團品質的任何資訊。然後我從Imagenet中調整了幾個模型。我總共收集了大約14k張合适的樣本,此外,沒有訓練整個神經網絡,而隻訓練最後一組全連接配接層層以防止過拟合。

你的食物變質沒?用AI算法來檢測一下吧

       最終發現模型為Inception-Resnet-v2時效果最好,其ROC-AUC達到0.700。如果沒有進行處理并在沒有掩膜的原始圖像上訓練模型的話,那麼得到的ROC-AUC将為0.58左右。

驗證

       在開發解決方案時,DODO披薩回傳了下一批資料,并且使用這些資料測試了整個模型,結果ROC-AUC達到了0.83。

       上述結果表明,我們仍然無法完全保證在沒有錯誤的情況下管理披薩的品質。考慮到錯誤出現的原因,我再一次訓練了模型并取得了積極的成果。我們現在看一下錯誤:

你的食物變質沒?用AI算法來檢測一下吧

       從上圖可以看出,它們與披薩外皮标簽的錯誤有關,因為有些标記為正常的披薩有明顯的變質迹象。

你的食物變質沒?用AI算法來檢測一下吧

       這裡的誤差是由于第一個模型未能選擇正确的樣本,這導緻難以确定正常披薩的關鍵特征。解決這個問題後,模型的性能會有所提升。

結論

       我的同僚有時會取笑我幾乎所有的分割任務都是通過使用Unet完成,但我仍然希望他們會喜歡它,因為Unet網絡是一種相當強大和友善的方法,它可以使得模型誤差可視化,且表現優異,可以節省處理資料集的時間。此外,整個模型看起來非常簡單,應用十分友善。

       以上是整個算法流程及實驗記錄,現在是時候吃一塊比薩餅放松一下了,幹杯!

數十款阿裡雲産品限時折扣中,趕緊點選領劵開始雲上實踐吧!

作者資訊

Dbrain,區塊鍊平台

個人首頁:

https://dbrain.io

本文由阿裡雲雲栖社群組織翻譯。

文章原标題《Your Pizza is Good: How to Teach AI to Evaluate Food Quality》,譯者:海棠,審校:Uncle_LLD。

文章為簡譯,更為詳細的内容,

請檢視原文

繼續閱讀