Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

.NET 

Fingerprint Profiling using Neural Network

Last night i was watching a few series on watchseries.net on detective research and i noticed
they used a pretty dull and slow fingerprint system (prob already newer by now) and i was thinking,
I can make that.... why not? So i started to make a few crude sketches and modelling my code.

(Screenshots: Network picks two matches, wich are two seperate files but the same person (fingerprints))
[Image: R5Yl3tt.png][Image: 5tqRNMF.png]

It's still needs a lote of tweaking and debugging but im pretty positive that i can make this work.
And i had some prior demo projects on neural networks so i had a good idea of how
i'll be tackling this system to a working solution.

I downloaded a few fingerprint samples of some random website,
and they are by default grayscaled, so that makes it easy for me, all i need is the matrix values
of a point in a grid, lets say a matrix of 10 x 10 points, the grayscale sum of a pixel color:

Code
((Value.R * 0.3) + (Value.G * 0.59) + (Value.B * 0.11)) / 255

Wich is the general method to get the grayscale value of a color within the fingerprint.
Now in the real deal they use similair point systems but using an additional solution where they
have values from the swirls of the groves in a print, now that i keep aside, lets start simple i figured.

The matrix can be bigger for more accurate results, however more time to train is required,
less points less accurate and less train time. So its a bit tweaking here and there.

So i setup 4 layers for the neural network;
- Pre-Input(=Grid Points Total)
- Input(=Variable~)
- Hidden(=Variable~)
- Output (=Amount of candidates)

I implemented a simple ManualResetEvent with a seperate Train() loop thread,
so i can easily reset or abort on any given time for test sake.
And this is how far i got, maybe you guys have some thoughts about or even suggestions,

Let me know it ^^

Source code: Download

Remark:
This is a demo application it can contain mistakes or flaws that i haven't seen.

- Barret
This is fucking amazing. Neural networks should be more widely acknowledged as something new and exciting.
This looks very nice. Looking forward to the groove detection tho. I'm afraid that this will not be very accurate. But if you make the matrix small enough, it shouldn't be a problem.
(Sep 19, 2014 09:18 AM)Odus Wrote:  Can't help but think of CSI and this keep springing to mind:
No but seriously this is awesome, I'm also looking forward to seeing how you handle groove detection. Do you have anything mapped in mind yet?

Not really its rly hard to make an algoritm myself, im thinking to use of the AForge.NET library for these methods.

However ive come up with a "visual imprint detection" that works with a range threshold value. you have 0, 0.5 and 1, making the contours clear to the network.

You can consider this as a "edge detection on grayscale"

Screen:

[Image: yrj7EJp.png]

And some time after (30 secs later) you see the progress, the Network does take the correct result eventually

Same screen, after few seconds later...
[Image: PkuQmNH.png]
its not perfect but i get better results with it tho.
I won't quote but you said to consider it as edge detection. So would it not be faster if you sharpened the edges of each fingerprint image before processing it? Just food for thought.
Amazingly, the last image you posted actually looks somewhat like what the real software looks like. I've only seen the software that a forensic scientist actually uses but most people think they are all graphically beautiful when in actuality they are very simplistic.

They show the list of IDs, clicking them shows the finger print + comparison. (With each image they have the points to where it is being compared to). It then shows the probability of match and the systems identity check. No comparison is 100%.

If I remember right, the highest comparison I saw out of 1,000 possible matches was in the high 80's. From there, she had to take those high matches and then run through them again with another set to narrow the search once more.

From there, she had to essentially manually check and compare the prints which ended up being around 15-20.

For each print in the database, she could click to pull up a profile. They kept the profile information from appearing on the prints page to avoid influence.

Overall, keep it simplistic.

I'm not a cop or anything, just a student who was able to tour a few times with police stations and learn more about how things work internally. The software though may vary in design, all I know is they stay away from showing pictures of the person on the main form page because it is slow (They don't do a CSI or NCIS type of thing)
(Sep 19, 2014 09:51 AM)Odus Wrote:  I won't quote but you said to consider it as edge detection. So would it not be faster if you sharpened the edges of each fingerprint image before processing it? Just food for thought.

Yeah its a matter of balance,
i use usually ~16x16 step value within the total width and height, so u get a grid.


(Sep 19, 2014 10:06 AM)Ban Wrote:  Amazingly, the last image you posted actually looks somewhat like what the real software looks like. I've only seen the software that a forensic scientist actually uses but most people think they are all graphically beautiful when in actuality they are very simplistic.

They show the list of IDs, clicking them shows the finger print + comparison. (With each image they have the points to where it is being compared to). It then shows the probability of match and the systems identity check. No comparison is 100%.

If I remember right, the highest comparison I saw out of 1,000 possible matches was in the high 80's. From there, she had to take those high matches and then run through them again with another set to narrow the search once more.

From there, she had to essentially manually check and compare the prints which ended up being around 15-20.

For each print in the database, she could click to pull up a profile. They kept the profile information from appearing on the prints page to avoid influence.

Overall, keep it simplistic.

I'm not a cop or anything, just a student who was able to tour a few times with police stations and learn more about how things work internally. The software though may vary in design, all I know is they stay away from showing pictures of the person on the main form page because it is slow (They don't do a CSI or NCIS type of thing)

Hahaha, nice to know, yeah i just started this little side project (today) so its mayor alpha stage ^^ after a few days i can optimize it, im pretty fast with such things.
I must say this is one of the best vb.net projects i have seen in a while, nice work! Trying this out now.
This is fucking brilliant, ive always wanted to program such tool.
Just never really got around the time to do it, but anyways nice release op :)
thnx bro will try it if you have update put here
This is cool man, good release barret
skimmed over, looks very cool dude.

just a thought, you can use like sobel edge detection for this, no? i remember doing a project involving edge detection like this, and u say it only works in grayscale, so sobel would be perfect
(Sep 20, 2014 12:09 PM)salmoneus Wrote:  skimmed over, looks very cool dude.

just a thought, you can use like sobel edge detection for this, no? i remember doing a project involving edge detection like this, and u say it only works in grayscale, so sobel would be perfect

I tried that, the problem was with that is the sobel destroyes the features of the groves, it kinda melts some of the details of the fingerprint and therefore losing the quality of your result, A Neural Network does not care ofc, it only "see's" the matrix values and walks the path ways between the nodes (neurons) it will then pick a path wich has more weight to it. Might sound odd but thats basicly how the NN operates.

Example:

[img]http://www.texample.net/media/tikz/examples/PNG/neural-network.png[/img]
Wow, this is really good man. Gonna have a look at the source.
(Sep 20, 2014 04:32 PM)SIM-964740 Wrote:  Wow, this is really good man. Gonna have a look at the source.

Hehe thx ^^ ye sometimes i get these code-rushes , i see something and im convinced i can make that. Thats what love about programming, freedom.

And everyone that tells that vb.net sucks? i just smile because i can make whatever i can think of using vb ^^

Btw if u wanna play arround with a base model wich is better composed check out:
https://hackforums.net/showthread.php?tid=4454914


Possibly Related Threads...
Thread / Author Replies Views Last Post
[Python] by Don CezarAug 20, 2023 01:37 AM 5 498 Aug 20, 2023 01:37 AM
Last Post: Lucky4L
[C#] by hypersonic5000Jul 8, 2019 07:20 AM 3 222 Jul 8, 2019 07:20 AM
Last Post: Vyxn
[C] by p9ck4dDec 13, 2018 06:25 PM 9 356 Dec 13, 2018 06:25 PM
Last Post: realsunjester