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