Need help with face_landmark?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

610265158
210 Stars 73 Forks Apache License 2.0 29 Commits 23 Opened issues

Description

A simple method for face alignment based on wingloss and mutitask learning :)

Services available

!
?

Need anything else?

Contributors list

# 95,799
Python
tensorf...
Tensorf...
face-la...
29 commits

Note: planning to port the codes to pytorch, hope clean codes may help us.

face_landmark

A simple face aligment method, based on tensorflow2.0

introduction

This is the tensorflow2.0 branch, if u need to work on tf1 switch to branch tf1, it still work.

It is simple and flexible, trained with wingloss , multi task learning, also with data augmentation based on headpose and face attributes(eyes state and mouth state).

CN blog

And i suggest that you could try with another project,including face detect and keypoints, and some optimizations were made, u can check it there [pappapigface_engine].

Contact me if u have problem about it. [email protected] :)

demo pictures:

samples

gifs

this gif is from github.com/610265158/PeppaPigFace_Engine, but it is the same model : )

pretrained model:

shufflenetv2_1.0 tflite is not ok, retrain is needed, sad, i need more time.
shufflenetv2_0.75 including tflite model, (time cost: mac [email protected], tf2.0 5ms+, tflite 3.7ms+-)

requirment

  • tensorflow2.0

  • tensorpack (for data provider)

  • opencv

  • python 3.6

useage

train

  1. download all the 300W data set including the 300VW(parse as images, and make the label the same formate as 300W)

    ├── 300VW
    │   ├── 001_annot
    │   ├── 002_annot
    │       ....
    ├── 300W
    │   ├── 01_Indoor
    │   └── 02_Outdoor
    ├── AFW
    │   └── afw
    ├── HELEN
    │   ├── testset
    │   └── trainset
    ├── IBUG
    │   └── ibug
    ├── LFPW
    │   ├── testset
    │   └── trainset
    
  2. run

    python make_json.py
    produce train.json and val.json (if u like train u own data, please read the json produced , it is quite simple)
  3. then, run:

    python train.py
  4. by default it trained with shufflenetv2_1.0

finetune

  1. download the pretrained model keypoints, put it into ./model and the model dir structure is :
   ./model/
    └── keypoints
        ├── saved_model.pb
        └── variables
            ├── variables.data-00000-of-00002
            ├── variables.data-00001-of-00002
            └── variables.index

  1. set config.MODEL.pretrainedmodel='./model/keypoints/variables/variables', in trainconfig.py

  2. adjust the lr policy

  3. python train.py

convert to tflite

  1. modify the model path in toos/converttotflite.py

  2. python  toos/convert_to_tflite.py
    it will produce converted_model.tflite
  3. CAUTION: the pretrained model shufflenentv2_1.0 is not ok with tflite, because the shuffle op, but it was fixed, if u need 1.0 please retrain, or wait for me.

    visualization

python vis.py --model ./model/keypoints  
or python vis.py --model ./model/keypoints.tflite  (need conver to tflite first) 

TODO:

  • [x] A face detector is needed.

dsfd_tensorflow

faceboxes-tensorflow

pappapigface_engine

  • [x] tflite model

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.