人脸关键点检测face_landmark

不经意间瞄了一眼日历,惊觉2020年已所剩无几,回望即将过去的一年,不禁感叹唏嘘。时光带走了很多的烦恼和美好,也带来了很多困惑和收获。怎样才能不被淹没在时间的洪流里呢,唯有在风浪中保持清醒和方向,而不断地学习和输出就是那支驾驭风浪的桨。

从系统设计一头扎进算法的漩涡,经过了一阵子的蒙圈,然后一点一点摸索着理清思路和方向。在知识爆炸的时代,最好的积累就是把每一步记录下来,变成自己的脚印。前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家,感兴趣的朋友可以去这里了解一下。

前些天调研了人脸检测算法,这几天在做人脸关键点定位和人脸对齐。在网上找了一个开源的人脸对齐项目,本地做了适当适配后验证OK,本篇就单纯记录这个对齐算法的实现。

项目地址:https://github.com/610265158/face_landmark

该项目基于Tensorflow2.0,比较简单灵活。下面是一些Demo图片:

项目运行环境:

  • tensorflow2.0
  • tensorpack (for data provider)
  • opencv
  • python 3.6

数据集:

训练使用的是300W的数据集,数据集地址:i·bug - resources - Facial point annotations

该数据集涵盖了大量变化的人脸数据,包括不同的主题、姿势、光照、遮挡等,数据集采用68点标注,如下:

数据按照如下格式存放:

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

训练

如果想要训练自己的模型,下载完数据集后,需要首先运行如下命令来生成训练和验证的JSON文件:

python make_json.py

需要注意的是,make_json.py文件中,需要正确配置数据集的路径,否则无法生成正确的train.json和val.json。

data_dir='300W'      ########points to your director,300w

完成以上步骤后,运行如下命令进行模型训练:

python train.py

默认情况下,会使用ShuffleNetV2_1.0进行训练,如果想要修改网络,可在train_config.py文件中的如下位置进行配置:

模型使用Demo

可使用训练出来的模型进行推理,如果不想自己训练,也可以直接下载已训练好的模型:model (提取码:rt7p)

运行如下命令行进行Demo测试:

python vis.py --model ./model/keypoints

其中,./model/keypoints是模型的存放位置,模型存放格式如下:

 ./model/
  └── keypoints
      ├── saved_model.pb
      └── variables
          ├── variables.data-00000-of-00002
          ├── variables.data-00001-of-00002
          └── variables.index

也可以先将模型转换为tflite格式,然后使用tflite模型进行推理。模型转换命令:

python ./tools/convert_to_tflite.py

tflite模型推理命令:

python vis.py --model ./model/converted_model.tflite

下面是使用下载下来的模型的一些Demo结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值