Belgium
Asked — Edited

Cognitive Face And Face Tracking

Im struggling a little with the face recognition controls.

First of all, the cognitive face control works pretty well, but I would need some way to reset or unlearn faces if for no other reason as to test my scripts when my bot sees a new face for the first time. I have resorted to using family pictures, but by now he knows every picture I have at hand and most where recognized even before I trained them (who knew my brother was Johnny depp?) I even used some 3d printed face mask I printed a while ago, and yep, its positively recognized, someone else beat me to it lol.

While this is kinda fun, its also annoying when I cant turn it off, so is there a way to run this "in a sandbox", using only my own data, be able to reset everything it learned, and not have faces recognized submitted by other people?

When using the camera plugin, face tracking works reasonably well (it does struggle with faces at an angle and particularly from the side). But using a face as object for object recognition is useless. So the only way Ive found so far for the robot to recognize who he is talking to, is using face tracking as a trigger and cognitive face for identification. This makes it difficult to detect a new face or multiple faces, if every time tracking is restarted, I would need to perform a cognitive face lookup. There is daily limit to that. And then there are the false positives.

Any other suggestions?


ARC Pro

Upgrade to ARC Pro

Take control of your robot's destiny by subscribing to Synthiam ARC Pro, and watch it evolve into a versatile and responsive machine.

PRO
USA
#9  

DJ: Thanks for the kind words.

ALL: OpenCV is a great library but you need a wrapper (managed .net dll) to use with .net project.

Emgu is a well known wrapper but my recommendation is to stay away, due to their licensing model:

User-inserted image

Their "free" model is GPL 3:

GPL3 forces open source code, empowers the application/end user to have the right to access the source code. This is a good idea (noble), but, is not compatible with commercial software.

https://opensource.stackexchange.com/questions/2338/can-i-use-gpl-libraries-in-a-closed-source-project-if-only-the-output-is-distrib

Another example you are not allowed to publish a GPL3 application to the Apple store even if the application is free.

https://apple.stackexchange.com/questions/6109/is-it-possible-to-have-gpl-software-in-the-mac-app-store

If you plan to build a plugin you can open source the plugin source code right and is ok ?

NO that is not enough.

https://opensource.stackexchange.com/questions/4431/making-a-commercial-plugin-for-a-gplv3-software-without-releasing-the-plugins-c

Quote:

If I write a plug-in to use with a GPL-covered program, what requirements does that impose on the licenses I can use for distributing my plug-in?

It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means you must license the plug-in under the GPL or a GPL-compatible free software license and distribute it with source code in a GPL-compliant way.

If the program dynamically links plug-ins, but the communication between them is limited to invoking the main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.

An ARC's plugin is not a separated application this means you can't use a GPL3 library with an open source plugin used within the same process (ARC closed source code commercial application).

EMGU is very popular easy to use, a lot of blog posts, a lot of students use the wrapper for final projects but i have doubts they understand the real implications of using a GPL3 library.

#10  

I know about candy Wrappers, reading this post is giving me a headache. it is like the ceiling over my head confused

User-inserted image

Belgium
#11  

Hmm, thanks for pointing that out PTP. I guess the next question then is: now what?

Maybe I should get back to my previous idea, of using ageitgey/face_recognition? His program is licensed under MIT license and based on dlib which has a cool license; I quote:

Quote:

To the extent possible under law, Davis E King has waived all copyright and related or neighboring rights to dlib documentation (XML, HTML, and XSLT files). This work is published from United States.

That is, I (Davis the author) don't care what you do with this. So do whatever you want:)

Its not going to be as neatly integrated, but probably easier for me to pull off.

as for VS2017, its possible I didnt install some components. The installation procedure asked me a lot of things I had no answer for, so I just guessed:)

PRO
USA
#13  

Regarding dlib and other Machine Learning frameworks/Libraries e.g. Tensorflow, Yolo (Darknet) the main problem is to compile/obtain a x86 version.

Some wrappers only handle the Inference (Detection).

Training is sometimes a complicate and not obvious task, you need to master a few tools/scripts.

Then you have different models: CoreML (Apple), Tensorflow (Google), Windows ML, Onnx (Open Format Exchange).

And once again you have more tools to convert.

These tools are available for integration, research no one (big player) is interested in developing a final (consumer) and offline product for free.

Maybe that is one of the reasons why everyone (Watson, Azure, Google Cloud, Amazon, Facebook ) is pushing cloud services.

I'm investing some personal time to understand the landscape, it's a very interesting subject (ML).

Belgium
#14  

thanks, but I think Ill throw the towel for now. I have never used C sharp, I dont know VS (as you noticed, I cant even install it properly lol). Ezscript is within my grasp I think, but compiling plugins in an IDE I dont know that integrate external wrappers to use a library I known nothing about, .. its too much stuff where I dont know what Im doing and dont have enough things to copy paste:).

Im gonna play with that dlib app in a VM or Rasberry and if it works well, making a plugin that just writes a jpg and reads back a result may be doable for me. Maybe someone more steeped in windows development will one day write a opencv plugin.

PRO
Synthiam
#15  

Thanks ptp - didn’t notice the rest of the licensing mention for emgucv

Vertigo, adding the form or other steps of the tutorial process hasn’t changed in newer visual studio versions to set your mind at ease. The one thing I do recommend is following along with the video from this step of the tutorial here: https://synthiam.com/Tutorials/UserTutorials/146/2

The only thing is you have to hear my voice the whole time lol. I find pausing and playing to follow a video much more intuitive than following written instructions - because you can see the outcome of each action. Also, if you follow the exact clicks, you’ll get the exact outcomes:)