目標的檢測大體框架

2021-06-27 10:47:59 字數 1999 閱讀 6864

**zouxy09大哥的部落格,對入門級別的我大大的有啟發。

目標檢測分為以下幾個步驟:

1、訓練分類器所需訓練樣本的建立:

訓練樣本包括正樣本和負樣本;其中正例樣本是指待檢目標樣本(例如人臉或汽車等),負樣本指其它不包含目標的任意(如背景等),所有的樣本都被歸一化為同樣的尺寸大小(例如,20x20)。

2、特徵提取:

由影象或波形所獲得的資料量是相當大的。例如,乙個文字影象可以有幾千個資料,乙個心電圖波形也可能有幾千個資料。為了有效地實現分類識別,就要對原始資料進行變換,得到最能反映分類本質的特徵。這就是特徵選擇和提取的過程。一般我們把原始資料組成的空間叫測量空間,把分類識別賴以進行的空間叫做特徵空間,通過變換,可把在維數較高的測量空間中表示的模式變為在維數較低的特徵空間中表示的模式。

3、用訓練樣本來訓練分類器:

從數學來表達,分類器就是乙個函式y=f(x),x是某個事物的特徵,y是類別,通俗的說就是例如,你輸入張三的特徵x1,分類器就給你認出來這個是張三y1,你輸入李四的特徵x2,它就給你認出來這個是李四y2。那麼分類器是個函式,它的數學模型是什麼呢?一次函式y=kx+b?高次函式?等等好複雜的都有,我們需要先確定它的模型;確定了模型後,模型是不是由很多引數呢?例如上面的一次函式y=kx+b的k和b,高斯函式的均值和方差等等。這個就可以通過什麼最小化分類誤差、最小化懲罰啊等等方法來確定,其實訓練分類器好像就是找這些引數,使得達到最好的分類效果。呵呵,不知道自己說得對不對。

另外,為了使分類檢測準確率較好,訓練樣本一般都是成千上萬的,然後每個樣本又提取出了很多個特徵,這樣就產生了很多的的訓練資料,所以訓練的過程一般都很耗時的。

4、利用訓練好的分類器進行目標檢測:

得到了分類器就可以用來對你輸入的影象進行分類了,也就是在影象中檢測是否存在你想要檢測的目標。一般的檢測過程是這樣的:用乙個掃瞄子視窗在待檢測的影象中不斷的移位滑動,子視窗每到乙個位置,就會計算出該區域的特徵,然後用我們訓練好的分類器對該特徵進行篩選,判定該區域是否為目標。然後因為目標在影象的大小可能和你訓練分類器時使用的樣本大小不一樣,所以就需要對這個掃瞄的子視窗變大或者變小(或者將影象變小),再在影象中滑動,再匹配一遍。

5、學習和改進分類器

現在如果樣本數較多,特徵選取和分類器演算法都比較好的情況下,分類器的檢測準確度都挺高的了。但也會有誤檢的時候。所以更高階點的話就是加入了學習或者自適應,也就是說你把這張圖分類錯誤了,我就把這張圖拿出來,標上其正確的類別,再放到樣本庫中去訓練分類器,讓分類器更新、醒悟,下次別再給我弄錯了。你怎麼知道他弄錯了?我理解是:大部分都是靠先驗知識(例如目標本身存在著結構啊或者什麼的約束)或者和跟蹤(目標一般不會運動得太快)等綜合來判斷的。

其實上面這個模式分類的過程是適合很多領域的,例如影象啊,語音識別等等。那麼這整乙個過程關鍵點在哪呢?

(1)特徵選取:

感覺目標比較盛行的有:haar特徵、lbp特徵、hog特徵和shif特徵等;他們各有千秋,得視你要檢測的目標情況而定,例如:

拳頭:紋理特徵明顯:haar、lbp(目前有將其和hog結合);

手掌:輪廓特徵明顯:hog特徵(行人檢測一般用這個);

(在部落格中,我會參考各牛人的部落格和資料來整理haar特徵、lbp特徵、hog特徵和shif特徵等這些內容,具體見部落格更新)

(2)分類器演算法:

感覺目標比較盛行的有:svm支援向量機、adaboost演算法等;其中檢測行人的一般是hog特徵+svm,opencv中檢測人臉的一般是haar+adaboost,opencv中檢測拳頭一般是lbp+ adaboost;

在計算機視覺領域,涉及到的特徵啊,演算法啊等等還是非常非常多的,不斷有牛人在提出新的東西(簡單的哲學+複雜的數學),也不斷有牛人在改進以前的東西,然後隨著歲月的腳步,科技在不停地狂奔著!

目標檢測 目標檢測通用框架總結

目標檢測框架個人總結 以下是筆記中包含的內容 目標檢測網路框架總結 yolov4中有圖 從最開始的神經網路到現在深度更深,模組更多的目標檢測深度學習神經網路,如今大致可以分為two stage detector 典型的為rcnn系列 和 one stage detector 典型為yolo系列 每個...

目標檢測框架mmdetection框架的安裝與測試

1 框架介紹 這個框架還是非常清晰的,整個 從骨架,模型,bbox處理,推斷等都有專門的專案資料夾。而且提供了當前許多主流的目標檢測模型的實現。2 安裝 建議使用conda的方式來安裝,用 重新編譯的方式會出現一些bug。在conda環境下有一些支援的lib容易有,而用傳統的python包的方式,在...

Orcale大體框架

會運用oracle資料庫。掌握oracle資料庫的基本概念和體系結構。掌握pl sql語言及其設計方法。掌握oracle資料庫的管理方法和管理技術。提高大型分布式網路資料庫的設計和應用水平。體系結構篇 是重中之重,是根基所在。主要包括oracle資料庫管理系統的物理結構 邏輯結構 記憶體結構 例項及...