CoolFace
Apppublic

Lullooo/SiameseCNN-ImgMatching

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
App README

๐Ÿ”ข Siamese CNN: Number Recognition & Similarities

Note: See model performances and examples here ๐Ÿ“ˆ <br/><br/>

๐ŸŽฏ PURPOSES

This project aims to develop a Siamese Neural Network ๐Ÿง  able to match and identify different kinds of numerical digits ๐Ÿ”ข. The model learns to measure how similar two images are rather than directly classifying them. This makes it suitable for tasks like:

  • โ€”๐Ÿค Digits matching and recognition: Compare the uploaded digits with those in the test set. Once a match is found, label the uploaded digit with the same label as the matched one.
  • โ€”๐Ÿ”“ Security unlocking mechanisms: The camera captures an istant image of a face or an object. If the similarity with those in the training pool is high, it unlocks the device/program.
  • โ€”๐Ÿ”Ž Duplicate detection: Define a similarity score between the external image and those in the reference set. If similarity with one of these is high, it is likely is a duplicate. <br/><br/>

๐Ÿ› ๏ธ WORKFLOW

The workflow is quite straightforward: the user is prompted to upload a picture of a number or to draw it in a canvas, and the Siamese Network returns:

  • โ€”1๏ธโƒฃ Which digit is the uploaded/drawn picture (The uploaded img is a ...) along with its similarity score.
  • โ€”2๏ธโƒฃ 3 matching pics coming from the testing dataset. <br/><br/>

โš ๏ธ WARNINGS

Be fully aware of the model's limitations by reading the model limitations doc โœ‹ <br/><br/>

๐Ÿง  MODEL OVERVIEW

The Siamese architecture leverages shared convolutional layers to extract features from two images, then computes their Euclidean distance in embedding space. A contrastive loss function is employed:

&nbsp;&nbsp;*L = (1 - Y) (1/2) D^2 + Y (1/2) (max(0, m - D))^2*

with:

  • โ€”D: distance between embeddings
  • โ€”Y = 0 for similar and Y = 1 for dissimilar
  • โ€”m: margin parameters (can be changed) <br/><br/>

Note: I got the idea to implement this kind of network for this kind of task + some code chunks from the Daily Dose of Data Science newsletter ๐Ÿ“จ. They are really awesome, and everyone interested in data science should check them too ๐Ÿ˜‰.

Note2: As this was a work-related project, it has been approved for posting, and all sensitive information and data are omitted to protect privacy. Code snippet containing sensitive data has not been posted. __________________________________________________________________________________________________________