DoubleFV question #148

Open
opened this Issue May 3, 2018 · 4 comments

Projects
None yet
2 participants

publicocean0 commented May 3, 2018 • edited

 Hi if i understand correctly, the descriptor extractor returns a list DoubleFV , ie a list of double vectors. For finding the similarity you find the minimum euclidean distance. My idea is to save list of vectors as a multilinestring (geoobject) in database. I saw it is possible also normalize the vector in a range(latitude/longitute ranges ). For finding the similar face i could simply to make a query in db searching the minimum distance with a face(multinestring) in input. This solution will be scalable. Could it work? I have 2 doubts. in many cases i saw for face identification they use also neural net. It is necessary or euclidean distance can be sufficient? the doubleFv is a list of double values. a line string is a list of couple (x,y). Mathematically is i set y always to 0 the uclidean metric might be the same. But there is not a way for extracting a 2d vector instead 1d vector as descriptor? it would permit to fit better with linestring concept.
Member

jonhare commented May 4, 2018

 I'm not convinced this would be at all scalable or work well. The vectors describing faces are not 1-d, they are n-d where n is usually a fairly large number (rather dependent on the type of descriptor being used). The types of techniques used for indexing large n, n-d vectors is significantly different the the typical approaches used for 2-d and 3-d vectors in geospatial indexing systems (the former might use kd-trees or an approximate approach like kd-tree ensembles or locality sensitive hashing; the latter probably uses r-trees or similar). The vast majority of state of the art facial description is done using neural nets, although there have been some reasonably good approaches not using this (e.g. https://www.robots.ox.ac.uk/~vgg/publications/2013/Simonyan13/simonyan13.pdf) in the last few years. The classical Eigenfaces approach from the early 90s does simply work by comparing vectors, however it isn't very robust by todays standards and would likely have major problems scaling to large datasets (not computationally scaling, but rather it would likely just return the wrong result too often to be acceptable)
Author

publicocean0 commented May 4, 2018 • edited

 You suggestion is really interesting:) so if i understand correctly: every DoubleFV is a single vector (dimension can be 100 or more) indexing is better R- tree for large vector Eigenfaces approach is not so acceptable for big dataset. I could change software for fitting point 1, 2 using a different indexer. The point 3 is not completely clear. What is for your opinion the best algorithm for face recognition for large dataset present in openimaj?
Member

jonhare commented May 4, 2018

 (KD-tree, or approximate methods [ensemble of KD-Trees or LSH or ...] are better for large vectors) I haven't been following the literature on recent face recognition algorithms so much recently, but things like DeepFace are near state of the art (using Deep Neural Nets). Search for approaches that use the CelebA dataset to verify their performance to get an idea of whats out there... OpenIMAJ doesn't have anything very modern, although all the pieces to build implement Simonyan's approach in the paper I linked above are implemented; they just need to be assembled together... It's quite easy to use OpenIMAJ with other libraries like Deeplearning4j if you want to integrate neural net approaches...
Author

publicocean0 commented May 4, 2018

 ok NN o SVM remains the better solution. So i think is not so fast and simple to realize a Face identification for large database.At least if possibile to realize the Face verification in a large db : ) Thanks for clarifications