配置面部数据增加的代码环境流程记录

UPDATE:本文已被收录到原作者的GITHUB Wiki中:https://github.com/iacopomasi/face_specific_augm/wiki


面部增加代码地址:

https://github.com/iacopomasi/face_specific_augm

论文原文:

http://www.openu.ac.il/home/hassner/projects/augmented_faces/


分4个小节叙述,建议概览一遍再从0开始按本文配置

0.

下面是配置过程,

2017年4月23日

在Linux Ubuntu 16.04LTS上安装

首先安装Anaconda

https://www.continuum.io/downloads

下载后是一个.sh文件,

使用bash ./*.sh安装

此时conda并不能使用,

(conda是一种类似于homebrew或者pip的工具)

需要添加环境变量:

# 将anaconda的bin目录加入PATH,根据版本不同,也可能是~/anaconda3/bin
echo 'export PATH="~/anaconda2/bin:$PATH"' >> ~/.bashrc
# 更新bashrc以立即生效
source ~/.bashrc

现在就可以使用conda了,使用

which conda或者conda --version查看是不是安装好了


1. 

我们的第一个目标是配置原文中的:

Dependencies

使用conda来安装,比挨个安装快得多

conda install -n matplotlib numpy scipy scikit-learn

这里可能会出现错误,试试

conda install -c conda-forge matplotlib=2.0.0

或者
conda install matplotlib numpy scipy scikit-learn

安装Dlib:[1]

conda install -c menpo dlib=18.18

安装opencv[3]

conda install -c menpo opencv3=3.2.0

这个命令行可能会更新,可以去:https://anaconda.org/menpo/opencv3 看看最新的命令,或者手动下载

引用3中的博客,其中的命令行就已经失效了


2.

以上就安装好了环境

然后

git clone https://github.com/iacopomasi/face_specific_augm.git

把代码拷贝到本地,运行一个例子试试

python demo.py input/input_1.jpg

方式

报错:ImportError: No module named _sysconfigdata_nd

解决:

sudo ln -s /usr/lib/python2.7/plat-*/_sysconfigdata_nd.py /usr/lib/python2.7/

报错:ImportError: No module named math

其实出现连math模块都没有,就说明了很多问题,

这时候输入python,命令行返回python运行环境是anaconda,但是再输入

which python

返回的是

/usr/bin/python

也就是说,编译器用的是anaconda的python,但是调用的各种模块仍然是系统自带的

这时候需要创建python的anaconda运行环境[4]

# 创建一个名为python27的环境,指定Python版本是2.7(不用管是2.7.x,conda会为我们自动寻找2.7.x中的最新版本)
conda create --name python27 python=2.7

运行环境就创建好了,需要切换到运行环境里:输入

source activate python27

这时候再输入which python查看版本,会显示

/home/bert/anaconda2/envs/python27/bin/python

说明终于到达了anaconda的环境,

这时候再重复1.中的各种conda安装

(conda本质上是包管理器,用anaconda的环境而不是系统自带的环境,就是因为conda可以方便的下载并配置各种包如numpy)

 另外:

1. 

如果环境变量出现了问题,比如在anaconda安装的最后一步,没有选择添加环境变量(也就是路径),可以手动添加:

sudo gedit ~/.bashrc

在最后一行添加上

export PATH="~/anaconda2/bin:$PATH"

2.

# 查看当前环境下已安装的包[2]
conda list


# 删除package
conda remove -n python27 numpy
 

4.测试demo

 运行一个demo试一试:

python demo.py input/input_1.jpg

 发现出错了,说

ValueError: too many values to unpack

于是根据

http://stackoverflow.com/questions/25504964/opencv-python-valueerror-too-many-values-to-unpack

进行修改,增加了一个下划线,然后出现了新的错误

cv2.error: <PATH_TO_OPENCV>/opencv-3.2.0/modules/imgproc/src/imgwarp.cpp:4956: error: (-215) dst.cols < SHRT_MAX && dst.rows < SHRT_MAX && src.cols < SHRT_MAX && src.rows < SHRT_MAX in function remap

然后根据

https://github.com/iacopomasi/face_specific_augm/issues/3

应该是Opencv的版本问题,毕竟作者没有在readme中说明他自己的详细运行环境,只是说了用Linux

我的OpenCV版本是3.2.0

使用

conda install -c menpo opencv=2.4.11

安装2.4的版本(我用了这个,亲测可以跑通代码)

或者选择

conda install -c menpo opencv3=3.1.0

都可以


万事俱备,开始运行

输入

python demo.py input/input_1.jpg

,经过噼里啪啦的一行行跳跃,

搞定,去output文件夹下查看:

下面这是原图:

下面是各种转换后的图片

以上就是完整的实验过程

这次调代码,配环境的过程真的是曲折无比ʕ •ᴥ•ʔ

总之,不能放弃啊~

睡一觉起来,可能就有了灵感~

加油!


Reference:

[1]  python下安装dlib库 http://blog.csdn.net/jhw_xf/article/details/53321272

[2]  Anaconda使用总结 http://www.jianshu.com/p/2f3be7781451

[3]  怎样用conda安装opencv http://www.cnblogs.com/MrLJC/p/4245925.html

[4]  Anaconda使用教程 http://www.afox.cc/archives/390 

原文地址:https://www.cnblogs.com/QingHuan/p/6753440.html