-
-
Notifications
You must be signed in to change notification settings - Fork 312
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Likeliness between faces #38
Comments
Theoretically it's possible by using a features detection algorithm, like SURF or SIFT, but the implementation requires more preparation. Anyway I will ad it into the TODO list. |
Yes. I have seen other frameworks in Python which do it that way. Once they create the face encodings for the faces, then they calculate distance using Euclidean or some other formula. |
I've developed another library (https://github.com/esimov/forensic) which detect copy move forgery in images, this at some degree resembles the same theory, but not really sure if I can adapt it to this problem. Maybe i'll evaluate it. |
Just took a look at it. That's really interesting. The underlying solution seems to be pretty much the same . Please, do let me know your findings. Also, I just realized if you do add this feature, this would turn into facial recognition library. |
@harshthakur9030 you might want to see #23 |
Thanks @olekukonko . Preciously the points I had in mind. I ought to find some time to contribute to this in my free time. I would be glad if you or @esimov could point me how to go about it . |
I made a little research on the possibilities and I opted to implement the SURF (Speeded Up Robust Features) method - http://people.ee.ethz.ch/~surf/eccv06.pdf. I assume the integration should be possible without major roadblocks and should be also fast. |
I was doing a little research and I noticed
On the Issue of
Question
|
HOG might be faster in computation than SURF, but as far as I know it's mostly used in image classification (aka to feed up the feature vectors into an image classification algorithm like SVM) so i'm afraid it wouldn't be too useful for a simpler task like image features detection and matching. Please correct me if i'm wrong. Right now the library is more a CV than a ML library. So I foreseen the next step in the library evolution of being capable in recognizing image similarities, in other words to detect identical faces. Later on, if everything is going well it can be evolved into a ML direction, in terms of being capable of image classification and training.
That's a good idea. This is how I conceive the integration of feature detectors: pluggable methods like in OpenCV. |
Absolutely, however, SURF can also be used to feed SVM see Face Recognition using SURF Features and SVM Classifier
Makes a whole lot of sense.
Too bad Edward Walker port of libsvm has not been maintained for You can be sure you have my full support. Nice one. |
Awesome. Looking forward to this feature! |
Wondering if there’s been any time put in on the above conversation? Looks very interesting and would love to see the SURF implementation. |
I didn't had too much time lately focusing on this feature, effectively nothing has been done yet, only research, but it's not abandoned at all. I really hope that the next big thing on the project development will be this feature. |
photoprism is using pigo to do the same thing. Check their code. they use clustering to avoid needing kmeans. Its also faster then kmeans |
@gedw99 in case you know, can you point out where exactly this is implemented? I was searching through the code, but couldn't find exactly where is done. |
I found an issue where they discussed it a while ago. I searched for it again before i wrote, but could not find it again. |
Hey @esimov they use pigo core here, but i did not really look into it to much.. But it might be good for you and others here to see how they use it. https://github.com/photoprism/photoprism/blob/develop/internal/face/detector.go#L13 |
Maybe do a c to golang transpilation for some of the opencv aspects. I know someone else inthe GIo community working on it. https://github.com/gotranspile/cxgo has some examples and is highly active. POTrace has been done this way: https://github.com/dennwc/gotrace, and i saw you using the c version here: https://github.com/esimov/colidr#requirements. It's quite cool how it supports the pure go as well as the c version. Make it easier to do porting. BTW @dennwc this is really inspiring !! |
There is no OpenCV involved in this project. Pigo is a standalone face detection application and I don't want at all to involve OpenCV exactly for that reason, that it requires clang to communicate with the C backend, and as you probably know this operation is not cost effective. So in order to support the features detection I opted to implement the SURF detection method as I mentioned earlier in this thread. |
I look your code, very good! |
First off, just want to appreciate and thank you for this cool project you're working on.
I was wondering if you could add the feature to compare two faces and describe how likely they are.
The text was updated successfully, but these errors were encountered: