openface/docs/faq.md

58 lines
2.7 KiB
Markdown
Raw Normal View History

2015-12-07 06:23:44 +08:00
# FAQ
2016-01-19 19:14:40 +08:00
## How much time does OpenFace take to process an image?
The execution time depends on the size of the input images.
The following results are from processing these example images
of John Lennon and Steve Carell, which are respectively sized
1050x1400px and 891x601px on an 8 core 3.70 GHz CPU.
The network processing time is significantly less on a GPU.
<img src='https://raw.githubusercontent.com/cmusatyalab/openface/master/images/examples/lennon-1.jpg' height='200px' />
<img src='https://raw.githubusercontent.com/cmusatyalab/openface/master/images/examples/carell.jpg' height='200px' />
2016-01-19 23:07:22 +08:00
More time is spent using the off-the-shelf face detector
than in the deep neural network!
The alignment cost is negligible.
2016-01-19 19:14:40 +08:00
These times are obtained from averaging 100 trials with
our [util/profile-pipeline.py](https://github.com/cmusatyalab/openface/blob/master/util/profile-pipeline.py)
script.
2016-03-03 22:05:41 +08:00
<!-- The standard deviations are low, -->
<!-- see [the raw data](/data/2016-01-19/execution-times.txt). -->
2016-01-19 19:14:40 +08:00
<img src='https://raw.githubusercontent.com/cmusatyalab/openface/master/images/performance.png' />
2016-01-19 23:07:22 +08:00
## How can I make OpenFace run faster?
1. Resize your images so that faces are approximately 100x100 pixels
before running detection and alignment.
2. Compile dlib with AVX instructions, as discussed
[here](http://dlib.net/face_landmark_detection_ex.cpp.html).
Use the `-DUSE_AVX_INSTRUCTIONS=ON` in the first `cmake` command.
If your architecture does not support AVX, try SSE4 or SSE2.
2016-03-11 03:13:10 +08:00
3. Make sure Torch is linking with [OpenBLAS](http://www.openblas.net/),
instead of netlib for BLAS and LAPACK.
From our experiments, a single neural network forward pass that
executes in 460ms with netlib executes in 59ms with OpenBLAS.
## I'm getting an illegal instruction error in the pre-built Docker container.
This is unfortunately a result of building the Docker container
on one machine that compiles software with non-standard CPU flags
and creates illegal instructions on architectures that don't support
the additional CPU features.
Using the binaries from the pre-built container on a CPU that
doesn't support these features results in the illegal instruction error.
We try to prevent these as much as possible by building the images
inside of a Docker machine.
If you are still having these issues, please fall back to building
the image from scratch instead of pulling from Docker Hub.
2016-01-20 03:57:29 +08:00
You'll need to build the
2016-01-20 03:59:21 +08:00
[opencv-dlib-torch Dockerfile](https://github.com/cmusatyalab/openface/blob/master/opencv-dlib-torch.Dockerfile),
change the `FROM` part of the
[OpenFace Dockerfile](https://github.com/cmusatyalab/openface/blob/master/Dockerfile)
to your version,
then build the OpenFace Dockerfile.