訂閱
糾錯(cuò)
加入自媒體

如何用Tensorflow框架構(gòu)建用于食品分類的機(jī)器學(xué)習(xí)模型?

摘要

在今天的報(bào)告中,我們將分析食品以預(yù)測(cè)它們是否可以食用。我們應(yīng)用最先進(jìn)的 遷移學(xué)習(xí)方法和 Tensorflow 框架來構(gòu)建用于食品分類的機(jī)器學(xué)習(xí)模型。

介紹

圖像分類是機(jī)器預(yù)測(cè)圖片屬于哪個(gè)類別的工作。在深度學(xué)習(xí)開始蓬勃發(fā)展之前,圖像分類等任務(wù)無法達(dá)到人類水平。這是因?yàn)闄C(jī)器學(xué)習(xí)模型無法確定圖像的鄰域知識(shí)。模型只接收像素級(jí)命令。由于深度學(xué)習(xí)的潛力,圖像分類任務(wù)可以利用被描述為卷積神經(jīng)網(wǎng)絡(luò) (CNN) 的模型來傳遞人類水平的性能。CNN 是一種研究圖像表征的深度學(xué)習(xí)模型。該模型無需個(gè)人參與即可確定從平面到高級(jí)的特征。該模型不僅接收像素級(jí)別的數(shù)據(jù)。該模型還通過稱為卷積的機(jī)制從圖像中獲取相鄰數(shù)據(jù)。卷積將通過將范圍內(nèi)的像素的編譯相乘并將它們相加為一個(gè)值來聚合鄰域數(shù)據(jù)。ML 模型將接受這些特征以將圖片分類為一組。深度學(xué)習(xí)雖然可以完成人類級(jí)別的生產(chǎn),但需要大量的數(shù)據(jù)。

如果我們沒有它們?cè)趺崔k?我們可以應(yīng)用一種稱為遷移學(xué)習(xí)的理論。

遷移學(xué)習(xí)是一種在海量數(shù)據(jù)上為我們的查詢訓(xùn)練模型的技術(shù)。因此,我們僅通過微調(diào)模型來準(zhǔn)備它們。我們將注意到的優(yōu)勢(shì)是模型將在一段時(shí)間內(nèi)學(xué)會(huì)。本文將幫助你練習(xí)使用 TensorFlow (Python) 進(jìn)行食品圖像分類的遷移學(xué)習(xí)。因?yàn)轭A(yù)處理步驟是基本過程,我還將解釋如何將數(shù)據(jù)提供給我們的深度學(xué)習(xí)模型。

執(zhí)行

步驟1:導(dǎo)入庫

我們要求做的第一步是導(dǎo)入庫。我們想要 TensorFlow、NumPy、os 和 pandas。如果你還沒有修復(fù)包,你可以應(yīng)用 pip 命令來安裝所需的庫。請(qǐng)注意,我命令使用的 TensorFlow 是 2.4.1 版本,因此請(qǐng)安裝該版本。另外,如果你希望采用 GPU 來訓(xùn)練深度學(xué)習(xí)模型,請(qǐng)安裝 11.0 版的 CUDA,因?yàn)樵摪姹景?2.4.1 版的 TensorFlow。

下面是安裝和加載所需庫的代碼。# ! pip install tensorflow==2.4.1
# ! pip install pandas
# ! pip install numpy
import os
import numpy as np
import pandas as pd
import tensorflow as tf

步驟2:準(zhǔn)備數(shù)據(jù)

安排好庫后,下一步是修復(fù)我們的數(shù)據(jù)集。在此示例中,我們將應(yīng)用名為Food-5K的數(shù)據(jù)集。https://www.kaggle.com/binhminhs10/food5k該數(shù)據(jù)集由 5000 張圖片組成,分為兩類,即食物和非食物。FOOD-5K 分為訓(xùn)練、驗(yàn)證和測(cè)試數(shù)據(jù)集。數(shù)據(jù)集文件夾的格式如下:

正如你在上面看到的,每個(gè)文件夾都由圖片組成。每個(gè)圖片文件名包括類別和由下劃線分隔的標(biāo)識(shí)符。我們需要產(chǎn)生帶有圖像文件名的列和帶有該文件夾排列的標(biāo)簽的數(shù)據(jù)框。修復(fù)數(shù)據(jù)集的代碼如下所示,def dframe(dtype):
   X = []
   y = []
   path = 'Food-5K/' + dtype + '/'
   for i in os.listdir(path):
       # Image
       X.a(chǎn)ppend(i)
       # Label
       y.a(chǎn)ppend(i.split('_')[0])
   X = np.a(chǎn)rray(X)
   y = np.a(chǎn)rray(y)
   df = pd.DataFrame()
   df['filename'] = X
   df['label'] = y
   return df
df_train = dframe('training')
df_val = dframe('validation')
df_test = dframe('evaluation')
df_train.head()

1  2  下一頁>  
聲明: 本文由入駐維科號(hào)的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場(chǎng)。如有侵權(quán)或其他問題,請(qǐng)聯(lián)系舉報(bào)。

發(fā)表評(píng)論

0條評(píng)論,0人參與

請(qǐng)輸入評(píng)論內(nèi)容...

請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字

您提交的評(píng)論過于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)

  • 看不清,點(diǎn)擊換一張  刷新

暫無評(píng)論

暫無評(píng)論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號(hào)
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯(cuò)
x
*文字標(biāo)題:
*糾錯(cuò)內(nèi)容:
聯(lián)系郵箱:
*驗(yàn) 證 碼:

粵公網(wǎng)安備 44030502002758號(hào)