近几个月的笑脸识别研究过程中踩了很多坑,担心记录在本地容易不小心给删了,记录一份放在网上
以下为关于笑脸识别的个人自学记录,不具备科学的严谨性,仅作参考
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】
2.在检测输入栏中输入http://github.com官网
3.把检测列表里的TTL值最小的IP输入到hosts里,并对应写上github官网域名
【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
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
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 # 神经网络模型中的多层网络模型
目前的解决方案是更新sklearn到0.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,用英文搜索,可以搜索到很多优质的答案,很不错。)
网友评论