写在前面

本文是对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文件夹中新建若干文件夹,这些文件夹以你要识别的人名来命名。在这些文件夹中放入用户口罩图片。目录格式如图所示:image.png
    你也可以不命名为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。运行完毕如图:image.png

    三、人脸识别

  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安装成功:image.pngCTRL+C退出测试。

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

    streamlit run face_recognizer.py
  11. 执行命令后,浏览器会自动打开http://localhost:8501/这一Streamlit项目。
    等待若干秒、网页加载完毕后,点击Browse files可以上传你要识别的图片:image.png
  12. 上传完毕后,等待若干秒,出现识别的图片:image.png

参考

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


ShadowCK
51 声望9 粉丝

这个人是个萌新,什么都没有留下。