运行腾讯公司开源的 [TFace](https://github.com/Tencent/TFace) 需要一个“--pts_list PTS_LIST path to 5p list (default: None)”文件,可以由以下方法生成。
win10, python3.7, tensorflow-gpu2.8.0+Keras2.8.0
搭配CUDA11.2【https://www.aliyundrive.com/s/SbZTE7C3Fdn 提取码: cd84】、cudnn8.1.1【阿里云盘暂不支持压缩包分享,待后续补充,也可自行在 [Nvidia官网](https://developer.nvidia.com/rdp/cudnn-archive) 下载】
可以使用GPU跑 [retinaface](https://github.com/serengil/retinaface)
```python
import tensorflow as tf
tf.test.is_gpu_available()
```
```python
from retinaface import RetinaFace
import os
if __name__ == "__main__":
img_path="I:\FaceRecognition\\Dataset\\LFW\\lfw\\"
result_file = "I:\FaceRecognition\\RetinaFace\\LFW_5p.txt"
img_list_file = "I:\FaceRecognition\\RetinaFace\\LFW_img_list.txt"
people = sorted(os.listdir(img_path))
p5 = ["right_eye", "left_eye", "nose", "mouth_right", "mouth_left"]
p_res = {}
for idx, name in enumerate(people):
images = sorted(os.listdir(os.path.join(img_path, name)))
print(idx, "/", len(people))
for img in images:
res = RetinaFace.detect_faces(os.path.join(img_path, name, img))
r_name = os.path.join(img_path, name, img).replace("\\","\\\\")
p_res[r_name] = []
for p_n in p5:
p_res[r_name].append(res["face_1"]["landmarks"][p_n][0])
p_res[r_name].append(res["face_1"]["landmarks"][p_n][1])
with open(result_file, "w") as f:
for k, va in p_res.items():
print(k, file=f, end=" ")
length = len(va)
for idx, v in enumerate(va):
if idx == length - 1:
print(v, file=f, end="\n")
else:
print(v, file=f, end=" ")
with open(img_list_file, "w") as f:
for k, va in p_res.items():
print(k, file=f, end="\n")
```
如果在pip install retina-face安装的时候它总是自动安装tensorflow(自己已经安装过gpu版本),它这个自动安装的是cpu版本,可以将whl文件下载下来,将后缀名改为zip,解压之后将 retina_face-0.0.10.dist-info 文件夹中的 METADATA 中对 tensorflow 的 Requires-Dist 删除,再压缩成zip,并将后缀改为 whl,本地安装一下就可以了。
运行完的文件是这个样子:
```language
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\AJ_Cook\\AJ_Cook_0001.jpg 104.6107 113.63623 144.45963 109.63791 121.65247 135.55469 109.868324 157.23424 148.31587 153.50304
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\AJ_Lamas\\AJ_Lamas_0001.jpg 104.77163 110.99682 149.3691 113.86397 128.6512 138.38597 98.64801 154.47932 145.37598 156.54005
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Eckhart\\Aaron_Eckhart_0001.jpg 102.741196 108.969315 146.40202 111.47741 124.46036 141.20679 105.495056 159.06313 139.60355 161.04402
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Guiel\\Aaron_Guiel_0001.jpg 99.523994 111.427284 146.69998 118.99983 122.56918 140.37709 93.35583 158.55208 136.51096 164.69096
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Patterson\\Aaron_Patterson_0001.jpg 97.891205 122.948044 138.17465 104.0977 125.8966 132.84561 119.72481 164.28627 150.16678 147.89877
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Peirsol\\Aaron_Peirsol_0001.jpg 105.67011 113.51096 146.80128 112.19194 127.01374 140.1056 109.18486 154.4139 145.6198 153.29262
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Peirsol\\Aaron_Peirsol_0002.jpg 105.036606 113.69025 146.38988 113.63152 129.10849 139.39473 108.50234 159.06894 141.82843 158.80954
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Peirsol\\Aaron_Peirsol_0003.jpg 107.24532 114.46006 143.24182 111.07354 129.0425 136.0097 110.6148 148.11699 147.25398 144.89673
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Peirsol\\Aaron_Peirsol_0004.jpg 107.741905 113.37024 145.52351 114.35103 117.60642 135.40851 109.057884 159.71698 142.09088 160.42836
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Pena\\Aaron_Pena_0001.jpg 99.71055 115.29481 144.09898 102.992035 125.81638 138.5115 119.24044 166.94786 151.85185 156.52222
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Sorkin\\Aaron_Sorkin_0001.jpg 99.9284 112.12215 146.44986 110.99764 129.22726 139.50548 98.56129 158.24538 143.69301 156.78792
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Sorkin\\Aaron_Sorkin_0002.jpg 106.25216 110.87663 148.61108 114.01551 125.74629 136.82681 101.28278 148.4633 147.10324 151.03769
I:\\FaceRecognition\\Dataset\\LFW\\lfw\\Aaron_Tippin\\Aaron_Tippin_0001.jpg 102.4665 113.068214 141.16948 111.25126 128.69852 135.457 107.12597 160.25366 137.23042 158.30319
```
每行分别是 图片路径、右眼坐标、左眼坐标、鼻尖坐标、右嘴角坐标、左嘴角坐标,以空格分割。

RetinaFace