1. 程式人生 > >NIST指紋資料識別(二)資料處理

NIST指紋資料識別(二)資料處理

資料處理

資料分析

前面一篇文章簡單介紹了NIST指紋資料集的大概形式和組成,一張圖片配一個標籤的txt檔案。兩個檔名相同(.png.txt)由於圖片標籤是分開的。我們需要生成兩個對應的批次來對圖片和標籤進行處理。

資料準備

首先,我們先對標籤進行處理,觀察下圖標籤格式。

這裡寫圖片描述

我們這次只對指紋紋型進行分析,所以只關注class屬性。共有W,A,R,L,T五種屬性。所以可以採用獨熱編碼 ,原理很簡單,即每個標籤用一個numpy陣列表示,陣列有5個元素,按照W,A,R,L,T的順序,只在該圖片對應的型別的陣列元素處置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) # float64 pos = switch_pos(word) # index of the word
vector[pos] = 1 return vector

這樣,我們就得到了一張標籤對應的獨熱編碼形式。其他其他的檔案開啟等等就先不放在這裡了。有興趣的可以去我的github拿完整的程式碼。

順便提一句,我這裡是先建立了兩個列表,一個是圖片路徑列表和對應的標籤列表。

處理好標籤之後,我們開始生成供訓練用的batch。因為沒有怎麼看tensorflow的queue和producer這裡。所以這裡就簡單粗暴的用自己的方式生成batch。
第一步,為了保證shuffle的效果,我用randint先生成一個讀取的start位置。為了均衡效能問題,就不一個個都隨機生成了,就直接在start+batch_size處設定end。然後迭代輸入的圖片和標籤列表,送入batch中。

import cv2
import random as rd
def get_random_batch(image_list,label_list,image_H,image_W,batch_size,classes):
    image_batch = np.zeros(batch_size,image_H*image*W)
    label_batch = np.zeros(batch_size,classes)

    start = rd.randint(0,len(image_list)-batch_size)
    end = start + batch_size
    def convertgray(img):
        if len(img.shape) > 2:
            gray = np.mean(img, -1)
            return gray
        else:
            return img
    for i in range(start, end):
        image = cv2.imread(image_list[i])
        image = convert2gray(image)
        image_batch[i-start,:] = image.fatten()
        label_batch[i-start,:] = label_list[i]
return image_batch, label_batch

好了,今天先介紹到這裡,之後會把神經網路這一塊放上來,也會用tensorflow裡的函式重新實現下資料讀取。看完之後如果有疑問可以聯絡我交流,郵箱[email protected],完整程式碼放在我的github上了,希望大家可以順手給個星啊。
github:https://github.com/xiaoye74/NIST_fingerprint/blob/master/README.md#input-part

轉載請註明出處,謝謝

相關推薦

NIST指紋資料識別資料處理

資料處理 資料分析 前面一篇文章簡單介紹了NIST指紋資料集的大概形式和組成,一張圖片配一個標籤的txt檔案。兩個檔名相同(.png和.txt)由於圖片和標籤是分開的。我們需要生成兩個對應的批次來對圖片和標籤進行處理。 資料準備 首先,我們先對標

OpenCV儀表資料識別:數字區域自動定位

下載和配置Opencv在網上和書上有很多的講解,這裡不再贅述。 此處附上Opencv的下載連結。 想要對圖片中的數字資訊進行識別首先要對圖片進行預處理,排除干擾的因素,只留下有價值的資訊。 這裡需要兩張圖,一張為有資料的圖片,一張為儀表關閉時沒有資料的圖

資料加工------資料計算

資料計算 (一)簡單計算 (1)加減乘除---“+,-,*,/” (2)開始選項卡---求和---求和 (二)函式計算 (1)平均值與總和 AVERAGE(number1,number2,.......) SUM(number1,number2,.......) (2)日期的

風險大腦-支付風險識別天池大賽資料儲存及檢查

         本次想把過程寫的詳細些,所以本節和上一節講了如何充分利用大資料平臺處理資料,如何利用最有效的工具進行資料儲存、處理、分析。另外這次準備用Inceptor(分散式SQL引擎,可以理解為H

200G免費偷懶必看資料全集

java 資料 視頻 spring 在上文小編整理過一大波資料分享出來之後,大家的回應說都不錯(沒有獲取的朋友可以點擊250G偷懶必看資料全集查看),甚至有人後臺給我留言說有沒有xxx的學習資料等等 今天小編特意又整理了一波資料分享出來,希望大家喜歡,文末有正確的獲取方式 1,java基礎

資料選擇題

1.which among the following command is used to copy a directory from one node to another in HDFS? 1.rcp  2.distcp   √   

資料結構

***********************特殊的線性表-------棧**************************** 棧: 先進後出、後進先出 棧的插入運算 叫做入棧 棧的刪除運算 叫做出棧 演示程式碼: package com.chapter11; //棧的介面public int

Golang學習筆記資料型別

Go的資料型別與Java等語言的資料型別幾乎一致 //byte其實就是uint8的別名 var aaa byte = 100 // rune其實就是int32的別名 var bbb rune = 200 //可以給一個字元,計算ascll碼 var ddd byte = 'a' var c

everything用於行動硬碟資料管理:離線搜尋全部行動硬碟

使用【everything檔案搜尋軟體】搜尋全部行動硬碟列表,實現神奇的一網打盡 告別插盤搜尋時代 使用技巧三:指定所有離線檔案列表為搜尋範圍 使用技巧四:發現重複檔案 使用技巧五:定位檔案所在的硬碟分割槽。 綜合示例:

資料結構:演算法及其描述

一、演算法及其描述 1、什麼是演算法 資料元素之間的關係有邏輯關係和物理關係,對應的操作有邏輯結構上的操作功能和具體儲存結構上的操作實現。 把 具體儲存結構上的操作實現方法 稱為演算法。 確切地說,演算法是對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一

elasticsearch摸石頭過河——常用資料型別

elasticsearch資料型別    Elasticsearch 型別是 以 Lucene 處理文件的這個方式為基礎來實現的。一個索引可以有多個型別,這些型別的文件可以儲存在相同的索引中。    Lucene 沒有文件型別的概念,每個文件的型別名被儲存在一個叫 

MySQL學習資料型別

擷取書中內容留作學習。。。。 1、整數型別 2、浮點數與定點數型別 3、日期時間型別   向資料庫中插入當前系統時間:CURRENT_TIME或者NOW() 4、文字字串型別   MySQL列舉型別:create table test(enm E

新手初入Java資料型別、變數和常量以及拆包和

資料型別、變數和常量以及拆包和裝包 一、資料型別 Java資料型別分為基本型別(primitive types)和引用型別(reference type),其中基本型別又分為數值型、字元型、布林型。引用型別又分為類型別、介面型別、陣列型別、null型別。這兩種大的型別包含了int

Linux Shell命令 資料型別 表示式

字串 字串是shell程式設計中最常用最有用的資料型別(除了數字和字串,也沒啥其它型別好用了),字串可以用單引號,也可以用雙引號,也可以不用引號。單雙引號的區別跟PHP類似。 單引號 str='this is a string' 單引號字串的限制: 單引號裡的任何字元

Python運維開發:運算子與資料型別

python物件的相關術語: python程式中儲存的所有資料都是圍繞物件這個概念展開的: 程式中儲存的所有資料都是物件 每個物件都有一個身份、一個型別和一個值     例如,school='MaGe Linux'會以'MaGe Linux'建立一個字串物件,其身份是指向它在記憶體中所處位

Android手機通過wifi進行資料傳輸

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java是如何快速煮成C 的 資料訪問 1

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

資料結構LinkedList原始碼分析

一、基本概念 1、關係圖: public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, C

MySql必知必會實戰練習資料過濾 MySql必知必會實戰練習資料檢索

  在之前的部落格MySql必知必會實戰練習(一)表建立和資料新增中完成了各表的建立和資料新增,MySql必知必會實戰練習(二)資料檢索中介紹了所有的資料檢索操作,下面對資料過濾操作進行總結。 1. where子句操作符   等於: =    不等於: != 或 <>   小於:

藍芽4.0 BLE 資料傳輸

轉載自: https://blog.csdn.net/rfidunion/article/details/79711055   在第一部分我們瞭解了幾個專業詞彙,接下來我們再瞭解一下資料的傳送 一、資料傳送 在BLE協議棧中進行資料傳送分為兩個方面,一個事GATT的cl