NIST指纹数据识别(二)数据处理
數(shù)據(jù)處理
數(shù)據(jù)分析
NIST指紋數(shù)據(jù)介紹
前面一篇文章簡(jiǎn)單介紹了NIST指紋數(shù)據(jù)集的大概形式和組成,一張圖片配一個(gè)標(biāo)簽的txt文件。兩個(gè)文件名相同(.png和.txt)由于圖片和標(biāo)簽是分開(kāi)的。我們需要生成兩個(gè)對(duì)應(yīng)的批次來(lái)對(duì)圖片和標(biāo)簽進(jìn)行處理。
數(shù)據(jù)準(zhǔn)備
首先,我們先對(duì)標(biāo)簽進(jìn)行處理,觀察下圖標(biāo)簽格式。
我們這次只對(duì)指紋紋型進(jìn)行分析,所以只關(guān)注class屬性。共有W,A,R,L,T五種屬性。所以可以采用獨(dú)熱編碼 ,原理很簡(jiǎn)單,即每個(gè)標(biāo)簽用一個(gè)numpy數(shù)組表示,數(shù)組有5個(gè)元素,按照W,A,R,L,T的順序,只在該圖片對(duì)應(yīng)的類(lèi)型的數(shù)組元素處置1,其他置0,即可表示。代碼如下。
import numpy as np import os def switch_pos(word):switcher = {"W":0,"A":1,"R":2,"L":3,"T":4}return switcher.get(word, "nothing")def text2vec(word,classes):vector = np.zeros(classes) # float64pos = switch_pos(word) # index of the wordvector[pos] = 1return vector這樣,我們就得到了一張標(biāo)簽對(duì)應(yīng)的獨(dú)熱編碼形式。其他其他的文件打開(kāi)等等就先不放在這里了。有興趣的可以去我的github拿完整的代碼。
順便提一句,我這里是先建立了兩個(gè)列表,一個(gè)是圖片路徑列表和對(duì)應(yīng)的標(biāo)簽列表。
處理好標(biāo)簽之后,我們開(kāi)始生成供訓(xùn)練用的batch。因?yàn)闆](méi)有怎么看tensorflow的queue和producer這里。所以這里就簡(jiǎn)單粗暴的用自己的方式生成batch。
第一步,為了保證shuffle的效果,我用randint先生成一個(gè)讀取的start位置。為了均衡性能問(wèn)題,就不一個(gè)個(gè)都隨機(jī)生成了,就直接在start+batch_size處設(shè)置end。然后迭代輸入的圖片和標(biāo)簽列表,送入batch中。
好了,今天先介紹到這里,之后會(huì)把神經(jīng)網(wǎng)絡(luò)這一塊放上來(lái),也會(huì)用tensorflow里的函數(shù)重新實(shí)現(xiàn)下數(shù)據(jù)讀取。看完之后如果有疑問(wèn)可以聯(lián)系我交流,郵箱982827552@qq.com,完整代碼放在我的github上了,希望大家可以順手給個(gè)星啊。
github:https://github.com/xiaoye74/NIST_fingerprint/blob/master/README.md#input-part
轉(zhuǎn)載請(qǐng)注明出處,謝謝
總結(jié)
以上是生活随笔為你收集整理的NIST指纹数据识别(二)数据处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OV代码签名和EV代码签名证书区别
- 下一篇: c语言把一个文件中的内容复制到另外一个文