Software Archive
Read-only legacy content
17061 Discussions

Face Recognition on v8 (2016 R1)

AndreCarlucci
Beginner
383 Views

 

I was trying to update SharpSenses and Facial recognition wasn't working. Then I find out this information on the webpage:

"Note: in  PXCFaceConfiguration, the following APIs are not yet implemented:RecognitionConfiguration          CreateStorage(), SetStorageDesc(), UseStorage() and DeleteStorage()"

Really? How can you release a broken SDK like this? 

What's the alternative for saving faces so we can use the information later?

Please, either you remove the API from the wrappers too or don't remove it at all. And don't forget to update the documentation accordingly. Leaving it like this will only generate hours of useless debugging for many developers out there.

How can we developers continue to develop applications based on RealSense when you keep removing features like this? The Emotion detection removal was already bad enough.

 

0 Kudos
5 Replies
Xusheng_L_Intel
Employee
383 Views

Sorry for confusing. Those APIs never were implemented and we will remove them in the future.

Regarding storing face recognition storage. Of course APIs were not changed and they can be done using :
RecognitionModuleData::QueryDatabaseBuffer(pxcBYTE* buffer) // query FR database buffer
RecognitionConfiguration ::SetDatabaseBuffer(pxcBYTE* buffer, pxcI32 size); // load FR database buffer

Thanks!

0 Kudos
AndreCarlucci
Beginner
383 Views

Hi David,

Thanks for your answer.

I'm not sure if I get it. This code was working on r7 (extracted from the sdk documentation):

            var session = PXCMSession.CreateInstance();
            var manager = session.CreateSenseManager();

            manager.EnableFace();
            PXCMFaceModule faceModule = manager.QueryFace();
            PXCMFaceConfiguration moduleConfiguration = faceModule.CreateActiveConfiguration();
            PXCMFaceConfiguration.RecognitionConfiguration recognition = moduleConfiguration.QueryRecognition();
            recognition.Enable();
            PXCMFaceConfiguration.RecognitionConfiguration.RecognitionStorageDesc desc;
            recognition.CreateStorage("MyDB", out desc); //throws here
            recognition.UseStorage("MyDB");
            recognition.SetRegistrationMode(PXCMFaceConfiguration.RecognitionConfiguration.RecognitionRegistrationMode.REGISTRATION_MODE_CONTINUOUS);
            moduleConfiguration.ApplyChanges();

But now it throws an exception when calling CreateStorage() on r8.

How can I create the database for the first time now?

0 Kudos
Xusheng_L_Intel
Employee
383 Views

You can follow this to save or load facial recognition database. Thanks!

// rdata is a PXCMFaceData.RecognitionData instance
// rcfg is a PXCMFaceConfiguration.RecognitionConfiguration instance
 
// allocate the buffer to save the database
PXCMFaceData.RecognitionModuleData rmd=rdata.QueryRecognitionModule();
Int32 nbytes=rmd.QueryDatabaseSize();
Byte[] buffer=new Byte[nbytes];
 
// retrieve the database buffer
rmd.QueryDatabaseBuffer(buffer);
 
// Save the buffer to a file. Apply industry standard encryption to protect privacy.
....
 
// Now load the database buffer back.
rcfg.SetDatabaseBuffer(buffer);

 

0 Kudos
AndreCarlucci
Beginner
383 Views

Hi David,

This code is on the same page where it says you should call "rcfg.CreateStorage("MyDB", out desc);" to configure face recognition. Please, remove that :)

So if I got it right we don't need (or never really needed) to call  CreateStorage or UseStorage, correct?

Please, when removing things like that, use the C# attribute "[Obsolete]" on the current version of the method so we know that it's going to be removed in the next version or in the other. .

Also, there is a typo in the example: 

It's written "//rdata is a PXCMFaceData.RecognitionData instance" when in fact it's a "PXCMFaceData" instance.

Once again thank you your attention to this and sorry for the "angry" first message :)

I'll try it all out tomorrow and let you know the results.

 

0 Kudos
Xusheng_L_Intel
Employee
383 Views

You are right. CreateStorage(), SetStorageDesc(), UseStorage() and DeleteStorage() were not implemented and will be removed from SDK APIs in future documentation. We also will fix this typo. Thanks for supporting RealSense SDK. 

0 Kudos
Reply