欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于开源项目InsightFace 初步开发的细节介绍

程序员文章站 2022-04-05 08:57:36
...

insightFace 项目地址: https://github.com/deepinsight/insightface
洞见实验室给出的参考资料:https://zhuanlan.zhihu.com/p/33750684

一、搭建环境的困惑##

  • python 版本的选择问题

    该项目需要搭建python2 (官方建议python2.7)环境。个人在搭建环境过程中,遇到一个问题——在安装包:easydict的过程中,发现该包只有python2版本,没有python3版本。
    实际安装过程如下:


(py36) [aaa@qq.com ~]# conda install -c https://conda.binstar.org/auto easydict
Fetching package metadata ...............
Solving package specifications: .

UnsatisfiableError: The following specifications were found to be in conflict:
  - easydict -> python 2.7*
  - python 3.6*
Use "conda info <package>" to see the dependencies for each package.

(py36) [aaa@qq.com ~]# conda info easydict
Fetching package metadata .............

ResolvePackageNotFound: 
  - easydict

(py36) [aaa@qq.com ~]# 

所以在发现这个问题之后,不再尝试搭建python3环境。

  • 同一个包,安装了不同版本
    在刚开始尝试搭建环境的过程中,不清楚整体之间的关系,所以参考不同的教程,一股脑各种安装,导致执行一下命令:
conda list  	或者
pip list 

一个依赖包不同版本同时共存。这个时候需要将低版本卸载,使用命令:

pip uninstal 	包名
conda unistall 	包名

二、运行代码出现的bug

在该项目中,使用了mxnet ,mxnet有CPU 版本和GPU 版本。安装过程见官网:

关于开源项目InsightFace 初步开发的细节介绍

我在使用过程中系统环境是:CentOS 7 , 仅支持CPU。
在安装完所有环境之后。运行例子 /insightface/deploy/test.py ,运行之前需要将模型放在目录 …/models/model-r34-amf/model 下。
但是总是出现下边bug:

    raise RuntimeError(error_msg)
RuntimeError: simple_bind error. Arguments:
data: (1, 3, 112, 112)
[17:01:44] src/storage/storage.cc:118: Compile with USE_CUDA=1 to enable GPU usage

一开始很莫名其妙,还以为是自己安装mxnet的过程中选择错了,于是卸载了之前安装好的环境,又重新搭建了一遍,但是还是会出现这个问题。后来转变思路,从认为外部环境有问题转变为认为代码方法有问题。于是轻松在代码中找到了问题所在。
在 脚本 /insightface/deploy/test.py 中,有这样的接口:

parser.add_argument('--gpu', default=0, type=int, help='gpu id')   ## test.py 12行左后

其中出现gpu ,
还有、deploy/face_embedding.py中 有以下代码:

ctx = mx.gpu(args.gpu)

这边是问题所在,由于原项目代码一开始的例子代码是默认跑在支持GPU的环境下的,所以对于仅支持CPU的版本中,没有将有关GPU的方法修改过来,在这里将所有.gpu的 方法,修改为.cpu 即可。
如下如下:

parser.add_argument('--cpu', default=1, type=int, help='gpu id')
ctx = mx.cpu(args.cpu)
相关标签: mxnet