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

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

一、搭建环境的困惑

  • python 版本的选择问题

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


(py36) [root@localhost ~]# 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) [root@localhost ~]# conda info easydict
Fetching package metadata .............

ResolvePackageNotFound: 
  - easydict

(py36) [root@localhost ~]# 

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

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

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

pip uninstal    包名
conda unistall  包名

二、运行代码出现的bug

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

安装选项

我在使用过程中系统环境是: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.gpu(args.cpu)

猜你喜欢

转载自blog.csdn.net/jobbofhe/article/details/79793689