笑臉識別從零開始研究:BUG記錄(1)

近幾個月的笑臉識別研究過程中踩了很多坑,擔(dān)心記錄在本地容易不小心給刪了,記錄一份放在網(wǎng)上

以下為關(guān)于笑臉識別的個人自學(xué)記錄,不具備科學(xué)的嚴(yán)謹(jǐn)性,僅作參考


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更新所有包報(bào)錯】

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官網(wǎng)

3.把檢測列表里的TTL值最小的IP輸入到hosts里,并對應(yīng)寫上github官網(wǎng)域名

github.com


【BUG3:程序更新】

運(yùn)行某代碼時(shí),報(bào)錯:

NameError:name‘xrange’is not defined

原因:

在Python 3中,range()與xrange()合并為range()。


【BUG4:tensorboard不能啟動】

tensorboard啟動路徑問題,該問題很重要。tensorflow運(yùn)行后的events文件的路徑需要在python啟動的時(shí)的路徑下。

例如在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

解決方案:電腦是直接打不開的,需要打開谷歌瀏覽器,直接轉(zhuǎn)到http://127.0.0.1:6006/


【BUG5-homebrew安裝】

安裝過程遇到PermissionError

解決方案:目前通過進(jìn)入root 模式進(jìn)入

sudo -s

在Mac OS X 10.11系統(tǒng)以后,/usr/local/等系統(tǒng)目錄下的文件讀寫是需要系統(tǒng)root權(quán)限的,以往的Homebrew安裝如果沒有指定安裝路徑,會默認(rèn)安裝在這些需要系統(tǒng)root用戶讀寫權(quán)限的目錄下,導(dǎo)致有些指令需要添加sudo前綴來執(zhí)行,比如升級Homebrew需要:

$ sudo brew update

如果你不想每次都使用sudo指令,你有兩種方法可以選擇:

對/usr/local目錄下的文件讀寫進(jìn)行root用戶授權(quán)

$ sudo chown -R $USER /usr/local

示例:

$ sudo chown -R wentianen /usr/local

conda create -n tensorflow python=3.5

如何獲取系統(tǒng)權(quán)限

http://www.itdecent.cn/p/138b98e662ed


【BUG6:異常處理機(jī)制】

遇到異常自動停止

解決方案:假如異常處理機(jī)制,如下

try:

? ? img = cv2.imread(path_pic + XXXpic)

# 取灰度

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

# 計(jì)算68點(diǎn)坐標(biāo)

? ? 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.

最初認(rèn)為是cv.imread的問題,重裝了opencv但是沒有解決問題

通過pip更新完成問題解決

不過發(fā)現(xiàn)問題時(shí)而有時(shí)而沒有

【BUG8:dlib_cut_face_save】

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

目前猜想原因是因?yàn)?/p>

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

讀取圖片為空

采用方式為重裝opencv


【BUG9:圖片批量截取人臉】

當(dāng)數(shù)據(jù)量較大時(shí)出現(xiàn)

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】

最后發(fā)現(xiàn)

只需要移除不能識別的名稱的圖片之后就可以運(yùn)行

(尷尬)

如果找不到就可以改

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

和大小無關(guān),和名字有關(guān)

果然我刪去部分名字的文件后,從原先的31張人臉擴(kuò)大到71張人臉? ?

現(xiàn)在可以確定讀取圖片是按照文件名順序的

反思主要原因是因?yàn)楫?dāng)圖片無人臉的時(shí)候,無法解決,這里需要加一個if語句


【BUG11】

問題主要在兩個地方:

from sklearn.model_selectionimport train_test_split

from sklearn.neural_networkimport MLPClassifier? ? ? ? # 神經(jīng)網(wǎng)絡(luò)模型中的多層網(wǎng)絡(luò)模型

目前的解決方案是更新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

問題應(yīng)該調(diào)用了另外一個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

最后的經(jīng)驗(yàn)就是有問題一定要用Google,用英文搜索,可以搜索到很多優(yōu)質(zhì)的答案,很不錯。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容