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

作者: 球长爱折腾 | 来源:发表于2018-06-18 10:53 被阅读9次

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

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


    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)

        本文链接:https://www.haomeiwen.com/subject/ditneftx.html