No sophisticated experiments, but the TinyFaceDetector is by far the one with highest fps, which can even achieve realtime on mobile phones. The SSD model is slower, but might be more accurate. MTCNN is kind of squishy, it can be faster than SSD, but has a somewhat quirky warmup time.
I am not that familar with the Layers API, but I am sure there is a way to adapt the learning rate.
Usually, I start adapting the learning rate, when the loss value starts to oscillate, or when the loss is only dropping in tiny steps. But I have also trained models, which seemed to perform best by not changing the learning rate at all.
Depends on the application I would say. Client-side, when you need realtime processing or when your concerned about data privacy, since there will be no server or third party, which will have access to your data.
You probably want to go for serverside processing, if you want to support highly ressource limited devices or if…
face-api.js can give you face landmark positions, which contains the outline of the eyes as well. I suppose, you would have to use the face landmarks to rotate and draw the sunglasses with WebGL into a canvas, but not sure how exactly one would implement this to be honest.
The models are trained on human faces, so you would have to try it out, I can’t tell for sure to be honest.
Some stuff from the API actually works for dog faces, see this tweet: https://twitter.com/justadudewhohax/status/1079048592290185217.