# PC LipNet安裝流程
## Prerequisite
### 1. Update
```
$ sudo apt update -y && sudo apt full-upgrade -y
```
### 2. tensorflow 2.6
```
# get a fresh start (remember, the 64-bit OS is still under development)
$ sudo apt-get update
$ sudo apt-get upgrade
# install pip and pip3
$ sudo apt-get install python-pip python3-pip
# remove old versions, if not placed in a virtual environment (let pip search for them)
$ sudo pip uninstall tensorflow
$ sudo pip3 uninstall tensorflow
# utmost important: use only numpy version 1.19.5
# check the version first
$ pip3 list | grep numpy
# if not version 1.19.5, update!
$ sudo -H pip3 install numpy==1.19.5
# install the dependencies (if not already onboard)
$ sudo apt-get install gfortran
$ sudo apt-get install libhdf5-dev libc-ares-dev libeigen3-dev
$ sudo apt-get install libatlas-base-dev libopenblas-dev libblas-dev
$ sudo apt-get install liblapack-dev
# upgrade setuptools 40.8.1 -> 57.4.0
$ sudo -H pip3 install --upgrade setuptools
$ sudo -H pip3 install pybind11
$ sudo -H pip3 install Cython
# install h5py with Cython version 0.29.23 (± 15 min @1500 MHz)
$ sudo -H pip3 install h5py==3.1.0
# install gdown to download from Google drive
$ pip3 install gdown
# download the wheel
$ gdown https://drive.google.com/uc?id=1BLXP7RKEfTp9fxbmI8Qu2FdhU7NUxcwV
# install TensorFlow 2.6.0 (± 68 min @1500 MHz)
$ sudo -H pip3 install tensorflow-2.6.0-cp37-cp37m-linux_aarch64.whl
```
### 3. opencv
```
# check for updates (64-bit OS is still under development!)
$ sudo apt-get update
$ sudo apt-get upgrade
# dependencies
$ sudo apt-get install build-essential cmake git unzip pkg-config
$ sudo apt-get install libjpeg-dev libpng-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libgtk2.0-dev libcanberra-gtk* libgtk-3-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install python3-dev python3-numpy python3-pip
$ sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev
$ sudo apt-get install libv4l-dev v4l-utils
$ sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev
$ sudo apt-get install liblapack-dev gfortran libhdf5-dev
$ sudo apt-get install libprotobuf-dev libgoogle-glog-dev libgflags-dev
$ sudo apt-get install protobuf-compiler
$ pip3 install opencv-python #上面都執行了,才可以成功執行這一行。
```
### 4. install dlib
https://www.pyimagesearch.com/2017/05/01/install-dlib-raspberry-pi/
### 5. 安裝 -> pip install
'Keras\==2.0.2'
'editdistance\==0.6.0'
'h5py\==2.10.0',
'matplotlib\==3.3.4',
'numpy\==1.19.5',
'python-dateutil\==2.8.2',
'scipy\==1.1.0',
'Pillow\==8.4.0',
'Theano\==1.0.5',
'nltk\==3.6.5',
'sk-video\==1.1.10',
pip install installed numpy-1.21.5
### 6. Modify predict.py
1. move predict.py ../
2. face_predictor_path && PREDICT_DICTIONARY -> REMOVE ../
3ls. 把predict.py裡面的print加()
### 7. Disable TF V2
```
nano /home/pi/.local/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py
```
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
```
nano /home/pi/.local/lib/python3.7/site-packages/keras/optimizers.py
```
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
### 8. Execute
```
python3 /home/pi/Desktop/LipNet/evaluation/predict.py /home/pi/Desktop/LipNet/evaluation/models/overlapped-weights368.h5 /home/pi/Desktop/LipNet/test/FPS5.mpg
```
### ==Optimize==
```
nano predict.py
```
remove show_video_subtitle(video.face, result)