当前位置: 首页 > 工具软件 > InsightFace > 使用案例 >

windows linux CPU insightface

羊禄
2023-12-01

2021年7月19日,为了在windows和linux平台上,只有CPU没有GPU的情况下,使用insightface,在过五关斩六将后终于将程序跑起来了。

遇到的问题

  1. 官方README文档的资料不全。
  2. 网上找到的用户使用步骤普遍是2019年和之前的,已经变更。
  3. 我只用CPU,不用GPU。

解决方法

  • README资料不全,所以我找到视频教程,跟着操作。视频教程中的README,我用git的查看它的历史版本,找到umdFace下载地址。
  • 我自己整理了使用步骤见后文。
  • CUDA必须装在GPU环境里。代码已经不需要更改。

使用步骤

  • 启动虚拟环境,我用的python分别是3.5(Windows)和3.7 (Linux)
virtualenv insightface_env
source insightface_env/Script/activate   -- Windows
source insightface_env/lib/activate -- Linux
  • 安装依赖包。我用的CPU,没有cuda,所以别人装的是mxnet-cu80或者90(根据cuda的8.0版本还是9.0版本),我装的是mxnet。一开始pip install mxnet-cu80,运行时报错OSError: [WinError 126] 找不到指定的模块。应该就是Cuda的ddl没有。
pip install -U six scipy scikit-learn opencv-python scikit-image easydict mxnet
  • 将insightface/recognition/arcface_mxnet/sample_config.py复制一份起名叫config.py,并在其中添加umd数据配置词典:
dataset.umd = edict()
dataset.umd.dataset = 'umd'
dataset.umd.dataset_path = '../datasets/faces_umd'
dataset.umd.num_classes = 8277
dataset.umd.image_shape = (112, 112, 3)
dataset.umd.val_targets = ['lfw', 'cfp_fp', 'agedb_30']
  • 把从Dataset-Zoo下载的umdFace数据集,放到…/datasets目录下并解压
  • 编辑环境变量和启动命令。放在run.sh文件里:
export MXNET_CPU_WORKER_NTHREADS=1
export MXNET_ENGINE_TYPE=ThreadedEnginePerDevice

CUDA_VISIBLE_DEVICES='' python -u train.py --network r100 --loss arcface --dataset umd

如果有GPU,CUDA_VISIBLE_DEVICES的值类似CUDA_VISIBLE_DEVICES='0,1,2,3'

  • 在Windows上跑,报内存不足的错误,查看我本机的内存总共16G,有8G空闲。所以放到Linux上运行,128G内存,后来运行时验证,需要50G内存。
 File "c:\jenkins\workspace\mxnet-tag\mxnet\src\storage\./cpu_device_storage.h", line 72
MXNetError: Failed to allocate CPU Memory
  • 现在遇到的问题是模型不收敛,lossvalue非常大甚至是NAN的情况。这样的话在验证集上跑会报错。正在解决之。

参考链接
视频教程

洞见实验室的教程

Insightface的理论支持

 类似资料:

相关阅读

相关文章

相关问答