近幾個月的笑臉識別研究過程中踩了很多坑,擔(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】
2.在檢測輸入欄中輸入http://github.com官網(wǎng)
3.把檢測列表里的TTL值最小的IP輸入到hosts里,并對應(yīng)寫上github官網(wǎng)域名
【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
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
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ò)模型
目前的解決方案是更新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
問題應(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ì)的答案,很不錯。)