From cacd7cc5a9296a192171e8046e12f62c7165f2e9 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 17 Jan 2019 15:52:15 +0100 Subject: build --- client/faceSearch/faceSearch.query.js | 2 +- client/nameSearch/nameSearch.query.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'client') diff --git a/client/faceSearch/faceSearch.query.js b/client/faceSearch/faceSearch.query.js index 2d140813..de7e47b6 100644 --- a/client/faceSearch/faceSearch.query.js +++ b/client/faceSearch/faceSearch.query.js @@ -47,7 +47,7 @@ class FaceSearchQuery extends Component {

Search by Image

-

Searching {13456} images

+

Searching {13233} images

{'Use facial recognition to reverse search into the LFW dataset '} {'and see if it contains your photos.'} diff --git a/client/nameSearch/nameSearch.query.js b/client/nameSearch/nameSearch.query.js index 99c1da84..c0798c58 100644 --- a/client/nameSearch/nameSearch.query.js +++ b/client/nameSearch/nameSearch.query.js @@ -20,7 +20,7 @@ class NameSearchQuery extends Component { return (

Search by Name

-

Searching {13456} identities

+

Searching {13233} identities

{'Enter your name to see if you were included in this dataset..'}

-- cgit v1.2.3-70-g09d2 From 6a59583ff2f13791e3d7e8a69b62dc4bc424c9eb Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 17 Jan 2019 16:41:45 +0100 Subject: ugh --- client/index.js | 2 +- megapixels/app/server/api.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'client') diff --git a/client/index.js b/client/index.js index 96f2c8c8..2c003888 100644 --- a/client/index.js +++ b/client/index.js @@ -28,7 +28,7 @@ function fetchDataset(payload) { function appendApplets(applets) { applets.forEach(([el, payload]) => { - el.classList.add(payload.cmd) + el.parentNode.classList.add(payload.cmd) switch (payload.cmd) { case 'citations': case 'load_file': diff --git a/megapixels/app/server/api.py b/megapixels/app/server/api.py index 61789fb9..4f564710 100644 --- a/megapixels/app/server/api.py +++ b/megapixels/app/server/api.py @@ -7,7 +7,7 @@ import operator from flask import Blueprint, request, jsonify from PIL import Image # todo: try to remove PIL dependency -from app.processors import face_recognition +from app.processors.face_extractor import ExtractorDLIB from app.processors import face_detector from app.processors.faiss import load_faiss_databases from app.models.sql_factory import load_sql_datasets, list_datasets, get_dataset, get_table @@ -86,8 +86,10 @@ def upload(dataset_name): }) # extract 128-D vector - recognition = face_recognition.RecognitionDLIB(gpu=-1) - vec = recognition.vec(im_np, bbox) + extractor = face_extractor.ExtractorDLIB() + vec = extractor.extract(im, bbox_norm) # NB use norm, not bbox_dim + # recognition = face_recognition.RecognitionDLIB(gpu=-1) + # vec = recognition.vec(im_np, bbox) query = np.array([ vec ]).astype('float32') # query FAISS -- cgit v1.2.3-70-g09d2 From 9703ffa533dbb2106dc74dcfbf883eb4bfc1fa00 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 17 Jan 2019 16:49:55 +0100 Subject: fix query --- client/faceSearch/faceSearch.query.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'client') diff --git a/client/faceSearch/faceSearch.query.js b/client/faceSearch/faceSearch.query.js index de7e47b6..8a82373e 100644 --- a/client/faceSearch/faceSearch.query.js +++ b/client/faceSearch/faceSearch.query.js @@ -19,6 +19,11 @@ class FaceSearchQuery extends Component { } upload(blob) { + if (this.state.image) { + URL.revokeObjectURL(this.state.image) + } + const url = URL.createObjectURL(blob) + this.setState({ image: url }) this.props.actions.upload(this.props.payload, blob) } @@ -37,13 +42,13 @@ class FaceSearchQuery extends Component {
{image ? null : } + {result.loading && ( +
+ +
+ )}
- {result.loading && ( -
- -
- )}

Search by Image

-- cgit v1.2.3-70-g09d2 From f3d4880970010ad8bee1638de6e15cb166a593a1 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 17 Jan 2019 16:57:28 +0100 Subject: k --- client/common/loader.component.js | 21 ++++++++++++++------- client/faceSearch/faceSearch.result.js | 1 - package-lock.json | 13 +++++++++++++ package.json | 1 + 4 files changed, 28 insertions(+), 8 deletions(-) (limited to 'client') diff --git a/client/common/loader.component.js b/client/common/loader.component.js index 5930c63e..df25dd39 100644 --- a/client/common/loader.component.js +++ b/client/common/loader.component.js @@ -1,11 +1,18 @@ import React from 'react' +import Spinner from 'react-spin' export default function Loader() { - return ( -
-
- -
-
- ) + const spinCfg = { + width: 5, + radius: 20, + color: 'white', + } + return + // return ( + //
+ //
+ // + //
+ //
+ // ) } diff --git a/client/faceSearch/faceSearch.result.js b/client/faceSearch/faceSearch.result.js index c2509033..00dec160 100644 --- a/client/faceSearch/faceSearch.result.js +++ b/client/faceSearch/faceSearch.result.js @@ -49,7 +49,6 @@ class FaceSearchResult extends Component { return (
-

Searching...

diff --git a/package-lock.json b/package-lock.json index 60a74ece..72d44774 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7163,6 +7163,14 @@ } } }, + "react-spin": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/react-spin/-/react-spin-0.6.2.tgz", + "integrity": "sha1-56+crRWLjGAdg6qtXbSr0b9CuMk=", + "requires": { + "spin.js": "^2.0.1" + } + }, "read-pkg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", @@ -8419,6 +8427,11 @@ } } }, + "spin.js": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/spin.js/-/spin.js-2.3.2.tgz", + "integrity": "sha1-bKpW1SBnNFD9XPvGlx5tB3LDeho=" + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", diff --git a/package.json b/package.json index fcabb7e1..d007cf2e 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "react-dom": "^16.3.0", "react-hot-loader": "^4.3.0", "react-redux": "^5.0.7", + "react-spin": "^0.6.2", "redux": "^4.0.0", "redux-thunk": "^2.3.0", "snapsvg": "^0.5.1", -- cgit v1.2.3-70-g09d2 From 37c1cd8f75e05490067d132f60f7e378809c6b49 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 17 Jan 2019 17:13:52 +0100 Subject: border --- client/index.js | 2 +- site/assets/css/applets.css | 6 ++++++ site/public/datasets/lfw/index.html | 31 ++----------------------------- 3 files changed, 9 insertions(+), 30 deletions(-) (limited to 'client') diff --git a/client/index.js b/client/index.js index 2c003888..c9335f14 100644 --- a/client/index.js +++ b/client/index.js @@ -36,7 +36,7 @@ function appendApplets(applets) { appendTable(el, payload) break case 'map': - el.parentNode.classList.add('fullwidth') + el.parentNode.classList.add('wide') appendMap(el, payload) el.classList.add('loaded') break diff --git a/site/assets/css/applets.css b/site/assets/css/applets.css index e450b46e..f437d1e8 100644 --- a/site/assets/css/applets.css +++ b/site/assets/css/applets.css @@ -132,6 +132,12 @@ max-width: 40px; } +.map, .map .applet { + height: 500px; +} +.map { + margin-bottom: 20px; +} /* tabulator */ diff --git a/site/public/datasets/lfw/index.html b/site/public/datasets/lfw/index.html index 6526c4f8..057413ae 100644 --- a/site/public/datasets/lfw/index.html +++ b/site/public/datasets/lfw/index.html @@ -66,40 +66,13 @@

According to BiometricUpdate.com [^lfw_pingan], LFW is "the most widely used evaluation set in the field of facial recognition, LFW attracts a few dozen teams from around the globe including Google, Facebook, Microsoft Research Asia, Baidu, Tencent, SenseTime, Face++ and Chinese University of Hong Kong."

According to researchers at the Baidu Research – Institute of Deep Learning "LFW has been the most popular evaluation benchmark for face recognition, and played a very important role in facilitating the face recognition society to improve algorithm. [^lfw_baidu]."

In addition to commercial use as an evaluation tool, alll of the faces in LFW dataset are prepackaged into a popular machine learning code framework called scikit-learn.

- - - - - - - - - - - - - - - - - - - - - - - - -
CompanyCountryIndustries
AratekChinaBiometric sensors for telecom, civil identification, finance, education, POS, and transportation
AratekChinaBiometric sensors for telecom, civil identification, finance, education, POS, and transportation
AratekChinaBiometric sensors for telecom, civil identification, finance, education, POS, and transportation
-

Add 2-4 screenshots of companies mentioning LFW here

 "PING AN Tech facial recognition receives high score in latest LFW test results"
"PING AN Tech facial recognition receives high score in latest LFW test results"
 "Face Recognition Performance in LFW benchmark"
"Face Recognition Performance in LFW benchmark"
 "The 1st place in face verification challenge, LFW"
"The 1st place in face verification challenge, LFW"

In benchmarking, companies use a dataset to evaluate their algorithms which are typically trained on other data. After training, researchers will use LFW as a benchmark to compare results with other algorithms.

For example, Baidu (est. net worth $13B) uses LFW to report results for their "Targeting Ultimate Accuracy: Face Recognition via Deep Embedding". According to the three Baidu researchers who produced the paper:

Citations

-

Overall, LFW has at least 456 citations from 123 countries. Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos.

-

Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos.

-
Distribution of citations per year per country for the top 5 countries with citations for the LFW Dataset
Distribution of citations per year per country for the top 5 countries with citations for the LFW Dataset

Conclusion

+

Overall, LFW has at least 116 citations from 11 countries.

+

Conclusion

The LFW face recognition training and evaluation dataset is a historically important face dataset as it was the first popular dataset to be created entirely from Internet images, paving the way for a global trend towards downloading anyone’s face from the Internet and adding it to a dataset. As will be evident with other datasets, LFW’s approach has now become the norm.

For all the 5,000 people in this datasets, their face is forever a part of facial recognition history. It would be impossible to remove anyone from the dataset because it is so ubiquitous. For their rest of the lives and forever after, these 5,000 people will continue to be used for training facial recognition surveillance.

Code

-- cgit v1.2.3-70-g09d2 From 744dcfc832b34fb944044e62bddb3ef6154ff9fd Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 17 Jan 2019 17:24:43 +0100 Subject: marker --- client/map/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'client') diff --git a/client/map/index.js b/client/map/index.js index 053cf13b..e8543c77 100644 --- a/client/map/index.js +++ b/client/map/index.js @@ -33,6 +33,7 @@ function addMarker(map, latlng, title, subtext) { "
", subtext, ].join('')) + return marker } function addArc(map, src, dest) { @@ -74,5 +75,6 @@ export default function append(el, payload) { addArc(map, source, latlng) }) - addMarker(map, source, paper.title, paper.address) + const rootMarker = addMarker(map, source, paper.title, paper.address) + rootMarker.openPopup() } -- cgit v1.2.3-70-g09d2