計算機視覺目標檢測的框架與過程
其實上面這個模式分類的過程是適合很多領域的,例如影象啊,語音識別等等。那麼這整乙個過程關鍵點在哪呢?
(1)特徵選取:
感覺目標比較盛行的有:haar特徵、lbp特徵、hog特徵和shif特徵等;他們各有千秋,得視你要檢測的目標情況而定,例如:
拳頭:紋理特徵明顯:haar、lbp(目前有將其和hog結合);
手掌:輪廓特徵明顯:hog特徵(行人檢測一般用這個);
(在部落格中,我會參考各牛人的部落格和資料來整理haar特徵、lbp特徵、hog特徵和shif特徵等這些內容,具體見部落格更新)
(2)分類器演算法:
感覺目標比較盛行的有:svm支援向量機、adaboost演算法等;其中檢測行人的一般是hog特徵+svm,opencv中檢測人臉的一般是haar+adaboost,opencv中檢測拳頭一般是lbp+ adaboost;
物體識別 是需要根據不同特徵的物體,來選擇相應的識別演算法的。 顏色特徵 形狀特徵 紋理特徵
號牌識別
字元識別 ocr 模板匹配 bp或神經網路訓練
水杯識別
手勢識別
區域性特徵學習,很好的參考。
建立訓練樣本 opencv_createsamples
特徵提取
訓練分類器 opencv_haartraining
人臉檢測:
rosrun test test_node n 10001 小白
rosrun test test_node y
在opencv2.4.2中有乙個facerecognizer類,該類用於完**臉識別,目前其實現的方法有pca,lda,lbp三種方法。這裡僅對學習其pca方法進行一下總結。
特徵臉方法描述了乙個全面的方法來識別人臉:面部影象是乙個點,這個點是從高維影象空間找到它在低維空間的表示,這樣分類變得很簡單。低維子空間低維是使用主元分析(principal component analysis,pca)
找到的,它可以找擁有最大方差的那個軸。簡單來說,pca方法就是將影象投影到訓練集經過k-l變換所得到的特徵空間,然後在投影空間中計算距離,最近的也就是**到的class了。pca可以將高維資料降到低維而保證丟失的資訊量最少。低維資料也就方便的計算,加快了計算速度。主成分分析是一種基於特徵臉的方法,找到使資料中最大方差的特徵線性組合。這是乙個表現資料的強大方法,但它沒有考慮類別資訊,並且在扔掉主元時,同時許多有鑑別的資訊都被扔掉。假設你資料庫中的變化主要是光照變化,那麼pca
此時幾乎失效了。
而線性鑑別分析在降維的同時考慮類別資訊,由統計學家
sir r. a. fisher
發明。facerecognizer在opencv2.4.2是人臉識別的基類,pca,lda,lbp三種不同的方法繼承於它。pca相對應的類是eigenfaces,在檔案modules/contrib/src/facerec.cpp中可以找到他的實現。
人臉檢測完整過程例項:參考 基於ubuntu下完成演示。
從樣本庫中生成樣本檔案 命令代替windows下面的dir /b >pos_image.txt ll *.bmp|awk '' >pos_image.txt
ls | sed "s:^:`pwd`/:" | sed "s/^/$hostname:/g"
alias lf='ls | sed "s:^:`pwd`/:" | sed "s/^/$hostname:/g"'
awk ''
最終版:
正樣本:ll *.bmp |awk '' >pos_image.txt
負樣本:ll *.png |awk '' >neg_image.txt
建立樣本: ./opencv_createsamples -vec pos.vec -info pos_image.txt -bg neg_image.txt -w 24 -h 24 -num 165 生成pos.vec
其中的-vec是指定後面輸出vec檔案的檔名,-info指定正樣本描述檔案,-bg指定負樣本描述檔案,-w和-h分別指正樣本的寬和高,-num表示正樣本的個數。執行完該命令後就會在當前目錄下生產乙個pos.vec檔案了。
訓練過程:./opencv_haartraining -data xml -vec pos.vec -bg neg_image.txt -nsplits 1 -sym -w 24 -–h 24 -mode all -mem 1280 -npos 164 -nneg 200 生成xml
其中-data為輸出xml中間檔案的位置,-sym表示訓練的目標為垂直對稱,-nsplits 1表示使用簡單的stump classfier分類。-mem 1280 表示允許使用計算機的1280m記憶體,-mode all 表示使用haar特徵集的種類既有垂直的,又有45度角旋轉的。
如果不指定npos和nneg的話,預設值為2000,沒法繼續執行,直接異常。
出現opencl錯誤,一度無法繼續進行下去。經查證,對於非gpu上執行的情況,建議關閉opencl。即設定cmake with_opencl=off重新編譯安裝。
most probably there is some problem with your installation. if you are not working with gpu, then i recommend you to turn off all cuda/opencl modules in opencv during compilation.
最終正確的列印過程:
面部識別系統流程
face recognition from traditional to deep learning methods 一 什麼是人臉識別?廣義的人臉識別實際包括構建人臉識別系統的一系列相關技術,包括人臉影象採集 人臉定位 人臉識別預處理 身份確認以及身份查詢等 而狹義的人臉識別特指通過人臉進行身份確...
射頻識別系統模型
射頻識別系統模型 摘要 射頻識別系統工作過程中,空間傳輸通道中發生的過程可歸結為三種事件模型,本文以此三種事件模型的描述來介紹射頻識別系統的典型工作方式與工作流程。射頻標籤 射頻標籤 與閱讀器 讀寫器 之間通過兩者的天線架起空間電磁波傳輸的通道。細分射頻標籤與閱讀器之間的電磁耦合,包含兩種情況 即近...
細胞分類 識別 系統
採用影象處理和模式識別等技術實現了對醫療上的各種細胞的分類識別問題,比如對白細胞的分類 中性粒細胞 淋巴細胞 嗜酸性細胞等的分類識別 計數問題。對細胞的分類首要問題是細胞的提取工作,從複雜多變的背景下把細胞輪廓提取出來就需要動態的分析閾值來獲得細胞輪廓,然後在利用細胞的輪廓等特徵,對特徵進 行分類,...