### Usage:

#### install caffe
- donwload and checkout
    - `git clone https://github.com/intel/caffe.git `
    - `cd caffe && git checkout 1.0.6`

- modify caffe source
    - move `PATCH/caffe.patch`, `PATCH/clip.patch` to caffe folder
    - run `git apply caffe.patch` to modify caffe

- install caffe and pycaffe
    - `mkdir build && cd build && cmake -DCPU_ONLY=1 -DCMAKE_BUILD_TYPE=Release ..`
    - `make all -j$(nproc)`

- set caffe and pycaffe env
    - change user to `root`
    - `CAFFE_ROOT=$(YOUR CAFFE FOLDER)`
    - `cd $CAFFE_ROOT` and run:

```
for req in $(cat python/requirements.txt) pydot; do pip install  $req; done
export PYCAFFE_ROOT=$CAFFE_ROOT/python
export PYTHONPATH=$PYCAFFE_ROOT:$PYTHONPATH
export PATH=$CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH
echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig
```

#### install mkl-dnn
- download
    - `git clone https://github.com/intel/mkl-dnn`

- modify mkl-dnn source
    - move `clip.patch` to mkl-dnn folder
    - cd mkl-dnn folder
    - run `git apply clip.patch`

- install mkl-dnn
    - `cd scripts && ./prepare_mkl.sh && cd ..`
    - `mkdir -p build && cd build && cmake .. && make`
    - `make test`
    - `sudo make install`

#### convert model
- now you should have installed caffe, pycaffe, and mkl-dnn.

- make sure you have tensorflow and pycaffe installed, can check by `import tensorflow` and `import caffe` in python.

- prepare pb format tensorflow model.

- create a folder to save caffe model.


- cd to the script folder and run, `eg:`
```
# Transform the model to internal representation
python tf2topo.py --input_model_filename=./mobilenet.pb  --weights_file=save_model/weights.bin\
             --pkl_file=save_model/weights.pkl --topo_file=save_model/topo.txt

# Transform to caffe model
python topo2caffe.py --topo_file=save_model/topo.txt --pkl_file=save_model/weights.pkl\
    --batch_size=1 --save_folder=save_model

# Transform to C++ code which is based on MKLDNN
python make_main.py --topo=save_model/topo.txt
```

- run net of mkl-dnn `as below:`
    - `cd run_mkl_dnn`
	- `vi build.sh` and replace ${path of mkl-dnn} to '/home/enxiang/mkl-dnn' after 'MKLDNN_ROOT='
	- `sh build.sh`
#### done