diff --git a/face-recognition/data/train/barack_obama/1.jpg b/face-recognition/data/train/barack_obama/1.jpg deleted file mode 100644 index febd391..0000000 Binary files a/face-recognition/data/train/barack_obama/1.jpg and /dev/null differ diff --git a/face-recognition/data/train/barack_obama/22.jpg b/face-recognition/data/train/barack_obama/22.jpg deleted file mode 100644 index aecb3e7..0000000 Binary files a/face-recognition/data/train/barack_obama/22.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpcsvkmeuaeccjpg.jpg b/face-recognition/data/train/ben_afflek/httpcsvkmeuaeccjpg.jpg deleted file mode 100644 index d5d748b..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpcsvkmeuaeccjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpimagesfandangocomrImageRendererredesignstaticimgnoxportraitjpgpcpcpcimagesmasterrepositoryperformerimagespjpg.jpg b/face-recognition/data/train/ben_afflek/httpimagesfandangocomrImageRendererredesignstaticimgnoxportraitjpgpcpcpcimagesmasterrepositoryperformerimagespjpg.jpg deleted file mode 100644 index 2f7e677..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpimagesfandangocomrImageRendererredesignstaticimgnoxportraitjpgpcpcpcimagesmasterrepositoryperformerimagespjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxdbbdbbbececacdecdcdfjpg.jpg b/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxdbbdbbbececacdecdcdfjpg.jpg deleted file mode 100644 index 9a7b492..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxdbbdbbbececacdecdcdfjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxdfdfadcfeabjpg.jpg b/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxdfdfadcfeabjpg.jpg deleted file mode 100644 index 0d1a7e0..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxdfdfadcfeabjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxedaedabcbefbcbabbjpg.jpg b/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxedaedabcbefbcbabbjpg.jpg deleted file mode 100644 index 4b0bcd5..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxedaedabcbefbcbabbjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxeebdfdbaaajpg.jpg b/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxeebdfdbaaajpg.jpg deleted file mode 100644 index 64572f0..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxeebdfdbaaajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxeeedcacddeccccacfjpg.jpg b/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxeeedcacddeccccacfjpg.jpg deleted file mode 100644 index 17b5452..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpssmediacacheakpinimgcomxeeedcacddeccccacfjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpsuploadwikimediaorgwikipediacommonsthumbddBenAffleckbyGageSkidmorejpgpxBenAffleckbyGageSkidmorejpg.jpg b/face-recognition/data/train/ben_afflek/httpsuploadwikimediaorgwikipediacommonsthumbddBenAffleckbyGageSkidmorejpgpxBenAffleckbyGageSkidmorejpg.jpg deleted file mode 100644 index 13dff50..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpsuploadwikimediaorgwikipediacommonsthumbddBenAffleckbyGageSkidmorejpgpxBenAffleckbyGageSkidmorejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httptrwebimgacstanetcxbdddmediasnmediajpg.jpg b/face-recognition/data/train/ben_afflek/httptrwebimgacstanetcxbdddmediasnmediajpg.jpg deleted file mode 100644 index 1b9bd89..0000000 Binary files a/face-recognition/data/train/ben_afflek/httptrwebimgacstanetcxbdddmediasnmediajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpwwwaceshowbizcomimagesphotobenaffleckjpg.jpg b/face-recognition/data/train/ben_afflek/httpwwwaceshowbizcomimagesphotobenaffleckjpg.jpg deleted file mode 100644 index 2672f15..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpwwwaceshowbizcomimagesphotobenaffleckjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpwwwallposterscomimagesPostersPFjpg.jpg b/face-recognition/data/train/ben_afflek/httpwwwallposterscomimagesPostersPFjpg.jpg deleted file mode 100644 index 2bfb3a1..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpwwwallposterscomimagesPostersPFjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpwwwfilmscoopitcgibinattoriBENAFFLECKBENAFFLECKjpg.jpg b/face-recognition/data/train/ben_afflek/httpwwwfilmscoopitcgibinattoriBENAFFLECKBENAFFLECKjpg.jpg deleted file mode 100644 index ac4aa1f..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpwwwfilmscoopitcgibinattoriBENAFFLECKBENAFFLECKjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpwwwhillsindcomstorebenjpg.jpg b/face-recognition/data/train/ben_afflek/httpwwwhillsindcomstorebenjpg.jpg deleted file mode 100644 index 2677801..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpwwwhillsindcomstorebenjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/ben_afflek/httpwwwrumenewscomwpcontentuploadsbenafflekxpng.jpg b/face-recognition/data/train/ben_afflek/httpwwwrumenewscomwpcontentuploadsbenafflekxpng.jpg deleted file mode 100644 index ee0b6aa..0000000 Binary files a/face-recognition/data/train/ben_afflek/httpwwwrumenewscomwpcontentuploadsbenafflekxpng.jpg and /dev/null differ diff --git a/face-recognition/data/train/bill_gates/0.jpg b/face-recognition/data/train/bill_gates/0.jpg deleted file mode 100644 index c128bc7..0000000 Binary files a/face-recognition/data/train/bill_gates/0.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpftqncomymusicLxZeltonjohnjpg.jpg b/face-recognition/data/train/elton_john/httpftqncomymusicLxZeltonjohnjpg.jpg deleted file mode 100644 index 9e940c4..0000000 Binary files a/face-recognition/data/train/elton_john/httpftqncomymusicLxZeltonjohnjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpiamediaimdbcomimagesMMVBMTAxNDUMzUwOTdeQTJeQWpwZBbWUMDUOTAyNTIVUXCRALjpg.jpg b/face-recognition/data/train/elton_john/httpiamediaimdbcomimagesMMVBMTAxNDUMzUwOTdeQTJeQWpwZBbWUMDUOTAyNTIVUXCRALjpg.jpg deleted file mode 100644 index 14165f9..0000000 Binary files a/face-recognition/data/train/elton_john/httpiamediaimdbcomimagesMMVBMTAxNDUMzUwOTdeQTJeQWpwZBbWUMDUOTAyNTIVUXCRALjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpimagesmtvcomurimgidfiledocrootvhcomsitewideflipbooksimgdailyjpgenlargefalsemattetruematteColorblackquality.jpg b/face-recognition/data/train/elton_john/httpimagesmtvcomurimgidfiledocrootvhcomsitewideflipbooksimgdailyjpgenlargefalsemattetruematteColorblackquality.jpg deleted file mode 100644 index 77d23fd..0000000 Binary files a/face-recognition/data/train/elton_john/httpimagesmtvcomurimgidfiledocrootvhcomsitewideflipbooksimgdailyjpgenlargefalsemattetruematteColorblackquality.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpimggalpmdstaticnetfithttpAFFwwwEgalaEfrFvarFgalFstorageFimagesFmediaFmultiuploaddufevrierFeltonjohnFfreFRFeltonjohnEjpgxqualityeltonjohnjpg.jpg b/face-recognition/data/train/elton_john/httpimggalpmdstaticnetfithttpAFFwwwEgalaEfrFvarFgalFstorageFimagesFmediaFmultiuploaddufevrierFeltonjohnFfreFRFeltonjohnEjpgxqualityeltonjohnjpg.jpg deleted file mode 100644 index eb7c289..0000000 Binary files a/face-recognition/data/train/elton_john/httpimggalpmdstaticnetfithttpAFFwwwEgalaEfrFvarFgalFstorageFimagesFmediaFmultiuploaddufevrierFeltonjohnFfreFRFeltonjohnEjpgxqualityeltonjohnjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpmediacacheecpinimgcomxffeffbcefjpg.jpg b/face-recognition/data/train/elton_john/httpmediacacheecpinimgcomxffeffbcefjpg.jpg deleted file mode 100644 index 884529b..0000000 Binary files a/face-recognition/data/train/elton_john/httpmediacacheecpinimgcomxffeffbcefjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpmediapopsugarassetscomfilescbffewltonjpg.jpg b/face-recognition/data/train/elton_john/httpmediapopsugarassetscomfilescbffewltonjpg.jpg deleted file mode 100644 index d2dd765..0000000 Binary files a/face-recognition/data/train/elton_john/httpmediapopsugarassetscomfilescbffewltonjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpsdfrpwlycscloudfrontnetdeltonjohnjpg.jpg b/face-recognition/data/train/elton_john/httpsdfrpwlycscloudfrontnetdeltonjohnjpg.jpg deleted file mode 100644 index 3b28321..0000000 Binary files a/face-recognition/data/train/elton_john/httpsdfrpwlycscloudfrontnetdeltonjohnjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpspmctvlinefileswordpresscomeltonjohnjpg.jpg b/face-recognition/data/train/elton_john/httpspmctvlinefileswordpresscomeltonjohnjpg.jpg deleted file mode 100644 index 622d351..0000000 Binary files a/face-recognition/data/train/elton_john/httpspmctvlinefileswordpresscomeltonjohnjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfcfcbaeaeddabbjpg.jpg b/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfcfcbaeaeddabbjpg.jpg deleted file mode 100644 index 5bf52ab..0000000 Binary files a/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfcfcbaeaeddabbjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfecfecaefaadfebejpg.jpg b/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfecfecaefaadfebejpg.jpg deleted file mode 100644 index a72f7cc..0000000 Binary files a/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfecfecaefaadfebejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfefdacfbfdeadajpg.jpg b/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfefdacfbfdeadajpg.jpg deleted file mode 100644 index 899585d..0000000 Binary files a/face-recognition/data/train/elton_john/httpssmediacacheakpinimgcomxfefdacfbfdeadajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpsticketmnettmenusdamabbacdaebeafdbbCUSTOMjpg.jpg b/face-recognition/data/train/elton_john/httpsticketmnettmenusdamabbacdaebeafdbbCUSTOMjpg.jpg deleted file mode 100644 index 2d76ff2..0000000 Binary files a/face-recognition/data/train/elton_john/httpsticketmnettmenusdamabbacdaebeafdbbCUSTOMjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpsuploadwikimediaorgwikipediacommonsthumbEltonJohninsjpgpxEltonJohninsjpg.jpg b/face-recognition/data/train/elton_john/httpsuploadwikimediaorgwikipediacommonsthumbEltonJohninsjpgpxEltonJohninsjpg.jpg deleted file mode 100644 index ab108ee..0000000 Binary files a/face-recognition/data/train/elton_john/httpsuploadwikimediaorgwikipediacommonsthumbEltonJohninsjpgpxEltonJohninsjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpwwwdeadlinecomvimgnetwpcontentuploadseltonjpg.jpg b/face-recognition/data/train/elton_john/httpwwwdeadlinecomvimgnetwpcontentuploadseltonjpg.jpg deleted file mode 100644 index c82b431..0000000 Binary files a/face-recognition/data/train/elton_john/httpwwwdeadlinecomvimgnetwpcontentuploadseltonjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpwwweonlinecomresizewwweonlinecomeolimagesEntireSitersxEltonJohnJRjpg.jpg b/face-recognition/data/train/elton_john/httpwwweonlinecomresizewwweonlinecomeolimagesEntireSitersxEltonJohnJRjpg.jpg deleted file mode 100644 index 830ef56..0000000 Binary files a/face-recognition/data/train/elton_john/httpwwweonlinecomresizewwweonlinecomeolimagesEntireSitersxEltonJohnJRjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpwwwjohnpauljonesarenacomeventimagesEltonCalendarVjpg.jpg b/face-recognition/data/train/elton_john/httpwwwjohnpauljonesarenacomeventimagesEltonCalendarVjpg.jpg deleted file mode 100644 index fe9e56f..0000000 Binary files a/face-recognition/data/train/elton_john/httpwwwjohnpauljonesarenacomeventimagesEltonCalendarVjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/elton_john/httpwwwlautdeEltonJohneltonjohnjpg.jpg b/face-recognition/data/train/elton_john/httpwwwlautdeEltonJohneltonjohnjpg.jpg deleted file mode 100644 index 61df7bd..0000000 Binary files a/face-recognition/data/train/elton_john/httpwwwlautdeEltonJohneltonjohnjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpgraphicsnytimescomimagessectionmoviesfilmographyWireImagejpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpgraphicsnytimescomimagessectionmoviesfilmographyWireImagejpg.jpg deleted file mode 100644 index 8c57163..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpgraphicsnytimescomimagessectionmoviesfilmographyWireImagejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpikinjaimgcomgawkermediaimageuploadsWmIuhdsrcedidjpgjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpikinjaimgcomgawkermediaimageuploadsWmIuhdsrcedidjpgjpg.jpg deleted file mode 100644 index 5981a1a..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpikinjaimgcomgawkermediaimageuploadsWmIuhdsrcedidjpgjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpimagescontactmusiccomnewsimagesjerryseinfeldjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpimagescontactmusiccomnewsimagesjerryseinfeldjpg.jpg deleted file mode 100644 index a835a2a..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpimagescontactmusiccomnewsimagesjerryseinfeldjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpimagesrottentomatoescomimagesspotlightsnewsjerryseinfeldjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpimagesrottentomatoescomimagesspotlightsnewsjerryseinfeldjpg.jpg deleted file mode 100644 index 68c09a2..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpimagesrottentomatoescomimagesspotlightsnewsjerryseinfeldjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpimgthedrumcomsfspublicnewstmpjerryseinfeldjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpimgthedrumcomsfspublicnewstmpjerryseinfeldjpg.jpg deleted file mode 100644 index fa9673d..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpimgthedrumcomsfspublicnewstmpjerryseinfeldjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpimgtimeincnetpeopleinewsjerryseinfeldjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpimgtimeincnetpeopleinewsjerryseinfeldjpg.jpg deleted file mode 100644 index 812398a..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpimgtimeincnetpeopleinewsjerryseinfeldjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpmediapopsugarassetscomfilesusersxlargejpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpmediapopsugarassetscomfilesusersxlargejpg.jpg deleted file mode 100644 index 8133ccd..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpmediapopsugarassetscomfilesusersxlargejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httppfodcompchannelslegacyprofilejerryseinfeldpodcastjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httppfodcompchannelslegacyprofilejerryseinfeldpodcastjpg.jpg deleted file mode 100644 index 9f74807..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httppfodcompchannelslegacyprofilejerryseinfeldpodcastjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpsmedialivenationcomartiststapjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpsmedialivenationcomartiststapjpg.jpg deleted file mode 100644 index 9a218f4..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpsmedialivenationcomartiststapjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpsrobertaccetturacomwpcontentuploadsjerryseinfeldheadshotjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpsrobertaccetturacomwpcontentuploadsjerryseinfeldheadshotjpg.jpg deleted file mode 100644 index 94ac915..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpsrobertaccetturacomwpcontentuploadsjerryseinfeldheadshotjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpstatictherichestimagescomcdncwpcontentuploadsJerrySeinfeldjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpstatictherichestimagescomcdncwpcontentuploadsJerrySeinfeldjpg.jpg deleted file mode 100644 index 978d675..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpstatictherichestimagescomcdncwpcontentuploadsJerrySeinfeldjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpsticketmnettmenusdbimagesajpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpsticketmnettmenusdbimagesajpg.jpg deleted file mode 100644 index 49f7fb9..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpsticketmnettmenusdbimagesajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpsuploadwikimediaorgwikipediacommonsthumbbJerrySeinfeldjpgpxJerrySeinfeldjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpsuploadwikimediaorgwikipediacommonsthumbbJerrySeinfeldjpgpxJerrySeinfeldjpg.jpg deleted file mode 100644 index 8a3fedf..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpsuploadwikimediaorgwikipediacommonsthumbbJerrySeinfeldjpgpxJerrySeinfeldjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpsuswestamazonawscomblogsprodmediausuploadsJerrySeinfeldkidsxjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpsuswestamazonawscomblogsprodmediausuploadsJerrySeinfeldkidsxjpg.jpg deleted file mode 100644 index 6dda814..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpsuswestamazonawscomblogsprodmediausuploadsJerrySeinfeldkidsxjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpswwwticketscomuploadsartistsjerryseinfeldbilletsjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpswwwticketscomuploadsartistsjerryseinfeldbilletsjpg.jpg deleted file mode 100644 index 166e508..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpswwwticketscomuploadsartistsjerryseinfeldbilletsjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpwwweonlinecomresizewwweonlinecomeolimagesEntireSitersxjerryseinfeldjulialouisdreyfusjwjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpwwweonlinecomresizewwweonlinecomeolimagesEntireSitersxjerryseinfeldjulialouisdreyfusjwjpg.jpg deleted file mode 100644 index bdc6e54..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpwwweonlinecomresizewwweonlinecomeolimagesEntireSitersxjerryseinfeldjulialouisdreyfusjwjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpwwwnndbcompeoplejerryseinfeldaujpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpwwwnndbcompeoplejerryseinfeldaujpg.jpg deleted file mode 100644 index 5c1ced0..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpwwwnndbcompeoplejerryseinfeldaujpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpwwwpictureszimbiocomgpJerrySeinfeldJessicaSeinfeldmarriedBczSipMdNMQljpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpwwwpictureszimbiocomgpJerrySeinfeldJessicaSeinfeldmarriedBczSipMdNMQljpg.jpg deleted file mode 100644 index 1a4712b..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpwwwpictureszimbiocomgpJerrySeinfeldJessicaSeinfeldmarriedBczSipMdNMQljpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpwwwpsychiatrictimescomsitesdefaultfilesimagesmediaPTMofficSeinfeldjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpwwwpsychiatrictimescomsitesdefaultfilesimagesmediaPTMofficSeinfeldjpg.jpg deleted file mode 100644 index 66df83a..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpwwwpsychiatrictimescomsitesdefaultfilesimagesmediaPTMofficSeinfeldjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/jerry_seinfeld/httpwwwslatecomcontentdamslateblogsbrowbeatseinfeldjpgCROParticlemediumjpg.jpg b/face-recognition/data/train/jerry_seinfeld/httpwwwslatecomcontentdamslateblogsbrowbeatseinfeldjpgCROParticlemediumjpg.jpg deleted file mode 100644 index d3ab298..0000000 Binary files a/face-recognition/data/train/jerry_seinfeld/httpwwwslatecomcontentdamslateblogsbrowbeatseinfeldjpgCROParticlemediumjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpiamediaimdbcomimagesMMVBMTANDQNTAxNDVeQTJeQWpwZBbWUMDIMjQOTYVUXCRALjpg.jpg b/face-recognition/data/train/madonna/httpiamediaimdbcomimagesMMVBMTANDQNTAxNDVeQTJeQWpwZBbWUMDIMjQOTYVUXCRALjpg.jpg deleted file mode 100644 index bf0e38b..0000000 Binary files a/face-recognition/data/train/madonna/httpiamediaimdbcomimagesMMVBMTANDQNTAxNDVeQTJeQWpwZBbWUMDIMjQOTYVUXCRALjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpimagegaladevcmseamadonnaprivatdetektivsquaretopsquarejpgv.jpg b/face-recognition/data/train/madonna/httpimagegaladevcmseamadonnaprivatdetektivsquaretopsquarejpgv.jpg deleted file mode 100644 index 2723f6d..0000000 Binary files a/face-recognition/data/train/madonna/httpimagegaladevcmseamadonnaprivatdetektivsquaretopsquarejpgv.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpimgclosermagfrvarclosermagstorageimagesactupeoplebiodestarsmadonnamadonnafreFRmadonnaexactxljpg.jpg b/face-recognition/data/train/madonna/httpimgclosermagfrvarclosermagstorageimagesactupeoplebiodestarsmadonnamadonnafreFRmadonnaexactxljpg.jpg deleted file mode 100644 index 9641af0..0000000 Binary files a/face-recognition/data/train/madonna/httpimgclosermagfrvarclosermagstorageimagesactupeoplebiodestarsmadonnamadonnafreFRmadonnaexactxljpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpmediavoguecomrwblondesdarkbrowsmadonnajpg.jpg b/face-recognition/data/train/madonna/httpmediavoguecomrwblondesdarkbrowsmadonnajpg.jpg deleted file mode 100644 index b0e0d69..0000000 Binary files a/face-recognition/data/train/madonna/httpmediavoguecomrwblondesdarkbrowsmadonnajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpresizeparismatchladmediafrrffffffcentermiddleimgvarnewsstorageimagesparismatchpeopleazmadonnafreFRMadonnajpg.jpg b/face-recognition/data/train/madonna/httpresizeparismatchladmediafrrffffffcentermiddleimgvarnewsstorageimagesparismatchpeopleazmadonnafreFRMadonnajpg.jpg deleted file mode 100644 index ee42e53..0000000 Binary files a/face-recognition/data/train/madonna/httpresizeparismatchladmediafrrffffffcentermiddleimgvarnewsstorageimagesparismatchpeopleazmadonnafreFRMadonnajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxaaeaaeecccaedfebdbjpg.jpg b/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxaaeaaeecccaedfebdbjpg.jpg deleted file mode 100644 index f53bc11..0000000 Binary files a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxaaeaaeecccaedfebdbjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxafafedebcbjpg.jpg b/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxafafedebcbjpg.jpg deleted file mode 100644 index f731829..0000000 Binary files a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxafafedebcbjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxdcfdcfedfaedadjpg.jpg b/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxdcfdcfedfaedadjpg.jpg deleted file mode 100644 index d7ff14a..0000000 Binary files a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxdcfdcfedfaedadjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxfeebfdccajpg.jpg b/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxfeebfdccajpg.jpg deleted file mode 100644 index 7ceb559..0000000 Binary files a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxfeebfdccajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffabffabbbcfbceaedjpg.jpg b/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffabffabbbcfbceaedjpg.jpg deleted file mode 100644 index a682410..0000000 Binary files a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffabffabbbcfbceaedjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffeabacaaejpg.jpg b/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffeabacaaejpg.jpg deleted file mode 100644 index 1bbc1e7..0000000 Binary files a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffeabacaaejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffecfafddjpg.jpg b/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffecfafddjpg.jpg deleted file mode 100644 index 596c9ae..0000000 Binary files a/face-recognition/data/train/madonna/httpssmediacacheakpinimgcomxffecfafddjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpssvagalumecommadonnaimagesmadonnajpg.jpg b/face-recognition/data/train/madonna/httpssvagalumecommadonnaimagesmadonnajpg.jpg deleted file mode 100644 index 476657f..0000000 Binary files a/face-recognition/data/train/madonna/httpssvagalumecommadonnaimagesmadonnajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpsuploadwikimediaorgwikipediacommonsMadonnathAnnualGoldenGlobesAwardscroppedjpg.jpg b/face-recognition/data/train/madonna/httpsuploadwikimediaorgwikipediacommonsMadonnathAnnualGoldenGlobesAwardscroppedjpg.jpg deleted file mode 100644 index 4f6195d..0000000 Binary files a/face-recognition/data/train/madonna/httpsuploadwikimediaorgwikipediacommonsMadonnathAnnualGoldenGlobesAwardscroppedjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpsuploadwikimediaorgwikipediacommonsthumbaaMadonnaatthepremiereofIAmBecauseWeArejpgpxMadonnaatthepremiereofIAmBecauseWeArejpg.jpg b/face-recognition/data/train/madonna/httpsuploadwikimediaorgwikipediacommonsthumbaaMadonnaatthepremiereofIAmBecauseWeArejpgpxMadonnaatthepremiereofIAmBecauseWeArejpg.jpg deleted file mode 100644 index d400f29..0000000 Binary files a/face-recognition/data/train/madonna/httpsuploadwikimediaorgwikipediacommonsthumbaaMadonnaatthepremiereofIAmBecauseWeArejpgpxMadonnaatthepremiereofIAmBecauseWeArejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpuploadwikimediaorgwikipediacommonsthumbaMadonnaRotterdamjpgpxMadonnaRotterdamjpg.jpg b/face-recognition/data/train/madonna/httpuploadwikimediaorgwikipediacommonsthumbaMadonnaRotterdamjpgpxMadonnaRotterdamjpg.jpg deleted file mode 100644 index 702edc9..0000000 Binary files a/face-recognition/data/train/madonna/httpuploadwikimediaorgwikipediacommonsthumbaMadonnaRotterdamjpgpxMadonnaRotterdamjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpwwwbeastiemaniacomwhoismadonnamadonnajpg.jpg b/face-recognition/data/train/madonna/httpwwwbeastiemaniacomwhoismadonnamadonnajpg.jpg deleted file mode 100644 index 56bd920..0000000 Binary files a/face-recognition/data/train/madonna/httpwwwbeastiemaniacomwhoismadonnamadonnajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpwwwblackdogfilmscomwordpresswpcontentuploadsmadonnacelebrationxjpg.jpg b/face-recognition/data/train/madonna/httpwwwblackdogfilmscomwordpresswpcontentuploadsmadonnacelebrationxjpg.jpg deleted file mode 100644 index d5f3f41..0000000 Binary files a/face-recognition/data/train/madonna/httpwwwblackdogfilmscomwordpresswpcontentuploadsmadonnacelebrationxjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/madonna/httpwwwetonlinecomphotomadonnabdayjpg.jpg b/face-recognition/data/train/madonna/httpwwwetonlinecomphotomadonnabdayjpg.jpg deleted file mode 100644 index 2414873..0000000 Binary files a/face-recognition/data/train/madonna/httpwwwetonlinecomphotomadonnabdayjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpgonetworthcomwpcontentuploadsthumbsjpg.jpg b/face-recognition/data/train/mindy_kaling/httpgonetworthcomwpcontentuploadsthumbsjpg.jpg deleted file mode 100644 index e580d14..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpgonetworthcomwpcontentuploadsthumbsjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpgraphicsnytimescomimagesmagazinekalingkalingarticleInlinejpg.jpg b/face-recognition/data/train/mindy_kaling/httpgraphicsnytimescomimagesmagazinekalingkalingarticleInlinejpg.jpg deleted file mode 100644 index 463f88b..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpgraphicsnytimescomimagesmagazinekalingkalingarticleInlinejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpimagesnymagcomimagesdailymindykalingxjpg.jpg b/face-recognition/data/train/mindy_kaling/httpimagesnymagcomimagesdailymindykalingxjpg.jpg deleted file mode 100644 index 16531b5..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpimagesnymagcomimagesdailymindykalingxjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpmediaonsugarcomfilesbabaaaaaMindyInterviewxxxlargejpg.jpg b/face-recognition/data/train/mindy_kaling/httpmediaonsugarcomfilesbabaaaaaMindyInterviewxxxlargejpg.jpg deleted file mode 100644 index 3edfb29..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpmediaonsugarcomfilesbabaaaaaMindyInterviewxxxlargejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httppixelnymagcomimgsfashiondailymindykalingwhjpg.jpg b/face-recognition/data/train/mindy_kaling/httppixelnymagcomimgsfashiondailymindykalingwhjpg.jpg deleted file mode 100644 index a7b1cf9..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httppixelnymagcomimgsfashiondailymindykalingwhjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpsamazonawscomkidzworldphotoimagesbccdddaaadgallerymindykalinggalleryjpg.jpg b/face-recognition/data/train/mindy_kaling/httpsamazonawscomkidzworldphotoimagesbccdddaaadgallerymindykalinggalleryjpg.jpg deleted file mode 100644 index f9169c4..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpsamazonawscomkidzworldphotoimagesbccdddaaadgallerymindykalinggalleryjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpsimagesnasslimagesamazoncomimagesIAQdwKvFILUXjpg.jpg b/face-recognition/data/train/mindy_kaling/httpsimagesnasslimagesamazoncomimagesIAQdwKvFILUXjpg.jpg deleted file mode 100644 index 6050835..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpsimagesnasslimagesamazoncomimagesIAQdwKvFILUXjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpsimgbuzzfeedcombuzzfeedstaticstaticcampaignimageswebdradorableetsyitemsallmindykalingfansneedbigjpg.jpg b/face-recognition/data/train/mindy_kaling/httpsimgbuzzfeedcombuzzfeedstaticstaticcampaignimageswebdradorableetsyitemsallmindykalingfansneedbigjpg.jpg deleted file mode 100644 index 2018b32..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpsimgbuzzfeedcombuzzfeedstaticstaticcampaignimageswebdradorableetsyitemsallmindykalingfansneedbigjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxafaffbbbbdbcbdddjpg.jpg b/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxafaffbbbbdbcbdddjpg.jpg deleted file mode 100644 index 60f26cd..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxafaffbbbbdbcbdddjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxbabafeacbaaacabffjpg.jpg b/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxbabafeacbaaacabffjpg.jpg deleted file mode 100644 index 0dad6db..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxbabafeacbaaacabffjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxbbfcbdedfbfdbjpg.jpg b/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxbbfcbdedfbfdbjpg.jpg deleted file mode 100644 index 42083af..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxbbfcbdedfbfdbjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxcccccddbbfedabjpg.jpg b/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxcccccddbbfedabjpg.jpg deleted file mode 100644 index c235e30..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxcccccddbbfedabjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxccccdabeaadjpg.jpg b/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxccccdabeaadjpg.jpg deleted file mode 100644 index 565c064..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxccccdabeaadjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxededbebccdajpg.jpg b/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxededbebccdajpg.jpg deleted file mode 100644 index fc4af58..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxededbebccdajpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxeedccadejpg.jpg b/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxeedccadejpg.jpg deleted file mode 100644 index 185cdf3..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpssmediacacheakpinimgcomxeedccadejpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpsuploadwikimediaorgwikipediacommonsthumbMindyBKalingBPaleyFestBNewBYorkBBMindyBIqZgUWvbljpgpxMindyBKalingBPaleyFestBNewBYorkBBMindyBIqZgUWvbljpg.jpg b/face-recognition/data/train/mindy_kaling/httpsuploadwikimediaorgwikipediacommonsthumbMindyBKalingBPaleyFestBNewBYorkBBMindyBIqZgUWvbljpgpxMindyBKalingBPaleyFestBNewBYorkBBMindyBIqZgUWvbljpg.jpg deleted file mode 100644 index eb291fd..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpsuploadwikimediaorgwikipediacommonsthumbMindyBKalingBPaleyFestBNewBYorkBBMindyBIqZgUWvbljpgpxMindyBKalingBPaleyFestBNewBYorkBBMindyBIqZgUWvbljpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpwwwadweekcomfilesimagecachenodeinlinemindykalingprofilehedjpg.jpg b/face-recognition/data/train/mindy_kaling/httpwwwadweekcomfilesimagecachenodeinlinemindykalingprofilehedjpg.jpg deleted file mode 100644 index 1ad5f11..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpwwwadweekcomfilesimagecachenodeinlinemindykalingprofilehedjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpwwwbooksforbetterlivingcomwpcontentuploadsMindyKalingAuthorPhotojpg.jpg b/face-recognition/data/train/mindy_kaling/httpwwwbooksforbetterlivingcomwpcontentuploadsMindyKalingAuthorPhotojpg.jpg deleted file mode 100644 index afa0daa..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpwwwbooksforbetterlivingcomwpcontentuploadsMindyKalingAuthorPhotojpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpwwweonlinecomeolimagesEntireSiteregKalingCancermhjpg.jpg b/face-recognition/data/train/mindy_kaling/httpwwweonlinecomeolimagesEntireSiteregKalingCancermhjpg.jpg deleted file mode 100644 index 714a6d5..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpwwweonlinecomeolimagesEntireSiteregKalingCancermhjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpwwwimpropercomimagesuploadsusercontentimagesSoroffMindyjpg.jpg b/face-recognition/data/train/mindy_kaling/httpwwwimpropercomimagesuploadsusercontentimagesSoroffMindyjpg.jpg deleted file mode 100644 index a739265..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpwwwimpropercomimagesuploadsusercontentimagesSoroffMindyjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpwwwpictureszimbiocomfpMindyKalingfBgaONVFDFmjpg.jpg b/face-recognition/data/train/mindy_kaling/httpwwwpictureszimbiocomfpMindyKalingfBgaONVFDFmjpg.jpg deleted file mode 100644 index 5f40f0f..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpwwwpictureszimbiocomfpMindyKalingfBgaONVFDFmjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/mindy_kaling/httpwwwpictureszimbiocomgiMindyKalingLkvEhTwDeJmjpg.jpg b/face-recognition/data/train/mindy_kaling/httpwwwpictureszimbiocomgiMindyKalingLkvEhTwDeJmjpg.jpg deleted file mode 100644 index b785d00..0000000 Binary files a/face-recognition/data/train/mindy_kaling/httpwwwpictureszimbiocomgiMindyKalingLkvEhTwDeJmjpg.jpg and /dev/null differ diff --git a/face-recognition/data/train/steve_jobs/0.jpg b/face-recognition/data/train/steve_jobs/0.jpg deleted file mode 100644 index c03a44b..0000000 Binary files a/face-recognition/data/train/steve_jobs/0.jpg and /dev/null differ diff --git a/face-recognition/data/train/steve_jobs/1.jpg b/face-recognition/data/train/steve_jobs/1.jpg deleted file mode 100644 index 3822bf3..0000000 Binary files a/face-recognition/data/train/steve_jobs/1.jpg and /dev/null differ diff --git a/face-recognition/data/train/taylor_swift/0.jpg b/face-recognition/data/train/taylor_swift/0.jpg deleted file mode 100644 index 15af724..0000000 Binary files a/face-recognition/data/train/taylor_swift/0.jpg and /dev/null differ diff --git a/face-recognition/data/val/barack_obama/222.jpeg b/face-recognition/data/val/barack_obama/222.jpeg deleted file mode 100644 index 8432a8f..0000000 Binary files a/face-recognition/data/val/barack_obama/222.jpeg and /dev/null differ diff --git a/face-recognition/data/val/ben_afflek/33.jpg b/face-recognition/data/val/ben_afflek/33.jpg deleted file mode 100644 index a6b31f4..0000000 Binary files a/face-recognition/data/val/ben_afflek/33.jpg and /dev/null differ diff --git a/face-recognition/data/val/ben_afflek/httpbpblogspotcomedLMjVpRGkSWexgsXjkNIAAAAAAAADWgFFtAUqBlhAsjpg.jpg b/face-recognition/data/val/ben_afflek/httpbpblogspotcomedLMjVpRGkSWexgsXjkNIAAAAAAAADWgFFtAUqBlhAsjpg.jpg deleted file mode 100644 index 3718f12..0000000 Binary files a/face-recognition/data/val/ben_afflek/httpbpblogspotcomedLMjVpRGkSWexgsXjkNIAAAAAAAADWgFFtAUqBlhAsjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/ben_afflek/httpcsvkmeuaafdfjpg.jpg b/face-recognition/data/val/ben_afflek/httpcsvkmeuaafdfjpg.jpg deleted file mode 100644 index fe12bd4..0000000 Binary files a/face-recognition/data/val/ben_afflek/httpcsvkmeuaafdfjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/ben_afflek/httpcsvkmeuadecafjpg.jpg b/face-recognition/data/val/ben_afflek/httpcsvkmeuadecafjpg.jpg deleted file mode 100644 index 94e6f4a..0000000 Binary files a/face-recognition/data/val/ben_afflek/httpcsvkmeuadecafjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/ben_afflek/test.jpg b/face-recognition/data/val/ben_afflek/test.jpg deleted file mode 100644 index 832de18..0000000 Binary files a/face-recognition/data/val/ben_afflek/test.jpg and /dev/null differ diff --git a/face-recognition/data/val/elton_john/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTEODAOTcxNjcMjczMjkzjpg.jpg b/face-recognition/data/val/elton_john/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTEODAOTcxNjcMjczMjkzjpg.jpg deleted file mode 100644 index 5389ed3..0000000 Binary files a/face-recognition/data/val/elton_john/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTEODAOTcxNjcMjczMjkzjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnemmysperformancewatchnowjpg.jpg b/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnemmysperformancewatchnowjpg.jpg deleted file mode 100644 index a936a0f..0000000 Binary files a/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnemmysperformancewatchnowjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnstillstandingbrooklynnewyearsjpg.jpg b/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnstillstandingbrooklynnewyearsjpg.jpg deleted file mode 100644 index bb4a910..0000000 Binary files a/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnstillstandingbrooklynnewyearsjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnsupportsbrucejennerstransitiontowomanjpg.jpg b/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnsupportsbrucejennerstransitiontowomanjpg.jpg deleted file mode 100644 index 0c40520..0000000 Binary files a/face-recognition/data/val/elton_john/httpcdncdnjustjaredcomwpcontentuploadsheadlineseltonjohnsupportsbrucejennerstransitiontowomanjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/elton_john/httpcdnlyricssongonlyricsnetwpcontentuploadsEltonJohnDiscographyCDreleasesjpg.jpg b/face-recognition/data/val/elton_john/httpcdnlyricssongonlyricsnetwpcontentuploadsEltonJohnDiscographyCDreleasesjpg.jpg deleted file mode 100644 index 9c611bb..0000000 Binary files a/face-recognition/data/val/elton_john/httpcdnlyricssongonlyricsnetwpcontentuploadsEltonJohnDiscographyCDreleasesjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/jerry_seinfeld/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTIwNjANjMMDINzIxNjcjpg.jpg b/face-recognition/data/val/jerry_seinfeld/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTIwNjANjMMDINzIxNjcjpg.jpg deleted file mode 100644 index 912def4..0000000 Binary files a/face-recognition/data/val/jerry_seinfeld/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTIwNjANjMMDINzIxNjcjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/jerry_seinfeld/httpaurorasblogcomwpcontentuploadsjerryseinfeldpublicityshotjpg.jpg b/face-recognition/data/val/jerry_seinfeld/httpaurorasblogcomwpcontentuploadsjerryseinfeldpublicityshotjpg.jpg deleted file mode 100644 index 1593ee2..0000000 Binary files a/face-recognition/data/val/jerry_seinfeld/httpaurorasblogcomwpcontentuploadsjerryseinfeldpublicityshotjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/jerry_seinfeld/httpblognjcomentertainmentimpactcelebritiesmediumjerrybjpg.jpg b/face-recognition/data/val/jerry_seinfeld/httpblognjcomentertainmentimpactcelebritiesmediumjerrybjpg.jpg deleted file mode 100644 index 3308c1c..0000000 Binary files a/face-recognition/data/val/jerry_seinfeld/httpblognjcomentertainmentimpactcelebritiesmediumjerrybjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/jerry_seinfeld/httpcdncdnjustjaredcomwpcontentuploadsheadlinesjerryseinfeldmakesbrianwilliamsjokejpg.jpg b/face-recognition/data/val/jerry_seinfeld/httpcdncdnjustjaredcomwpcontentuploadsheadlinesjerryseinfeldmakesbrianwilliamsjokejpg.jpg deleted file mode 100644 index eea7ecb..0000000 Binary files a/face-recognition/data/val/jerry_seinfeld/httpcdncdnjustjaredcomwpcontentuploadsheadlinesjerryseinfeldmakesbrianwilliamsjokejpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/jerry_seinfeld/httpcdnssninsidercomwpcontentuploadsjerryseinfeldxjpg.jpg b/face-recognition/data/val/jerry_seinfeld/httpcdnssninsidercomwpcontentuploadsjerryseinfeldxjpg.jpg deleted file mode 100644 index 4d8ed13..0000000 Binary files a/face-recognition/data/val/jerry_seinfeld/httpcdnssninsidercomwpcontentuploadsjerryseinfeldxjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/madonna/httpassetsrollingstonecomassetsarticlemadonnadavidbowiechangedthecourseofmylifeforeversmallsquarexmadonnabowiejpg.jpg b/face-recognition/data/val/madonna/httpassetsrollingstonecomassetsarticlemadonnadavidbowiechangedthecourseofmylifeforeversmallsquarexmadonnabowiejpg.jpg deleted file mode 100644 index 21fff3f..0000000 Binary files a/face-recognition/data/val/madonna/httpassetsrollingstonecomassetsarticlemadonnadavidbowiechangedthecourseofmylifeforeversmallsquarexmadonnabowiejpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/madonna/httpassetsrollingstonecomassetsimagesalbumreviewaffaceabdcccaeedjpg.jpg b/face-recognition/data/val/madonna/httpassetsrollingstonecomassetsimagesalbumreviewaffaceabdcccaeedjpg.jpg deleted file mode 100644 index 97660f4..0000000 Binary files a/face-recognition/data/val/madonna/httpassetsrollingstonecomassetsimagesalbumreviewaffaceabdcccaeedjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/madonna/httpcdncdnjustjaredcomwpcontentuploadsheadlinesmadonnatalksparisattackstearsjpg.jpg b/face-recognition/data/val/madonna/httpcdncdnjustjaredcomwpcontentuploadsheadlinesmadonnatalksparisattackstearsjpg.jpg deleted file mode 100644 index 122cee6..0000000 Binary files a/face-recognition/data/val/madonna/httpcdncdnjustjaredcomwpcontentuploadsheadlinesmadonnatalksparisattackstearsjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/madonna/httpcdnfuncheapcomwpcontentuploadsVOGUEjpg.jpg b/face-recognition/data/val/madonna/httpcdnfuncheapcomwpcontentuploadsVOGUEjpg.jpg deleted file mode 100644 index 7600a3d..0000000 Binary files a/face-recognition/data/val/madonna/httpcdnfuncheapcomwpcontentuploadsVOGUEjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/madonna/httpecximagesamazoncomimagesIfmaBKWLACULSRjpg.jpg b/face-recognition/data/val/madonna/httpecximagesamazoncomimagesIfmaBKWLACULSRjpg.jpg deleted file mode 100644 index 1f86ab0..0000000 Binary files a/face-recognition/data/val/madonna/httpecximagesamazoncomimagesIfmaBKWLACULSRjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/mindy_kaling/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTIOTcwODQNTUzNjQMzcjpg.jpg b/face-recognition/data/val/mindy_kaling/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTIOTcwODQNTUzNjQMzcjpg.jpg deleted file mode 100644 index 124bda5..0000000 Binary files a/face-recognition/data/val/mindy_kaling/httpafilesbiographycomimageuploadcfillcssrgbdprgfacehqwMTIOTcwODQNTUzNjQMzcjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/mindy_kaling/httpcdncdnjustjaredcomwpcontentuploadsheadlinesmindykalingcomedypilotjpg.jpg b/face-recognition/data/val/mindy_kaling/httpcdncdnjustjaredcomwpcontentuploadsheadlinesmindykalingcomedypilotjpg.jpg deleted file mode 100644 index c464958..0000000 Binary files a/face-recognition/data/val/mindy_kaling/httpcdncdnjustjaredcomwpcontentuploadsheadlinesmindykalingcomedypilotjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/mindy_kaling/httpcdnpastemagazinecomwwwarticlesmindykalingndbookjpg.jpg b/face-recognition/data/val/mindy_kaling/httpcdnpastemagazinecomwwwarticlesmindykalingndbookjpg.jpg deleted file mode 100644 index 3d9be8e..0000000 Binary files a/face-recognition/data/val/mindy_kaling/httpcdnpastemagazinecomwwwarticlesmindykalingndbookjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/mindy_kaling/httpcdnpastemagazinecomwwwarticlesmindyprojectjpg.jpg b/face-recognition/data/val/mindy_kaling/httpcdnpastemagazinecomwwwarticlesmindyprojectjpg.jpg deleted file mode 100644 index f9ed371..0000000 Binary files a/face-recognition/data/val/mindy_kaling/httpcdnpastemagazinecomwwwarticlesmindyprojectjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/mindy_kaling/httpdbrbzkkbdsdcloudfrontnetwpcontentuploadsMindyKalingjpg.jpg b/face-recognition/data/val/mindy_kaling/httpdbrbzkkbdsdcloudfrontnetwpcontentuploadsMindyKalingjpg.jpg deleted file mode 100644 index 6427d2d..0000000 Binary files a/face-recognition/data/val/mindy_kaling/httpdbrbzkkbdsdcloudfrontnetwpcontentuploadsMindyKalingjpg.jpg and /dev/null differ diff --git a/face-recognition/data/val/steve_jobs/aa.jpg b/face-recognition/data/val/steve_jobs/aa.jpg deleted file mode 100644 index eaa74fb..0000000 Binary files a/face-recognition/data/val/steve_jobs/aa.jpg and /dev/null differ diff --git a/face-recognition/face_embeds_dataset.npz b/face-recognition/face_embeds_dataset.npz deleted file mode 100644 index 7a519e1..0000000 Binary files a/face-recognition/face_embeds_dataset.npz and /dev/null differ diff --git a/face-recognition/face_recog.py b/face-recognition/face_recog.py new file mode 100644 index 0000000..49aa91c --- /dev/null +++ b/face-recognition/face_recog.py @@ -0,0 +1,87 @@ +import os +import os.path +import numpy as np +from numpy import expand_dims +from keras.models import load_model +from mtcnn import MTCNN +import cv2 + +def get_face(file): + IMAGE_SIZE = (160,160) + detector = MTCNN() + try: + img = cv2.cvtColor(cv2.imread(file),cv2.COLOR_BGR2RGB) + faces = detector.detect_faces(img) + if len(faces) < 1: + print('No faces detected') + return None + x,y,width,height = faces[0]["box"] + cropped = cv2.resize(img[y:y+height,x:x+width],IMAGE_SIZE) + return cropped + except: + return None + + + +def get_face_frame(frame): + detector = MTCNN() + faces = detector.detect_faces(frame) + if len(faces) < 1: + print('No faces detected') + return None + return faces + +def format_face_frame(faces,frame): + IMAGE_SIZE = (160,160) + x,y,width,height = faces[0]["box"] + cropped = cv2.resize(frame[y:y+height,x:x+width],IMAGE_SIZE) + return cropped + +#standardize pixel values + +def prewhiten(x): + if x.ndim == 4: + axis = (1, 2, 3) + size = x[0].size + elif x.ndim == 3: + axis = (0, 1, 2) + size = x.size + else: + raise ValueError('Dimension should be 3 or 4') + + mean = np.mean(x, axis=axis, keepdims=True) + std = np.std(x, axis=axis, keepdims=True) + std_adj = np.maximum(std, 1.0/np.sqrt(size)) + y = (x - mean) / std_adj + return y + +#normalize embedding vectors + +def l2_normalize(x, axis=-1, epsilon=1e-10): + output = x / np.sqrt(np.maximum(np.sum(np.square(x), axis=axis, keepdims=True), epsilon)) + return output + +#returns a list of embeddings from the list of images passed in +#list of images must be of type np.ndarray +#model is loaded from facenet_keras.h5 + +def get_embeddings(imgs,model): + imgs = prewhiten(imgs) + raws = [] + for raw in imgs: + img = expand_dims(raw,axis=0) + raws.append(model.predict(img)) + embeds = l2_normalize(np.concatenate(raws)) + return embeds + +#return the distance between 2 embeddings + +def get_euclidean_distance(emb1,emb2): + return np.linalg.norm(emb1-emb2) + +def embed_to_string(embed): + return ",".join([str(i) for i in list(embed)]) + +def string_to_embed(string): + embed = np.array(string.split(",")) + return embed.astype(np.float) diff --git a/face-recognition/face_register.py b/face-recognition/face_register.py new file mode 100644 index 0000000..7b9b6b2 --- /dev/null +++ b/face-recognition/face_register.py @@ -0,0 +1,72 @@ +import tkinter as tk +import threading +import numpy as np +import cv2 +from tkinter import filedialog +from keras.models import load_model +from face_recog import * + +def register_face(): + + cap = cv2.VideoCapture(0) + if cap is None or not cap.isOpened(): + user_in = input("This device does not have a camera. Do you want to submit an image file instead?(y/n): ") + while user_in.lower() != "y" and user_in.lower() != "n": + user_in = input("This device does not have a camera. Do you want to submit an image file instead?(y/n): ") + if user_in == "n": + print("Error: could not get user's face, exiting...") + return None + else: + face = None + while cap.isOpened(): + input("Look directly into the camera and press any button to take a picture...") + ret,frame = cap.read() + if ret == True: + face = get_face_frame(frame) + if face is not None: + face = format_face_frame(face,frame) + break + else: + user_in = None + while user_in.lower() != "y" and user_in.lower() != "n": + user_in = input("No faces detected, try again? (y/n): ") + if user_in == "n": + print("Error: could not get user's face, exiting...") + return None + else: + user_in = None + while user_in.lower() != "y" and user_in.lower() != "n": + user_in = input("No faces detected, try again? (y/n): ") + if user_in == "n": + print("Error: could not get user's face, exiting...") + return None + print("Found user's face, saving... (may take up to 1 minute)") + model = load_model("./facenet_keras.h5") + embed = get_embeddings(np.array([face]),model) + cap.release() + cv2.destroyAllWindows() + print("Successfully saved! exiting...") + return embed[0] + + + root = tk.Tk() + root.wm_attributes('-topmost',1) + root.withdraw() + + face = None + while True: + file_path = filedialog.askopenfilename() + if file_path == "": break + face = get_face(file_path) + if face is not None: break + else: print("No face found, please try again.") + if face is None: + print("Error: could not get user's face, exiting...") + return None + else: + print("Found user's face, saving... (may take up to 1 minute)") + model = load_model("./facenet_keras.h5") + embed = get_embeddings(np.array([face]),model) + print("Successfully saved! exiting...") + return embed[0] + diff --git a/face-recognition/face_submit.py b/face-recognition/face_submit.py new file mode 100644 index 0000000..d37da35 --- /dev/null +++ b/face-recognition/face_submit.py @@ -0,0 +1,83 @@ +import cv2 +import tkinter as tk +from tkinter import filedialog +from face_recog import * +from keras.models import load_model + +# allows submitting a face through file upload +# for demonstration purposes only, should not be used in final build + +def submit_face_tmp(): + root = tk.Tk() + root.wm_attributes('-topmost',1) + root.withdraw() + + face = None + while True: + file_path = filedialog.askopenfilename() + if file_path == "": break + face = get_face(file_path) + if face is not None: break + else: print("No face found, please try again.") + if face is None: + print("Error: could not get user's face, exiting...") + return None + else: + return face + +# grab the user's face using screen capture + +def get_face_from_camera(cap): + + c = -1 + face = None + while(cap.isOpened()): + ret, frame = cap.read() + if ret==True: + cv2.imshow('frame',frame) + if c == 20 or c == -1: + face = get_face_frame(frame) + if face is not None: + face = format_face_frame(face,frame) + break + c = 0 + if cv2.waitKey(1) & 0xFF == ord('q'): + break + c+=1 + + else: + break + + # Release everything if job is finished + cap.release() + cv2.destroyAllWindows() + return face + +def submit_face(): + cap = cv2.VideoCapture(0) + if cap is None or not cap.isOpened(): + face = submit_face_tmp() + if face is None: + print("Error: could not get user's face, exiting...") + return None + else: + print("Found user's face, saving... (may take up to 1 minute)") + model = load_model("./facenet_keras.h5") + embed = get_embeddings(np.array([face]),model) + print("Successfully saved! exiting...") + return embed[0] + # print("This node does not have a camera, exiting...") + # return None + input("Look directly at the camera. (Press any key to continue)") + print("Searching for face... (press Q to quit") + face = get_face_from_camera(cap) + if face is None: + print("Error: could not get user's face, exiting...") + return None + print("Found user's face, submitting... (may take up to 1 minute)") + model = load_model("./facenet_keras.h5") + embed = get_embeddings(np.array([face]),model) + print("Successfully submitted! exiting...") + return embed[0] + + \ No newline at end of file diff --git a/face-recognition/facenet_recognition.py b/face-recognition/facenet_recognition.py deleted file mode 100644 index db295a1..0000000 --- a/face-recognition/facenet_recognition.py +++ /dev/null @@ -1,273 +0,0 @@ -import os -import os.path -import cv2 -import numpy as np -from mtcnn import MTCNN -from numpy import savez_compressed -from numpy import load -from numpy import expand_dims -from keras.models import load_model -from sklearn.svm import SVC -from sklearn.preprocessing import LabelEncoder - -#REQUIRED PIP INSTALLS: -# opencv, numpy, mtcnn, keras, sklearn, tensorflow -# requires python 3.6 -# requires numpy version 1.16.2, do pip install numpy==1.16.2 - -#returns a cropped image of the face located in the file - -def get_face(file): - IMAGE_SIZE = (160,160) - detector = MTCNN() - img = cv2.cvtColor(cv2.imread(file),cv2.COLOR_BGR2RGB) - faces = detector.detect_faces(img) - if len(faces) < 1: - raise ValueError('No faces detected') - x,y,width,height = faces[0]["box"] - cropped = cv2.resize(img[y:y+height,x:x+width],IMAGE_SIZE) - return cropped - -#standardize pixel values - -def prewhiten(x): - if x.ndim == 4: - axis = (1, 2, 3) - size = x[0].size - elif x.ndim == 3: - axis = (0, 1, 2) - size = x.size - else: - raise ValueError('Dimension should be 3 or 4') - - mean = np.mean(x, axis=axis, keepdims=True) - std = np.std(x, axis=axis, keepdims=True) - std_adj = np.maximum(std, 1.0/np.sqrt(size)) - y = (x - mean) / std_adj - return y - -#normalize embedding vectors - -def l2_normalize(x, axis=-1, epsilon=1e-10): - output = x / np.sqrt(np.maximum(np.sum(np.square(x), axis=axis, keepdims=True), epsilon)) - return output - -#returns a list of embeddings from the list of images passed in -#list of images must be of type np.ndarray -#model is loaded from facenet_keras.h5 - -def get_embeddings(imgs,model): - imgs = prewhiten(imgs) - raws = [] - for raw in imgs: - img = expand_dims(raw,axis=0) - raws.append(model.predict(img)) - embeds = l2_normalize(np.concatenate(raws)) - return embeds - -#return the distance between 2 embeddings - -def get_euclidean_distance(emb1,emb2): - return np.linalg.norm(emb1-emb2) - -#train an SVM to predict images - -def train_SVM(): - dataset = load('face_embeds_dataset.npz') - labels_train,embeds_train = dataset['arr_0'], dataset['arr_1'] - labels_modified = [] - embeds_modified = [] - for i in range(len(embeds_train)): - for j in range(len(embeds_train[i])): - embeds_modified.append(embeds_train[i][j]) - labels_modified.append(labels_train[i]) - labels_modified = np.array(labels_modified) - embeds_modified = np.array(embeds_modified) - encoder = LabelEncoder().fit(labels_modified) - labels_modified = encoder.transform(labels_modified) - SVM = SVC(kernel='linear',probability=True).fit(embeds_modified,labels_modified) - return encoder,SVM - -#predict a single image using the SVM from train_SVM() -#file is path to image to predict -#model is loaded from facenet_keras.h5 - -def predict_face(encoder,svm,file,model): - face = get_face(file) - embed = get_embeddings(np.array([face]),model) - pred_class = svm.predict(embed) - pred_prob = svm.predict_proba(embed) - prediction = encoder.inverse_transform(pred_class) - probability = pred_prob[0,pred_class[0]]*100 - return prediction,probability - -#gets the embedding with the shortest euclidian distance to the input image file - -def lowest_euclidian_distance(file,model): - face = get_face(file) - embed = get_embeddings(np.array([face]),model) - dataset = load('face_embeds_dataset.npz') - labels_train,embeds_train, images_train = dataset['arr_0'], dataset['arr_1'], dataset['arr_2'] - lowest = 10 - classification = None - image = None - for i in range(len(embeds_train)): - for j in range(len(embeds_train[i])): - dist = get_euclidean_distance(embeds_train[i][j],embed[0]) - if dist < lowest: - lowest = dist - classification = labels_train[i] - image = images_train[i][j] - if lowest == 10: - print("ERROR in finding image") - return - return lowest,classification,image - -#same as above, but uses a greedy algorithm with greedy choice being: -#skip at distance > 1 -#return at distance < 0.6 - -def lowest_euclidian_distance_greedy(file,model): - face = get_face(file) - embed = get_embeddings(np.array([face]),model) - dataset = load('face_embeds_dataset.npz') - labels_train,embeds_train, images_train = dataset['arr_0'], dataset['arr_1'], dataset['arr_2'] - lowest = 10 - classification = None - image = None - for i in range(len(embeds_train)): - for j in range(len(embeds_train[i])): - dist = get_euclidean_distance(embeds_train[i][j],embed[0]) - if dist >= 1: - break - if dist <= 0.60: - lowest = dist - classification = labels_train[i] - image = images_train[i][j] - return lowest,classification,image - if dist < lowest: - lowest = dist - classification = labels_train[i] - image = images_train[i][j] - if lowest == 10: - print("ERROR in finding image") - return - return lowest,classification,image - - -#add a new face embedding to the dataset -#directory is the directory of all faces -#name is the name the image will be saved under -#file is a path to the image file - -def add_to_dataset(directory,model,file,name): - dataset = load('face_embeds_dataset.npz') - labels_train,embeds_train, images_train = dataset['arr_0'], dataset['arr_1'], dataset['arr_2'] - face = get_face(file) - embed = get_embeddings(np.array([face]),model) - embeds_tmp = list(embeds_train) - labels_tmp = list(labels_train) - images_tmp = list(images_train) - if(name in labels_tmp): - idx = labels_tmp.index(name) - images_id = list(images_tmp[idx]) - embeds_train[idx] = np.append(embeds_train[idx],embed,axis=0) - images_id.append(cv2.imread(file)) - images_train[idx] = np.array(images_id) - else: - labels_tmp.append(name) - images_tmp.append(np.array([cv2.imread(file)])) - embeds_tmp.append(np.array(embed)) - embeds_train = np.array(embeds_tmp) - labels_train = np.array(labels_tmp) - images_train = np.array(images_tmp) - - filepath = directory+name - - if not os.path.isdir(filepath): - os.mkdir(filepath) - num = len([name for name in os.listdir(filepath) if os.path.isfile(os.path.join(filepath, name))]) - cv2.imwrite(filepath+"/"+str(num)+".jpg",cv2.imread(file)) - print("finished adding entry: " + name + ". saving...") - savez_compressed('face_embeds_dataset.npz',labels_train,embeds_train,images_train) - -#create a brand new dataset from the specified directory -#replaces the current dataset if force is set to true -#does not create a new dataset if one is already found - -def create_dataset(directory,model,force=False): - if os.path.isfile("./face_embeds_dataset.npz") and not force: - print("dataset already found") - return - embeds_train = [] - labels_train = [] - images_train = [] - train_dir = directory + "train/" - for name in os.listdir(train_dir): - cropped_faces = [] - uncropped_faces = [] - for img in os.listdir(train_dir+name): - uncropped_faces.append(cv2.imread(train_dir+name+'/'+img)) - face = get_face(train_dir+name+'/'+img) - cropped_faces.append(face) - cropped_faces = np.array(cropped_faces) - embeds_ = get_embeddings(cropped_faces,model) - embeds_train.append(embeds_) - uncropped_faces = np.array(uncropped_faces) - images_train.append(uncropped_faces) - labels_train.append(name) - labels_train = np.array(labels_train) - embeds_train = np.array(embeds_train) - images_train = np.array(images_train) - - print("dataset done, saving...") - savez_compressed('face_embeds_dataset.npz',labels_train,embeds_train,images_train) - - -def main(): - model = load_model("./facenet_keras.h5") - create_dataset("./data/",model) - enc,svm = train_SVM() - pred,prob = predict_face(enc,svm,"./data/val/ben_afflek/33.jpg",model) - print(pred[0]) - print(prob) - print('------------') - dist,classification,image = lowest_euclidian_distance("./data/val/steve_jobs/22.jpg",model) - print(classification) - print(dist) - print('------------') - dist,classification,image = lowest_euclidian_distance_greedy("./data/val/steve_jobs/22.jpg",model) - print(classification) - print(dist) - -if __name__ == "__main__": - main() - - - -############################### - -## EXTRA DEBUG CODE ## - -############################### - - # dataset = load('face_embeds_dataset.npz') - # labels_train,embeds_train, images_train = dataset['arr_0'], dataset['arr_1'], dataset['arr_2'] - # labels_tmp = list(labels_train) - # embeds_tmp = list(embeds_train) - # images_tmp = list(images_train) - # labels_tmp.pop() - # embeds_tmp.pop() - # images_tmp.pop() - # labels_train = np.array(labels_tmp) - # embeds_train = np.array(embeds_tmp) - # images_train = np.array(images_tmp) - # for i in labels_train: - # print(i) - # print("----") - # for i in embeds_train: - # print(i.shape) - # print("----") - # for i in images_train: - # print(i.shape) - # savez_compressed('face_embeds_dataset.npz',labels_train,embeds_train,images_train) \ No newline at end of file diff --git a/shamir/code/settings.py b/shamir/code/settings.py index 525253e..aef80ad 100644 --- a/shamir/code/settings.py +++ b/shamir/code/settings.py @@ -13,6 +13,9 @@ #Changing this number will break an active system. After changing you must regenerate shares for all users. THRESH = 3 +# Used exclusively for the face DB: any distance lower than this threshold means that two faces are similar +FACE_THRESH = 0.75 + #Directory locations DBdir = "../assets/DBs/" assetsdir = "../assets/" diff --git a/shamir/code/shamir_client.py b/shamir/code/shamir_client.py index 040054a..16bcb8c 100644 --- a/shamir/code/shamir_client.py +++ b/shamir/code/shamir_client.py @@ -6,6 +6,8 @@ import settings import json import threading +import numpy as np +from face_recog import * import base64 import hashlib @@ -120,11 +122,20 @@ def auth_user(user, db,key): if share == -1: return - #Make sure that the given key matches the key in the database - #and that the key is not null - if key == share["key"] and not key == "": - #Send the share if the key is valid - send_share(share, Host()) + if db == 'face': + incoming_embed = string_to_embed(key) + database_embed = string_to_embed(share["key"]) + dist = get_euclidean_distance(incoming_embed,database_embed) + if dist <= settings.FACE_THRESH: + send_share(share, Host()) + + else: + + #Make sure that the given key matches the key in the database + #and that the key is not null + if key == share["key"] and not key == "": + #Send the share if the key is valid + send_share(share, Host()) #Recieves the user credentials from another process on the same host diff --git a/shamir/code/shamir_gen.py b/shamir/code/shamir_gen.py index 831e478..ffb8243 100755 --- a/shamir/code/shamir_gen.py +++ b/shamir/code/shamir_gen.py @@ -59,15 +59,44 @@ def add_shares(username, shares, keys, currtime): #Convert share data to a string payload = username + ":" + str(shares[i][0]) + ":" + str(shares[i][1]) + ":" + str(keys[i]) - - #Grab the database key for the current database - k = db_keys[settings.DBS[i]].key - - #encrypt the share string with the database public key - payload = rsa_encrypt.encrypt_str(k, payload) - #insert or replace the encrypted share, the username, and a timestamp into the database - c.execute("REPLACE INTO enc_shares VALUES(?, ?, ?)", [username, payload, currtime]) + # if the string is longer than a sha256 hash, chunk the string and encrypt each chunk individually + if len(payload) > 240: + + # store the individual chunks + chunks = [] + curr_len = len(payload) + start = 0 + end = 240 + while curr_len > 240: + + # decrement the curr_len to indicate that a chunk has been encrypted + curr_len -= 240 + + # append a chunk of the payload + chunks.append(payload[start:end]) + start += 240 + end += 240 + + #append the last chunk to the chunks list + chunks.append(payload[start:]) + k = db_keys[settings.DBS[i]].key + chunk_payload = "" + + # encrypt each chunk in the payload + for chunk in chunks: + chunk_payload += rsa_encrypt.encrypt_str(k, chunk) + c.execute("REPLACE INTO enc_shares VALUES(?, ?, ?)", [username, chunk_payload, currtime]) + else: + + #Grab the database key for the current database + k = db_keys[settings.DBS[i]].key + + #encrypt the share string with the database public key + payload = rsa_encrypt.encrypt_str(k, payload) + + #insert or replace the encrypted share, the username, and a timestamp into the database + c.execute("REPLACE INTO enc_shares VALUES(?, ?, ?)", [username, payload, currtime]) #commit the action and close the database conn.commit() diff --git a/shamir/code/shamir_updater.py b/shamir/code/shamir_updater.py index ff24e76..114245f 100644 --- a/shamir/code/shamir_updater.py +++ b/shamir/code/shamir_updater.py @@ -131,12 +131,43 @@ def update(cli): if not new: num_updates -= 1 continue - - #decrypt the share and concatenate it with the timestamp - temp = rsa_encrypt.get_priv_key_db(settings.ID).decrypt((base64.b64decode(d[0]),)) + b':' + bytes(d[1], 'ascii') - #Pass the share into the database - update_db(temp, conn) + #if data is longer than 344 then it means the data was chunked then concatenated together + #need to decrypt each chunk individually + if len(d[0]) > 344: + msg = b'' + curr_len = len(d[0]) + start = 0 + end = 344 + while curr_len > 0: + + # subtract 344 on each iteration + curr_len -= 344 + + # decrypt a single chunk, the starting and ending index are specified by start and end + dec_chunk = rsa_encrypt.get_priv_key_db(settings.ID).decrypt((base64.b64decode(d[0][start:end]),)) + + # append the single chunk to the full message + msg += dec_chunk + + # increment start and end to the next chunk + start += 344 + end += 344 + + # append the timestamp to the entire message + msg += b':' + bytes(d[1], 'ascii') + + #Pass the share into the database + update_db(msg,conn) + + # if the data was not chunked then pass the entire string + else: + + #decrypt the share and concatenate it with the timestamp + temp = rsa_encrypt.get_priv_key_db(settings.ID).decrypt((base64.b64decode(d[0]),)) + b':' + bytes(d[1], 'ascii') + + #Pass the share into the database + update_db(temp, conn) #close the connection and return the number of shares commited conn.close() diff --git a/shamir/code/submit.py b/shamir/code/submit.py index 76b888e..8c93fd7 100755 --- a/shamir/code/submit.py +++ b/shamir/code/submit.py @@ -3,6 +3,11 @@ import socket import settings +import sys +sys.path.append("../../face-recognition") +from face_submit import * +from face_recog import * + #This program sends user input to the local client to authenticate if __name__ == "__main__": @@ -15,14 +20,23 @@ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect(('localhost', 55556)) - #Grab info - print("Username: ") - usr = input().strip("\n") - print("Password for " + settings.ID + " DB: ") - pas = input().strip("\n") + if settings.ID == 'face': + print("Username: ") + usr = input().strip("\n") + print("Getting User's Face...") + embed = submit_face() + embed_str = embed_to_string(embed) + s.send(bytes(usr + ":" + embed_str, 'ascii')) + + else: + #Grab info + print("Username: ") + usr = input().strip("\n") + print("Password for " + settings.ID + " DB: ") + pas = input().strip("\n") - #Send info - s.send(bytes(usr + ":" + pas, 'ascii')) + #Send info + s.send(bytes(usr + ":" + pas, 'ascii')) #Exit message print("\nSent! Thanks for flying Crow!") diff --git a/shamir/code/ui.py b/shamir/code/ui.py index 937362d..c2f2413 100755 --- a/shamir/code/ui.py +++ b/shamir/code/ui.py @@ -4,7 +4,11 @@ import socket import sqlite3 import time +import sys +sys.path.append("../../face-recognition") +from face_register import * +from face_recog import * #Delete all entries refering to a specefic id def delete_all(uid): @@ -152,17 +156,30 @@ def cli_register(): #For each db for i in settings.DBS: - #Prompt for password - print("Enter the user's password for the " + i + " database: ") - temp = input().strip("\n").strip(":").strip("|") - - #Make sure the password isnt longer than a sha256 hash - while len(temp) > 66: - print("lets keep it under 66 chars") - name = input().strip("\n").strip(":").strip("|") + # register user's face + if i is "face": + print("Registering user's face") + embed = register_face() + if embed is None: + # Handle error in registering face if needed + pass + + #convert embed to string to store in db + tmp = embed_to_string(embed) + keys.append(tmp) + else: + + #Prompt for password + print("Enter the user's password for the " + i + " database: ") + temp = input().strip("\n").strip(":").strip("|") + + #Make sure the password isnt longer than a sha256 hash + while len(temp) > 66: + print("lets keep it under 66 chars") + temp = input().strip("\n").strip(":").strip("|") - #append the key to the list - keys.append(temp) + #append the key to the list + keys.append(temp) #Send the gathered information to be entered into the proper databases shamir_gen.add_user(uid, name, keys) @@ -202,25 +219,38 @@ def net_register(): #For each db for i in settings.DBS: - #Prompt for password - print("Send the user's password for the " + i + " database: ") - - #accept connection - cli, addr = s.accept() + # register user's face + if i is "face": + print("Registering user's face") + embed = register_face() + if embed is None: + # Handle error in registering face if needed + pass + + #convert embed to string to store in db + tmp = embed_to_string(embed) + keys.append(tmp) + else: + + #Prompt for password + print("Send the user's password for the " + i + " database: ") + + #accept connection + cli, addr = s.accept() - #Get password - temp = str(cli.recv(128), 'ascii').strip("\n").strip(":").strip("|") - - #Close connection - cli.close() + #Get password + temp = str(cli.recv(128), 'ascii').strip("\n").strip(":").strip("|") + + #Close connection + cli.close() - #Make sure the password isnt longer than a sha256 hash - if len(temp) > 66: - print("ERROR recieving pass, needs to be under 66 chars") - return + #Make sure the password isnt longer than a sha256 hash + if len(temp) > 66: + print("ERROR recieving pass, needs to be under 66 chars") + return - #append the key to the list - keys.append(temp) + #append the key to the list + keys.append(temp) #Send the gathered information to be entered into the proper databases shamir_gen.add_user(uid, name, keys)