李仕超 高梓成 郭 浩 鄧志揚(yáng) 馬 瑞 雷 杰 張 昊
(1.中國農(nóng)業(yè)大學(xué) 土地科學(xué)與技術(shù)學(xué)院,北京 100083; 2.中國農(nóng)業(yè)大學(xué) 信息與電氣工程學(xué)院,北京 100083; 3.中國農(nóng)業(yè)大學(xué) 食品科學(xué)與營養(yǎng)工程學(xué)院,北京 100083)
不合理膳食導(dǎo)致的健康風(fēng)險是當(dāng)今社會重點(diǎn)關(guān)注的問題[1-3],及時有效的膳食調(diào)查方法可以記錄和評價被調(diào)查對象在一定時間內(nèi)能量和營養(yǎng)素的攝入情況,幫助個人和群體實(shí)現(xiàn)營養(yǎng)干預(yù),降低不合理膳食導(dǎo)致的肥胖、高血壓、糖尿病和心臟病等健康風(fēng)險[4-5]。
目前,膳食調(diào)查中常用的方法主要有24 h膳食回顧法、化學(xué)分析法、稱重記賬法、食物頻率法等經(jīng)典方法[6-9]。針對回顧性膳食調(diào)查,王之頊等[10]根據(jù)食物外形和份量構(gòu)建了包含13大類195種食物和5種餐具等共659張三維參照的食物或餐圖的食物圖譜來提高回顧法的準(zhǔn)確性。另外,采用標(biāo)準(zhǔn)化食物餐具和電子食物秤同樣可以提高參與者對日常攝入食物分量的掌握程度[11]。膳食調(diào)查中的統(tǒng)計分析同樣十分重要,目前關(guān)于營養(yǎng)素攝入量分析的軟件大多需要參與者手動輸入食物的種類和攝入量,并通過食物營養(yǎng)成分?jǐn)?shù)據(jù)和中國營養(yǎng)學(xué)會發(fā)布的中國居民膳食營養(yǎng)素參考攝入量進(jìn)行營養(yǎng)素攝入量分析[12-13]。然而以上方法大多需要參與者的配合,對食物攝入量的評估可能不夠準(zhǔn)確,同時由于其使用過程繁瑣,也不適用于大樣本的群體膳食調(diào)查。
本研究充分利用深度圖像所具有的三維信息優(yōu)勢,實(shí)現(xiàn)對RGB-D食物彩色圖像的語義分割[14],同時利用采集的人體單視角深度圖像序列擬合人體三維模型[15],在滿足目前膳食調(diào)查關(guān)鍵環(huán)節(jié)的基礎(chǔ)上擬建立一種更加完善的膳食調(diào)查系統(tǒng),以期為營養(yǎng)干預(yù)提供依據(jù)。
材料選擇某大學(xué)食堂內(nèi)所經(jīng)營的各類單份食用餐食。為了減少外在因素對食物體積計算的影響,本研究選擇食物形狀較為規(guī)則,并且餐具容器對體積影響較小的食物類別作為計算樣本,食物主要是面條、米飯、粥和湯等各類主食,用于采集食物彩色圖像以及深度圖像,構(gòu)建某大學(xué)食物樣本數(shù)據(jù)集和測試集。
1.2.1系統(tǒng)平臺搭建
本系統(tǒng)主要由硬件和軟件組成。硬件部分主要包括食物信息采集器、光照箱、人體信息采集器以及計算主機(jī)4個組成部分。英特爾公司研發(fā)的RealSense深度相機(jī)作為食物信息采集器,型號為D435,其彩色圖像分辨率為1 920像素×1 080像素,深度圖像分辨率為1 280像素×720像素。食物信息采集器搭配光照箱作為食物信息采集平臺,為避免因鏡面反射在需要采集圖像的物體表面產(chǎn)生光斑,光照箱內(nèi)外部分均使用噴漆噴為黑色,內(nèi)部頂端設(shè)有白熾燈為采集環(huán)境提供光照。另外一個RealSence深度相機(jī)作為人體信息采集器,用于獲取人體RGB-D圖像序列。計算主機(jī)主要利用軟件控制各傳感器進(jìn)行數(shù)據(jù)采集和處理任務(wù)。軟件部分基于Linux操作系統(tǒng),在python環(huán)境下使用PyQT進(jìn)行開發(fā)實(shí)現(xiàn)。
1.2.2系統(tǒng)功能與操作
本系統(tǒng)主要通過主機(jī)端軟件實(shí)現(xiàn)食物和人體的信息采集,食物營養(yǎng)素計算和人體參數(shù)計算。系統(tǒng)工作流程見圖1。具體操作如下:
1)當(dāng)開啟系統(tǒng)后,首次使用需要輸入試驗(yàn)者性別、年齡和體重等基本信息,同時將本次在食堂購買的食物菜品放置在光照箱中,使得食物信息采集器可以正好對準(zhǔn)食物,同時實(shí)驗(yàn)者如果選擇了中心性肥胖估計功能,需要站在軟件提示的指定位置,人體信息采集器和食物信息采集器開始同步采集數(shù)據(jù)。人體信息采集器獲取人體深度圖像序列數(shù)據(jù),食物信息采集器獲取食物RGB-D圖像數(shù)據(jù)。
2)計算主機(jī)處理數(shù)據(jù),首先進(jìn)行食物分割。之后利用對應(yīng)的深度圖像計算出該類別食物的體積,同時根據(jù)采集到的實(shí)驗(yàn)者人體深度圖像序列和體重信息擬合三維人體模型,計算出實(shí)驗(yàn)者的身高、腰圍、臀圍以及BMI和WHR值。
3)根據(jù)采集的食物體積和類別信息,上傳至云端服務(wù)器后通過食物營養(yǎng)素數(shù)據(jù)庫計算出實(shí)驗(yàn)者在本次就餐中攝入的營養(yǎng)素含量和能量。該數(shù)據(jù)后續(xù)為營養(yǎng)師提供膳食調(diào)查基礎(chǔ)數(shù)據(jù)。
圖1 膳食調(diào)查系統(tǒng)工作流程Fig.1 Workflow of dietary survey system
1.3.1食物語義分割
通過傳感器獲取的RGB圖像作為原始輸入數(shù)據(jù),對輸入的原始數(shù)據(jù)進(jìn)行數(shù)據(jù)增強(qiáng)。數(shù)據(jù)增強(qiáng)方法包括:圖片旋轉(zhuǎn),尺寸縮放,中心裁剪以及數(shù)據(jù)標(biāo)準(zhǔn)化等[16]。通過數(shù)據(jù)增強(qiáng)可以極大限度提高數(shù)據(jù)的多樣性和復(fù)雜程度,幫助模型盡可能避免過擬合現(xiàn)象的出現(xiàn)并能夠增強(qiáng)模型的泛化能力。
DeepLabv3+作為語義分割領(lǐng)域的主流算法之一,其算法的速度與預(yù)測效果已經(jīng)達(dá)到了實(shí)際應(yīng)用的標(biāo)準(zhǔn)。通過結(jié)合當(dāng)下算法中的深度可分離卷積、空洞卷積以及ASPP模塊,對卷積網(wǎng)絡(luò)進(jìn)行改進(jìn)創(chuàng)新,并在特征解碼部分進(jìn)行特征融合改進(jìn),極大地提高了特征提取效果和算法的預(yù)測速度和精度。因此,本研究系統(tǒng)采用DeepLabv3+網(wǎng)絡(luò)作為食物圖像的語義分割算法,通過DeepLabv3+網(wǎng)絡(luò)對食物圖像進(jìn)行語義解析,將圖像中的食物語義和位置信息提取出來。其中特征提取網(wǎng)絡(luò)可以采用Xception[17]或者ResNet101[18],為使能夠最大化的利用算法的優(yōu)勢和設(shè)備的性能,本系統(tǒng)選擇Xception作為特征提取網(wǎng)絡(luò)。以特征提取網(wǎng)絡(luò)的輸出作為輸入,將輸入的特征進(jìn)行解碼,轉(zhuǎn)化為像素的語義信息并根據(jù)交叉熵?fù)p失函數(shù)進(jìn)行網(wǎng)絡(luò)權(quán)重更新。將原始RGB圖像數(shù)據(jù)輸入訓(xùn)練完成的模型后即可獲取圖像中的食物類別信息和像素級的位置信息。
多分類的交叉熵?fù)p失函數(shù)公式[19]為:
(1)
式中:N為所需預(yù)測的像素個數(shù);M為類別的數(shù)量;yic為樣本i的類別,取值為0或1,0代表預(yù)測結(jié)果與真實(shí)結(jié)果不同,1代表預(yù)測結(jié)果與真實(shí)結(jié)果相同;pic為預(yù)測樣本i屬于類別c的預(yù)測概率。
1.3.2食物體積計算
根據(jù)食物信息采集器采集的深度圖像計算食物的體積:首先根據(jù)設(shè)備擺放的形態(tài)設(shè)置初始平面P,使得初始平面P的平面法向量Np與Z軸平行;將食物深度圖轉(zhuǎn)化為點(diǎn)云并將其所在平面與初始平面P配準(zhǔn),使得放置食物的平面與初始平面P重合;利用1.3.1節(jié)中的算法將食物分割出來,再將拍攝的食物圖像與通過分割算法分割后的食物圖像對照(圖2(a)和(b));將二維食物分割結(jié)果映射到三維空間,從二維映射成三維的對照(圖2(c))。
將二維像素坐標(biāo)輸入式(2)[20]:
(2)
式中:Z為攝像頭離食物的距離;u、v為某個食物像素點(diǎn)在像素坐標(biāo)系中的X、Y軸坐標(biāo);X、Y、Z為食物在世界坐標(biāo)系中的三維坐標(biāo);fx、fy為相應(yīng)方向上焦點(diǎn)的長度;u0、v0為像素坐標(biāo)系中的光心;R為旋轉(zhuǎn)矩陣,T為轉(zhuǎn)換平移向量。計算得出三維空間坐標(biāo)。
將食物點(diǎn)云近似看做為一上曲面,上曲面定義為F,初始平面P為下平面,根據(jù)式(3)計算出三維空間體積,具體運(yùn)算公式為:
(3)
式中:pz為初始平面的縱坐標(biāo),pz∈P;fz為食物點(diǎn)云中點(diǎn)的縱坐標(biāo),fz∈F;S為XOY平面上積分時的單位面積,其中S=1 mm2;Hi為上曲面F某點(diǎn)與初始平面P即下平面對應(yīng)點(diǎn)的Z軸方向距離;V為最終計算出的食物三維空間體積。
圖2 食物圖像分割結(jié)果及三維映射Fig.2 Food image segmentation results and three-dimensional mapping
1.3.3食物營養(yǎng)素計算
根據(jù)食物的種類和體積,結(jié)合食物的營養(yǎng)素數(shù)據(jù)庫計算獲得被拍攝食物的各種營養(yǎng)素的含量,計算公式為:
C=v×k
(4)
式中:C為食物中某營養(yǎng)物質(zhì)的含量;v為食物的體積;k為食物單位體積中某種營養(yǎng)素的含量。根據(jù)食堂提供的食物配料表以及《中國食物成分表》[21]構(gòu)建食物營養(yǎng)素數(shù)據(jù)庫,包括不同食物中各種營養(yǎng)素含量的數(shù)據(jù)庫,表1為部分食物能量及營養(yǎng)素含量參考表。
表1 食物能量及營養(yǎng)素含量參考表(部分)Table 1 ReferenceTable of energy and nutrient content of food (part)
1.3.4人體參數(shù)計算
為了獲得人的身體質(zhì)量等級需要測量的人體參數(shù)包括身高、腰圍和臀圍,本研究設(shè)計了一種利用單視角深度圖像快速便捷地測量人體參數(shù)的系統(tǒng):通過計算SMPL參數(shù)化人體模型的體型參數(shù)和位姿參數(shù)來擬合實(shí)驗(yàn)者三維模型,根據(jù)模型點(diǎn)云數(shù)據(jù)來獲得人體參數(shù)信息。SMPL[15]參數(shù)化模型是由大量真實(shí)人體數(shù)據(jù)中學(xué)習(xí)得到的基于頂點(diǎn)的線性人體模型,有6 980個頂點(diǎn),13 776個三角面片,并包括一個擁有24個關(guān)節(jié)點(diǎn)的人體模型,模型驅(qū)動公式[15]為:
M(β,θ)=W(Tp(β,θ),J(β),θ,ω)
(5)
式中:β為長度為10的向量,控制模型的形狀;θ為模型23個關(guān)節(jié)點(diǎn)相對旋轉(zhuǎn)弧度值和原點(diǎn)坐標(biāo)組成的長度為75的向量;Tp(β,θ)為在β和θ的作用下網(wǎng)格頂點(diǎn)的坐標(biāo)計算公式;J(β)為在β作用下人體關(guān)節(jié)點(diǎn)計算公式;ω表示各個關(guān)節(jié)的混合權(quán)重;W表示進(jìn)行骨骼蒙皮并生成人體模型。
計算體型參數(shù)和位姿參數(shù)時,對單張人體深度圖像進(jìn)行背景去除得到分割后的人體深度圖像,利用文獻(xiàn)[22]的方法采用隨機(jī)森林對人體深度圖像人體骨架的關(guān)節(jié)點(diǎn)位置進(jìn)行預(yù)測,從而得到骨架關(guān)節(jié)點(diǎn)和人體各組件點(diǎn)云數(shù)據(jù),之后根據(jù)人體點(diǎn)云與SMPL模型點(diǎn)云迭代優(yōu)化參數(shù)β和θ,構(gòu)造能量函數(shù)使其最小:
E(β,θ)=Ed(β,θ)+α1Eθ(θ)+α2Eβ(β)
(6)
式中:Ed為人體點(diǎn)云與SMPL模型對應(yīng)點(diǎn)距離d誤差項(xiàng),分別構(gòu)建人體點(diǎn)云和SMPL模型點(diǎn)云對應(yīng)組件的kd-tree來尋找對應(yīng)點(diǎn)對,通過β和θ參數(shù)驅(qū)動SMPL模型使得對應(yīng)點(diǎn)歐氏距離之和最??;Eθ為姿態(tài)約束項(xiàng),通過高斯混合模型先驗(yàn)來約束參數(shù)θ避免出現(xiàn)不正常的姿態(tài);Eβ為體型約束項(xiàng),通過計算當(dāng)前模型與原SMPL模型的差異來避免產(chǎn)生極端體型;α1和α2為權(quán)重參數(shù)。
本研究通過計算得到的體型參數(shù)和姿態(tài)參數(shù)驅(qū)動SMPL模型擬合出最佳的人體模型。由于所有擬合的人體模型具有拓?fù)湟恢碌奶攸c(diǎn),可以通過預(yù)先定義的兩個點(diǎn)集來表示腰圍和臀圍。以脊柱關(guān)節(jié)點(diǎn)為例,尋找擬合后的模型點(diǎn)云中滿足脊柱關(guān)節(jié)點(diǎn)Z坐標(biāo)增減3 cm范圍內(nèi),且能構(gòu)成一個近似封閉圓環(huán)的點(diǎn)集來表示腰圍,并儲存該點(diǎn)集內(nèi)各點(diǎn)在模型上的索引,計算相鄰點(diǎn)距離和作為最終腰圍的計算值。臀圍參數(shù)值測量方法同理,共預(yù)定義腰圍點(diǎn)40個,臀圍點(diǎn)32個(圖3)。人體高度同樣采用預(yù)定義Z坐標(biāo)最大和最小點(diǎn)的取值來計算。由于采集的人體數(shù)據(jù)為RGB-D圖像序列,因此各項(xiàng)人體參數(shù)的最終結(jié)果為各單幀測量結(jié)果總和的平均值。
身體質(zhì)量指數(shù)(BMI)[23]是評估人體肥胖程度的一個常用指標(biāo),設(shè)人體身體質(zhì)量為M,身高為H,則身體質(zhì)量指數(shù)的計算公式為:
(7)
中國肥胖問題工作組確定適宜我國成人超重和肥胖的BMI界限[24]為:BMI<18.5 kg/m2為偏瘦,18.5 kg/m2≤BMI<23.9 kg/m2為正常,24.0 kg/m2≤BMI<27.9 kg/m2為超重, BMI≥28 kg/m2為肥胖。
腰臀比(WHR)[23]是判定中心性肥胖的重要指標(biāo),能夠反映身體脂肪分布情況。設(shè)腰圍為W,臀圍為H,則腰臀比計算公式為:
圖3 SMPL模型關(guān)節(jié)點(diǎn)和腰圍、臀圍預(yù)定義示意圖Fig.3 Schematic diagram of SMPL model joint points and predefined waist and hip circumference
(8)
中國肥胖問題工作組建議我國成人腹型肥胖的標(biāo)準(zhǔn)為:男性WHR≥0.90,女性WHR≥0.85。
首先將采集的食物RGB圖像根據(jù)大體類別進(jìn)行劃分,可分為如面條、饅頭和粥類等類別,并制作數(shù)據(jù)集1 900張和測試集200張,共包含19個大類,其中2個食物大類中的部分圖像數(shù)據(jù)見圖4。
圖4 食物圖像分類示例Fig.4 Examples of food image classification
基于DeepLabv3+模型進(jìn)行建模訓(xùn)練并測試,將預(yù)測結(jié)果與測試集中的真實(shí)數(shù)據(jù)進(jìn)行比較最終得到模型的分類性能評價。在訓(xùn)練過程中,本研究將訓(xùn)練集與測試集比例設(shè)置為9∶1,并在原有的模型基礎(chǔ)上進(jìn)行微調(diào)(fine-tuning),對模型的主干部分先進(jìn)行凍結(jié)訓(xùn)練50個周期,然后解凍訓(xùn)練50個周期。凍結(jié)訓(xùn)練的批量大小(batch size)為4,解凍后降低batch size為2,優(yōu)化器為Adam。對模型進(jìn)行訓(xùn)練并測試和評價。
本研究采用圖像語義分割基本評價指標(biāo)[25]進(jìn)行評價,指標(biāo)包括像素準(zhǔn)確率(PA,Pixel accuracy)、像素準(zhǔn)確率平均值(MPA,Mean pixel accuracy)和平均交并比(MioU,Mean intersection over union)。
PA為正確像素與整個圖像總像素的比例:
(9)
式中:k表示類別,假定一定有(k+1)類(包括k個目標(biāo)類和1個背景類),pii表示真實(shí)正例像素數(shù),pij表示屬于i類被分為j類的像素數(shù)。
MPA為每個類別分類正確的像素數(shù)與該類別的總像素的比例然后求平均:
(10)
MIoU為平均交并比,計算的是2個集合的交集與并集的重合比例,在語義分割中,計算的是真實(shí)分割與系統(tǒng)預(yù)測的分割間的交并比:
(11)
模型評價結(jié)果見表2,食物圖像識別模型分割樣例見圖5。
表2 食物圖像識別模型性能評價Table 2 Performance evaluation of food image recognition model
圖5 食物圖像識別模型分割示例Fig.5 Examples of food image recognition model segmentation
對膳食調(diào)查系統(tǒng)中的體積計算方法進(jìn)行誤差分析。首先通過相機(jī)從正上方拍攝某個邊長為10 cm的規(guī)則立方體,利用1.3.2節(jié)體積計算方法對該規(guī)則立方體深度圖進(jìn)行體積計算,最終得到的體積計算系統(tǒng)誤差小于3%。本研究是在深度學(xué)習(xí)模型圖像分割結(jié)果的基礎(chǔ)上,進(jìn)一步計算得到每種食物類別中各食物體積的估計值,再以人工標(biāo)注的食物圖片計算得到的食物體積為真實(shí)值進(jìn)行對比。為了避免碗裝類食物在進(jìn)行體積計算時由于乘裝容器形狀造成的誤差,在測試集中只選擇分割后非碗裝類食物,選擇其中8類共計106個樣本進(jìn)行測試,每種食物樣本大于5個。計算它們的體積并與真實(shí)值比較,體積計算的評價標(biāo)準(zhǔn)為平均絕對誤差(Mean absolute error,MAE)[26]:
(12)
本研究選取男女各10名真實(shí)人體樣本,測量時均身穿較為緊身的衣服,利用皮尺分別測量出樣本人體的身高、腰圍和臀圍,并計算出各自的腰臀比,作為真實(shí)值。
圖6 食物體積計算平均絕對誤差Fig.6 Mean absolute error of food volume calculation
自動計算人體參數(shù)時,利用本研究1.3.4節(jié)的方法,計算采集數(shù)據(jù)中10幀圖像結(jié)果總和的平均值作為最終計算結(jié)果,每幀計算時間約為1.5 s。本研究1位男性人體樣本在某一幀動作下三維擬合SMPL模型的重建結(jié)果見圖7。
圖7 男性人體樣本三維擬合SMPL模型示例Fig.7 Example of a three-dimensional fitting SMPL model for male human sample
將本研究計算結(jié)果與皮尺測量結(jié)果進(jìn)行比較,采用平均絕對百分比誤差(Mean absolute percentage error,MAPE)[26]進(jìn)行評定:
(13)
女性腰圍測量結(jié)果與真實(shí)值偏離最大,平均偏離為8.5%,其余測量類別與真實(shí)值偏離值均小于7%;身高測量值的測量精度最高,男性和女性的測量精度均小于3%;腰圍測量值精度最低。最終計算得到的腰臀比偏離程度均小于4%,結(jié)果見表4。
表4 人體三維測量參數(shù)平均絕對百分比誤差Table 4 Mean absolute percentage error of human body three-dimensional measurement parameters %
本研究利用DeepLabv3+網(wǎng)絡(luò)模型對RGB-D食物彩色圖像進(jìn)行語義分割,通過二維像素到深度圖的映射得到食物點(diǎn)云計算食物的體積,并根據(jù)收集的食物配料信息及營養(yǎng)成分表計算蛋白質(zhì)、脂肪和碳水化合物等含量;同時利用采集的人體單視角深度圖像序列計算SMPL參數(shù)擬合人體三維模型,計算腰臀比和身體質(zhì)量指數(shù),初步判定人體體重狀況以及中心性肥胖程度。營養(yǎng)素攝入結(jié)合人體健康狀況分析更有利于接下的營養(yǎng)干預(yù),從而降低因不合理膳食導(dǎo)致的各類慢性疾病的發(fā)生率。研究結(jié)果表明:1)本系統(tǒng)在食物圖像分割中的像素準(zhǔn)確率為72.1%,像素準(zhǔn)確率平均值為97.13%,平均交并比為82.03%;2)在食物體積計算中的平均絕對誤差均小于40 cm3;3)所有人體樣本計算的腰臀比與真實(shí)值偏離程度均小于4%,驗(yàn)證了膳食調(diào)查系統(tǒng)對食物營養(yǎng)素和人體健康狀況進(jìn)行分析的實(shí)際可行性。下一步將繼續(xù)擴(kuò)充數(shù)據(jù)集的數(shù)量和類別,以提高食物分割精度和人體參數(shù)計算精度。
中國農(nóng)業(yè)大學(xué)學(xué)報2023年2期