基于傳統(tǒng)檢測(cè)算法hog+svm實(shí)現(xiàn)圖像多分類
直接上效果圖:

代碼倉庫和視頻演示b站視頻005期:
到此一游7758258的個(gè)人空間-到此一游7758258個(gè)人主頁-嗶哩嗶哩視頻
代碼展示:

數(shù)據(jù)集在datasets文件夾下

運(yùn)行01train.py即可訓(xùn)練
訓(xùn)練結(jié)束后會(huì)保存模型在本地
運(yùn)行02pyqt.py會(huì)有一個(gè)可視化的界面,通過點(diǎn)擊按鈕加載圖片識(shí)別。

科普相關(guān)知識(shí):
傳統(tǒng)圖像分類檢測(cè)算法通常包括以下幾種:
支持向量機(jī)(SVM):SVM是一種監(jiān)督學(xué)習(xí)算法,用于二分類和多分類問題。它通過找到一個(gè)最優(yōu)超平面來將不同類別的數(shù)據(jù)分開。
k最近鄰(K-Nearest Neighbors,KNN):KNN是一種簡單有效的非參數(shù)算法。對(duì)于一個(gè)未知樣本,KNN通過計(jì)算其與訓(xùn)練集中最近的k個(gè)樣本的距離,然后根據(jù)這些近鄰樣本的標(biāo)簽來進(jìn)行分類。
決策樹(Decision Trees):決策樹是一種樹狀結(jié)構(gòu)的分類模型,通過在特征空間中遞歸劃分?jǐn)?shù)據(jù),最終將數(shù)據(jù)分到不同的類別。
隨機(jī)森林(Random Forest):隨機(jī)森林是一種集成學(xué)習(xí)方法,它結(jié)合多個(gè)決策樹來進(jìn)行分類,并通過投票或平均等方式得出最終結(jié)果。
AdaBoost(自適應(yīng)增強(qiáng)算法):AdaBoost是一種集成學(xué)習(xí)算法,通過迭代地訓(xùn)練一系列弱分類器,并根據(jù)它們的表現(xiàn)進(jìn)行加權(quán),從而得到一個(gè)強(qiáng)分類器。
感知器(Perceptron):感知器是一種最早的神經(jīng)網(wǎng)絡(luò)模型,用于二分類問題。它通過對(duì)輸入進(jìn)行加權(quán)求和,并經(jīng)過一個(gè)閾值函數(shù)來進(jìn)行分類。
尺度不變特征變換(Scale-Invariant Feature Transform,SIFT):SIFT是一種用于圖像特征提取的算法,通過尋找圖像中的局部特征點(diǎn),并提取與尺度無關(guān)的特征描述符。
主成分分析(Principal Component Analysis,PCA):PCA是一種降維算法,可以用于將高維特征轉(zhuǎn)換為低維特征,以減少數(shù)據(jù)的復(fù)雜性。
這些傳統(tǒng)圖像分類檢測(cè)算法在一些簡單的圖像分類任務(wù)上表現(xiàn)良好,但隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(CNN)等深度學(xué)習(xí)算法在圖像分類領(lǐng)域取得了顯著的進(jìn)展,特別是在大規(guī)模和復(fù)雜數(shù)據(jù)集上的分類任務(wù)中。
PyQt 是一個(gè)用于開發(fā)圖形用戶界面(GUI)的Python綁定庫。它將Qt框架與Python編程語言結(jié)合起來,使開發(fā)者可以使用Python語言創(chuàng)建功能強(qiáng)大、跨平臺(tái)的GUI應(yīng)用程序。
Qt 是一種流行的C++開發(fā)框架,提供了豐富的GUI組件和工具,可用于構(gòu)建各種類型的應(yīng)用程序,包括桌面應(yīng)用程序、移動(dòng)應(yīng)用程序和嵌入式系統(tǒng)。PyQt允許開發(fā)者通過簡單而直觀的Python語法來利用Qt的功能,從而加快應(yīng)用程序的開發(fā)速度。
PyQt提供了一系列模塊和類,使開發(fā)者能夠創(chuàng)建窗口、按鈕、文本框、列表框等各種GUI元素,并為這些元素添加交互性和事件處理。此外,PyQt還支持多線程、數(shù)據(jù)庫連接、網(wǎng)絡(luò)通信等功能,使開發(fā)者能夠構(gòu)建復(fù)雜的GUI應(yīng)用程序。
總之,PyQt是一個(gè)強(qiáng)大的工具,使開發(fā)者能夠使用Python語言開發(fā)跨平臺(tái)的GUI應(yīng)用程序,并利用Qt框架提供的豐富功能和工具。
HOG(Histogram of Oriented Gradients)是一種計(jì)算機(jī)視覺中常用的特征描述子。它被廣泛應(yīng)用于目標(biāo)檢測(cè)和人體姿態(tài)估計(jì)等任務(wù)。
HOG特征描述子通過對(duì)圖像進(jìn)行局部梯度計(jì)算,提取了圖像中不同區(qū)域的方向梯度信息。具體而言,HOG將圖像劃分為小的局部塊,并計(jì)算每個(gè)塊內(nèi)像素點(diǎn)的梯度方向和強(qiáng)度。然后,將這些局部塊的梯度方向信息統(tǒng)計(jì)到直方圖中,形成一個(gè)特征向量表示該塊的特征。最后,將所有塊的特征向量拼接在一起,形成整個(gè)圖像的HOG特征描述子。
HOG特征具有以下特點(diǎn):
對(duì)于光照變化、陰影以及一定程度的幾何變換具有一定的魯棒性。
通過統(tǒng)計(jì)局部塊的梯度方向信息,能夠捕捉到物體的邊緣和紋理特征。
HOG特征描述子維度相對(duì)較低,便于快速計(jì)算和存儲(chǔ)。
在目標(biāo)檢測(cè)領(lǐng)域,HOG特征通常與機(jī)器學(xué)習(xí)算法(例如支持向量機(jī))結(jié)合使用,通過訓(xùn)練模型來識(shí)別圖像中的目標(biāo)。HOG特征在人體檢測(cè)方面表現(xiàn)良好,尤其在行人檢測(cè)上應(yīng)用廣泛,并為其他目標(biāo)檢測(cè)任務(wù)提供了一種有效的特征表示方法。
SVM(Support Vector Machine)是一種常見的監(jiān)督學(xué)習(xí)算法,廣泛應(yīng)用于模式分類和回歸任務(wù)中。
SVM的目標(biāo)是找到一個(gè)最優(yōu)的超平面,將不同類別的樣本點(diǎn)在特征空間中盡可能地分開。超平面可以被看作是一個(gè)決策邊界,用于對(duì)新的未標(biāo)記數(shù)據(jù)進(jìn)行分類。SVM通過選擇支持向量(距離超平面最近的訓(xùn)練樣本點(diǎn))來確定分類邊界,從而實(shí)現(xiàn)對(duì)樣本的有效分類。
SVM具有以下特點(diǎn):
可以處理高維特征空間,并且在處理高維數(shù)據(jù)時(shí)表現(xiàn)良好。
通過引入核函數(shù),可以將低維非線性可分問題映射到高維空間進(jìn)行線性分類,從而提高分類準(zhǔn)確率。
SVM具有較強(qiáng)的魯棒性,對(duì)于一些噪聲和異常值具有一定的容忍度。
在訓(xùn)練過程中,SVM只使用支持向量,大大減少了存儲(chǔ)和計(jì)算開銷。
SVM的應(yīng)用包括圖像分類、文本分類、生物信息學(xué)、人臉識(shí)別等領(lǐng)域。它在機(jī)器學(xué)習(xí)中被認(rèn)為是一種經(jīng)典的方法,因其穩(wěn)定性和分類性能而備受關(guān)注。