
RetinaFace: Single-stage Dense Face Localisation, implemented in TensorFlow 2.0 - stan_btd
https://github.com/StanislasBertrand/RetinaFace-tf2
======
AndrewThrowaway
Model | Easy | Medium | Hard

Mxnet | 96.5 | 95.6 | 90.4

Ours | 95.6 | 94.6 | 88.5

My professors would be so mad if I submitted data like this. I already can
hear "What are the units? Seconds? So yours are by one second better? Error
margin? Percent? So yours is worse?"

I get that this is a very specific information for a specific audience. People
who stumble on this repo should know what is that.

However we can all be better at presenting our data.

~~~
stan_btd
as stated in the repo, its "mAP result values"

[https://medium.com/@jonathan_hui/map-mean-average-
precision-...](https://medium.com/@jonathan_hui/map-mean-average-precision-
for-object-detection-45c121a31173)

~~~
AndrewThrowaway
Don't get me wrong. I totally get it. But my professor is saying:

"So this is precision? 0 to 1? 1 being totally accurate? And you got 96.5? I
assume it is percentage?"

~~~
nl
It says "mAP result values on the WIDERFACE validation dataset:"

If your professor is working in on object detection they know what mAP is -
all the major datasets use it as their standard evaluation criteria.

~~~
AndrewThrowaway
So is it mAP of 0.956 or 95.6? Why not 956?

~~~
nl
Not to be rude, but if you can't work that out you shouldn't be working on
this. I'm sure the author would take a pull request, but but it really sounds
like you are nitpicking.

Figures like precision and recall are often expressed either as 66% or 0.66.
Confusion really isn't that big a problem.

~~~
AndrewThrowaway
Not rude at all because I am totally nitpicking.

If you would write mAP: 0.9 or mAP (%): 90 or similar my "professor" would be
OK with that.

I guess general rule in science (or maybe engineering) is to define units. I
have no doubt that e.g. when you are building rockets (or maybe model
airplanes) you would know that e.g. velocity is in m/s. Until somebody thinks
in some other way and things blow up.

I just wanted to make some fun comment about missing units and that is it. I
have no doubt that anybody browsing that repo would not be confused about mAP
being 95.6.

------
symisc_devel
The algorithm have been already shipped within the release of the PixLab Rest
APIs 1.9.72: [https://blog.pixlab.io/2020/08/pixlab-
api-1972-released](https://blog.pixlab.io/2020/08/pixlab-api-1972-released)

Note however that Retina does not support real-time performance on the CPU
especially on IoT devices and web browsers (WebAssembly). That's why we opted
for a standard cascade approach for our WebAssembly port:
[https://sod.pixlab.io/articles/porting-c-face-detector-
webas...](https://sod.pixlab.io/articles/porting-c-face-detector-
webassembly.html)

------
codetrotter
I couldn’t find any license text in the repo.

Would you consider using an open source license like for example the ISC
license?

[https://choosealicense.com/licenses/isc/](https://choosealicense.com/licenses/isc/)

~~~
stan_btd
Of course, done !

~~~
codetrotter
Great, thank you :)

------
cheez
Not an expert, why is it called state of the art if its accuracy is worse than
mxnet, whatever that is

~~~
stan_btd
The algorithm is state of the art. There are several implementations of the
algorithm, the original is with the mxnet framework, and my implementation
with tensorflow framework has a slightly lower accuracy.

~~~
cheez
Thanks! What makes it state of the art and why is lower accuracy acceptable?

~~~
nl
> What makes it state of the art

Generally it means something roughly like "the best known approach for this
specific problem". Often it means "the best known approach for this specific
dataset" (eg "SOTA on ImageNet").

> why is lower accuracy acceptable?

Lower accuracy is worse, but these numbers look close enough that it's
probably acceptable for most people.

There are plenty of environments where TF is preferable to MXNet (eg, you have
TPUs/want to use TFLite on mobile/want to slice the model weights up and use
it for your own custom TF model).

It's probably lower accuracy because it wasn't trained as long. Those extra
couple of points could take days (or more) of training.

~~~
cheez
Awesome, thanks for the explanation!

------
marstall
I feel much safer now.

