Tensorflow入門教程(二十九)人臉表情識別(上)人臉表情資料集-fer2013
------韋訪 20181102
1、概述
好久沒更新tensorflow的教程了,這這段時間一直在學習機器學習的基礎,但是如果想去找工作,沒有一點實際的應用可能就沒那麼容易聊了,所以,做一下人臉表情識別的例子,其實我最終的目的是想做一個疲勞檢測的例子,這裡就先練練手,看看效能如何。標題有點長有點拗口,其實不應該加上“人臉表情資料集-fer2013”這幾個字的,但是我發現在別人的部落格裡,有網友想跟博主要將圖片解析以後的資料集,博主好像沒回復,所以,我最後會上傳解析後的資料集的,供不熟悉Python的網友下載。
2、fer2013人臉表情資料集簡介
Fer2013人臉表情資料集由35886張人臉表情圖片組成,其中,測試圖(Training)28708張,公共驗證圖(PublicTest)和私有驗證圖(PrivateTest)各3589張,每張圖片是由大小固定為48×48的灰度影象組成,共有7種表情,分別對應於數字標籤0-6,具體表情對應的標籤和中英文如下:0 anger 生氣; 1 disgust 厭惡; 2 fear 恐懼; 3 happy 開心; 4 sad 傷心;5 surprised 驚訝; 6 normal 中性。
但是,資料集並沒有直接給出圖片,而是將表情、圖片資料、用途的資料儲存到csv檔案中,如下圖所示,
如上圖所示,第一張圖是csv檔案的開頭,第一行是表頭,說明每列資料的含義,第一列表示表情標籤,第二列即為圖片資料,這裡是原始的圖片資料,最後一列為用途。
3、將表情圖片提取出來
知道資料結構以後,就好辦了,使用pandas解析csv檔案,(pandas的簡單用法可以檢視這篇部落格:https://blog.csdn.net/rookie_wei/article/details/82974277 ),再將原始圖片資料儲存為jpg檔案,並根據用途和標籤標籤進行分類,分別儲存到對應資料夾下,程式碼比較簡單,並且做了詳細備註,直接給完整程式碼如下,
#encoding:utf-8 import pandas as pd import numpy as np import scipy.misc as sm import os emotions = { '0':'anger', #生氣 '1':'disgust', #厭惡 '2':'fear', #恐懼 '3':'happy', #開心 '4':'sad', #傷心 '5':'surprised', #驚訝 '6':'normal', #中性 } #建立資料夾 def createDir(dir): if os.path.exists(dir) is False: os.makedirs(dir) def saveImageFromFer2013(file): #讀取csv檔案 faces_data = pd.read_csv(file) imageCount = 0 #遍歷csv檔案內容,並將圖片資料按分類儲存 for index in range(len(faces_data)): #解析每一行csv檔案內容 emotion_data = faces_data.loc[index][0] image_data = faces_data.loc[index][1] usage_data = faces_data.loc[index][2] #將圖片資料轉換成48*48 data_array = list(map(float, image_data.split())) data_array = np.asarray(data_array) image = data_array.reshape(48, 48) #選擇分類,並建立檔名 dirName = usage_data emotionName = emotions[str(emotion_data)] #圖片要儲存的資料夾 imagePath = os.path.join(dirName, emotionName) # 建立“用途資料夾”和“表情”資料夾 createDir(dirName) createDir(imagePath) #圖片檔名 imageName = os.path.join(imagePath, str(index) + '.jpg') sm.toimage(image).save(imageName) imageCount = index print('總共有' + str(imageCount) + '張圖片') if __name__ == '__main__': saveImageFromFer2013('fer2013.csv')
執行結果,
執行完上面的程式碼後,得到3個資料夾,檔案下有相應的表情的子資料夾,
子資料夾下又有相應的圖片,
這些表情,說真的,我自己都傻傻分不清,比如,
這張圖片我可能歸於傷心,但是它卻在生氣類裡,還有很多類似的例子,裡面甚至有些圖片是漫畫的,也有不知道是什麼東西的,如下,
可能是想加些噪音吧,真是為難了機器了。
這裡就將原始資料集、提取成圖片後的資料集和提取程式碼上傳,下載連結為:
以前下載可以選擇免積分,現在最少也得一個積分,真是苦了沒積分的小夥伴們~