你的食物变质没?用AI算法来检测一下吧
最近一條幼兒園采用過期食物的新聞引起了社會的強烈關注,對于食品安全而言,國家一直是嚴格要求的,尤其是對于嬰幼兒食品安全的標準,部分已經(jīng)超越了國際上的標準。但可能是由于無法嚴格地執(zhí)行到每一個地方且檢測周期較長,造成這一現(xiàn)象的出現(xiàn),著實有些令人憤怒。程序員,用代碼改變世界的一群人,今天向大家介紹用AI算法來檢測食物是否過期,希望能夠在以后普及應用到食物安全的初步檢測之中,下面以披薩為例。
在俄羅斯最大的披薩連鎖店“Dodo Pizza”的最新Dbrain用例中,首席數(shù)據(jù)科學家Arthur Kuzin解釋了開發(fā)的AI算法如何通過短信控制披薩質(zhì)量,將披薩面團打分1到10分。下面詳細解釋如何教AI算法來評估披薩質(zhì)量!
本文重點關注以下內(nèi)容:i)僅從少數(shù)標記樣本中獲取完整數(shù)據(jù)集的標記;?ii)將方框拉伸到對象的分割掩模(將方框的方形掩模應用于任何形狀)。
想法
Dodo pizza有許多活躍的客戶,在完成訂單后,他們同意分享他們對披薩質(zhì)量的看法。為了簡化反饋環(huán)節(jié)及其處理過程,Dbrain開發(fā)了一個AI算法驅(qū)動的應用程序來檢查披薩質(zhì)量。此應用程序類似于聊天機器人,客戶上傳照片后可以獲得得分為1到10的等級評分。
問題陳述
當程序員收到開發(fā)請求時,就著手開發(fā)一種可以客觀地確定面團質(zhì)量的算法。問題在于確定披薩烘焙過程是何時停止的,披薩外皮上的白色氣泡與產(chǎn)品的變質(zhì)相關。
數(shù)據(jù)挖掘
該數(shù)據(jù)集收集了披薩烘焙的照片,還包括了一些不相關的圖像。如果配方不正確,披薩外皮上就會出現(xiàn)白色氣泡。此外,專家還對面團質(zhì)量進行了二元標記。因此,得到數(shù)據(jù)集之后,算法的開發(fā)就只是時間問題了。
這些數(shù)據(jù)集的照片是在不同的手機上、在不同的光線條件下以及從不同的角度拍攝得到的。整個數(shù)據(jù)集有17k張的披薩標本圖像,而整個數(shù)據(jù)集的圖片總數(shù)為60k張。
由于該任務需求非常簡單明了,因此用不同的方法來處理數(shù)據(jù)是一個很好的操練場。那么,以下就是我們解決任務所需要的:
- 1.選擇能夠看到披薩外殼的照片;
- 2.區(qū)分所選照片中的披薩外皮與背景區(qū)域;
- 3.在選定區(qū)域訓練神經(jīng)網(wǎng)絡。
數(shù)據(jù)過濾
此外,我自己標記了一小部分照片,而不是向其他人解釋我真正需要的東西,因為,如果你想要做得好,自己就需要對數(shù)據(jù)進行處理,以下就是我所做的:
- 1.標記了50張有披薩外皮圖像,標記了50張沒有披薩外皮圖像:
- 2.使用resnet-152網(wǎng)絡在imagenet11k上預訓練權重等參數(shù),在全連接層后提取特征;
- 3.將兩個類別的特征的平均值作為基準點;
- 4.計算從該基準點與剩余的60k圖片的所有特征之間的距離;
- 5.確定前300個與正類別相關的樣本,后500個與負類別相關的樣本;
- 6.基于這些樣本的特征訓練LightGBM;
- 7.使用此模型在整個數(shù)據(jù)集上預測出標簽;
?
這與我在kaggle比賽中用作基線的方法大致相同。
前傳
大約一年前,我和Evgeny Nizhibitsky一起參加了“海獅”?kaggle比賽。任務是從無人機拍攝的圖像上統(tǒng)計海豹的個數(shù)。標記只是給出了尸體的坐標,但在某些時候,?Vladimir Iglovikov用方框標記了它們,并在社區(qū)慷慨地進行了分享。
我決定通過分割來解決這個任務,在第一階段只將海豹方框作為目標。經(jīng)過幾次訓練迭代后,很容易找到一些硬樣品,但是效果不好。
對于此示例,可以選擇沒有海豹的大區(qū)域,手動將蒙版設置為零,還可以添加到訓練集。因此,Evgeny和我訓練了一個模型,該模型已經(jīng)學會了分割大型海豹鰭。
披薩外皮檢測和提取
再次回到主題披薩,為了識別所選和過濾后的圖像上的外殼,最佳選在標簽上做文章。通常,一些貼標機工作對同一樣本的工作方式是不同的,但當時我們已經(jīng)對這種情況應用了一致性算法并將其用于方框中。這就是為什么我只是做了幾個例子就把它交給了貼標機。最后,獲得了500個樣本,這些樣本特別突出了披薩外皮區(qū)域。
為了識別所選過濾照片上的外殼,我為貼標機做了幾個例子。
第一次迭代模型訓練的結(jié)果仍然是錯誤的,預測的可信度定義如下:
1 ——(灰色區(qū)域的面積)/(掩膜的面積)
接下來,為了完成獲得接近掩模方框的下一次迭代,在小的樣本集上用TTA預測掩模。這在某種程度上可以被認為是WAAAAGH式的知識蒸餾,但更為正確地將其稱之為偽標簽。
然后,我人為地確定某個閾值,用于形成新訓練集的置信度,還可以選擇出標記出集成失敗的最復雜樣本。我認為這將是有用的,并在自己休息時標記了20張圖片。
最終模型訓練
最后——模型的訓練。為了準備樣品,我用掩膜提取了披薩外皮區(qū)域。此外,我通過擴大掩膜并將其應用于圖片以去除背景來略微充氣掩膜,因為它不包含有關面團質(zhì)量的任何信息。然后我從Imagenet中調(diào)整了幾個模型。我總共收集了大約14k張合適的樣本,此外,沒有訓練整個神經(jīng)網(wǎng)絡,而只訓練最后一組全連接層層以防止過擬合。
?
最終發(fā)現(xiàn)模型為Inception-Resnet-v2時效果最好,其ROC-AUC達到0.700。如果沒有進行處理并在沒有掩膜的原始圖像上訓練模型的話,那么得到的ROC-AUC將為0.58左右。
驗證
在開發(fā)解決方案時,DODO披薩回傳了下一批數(shù)據(jù),并且使用這些數(shù)據(jù)測試了整個模型,結(jié)果ROC-AUC達到了0.83。
上述結(jié)果表明,我們?nèi)匀粺o法完全保證在沒有錯誤的情況下管理披薩的質(zhì)量。考慮到錯誤出現(xiàn)的原因,我再一次訓練了模型并取得了積極的成果。我們現(xiàn)在看一下錯誤:
從上圖可以看出,它們與披薩外皮標簽的錯誤有關,因為有些標記為正常的披薩有明顯的變質(zhì)跡象。
這里的誤差是由于第一個模型未能選擇正確的樣本,這導致難以確定正常披薩的關鍵特征。解決這個問題后,模型的性能會有所提升。
結(jié)論
我的同事有時會取笑我?guī)缀跛械姆指钊蝿斩际峭ㄟ^使用Unet完成,但我仍然希望他們會喜歡它,因為Unet網(wǎng)絡是一種相當強大和方便的方法,它可以使得模型誤差可視化,且表現(xiàn)優(yōu)異,可以節(jié)省處理數(shù)據(jù)集的時間。此外,整個模型看起來非常簡單,應用十分方便。
?以上是整個算法流程及實驗記錄,現(xiàn)在是時候吃一塊比薩餅放松一下了,干杯!
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的你的食物变质没?用AI算法来检测一下吧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于阿里云HiTSDB搭建工业物联网平台
- 下一篇: 阿里AI界的新伙伴,1秒钟自动生成200