笑脸识别从零开始研究:BUG记录(1)

近几个月的笑脸识别研究过程中踩了很多坑,担心记录在本地容易不小心给删了,记录一份放在网上

以下为关于笑脸识别的个人自学记录,不具备科学的严谨性,仅作参考


1.硬件

MacBook Air (13-inch, Early 2015)

1.6 GHz Intel Core i5

4 GB 1600 MHz DDR3

Intel HD Graphics 6000 1536 MB

2.软件

程序语言为python

平台为pycharm


【BUG1:pip更新所有包报错】

A6-King:~ superA6$ sudo -s

bash-3.2# pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs pip install -U

bug:

Cannot uninstall 'certifi'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

pip install certifi --ignore-installed requests

sudo pip --ignore-installed certifi

pip freeze --local | grep -v '^\-e' | cut -d = -f 1  | xargs pip install -U --ignore-installed certifi

./anaconda3/lib/python3.6/site-packages(0.11.3)

解决方案:

pip install --upgrade certifi --ignore-installed certifi


【BUG2:无法打开github】

1.打开Dns检测|Dns查询 - 站长工具

2.在检测输入栏中输入http://github.com官网

3.把检测列表里的TTL值最小的IP输入到hosts里,并对应写上github官网域名

github.com


【BUG3:程序更新】

运行某代码时,报错:

NameError:name‘xrange’is not defined

原因:

在Python 3中,range()与xrange()合并为range()。


【BUG4:tensorboard不能启动】

tensorboard启动路径问题,该问题很重要。tensorflow运行后的events文件的路径需要在python启动的时的路径下。

例如在windows启动tensorboard的路径为C:\Users\Administrator>

则events文件必须在该文件下。

tensorboard --logdir=/Users/liuzuoli/anaconda/lib/python3.5/site-packages

tensorboard --logdir=/Users/liuzuoli/cnn_smile/tmp

http://A6-King.local:6006

pip show --files tensorboard

如上图所示,我们收到一个端口号:http://0.0.0.0:6006

解决方案:电脑是直接打不开的,需要打开谷歌浏览器,直接转到http://127.0.0.1:6006/


【BUG5-homebrew安装】

安装过程遇到PermissionError

解决方案:目前通过进入root 模式进入

sudo -s

在Mac OS X 10.11系统以后,/usr/local/等系统目录下的文件读写是需要系统root权限的,以往的Homebrew安装如果没有指定安装路径,会默认安装在这些需要系统root用户读写权限的目录下,导致有些指令需要添加sudo前缀来执行,比如升级Homebrew需要:

$ sudo brew update

如果你不想每次都使用sudo指令,你有两种方法可以选择:

对/usr/local目录下的文件读写进行root用户授权

$ sudo chown -R $USER /usr/local

示例:

$ sudo chown -R wentianen /usr/local

conda create -n tensorflow python=3.5

如何获取系统权限

https://www.jianshu.com/p/138b98e662ed


【BUG6:异常处理机制】

遇到异常自动停止

解决方案:假如异常处理机制,如下

try:

    img = cv2.imread(path_pic + XXXpic)

# 取灰度

    img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# 计算68点坐标

    pos_68 =[]

    rects = detector(img_gray,0)

    landmarks = np.matrix([[p.x,p.y]for pin predictor(img,rects[0]).parts()])

except IndexError:

    print("Error: 没有找到文件或读取文件失败")

else:


【BUG7:facecut】

在facecut程序中

RuntimeError: Unsupported image type,must be 8bit gray or RGB image.

最初认为是cv.imread的问题,重装了opencv但是没有解决问题

通过pip更新完成问题解决

不过发现问题时而有时而没有

【BUG8:dlib_cut_face_save】

RuntimeError: Unsupported image type,must be 8bit gray or RGB image.

目前猜想原因是因为

img = cv2.imread(path_read+"pic3.JPG")

读取图片为空

采用方式为重装opencv


【BUG9:图片批量截取人脸】

当数据量较大时出现

IndexError: index 179 is out of bounds for axis 0 with size 179

https://stackoverflow.com/questions/34316403/indexerror-index-10000-is-out-of-bounds-for-axis-0-with-size-10000

while(y[i]>= 0)and(i < len(time)):


【BUG10:批量剪切人脸的特大bug】

最后发现

只需要移除不能识别的名称的图片之后就可以运行

(尴尬)

如果找不到就可以改

for iin range(1,len(coll)):

和大小无关,和名字有关

果然我删去部分名字的文件后,从原先的31张人脸扩大到71张人脸   

现在可以确定读取图片是按照文件名顺序的

反思主要原因是因为当图片无人脸的时候,无法解决,这里需要加一个if语句


【BUG11】

问题主要在两个地方:

from sklearn.model_selectionimport train_test_split

from sklearn.neural_networkimport MLPClassifier        # 神经网络模型中的多层网络模型

目前的解决方案是更新sklearn0.18

pip show[package]

anaconda本身自带包管理器conda


【BUG12:不能import opencv】

>>> import cv2

Traceback(most recent call last):

  File "",line 1,in

ImportError: dlopen(/usr/local/lib/python2.7/site-packages/cv2.so,2): Symbol not found: _PyCObject_Type

  Referenced from: /usr/local/lib/python2.7/site-packages/cv2.so

  Expected in: flat namespace

 in /usr/local/lib/python2.7/site-packages/cv2.so

问题应该调用了另外一个python2.7而不是python3.6

解决了这个问题之后,通过

https://stackoverflow.com/questions/45643650/importerror-no-module-named-cv2-python3

sudo python3.5 -m pip install opencv-python

解决了完整问题

brew install opencv3--with-python3 --c++11 --with-contrib --with-ffmpeg --without-python

一个解决方案:

https://blog.csdn.net/willduan1/article/details/53898440

cd /usr/local/lib/python3.6/site-packages

ln -s /usr/local/Cellar/opencv/3.4.1_2/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so/

ln -s /usr/local/Cellar/opencv/3.4.1_2/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so/

ln -s /usr/local/Cellar/opencv/3.4.1_2/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so

最后的经验就是有问题一定要用Google,用英文搜索,可以搜索到很多优质的答案,很不错。)

你可能感兴趣的:(笑脸识别从零开始研究:BUG记录(1))