关于开源项目InsightFace 初步开发的细节介绍
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 版本。安装过程见官网:
我在使用过程中系统环境是: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)
上一篇: C++11 新特性
下一篇: 如何做一个网页送给女朋友做生日礼物