[Master's thesis] Transfer learning for Head pose estimation, enhanced by neural architecture search.
Author: Josip Matak
Example 1 | Example 2 |
---|---|
Example 3 | Example 4 |
---|---|
Estimating head pose is a useful practice in many industries, especially those of a medi-cal, technical, or automotive nature. Precision and speed of execution are the key things thatmake these methods useful in real-world practice.The solution to this task is offered by the current hot topic in deep learning, a machinelearning subset. The main contribution of this paper is the transfer learning technique andseveral different search methods for the best neural network architecture, built from prede-fined blocks. The results presented in the paper suggest that features extracted from the facerecognition method are sufficient for estimating head pose. Also, deep model architectureoptimization methods have shown improvements in execution speed and precision by opti-mizing the multi-criterion objective function. Although this is a task that requires time andmemory resources, automated search allows users to change the main focus of research intodifferent problems in the same domain.
- Tensorflow 1.14, Numpy, OpenCV
- NVIDIA GeForce RTX 2070 SUPER
- Ubuntu 18.04
absl-py==0.9.0
astor==0.8.1
cma==3.0.3
gast==0.3.3
google-pasta==0.2.0
grpcio==1.29.0
h5py==2.10.0
importlib-metadata==1.6.1
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.2
Markdown==3.2.2
numpy==1.19.0
opencv-python==4.2.0.34
pandas==1.0.5
protobuf==3.12.2
Py-BOBYQA==1.2
pyswarm==0.6
python-dateutil==2.8.1
pytz==2020.1
scipy==1.5.0
six==1.15.0
tensorboard==1.14.0
tensorflow-estimator==1.14.0
tensorflow-gpu==1.14.0
termcolor==1.1.0
tqdm==4.46.1
Werkzeug==1.0.1
wrapt==1.12.1
zipp==3.1.0
Ensure to download datasets below and put them in dataset
folder
Unzip the files, run extract_pose.py
for each folder, and prepare_dataset.py
for each extracted numpy saved array. Then, run split_dataset.py
to split training dataset 30-70.
Or if you are lazy enough, run loader.sh
.
To train and generate models with evolutionary algorithms follow next procedure
python3 search.py --alg cmaes|genetic|bobyqa|pso|random
Depending on the wanted algorithm