用Python實現人臉檢測-3(BP-ANN Classification)

嗯,此次小項目的最後一個模塊,也是最為核心的模塊,後向反饋人工神經網絡,咱簡稱BP-ANN。

本模塊通過一點的樣本訓練之後,就是用來進行分類了。

這也是咱做的最為醜陋的一個模塊了,整個代碼寫下來,可讀性不是一般的差。。。。有時候,自己都不知道在寫得什麼玩意兒,真是給跪了,因為沒有使用向量化實現,完全使用迭代的方法,效率簡直。。。。反正就是寫得很醜陋,而且由於某個設計的缺陷,導致 隱層和輸出層的神經元數目不能大於輸入量。。。。orz 很多时候跑起來還會經常拋出“超出數域”的錯誤。。。。不知道是個什麼情況,不過還真覺得python在處理實數上,略為糾結,咱用了無數多個round函數來降低運算精度。 Continue reading “用Python實現人臉檢測-3(BP-ANN Classification)” >

用Python實現人臉檢測-2(數據預處理)

其實,這模塊的PCA部分其實可以不要的,只要對圖像如果預處理得當的話。

但還決定實現一個PCA,因為既然學到了,還是嘗試實現一個,裏面用到numpy模塊進行線性運算。

一般用以檢測的圖片,咱都決定先按比例變換到一個小圖(這裡固定為320的寬度,寬度自適應),當然同時還將像素數據轉換成8位灰度(相比較RGB,數據量少了2/3),然後再對這張小圖進行滑動窗口操作,一旦得到人臉的坐標數據,再按照比例恢復到原圖的坐標位置。這樣應該可以提升一定的效率。

至於使用PCA與否,關鍵還是看你自己的考慮吧,可能并不需要這個,也能得到很好的效率,因為即使20*20的方格裏,也有400個像素特徵,這或許還並不能算多。不過咱還是實現了,在400維降到2維,居然能擁有100%的方差保留。 Continue reading “用Python實現人臉檢測-2(數據預處理)” >

用Python實現人臉檢測-1(滑動窗口)

那就接著剛剛折騰的課程,來實現個小項目(face detection)吧。

代碼神馬的都放到github上了,應該會接著不斷優化,因為個人覺得這個東西,性能堪憂,只能作為實驗性質,基本沒有實用意義。

大家需要注意下,face detection跟face recognition的區別。

具體實現的思想,大部份可以參考上一篇博文噢。

但是還是扯一下吧,咱是這麼想的,用滑動窗口技術劃出一個個圖塊,然後用BP-ANN分類器進行人臉檢測。

當然說起來是挺簡單的,但是這其中還要涉及獲取訓練樣本(咱只能人工折騰這個了。。),各種預處理,然後還需要對BP-ANN分類器進行訓練,調整神馬的。

因為自己是個新手,所以代碼寫得不好看,也不優雅。但是’make it works,keep it simple’,咱還是基本做到了,雖然聽起來很像是借口的樣子。 Continue reading “用Python實現人臉檢測-1(滑動窗口)” >