【Opencv综合应用】自制训练集的人脸识别2——制作csv文件
【Opencv綜合應(yīng)用】自制訓(xùn)練集的人臉識(shí)別2——制作csv文件
- 一,準(zhǔn)備工作
- 環(huán)境
 
- 二,主要步驟
- 三,代碼部分
- 四,結(jié)果
- 五,總結(jié)
一,準(zhǔn)備工作
本文參考自: https://www.cnblogs.com/fpzs/p/10535093.html.
 在上一篇【Opencv綜合應(yīng)用】自制訓(xùn)練集的人臉識(shí)別1——拍攝10張人臉圖片中我們?cè)趕41文件中生成了自己的10張人臉灰度pgm圖像,現(xiàn)在我們需要將s41文件夾移到ORL人臉庫(kù)文件夾att中,里面已經(jīng)包含了s1—s40的40組且每組10張的pgm格式人臉圖像了,加入我們的圖像后按照接下來(lái)的步驟生成csv文件,就能方便以后制作訓(xùn)練集xml文件了
ORL人臉庫(kù)(Olivetti Research Laboratory人臉數(shù)據(jù)庫(kù))是由英國(guó)劍橋Olivetti實(shí)驗(yàn)室從1992年4月到1994年4月期間拍攝的一系列人臉圖像組成,共有40個(gè)不同年齡、不同性別和不同種族的對(duì)象。每個(gè)人10幅圖像共計(jì)400幅灰度圖像組成,圖像尺寸是92×112,圖像背景為黑色。其中人臉部分表情和細(xì)節(jié)均有變化,例如笑與不笑、眼睛睜著或閉著,戴或不戴眼鏡等,人臉姿態(tài)也有變化,其深度旋轉(zhuǎn)和平面旋轉(zhuǎn)可達(dá)20度,人臉尺寸也有最多10%的變化,是目前使用最廣泛的標(biāo)準(zhǔn)人臉數(shù)據(jù)庫(kù)。
之前由于我無(wú)論如何都登不上他們英國(guó)劍橋Olivetti實(shí)驗(yàn)室去下載人臉庫(kù),就算翻墻那網(wǎng)頁(yè)也顯示404 Not Found,所以我這里直接把好不容易搞到的ORL人臉庫(kù)放網(wǎng)盤了,有同樣情況的直接用我的就行。
 鏈接: https://pan.baidu.com/s/1WxTNsMZ1RXr7GnFbSNuWQw.
 提取碼:gom8
環(huán)境
由于這次要用到Python沒有的tensorflow模塊,沒有的需要下載安裝,比較麻煩,所以我推薦還沒按Python的不要下Python,直接下載Anaconda(Anaconda是一個(gè)開源的Python發(fā)行版本,其中已經(jīng)包含了conda、Python等180多個(gè)科學(xué)包及依賴項(xiàng),同樣也包含了tensorflow包,省去了以后安裝很多包的麻煩),如果已經(jīng)安裝了Python的也可以下載Anaconda,到時(shí)候選擇編譯器時(shí)直接選擇Anaconda中的Python.exe編譯器就行
 
 我的環(huán)境是win10+Anaconda3 4.3(里面帶著Python3.5)+Pycharm
二,主要步驟
1、載入對(duì)應(yīng)的路徑,取到包含著人臉庫(kù)文件的路徑就行,不然會(huì)報(bào)錯(cuò)(我這里文件結(jié)構(gòu)是在可執(zhí)行文件同目錄下,有人臉識(shí)別att文件夾,里面包含了s1—s41組文件,每組文件里又包含10副pgm圖,但我路徑只取到att就行)
 2、提取每一張圖片對(duì)應(yīng)的位置與同一個(gè)人臉對(duì)應(yīng)的標(biāo)簽
 3、寫入存儲(chǔ)文件夾att.txt
三,代碼部分
"""------------------------------------------------------------------ 利用pyhton生成csv文件 人臉模型訓(xùn)時(shí)需要讀取人臉和人臉對(duì)應(yīng)的標(biāo)簽,利用csv文件讀取,以取代傳統(tǒng)的 逐一讀取方式,直接在數(shù)據(jù)庫(kù)讀取效率很低。在訓(xùn)練之前生成csv文件,主要步驟: 1、載入對(duì)應(yīng)的路徑,取到包含著人臉庫(kù)文件的路徑就行,不然會(huì)報(bào)錯(cuò)(我這里文件結(jié)構(gòu)是在可執(zhí)行文件同目錄下,有人臉識(shí)別att文件夾,里面包含了s1—s41組文件,每組文件里又包含10副pgm圖,但我路徑只取到att就行 2、提取每一張圖片對(duì)應(yīng)的位置與同一個(gè)人臉對(duì)應(yīng)的標(biāo)簽 3、寫入存儲(chǔ)文件夾data.txt ---------------------------------------------------------------------""" import tensorflow as tf import os.path """定義csv文件生成函數(shù)""" def MakeLabel():global labelface_path = "att" # 人臉數(shù)據(jù)的路徑 separator = ";" # 分隔符file = open("att.txt", 'w') # 打開存儲(chǔ)的文件"""filenames對(duì)應(yīng)att; dirnames對(duì)應(yīng)s1; dirname對(duì)應(yīng)1.pgm;故為att/s1/1.pgm"""for dirname, dirnames, filenames in os.walk(face_path):for targetname in dirnames:target_path = os.path.join(dirname, targetname)for filename in os.listdir(target_path):targetname2 = targetname[::-1]targetname3 = targetname2[:-1]targetname4 = targetname3[::-1]label = int(targetname4) # 文件名字符串型轉(zhuǎn)數(shù)字int型path = "%s/%s" % (target_path, filename)print("%s%s%d" % (path, separator, label))file.write(path) # 寫入路徑file.write(separator) # 寫入;號(hào)file.write(str(label)) # 寫入標(biāo)簽file.write("\n")label = label + 1file.close() #關(guān)閉存儲(chǔ)的文件"""啟動(dòng)函數(shù)""" def main(argv=None):MakeLabel() if __name__ =='__main__':tf.app.run()四,結(jié)果
 可以在運(yùn)行窗口看見生成成功
 
 打開att.txt可以看見路徑和標(biāo)號(hào)已經(jīng)讀進(jìn)去了
五,總結(jié)
csv文件中包含兩方面的內(nèi)容,一是每一張圖片的位置所在,二是每一個(gè)人臉對(duì)應(yīng)的標(biāo)簽,就是每一個(gè)人的編號(hào)。這個(gè)att.txt就是我們需要的csv文件。在寫人臉模型的訓(xùn)練程序的時(shí)候,我們需要讀取人臉和人臉對(duì)應(yīng)的標(biāo)簽,而直接在數(shù)據(jù)庫(kù)中讀取顯然是低效的,所以我們用csv文件讀取。
下一篇 【Opencv綜合應(yīng)用】自制訓(xùn)練集的人臉識(shí)別3——用csv文件生成xml文件.
總結(jié)
以上是生活随笔為你收集整理的【Opencv综合应用】自制训练集的人脸识别2——制作csv文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: python画条状图_Python 绘制
- 下一篇: 递归陷入死循环的判断方法与解决措施(ja
