Making dataset for signature recognition?

Hello!
I am working on signature recognition system using neural network, this system recognize 360 signature images from 30 person, for each person 12 signature (8 genuine and 4 forge). How can I make dataset for training and testing for neural network to recognize genuine and forge?
Can someone help me!
heeeeeeeeeeeeeeeelp!!!!!!!
thanks in advance.

 Accepted Answer

Image Analyst
Image Analyst on 26 Jan 2015
Edited: Image Analyst on 26 Jan 2015
I'd probably get 360 people to hand write their signatures 8 times on white paper and then scan them in with a flatbed scanner to make 360*8 image files all stored in a "genuine" folder. Then get them people to "forge" signatures of 4 other people and scan and store those in a "forged" folder. When you assign people to forge signatures, make sure that every person has their signature forged 4 times by 4 different other people.
You can train with half and test with half or whatever fraction you want. Or you can use "Leave one out" http://en.wikipedia.org/wiki/Neighbourhood_components_analysis#Leave-one-out_.28LOO.29_classification
To determine accuracy of your NN algorithm, you might construct an ROC curve http://en.wikipedia.org/wiki/Receiver_operating_characteristic

6 Comments

You mean 30 people. Tell the other 330 "Sorry, I mad a mistake" (;>) .
thank for your answer!
there is 30 people sir, no problem sir I understood.
you explained me good, but you did not point about making dataset, How do I make dataset to store 360 images and its features. my programming is very simple, How do I code this.
If you can help me about code, please...
thanks
I did point out how to make the dataset. What is the dataset if it's not your signature images? You did not ask about how to do image analysis or program up a neural network. You said quote "How can I make dataset for training and testing". Are you now asking how to make a NN program to analyze your dataset?
sorry for that I could not understand.
In fact I have tow problem sir:
1. how to create a database for my system that maintain these signatures with its ID(each signature has an ID or name and last name of person) and features, that later I recognize new signature that, Are this signature is exist in database or not? by NN. Can I store these data in Table, Dataset, struct then store this in Matfile or I should create database in Sql, Orecal and so on... what is your advice?
2. How do I make a NN to recognize signatures.
sir! if it is possible show me a simpler way to make database. this is my final project and my date line is near.
please help me in my project sir!
thanks
  1. I would just encode the name of the person and whether it's genuine or forged into the filename, either the base filename (like the person's name), or the folder name (like whether it's genuine or forged). When you read the image you can parse the filename to find out who it is and whether it's genuine of forged. You can certainly use dir() to get the names of all the files and then parse the filenames and store the data in a table or structure array if you want.
  2. I have no idea. You'll need to wait for Greg Heath to answer the NN question.
thanks a lot!
How do I encode name of the person into the filename?
In this way that you assumed me, Can I assign every person in system one by one? and remove someone one by one?and also I assign every person with signature, name,lastname and ID via interface my interface have one button for load image, one for feature extraction, one for storing image with its person's name, lastname and ID another for Identification.
thanks for your response!!

Sign in to comment.

More Answers (1)

I assume you have a technique for extracting features out of the images. If not, you'll have to search the net, including comp.ai.neural-nets as well as the NEWSGROUP and ANSWERS.
The best classification technique I can think of:
A 31 class classifier with thresholds trained on all signatures with a target matrix based on class indices 1:31 converted to 31-dimensional {0,1} unit vectors via function ind2vec. The input is assigned to the class associated with the maximum output PROVIDED the output exceeds the class specific threshold.
Therefore, if max(y) = y(10) and y(10) >= Thresh(10), then assignedclass = vec2ind(y) otherwise there is no classification.
To be clear, all forgeries are associated with target [zeros(30,1); 1]
The class-dependent thresholds are chosen via trial and error.
Hope this helps
Thank you for formally accepting my answer
Greg
PS A 60 class classifier might be better but your data base doesn't look large enough. classifier might be based on 60 classes.

2 Comments

thanks sir!
For feature extraction I used Zernike moments algorithm, I want to recognize the signature by moments of image.
I attached my project description just see that once please, and advice me that I can implement or not if I could not I will chose your technique. I finished the pre-processing and feature extraction steps.
thanks for your response!!
I have same problem now, can you help me if you get the answer?
with my regard

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!