关于人脸识别:基于Facenet下蒙面人脸识别的实践

55次阅读

共计 2273 个字符,预计需要花费 6 分钟才能阅读完成。

写在后面

本文是对 Github 我的项目 Masked-Face-Recognition-using-Facenet 的实际。

实际步骤

一、收集图像

  1. 下载并解压 Masked-Face-Recognition-using-Facenet 我的项目。
  2. 收集图片。这些图片的要求如下:

    • A. 非蒙面人脸图像
    • B. 带眼镜或护目镜的非蒙面人脸图像
    • C. 用任何类型的口罩(如 N -95、布或内科口罩)蒙面
    • D. 用任何类型的口罩如 N -95、布或内科口罩以及眼镜或护目镜遮住脸。
    • E. 用手帕或任何布或围巾遮住脸。
    • F. 戴眼镜或护目镜时,用手帕或任何布或围巾遮住脸。
  3. 新建 dataset 文件夹。在 dataset 文件夹中新建若干文件夹,这些文件夹以你要辨认的人名来命名。在这些文件夹中放入用户口罩图片。目录格局如图所示:
    你也能够不命名为 dataset,批改embeddings_generator.pybase_dir变量即可(见下)。

    二、生成 embeddings

  4. 关上谷歌硬盘,关上 model 文件夹,点击右键下载facenet_keras.h5

    • 谷歌硬盘不须要科 / 学 / 上 / 网,这里提供一个谷歌拜访助手:google-access-helper2021,2021/9/ 7 亲测“红”可用。
  5. 下载结束后,将 facenet_keras.h5 重命名为 facenet.h5 并放到该目录下。

    • 你也能够不命名为 facenet.h5,批改embeddings_generator.py 的第 20 行 model_emb 变量即可:

      # 批改前:model_emb=load_model('facenet.h5')
      
      #批改后:model_emb=load_model('facenet_keras.h5')
      或
      model_emb=load_model('下载的 h5 文件的相应门路')
  6. 关上 embeddings_generator.py 这一文件,批改第 6 行为你的数据集目录。
    如果你将图片放在 dataset\ 人名 目录下,则批改为 base_dir=r'dataset' 即可。

    • 例如,我将人脸照片放在 \Masked-Face-Recognition-using-Facenet-main\dataset\zsq 这一文件夹中,则我批改第 6 行为:

      # 批改前:base_dir=r'Location to the direcotory that contain directories with images of persons to be trained.'
      
      #批改后
      base_dir=r'dataset'
  7. 在命令行应用如下命令装置 MTCNN 包:

    pip install mtcnn
  8. 运行embeddings_generator.py。如果产生以下报错可批改程序:

    • 如果报错

      File "E:\Masked-Face-Recognition-using-Facenet-main\Masked-Face-Recognition-using-Facenet-main\embeddings_generator.py", line 50, in load
      y.append(img.split('/')[-2])
      IndexError: list index out of range

      则能够将 y.append(img.split('/')[-2]) 批改为:

      # 批改前:y.append(img.split('/')[-2])
      
      #批改后
      y.append(img.split('\\')[-2])
    • 如果报错

      File "E:\Masked-Face-Recognition-using-Facenet-main\Masked-Face-Recognition-using-Facenet-main\embeddings_generator.py", line 72, in <module>
      trainx_embed=load_embeddings(trainx_pix)
      NameError: name 'trainx_pix' is not defined

      则能够将 trainx_embed=load_embeddings(trainx_pix) 批改为:

      # 批改前:trainx_embed=load_embeddings(trainx_pix)
      
      #批改后
      trainx_embed=load_embeddings(trainx)

    运行embeddings_generator.py。运行结束如图:

    三、人脸识别

  9. 在 cmd 命令行应用如下命令装置 streamlit 包:

    pip install streamlit

    如果太慢,也可参考 streamlit 装置踩坑应用如下命令:

    pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com streamlit
    

    装置实现后,在命令行应用 streamlit hello 命令进行测试,在 Email: 处按回车即可。如果呈现下图则 streamlit 装置胜利:CTRL+C退出测试。

  10. 在该我的项目文件的目录中关上 cmd 命令行,执行以下命令:

    streamlit run face_recognizer.py
  11. 执行命令后,浏览器会主动关上 http://localhost:8501/ 这一 Streamlit 我的项目。
    期待若干秒、网页加载结束后,点击 Browse files 能够上传你要辨认的图片:
  12. 上传完毕后,期待若干秒,呈现辨认的图片:

参考

Masked-Face-Recognition-using-Facenet
google-access-helper2021
streamlit 装置踩坑

正文完
 0