999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenCV和SVM的公共場所行人檢測系統

2021-03-08 01:38:22楊波吳宗蔚朱劍林李航高
電子技術與軟件工程 2021年23期
關鍵詞:特征檢測模型

楊波 吳宗蔚 朱劍林 李航高

(中南民族大學計算機科學學院 湖北省武漢市 430074)

1 引言

隨著經濟的快速發展,城鎮人口的增長,公共場合行人安全的管理和監測如果只靠人力監控將會越來越難,成本越來越高。所以為了應對這種狀況,行人檢測技術應運而生[1]。行人檢測技術,是應用計算機視覺技術以及圖像處理的方法,對圖像或視頻中的行人進行識別和定位。

近年行人識別、辨別、檢測的算法和技術層出不窮,其中有由Redmon等人研究發表的YOLOv3[2]算法可以用于行人識別,這個算法用于行人檢測的優點是計算速度快,缺點是對圖像中的大物體識別效果差[3]。Papgeorgious等人使用小波特征結合SVM進行行人檢測[4],這個技術的優點是可以應對較為復雜的情景,缺點是不擅長描述行人形狀。

本文采用HOG算法提取特征后用SVM處理數據得到檢測行人模型,這個模型在樣本少的情況下進行學習訓練檢測的效果比較準確且實現比較簡單,在很短的訓練周期中就可以得到較好的實現效果。

2 數據源與數據處理

進行行人檢測的模型訓練,需要收集正樣本和負樣本。其中正樣本指的是含有檢測目標的圖片,也就是含有行人的圖像文件;另一種負樣本是不含檢測目標的圖片也就是不含行人的圖像文件,本文中的訓練樣本取自INRIA靜態圖行人檢測數據庫。訓練樣本占總樣本70%,測試樣本占總樣本的30%。訓練使用的兩類樣本部分如圖1和圖2所示。

圖1:訓練用正樣本示例

圖2:訓練用負樣本示例

拍攝的圖像因為環境不同導致圖像的光線強度不同,為了減少這種影響需要對圖像進行處理。另外因為圖像的存儲方式導致圖像大小不一,還需要對每一張圖像大小進行標準化處理。 本文采用OpenCV對輸入的圖像進行上述流程中的標準化處理,以下即是圖像標準化需要進行的工作。

2.1 正樣本的預處理

由于需要提取的是行人的HOG特征,也就是人的形狀,所以需要的是含行人軀體部分的照片數據,則需要把一張正樣本圖片中不含行人的部分剪切掉,盡可能的只保留行人部分,為便于使用OpenCV的HOG算法進行HOG特征的提取,圖片統一尺寸為64*128。為了保證圖片不被壓縮變形,沒有使用cv2.resize(img,(64,128))方法,而是采用手動剪切的方法處理圖片。

INRIA庫中Train文件夾下有614張正樣本圖片,一共可以剪切成2416張單個行人的圖片,圖片分辨率為96*160,通過裁剪算法把圖片剪切成64*128大小的圖片即可。裁剪正樣本的方法為:把讀取到的96*128的圖片放入到pos_list中構建一個pos_train列表保存剪切后的圖片。剪切的原理為循環遍歷pos_list中每一張圖片,因為圖片的人體部分大概距離上下左右的邊界都是16像素,所以取的數據就是第二維度是16到16+128的數據,第一維度是16到16+64的數據。這樣的照片尺寸就可轉換為64*128大小,且保證了人體的部分在圖片中央。這樣通過剪切就可以得到比較理想的正樣本集,如圖3所示。

圖3:剪切正樣本圖示

2.2 負樣本的預處理

因為負樣本中不含行人,所以只需要進行尺寸大小的統一就可,也就是意味著直接把負樣本的原始圖片轉換為64*128大小的圖片即可。和正樣本圖片統一大小的方法一樣,處理負樣本也有兩種方法:一是使用cv2.resize函數暴力地把原圖壓縮為64*128尺寸的圖片;二就是使用剪切的方法把原圖剪切為64*128尺寸的圖片。

負樣本使用cv2.resize方法進行處理的主要缺點是扭曲比例,且一張原圖只能得到一張64*128尺寸的圖片,不便于后面進行模型自舉操作。所謂的模型自舉就是用預處理后的正樣本加上預處理后的負樣本得到的樣本數據進行模型訓練,得到第一次訓練的模型;然后使用這個初始模型對沒有處理前的原始負樣本照片進行識別,把能識別出框的照片保存(錯誤識別),因為最終是要把圖片中的行人框出,然而在負樣本中沒有行人所以當進行識別時有框出現代表是識別錯誤,即是假正。這樣的情況不是想要的,所以要避免這種情況的發生就需要對識別錯誤的原始負樣本進行保存,進行HOG特征提取,把提取到的特征加入到上一次得到的總特征中再一次進行SVM模型訓練。這個過程就是模型自舉操作,所以如果只是單純地使用cv2.resize函數對原始負樣本進行尺寸的壓縮,然而這些樣本還是原圖,之后再用初始模型識別原始負樣本就沒有意義,達不到提高模型性能的作用。

因此,用剪切的方法對原始的負樣本圖片進行剪切的效果更佳。構建的負樣本處理方法為:首先獲取原始的負樣本照片(大小尺寸不一,需保證尺寸大于64*128),再獲取隨機種子,便于后面對一張負樣本圖片進行隨機剪切。對已經得到的負樣本list進行遍歷,list中的數據為numpy數組形式,隨機獲取左上坐標(x,y),這個左上坐標的值為要剪切的圖片左上坐標。左上坐標獲取的原理需要保證即使最大的一個左上坐標也能獲取到一張64*128的圖片,也就是使用圖片長度減去64得到最大的x坐標值,使用圖片寬度減去128得到圖片的y坐標值。

最終最大的隨機左上坐標是用原圖的右下坐標分別減去長度、寬度得到的。由此可得,只要隨機的x,y值不大于這個最大的坐標(x, y)就不會導致獲取不到64*128的圖片。所以使用random.random()*max(x)這樣形成隨機數的范圍就是0~max(x),得到了要剪切圖片的左上坐標x值的范圍;以此類推,左上坐標y值就是random.random()*max(y)的隨機數范圍為0~max(y),得到了隨機的左上坐標。因為決定一張圖片的數據內容是根據左上坐標和右下坐標來獲取的,所以之后只需要進行切片操作,就可獲取剪切后的圖片,如圖4所示。

圖4:剪切處理后的負樣本示例

3 行人檢測模型設計

3.1 模型設計概述

本文的行人檢測模型對處理后的樣本數據,使用HOG算法提取出相應的特性特征,把這些特征數據使用SVM算法進行第一次學習訓練,得到第一次模型,使用這個模型對原始樣本進行識別,再把錯誤識別的樣本再次進行訓練(模型自舉),經過多次模型自舉后可以得到一個精確率高的模型。最后使用這個模型進行行人檢測。圖5是設計的流程。

圖5

由圖5兩個流程可知,檢測流程是在訓練流程完成結束后才能進行,而訓練流程是得到模型的一個流程,是實現行人檢測功能尤為關鍵的一個流程。其中對樣本預處理的好壞、處理恰當與否很大程度地影響緊隨其后的模型訓練,所以樣本處理尤為關鍵。訓練完后需要對模型進行保存供檢測流程使用,檢測流程顧名思義就是利用得到的模型對圖像進行檢測,找出其中的行人進行標志的一個流程。這兩個流程的結合就是完整的行人檢測功能實現。

3.2 使用OpenCV進行模型搭建

本文模型搭建是基于OpenCV 4.5.1開發的,使用的是Python 3.6版本的編程環境。進行實驗的編輯器是PyCharm。

OpenCV是一個擁有許多算法的函數接口庫。OpenCV除了C++的接口還提供了Python等其他語言的接口,提供了許多用于圖像處理的技術,是一個強大且便利的軟件庫。其中OpenCV提供了HOG算法的函數接口,也提供了SVM算法的函數接口,所以可以使用OpenCV進行圖像處理,也使用其中的HOG函數進行特征提取,搭建SVM模型。

4 基于OpenCV的行人檢測實現

4.1 基于OpenCV的HOG特征提取

得到了符合需求的訓練用的正負樣本集,接下來就需要對這些樣本進行HOG特征提取。在一副圖像中,局部目標的邊緣也就是輪廓形狀存在著梯度特性,這些梯度特性用于進行目標檢測時是可以很好地描述這一目標。在OpenCV中可以使用HOG對象的一系列方法實現HOG特征算法,把圖像分割為多個block、cell后進行梯度計算從而提取HOG描述子,最終把所有的描述子串聯在一起形成這張圖像的HOG特征,其流程如圖6所示。

圖6:HOG特征提取主要流程

4.1.1 提取特征前的圖像處理

本文為了彩色圖片中冗余信息對HOG檢測的干擾,首先將獲取到的樣本圖像轉換為黑白圖像,采用的是OpenCV中的cvtColor()函數實現將三通道(R,G,B)的圖像轉換為一個通道的黑白圖。

4.1.2 HOG特征提取

經過處理后得到的需要訓練樣本,輸入到HOG模塊中,以獲取描述圖像局部區域的方向和梯度特性,HOG算法對于不同圖片的光照變化背景的處理具有很強的魯棒性,所以在描述圖像中行人的形狀和輪廓已經外觀特征具有一定的準確性。

本文使用OpenCV中HOGDescriptor()函數進行初始化一個HOG對象,其主要參數分別是窗口大小,塊大小,塊移動步長,單元格大小, nbins,參數含義是:

(1)窗口大小參數代表著進行圖像掃描的檢測窗口尺寸大小,也就是滑動窗口的大小,設置為64*128,這樣的尺寸便于減少掃描時間。

(2)塊大小參數代表著分割圖像中的塊(block)的尺寸大小,cv2中只支持16*16大小。

(3)塊的移動步長參數,本次實驗設置為步長設置為8*8。

(4)單元格大小參數代表著block中每個細胞單元格cell的大小,cv2中只支持8*8大小。

(5)Nbins代表直方圖bin的數量,即一個單元格中統計梯度的方向數目,cv2中每個單元格Cell只支持9個。

初始化后的HOG對象,可以對已經灰度化的圖像進行特征提取,特征向量是一個3780*1向量,這個3780*1的一維縱向數組就是圖片的特性形狀數字化的值。可以知道一張圖像裁剪成64*128(行人檢測),然后一張圖像會得到3780個數值,這個數字也就是這張圖像特征維度。圖7為部分圖像的特征數據。

圖7:部分HOG特征數據

由圖7了解到,因為訓練樣本都有相應的HOG特征,需要構建一個特征數組來保存這些特征數據。特征數組構建的原理為,先使用list保存(list保存數據比較方便)HOG數據,再使用numpy中的np.array()函數把list轉換為數組,這時候的數組的維度是(n,3780,1)而目的是需要維度為(n,3780)所以需要用numpy中的np.resize()函數轉換維度。

正樣本和負樣本的HOG特征提取需要分開做,這樣做的原因是當提取完正樣本后就可以構建相應的正樣本的標簽(n*1維的數組),有2416個正樣本就會提取到2416個HOG特征,相應就會有2416個正樣本標簽,正樣本的標簽用+1表示。以此類推,負樣本構建標簽類似,相對于正樣本而言負樣本有12180個,所以HOG特征有12180個,標簽用-1表示則有12180個。為此本文構建標簽數組。標簽數組的具體構建原理為:因為現在選取的正樣本都是單行人,所以每一個正樣本的HOG特征都可以代表是行人的HOG特征,雖然還是會存在干擾信息,但是只要樣本數量足夠大,行人種類分布均勻就可以部分抵消這一類影響。

4.2 基于OpenCV的SVM分類器

本文使用SVM與其他傳統機器學習算法相比的優點是,只需要較小的樣本就能較好地解決二類分類問題[5],相對于其他分類器更加高效。較小的樣本的意思不是指真正的數量少,因為無論使用任何算法來實現二類分類,樣本數量足夠多總能得到一個好的效果;而是說,與解決的問題的繁瑣和難度上相比SVM算法進行學習使用的數據數量比較少;而且使用SVM算法解決二類分類問題時,所使用的樣本是和圖片的維度值沒有關系的,這個特點就顯得SVM算法能更好地應對多樣問題。即SVM不僅能解決線性的分類的問題,還可以通過懲罰變量和核函數技術來實現線性的不可分問題[6]。

4.2.1 SVM分類器第一次訓練

得到了所有樣本的特征數組和標簽數組后,本文使用基于OpenCV的SVM分類器進行訓練來實現對行人樣本和非行人樣本的分類。

SVM對象選用了epsilon類支撐向量回歸機和線性核函數后,還需要設置一些與其相關的參數。epsilon類支撐向量回歸機需要設置的參數有P、C、nu,這個三個參數分別使用svm.setP(0.1)、svm.setC(0.01)、svm.setNu(0.5)這三個函數來設置值。線性核函數需要設置的參數有coef0、gamma、degree,分別用函數svm.setCoef0(0)、svm.setDegree(3)來設置值。

本文把訓練集的HOG特征數據和訓練集標簽數據輸入到SVM分類器中進行訓練,使用函數svm.train(hog_array, cv2.ml.ROW_SAMPLE, label_array)進行訓練,這個函數中的三個參數的意思分別是訓練集的HOG特征數組,cv2.ml.ROW_SAMPLE表示訓練數據按行排列,每一條數據(特征)占一行,最后一個參數是訓練集標簽數組。這樣SVM就可以利用數據自行訓練,從而得到行人檢測的初始模型。4.2.2 模型自舉

生成初始模型后,如果使用這個模型進行對原始負樣本圖片進行檢測,很大程度上會對負樣本進行誤報,也就是對負樣本檢測出行人框(假正)。為了減少誤報,本位使用初始模型對原始負樣本(1218個沒剪切的負樣本)進行檢測識別,把錯誤識別的樣本收集起來,形成一個難例樣本集;為了讓模型更好地學會辨別負樣本,需要把收集到的難例樣本進行HOG特征提取,得到難例樣本HOG特征數組,對應的特征數組需要構建難例樣本的標簽,因為是對負樣本進行檢測,所以收集到的難例樣本本質上是屬于負樣本,因此標簽都是-1。

其中收集難例樣本的實現流程如圖8所示。

圖8:難例樣本形成流程圖

4.3 使用檢測器進行行人檢測

本文的行人檢測是使用HOG+SVM實現的,訓練集使用的是INRIA行人檢測數據庫中的96*160的單個行人訓練集剪切而成的2416張正樣本+12180張負樣本,SVM使用的是EPS_SVR類型的,使用的核函數是線性核函數,SVM的參數設置為Coef=0、Degree=3、Gamma=0、Nu=0.5、P=0.1、C=0.01。訓練時進行了1次模型自舉。精度和準確度分別是99%和98%左右。

訓練好模型后,使用這個模型進行行人檢測。首先需要讀取行人檢測器,再使用檢測器函數detectMultiScale()對圖像進行檢測。檢測器函數有幾個參數是很重要的,會影響著檢測的準確度。其中winStride=(4, 4)是檢測窗的移動步長,padding=(8, 8)是在原圖外圍添加像素大小,還要最重要的參數scale,這個參數是可以控制圖像金字塔的層數[3],值小層數就多花費的時間也長。scale通常在1~1.5之間。

設置完檢測器的參數后使用cv2.imread()讀取圖片數據,再把圖片數據放入檢測器函數中計算返回檢測框數據(坐標和長寬),再把檢測框的這些數據放入到cv2.rectangle()中,然后在圖像中繪制出檢測框,最后用OpenCV庫中的cv2.imshow()把繪制好的圖像展示出來。如果有一張圖片有多個行人,則就會有多個檢測框數據,所以使用循環來遍歷出每個檢測框的數據進行繪制到圖片上。

圖9是選用1.0、1.05、1.25、1.5scale值的對比。

圖9

由圖9可以知道scale對檢測的準確度的影響。本文選取1.25的scale效果較好。

使用檢測器進行行人檢測時,還可能會出現多個檢測框重疊的情況,對于這種情況可以使用非極大抑制法來進行優化。可以使用imutils.object_detection庫的函數non_max_suppression()進行優化,把HOG檢測函數檢測出的檢測框的數據(多個或者一個)放入到這個函數中,就可以得到最大的那個檢測框數據。圖10顯示了使用非極大抑制法和不使用的區別。

圖10

5 實驗結果與分析

5.1 模型性能評估標準

行人檢測是一個二分類問題,因此可以使用SVM算法訓練成的模型進行分類,這種模型常用的性能評估標準主要有:精確率、準確率、召回率。可以作以下定義來建立這幾個評估標準的公式。

5.2 模型自舉次數對模型的影響

模型自舉的作用是為了減少模型對負樣本的誤報率,現在對比模型自舉次數對模型性能的影響。選取的是INRIA庫中的訓練樣本中的2416張正樣本和12180負樣本進行第一次訓練。分別進行0次、1次、5次、10次的模型自舉訓練,使用的是INRIA庫中測試樣本中的1126個單個行人照片加上4530個負樣本進行測試,可以得到表1所示數據。

由表1數據可以得知,基于INRIA行人數據庫進行訓練和測試時:沒有進行模型自舉得到的模型,對負樣本的誤報比較嚴重;而進行第一次模型自舉后對負樣本的誤報有所下降,雖然正樣本的漏報率反而提高了,但是對比誤報率降低的程度,漏報率的提高在接受的范圍內;接著進行5次模型自舉,這次得到的模型誤報率有所下降但是恨不明顯,反而漏報率提高的很明顯,這樣是得不償失的;進行到10次后得到的模型精確率和準確率、召回率相比進行一次模型自舉的都要低。所以由本次實驗可以推出來的結果是,在基于INRIA行人數據庫進行訓練時,進行一次模型自舉就可以得到較好的行人檢測模型。因此,首選一次模型自舉的操作。

表1:改變模型自舉次數的模型對比

由此可以總結,模型自舉是可以有效的減少誤報的情況,但是降低誤報率到一定程度后誤報的情況不會在減少趨于穩定,反而漏報率會提高,得不償失,所以使用模型自舉時需要注意次數不要多,只需要適當的次數就能提高模型的性能。

6 結論

經過本次對HOG特征算法和SVM算法分類器的應用和實驗,發現這兩者的結合在行人檢測的應用上具有良好的效果。HOG+SVM的行人檢測具有兩大優勢,第一HOG特征可以根據局部特征很好地描述出行人的特征,對單一行人圖片的特征描述的更加準確,而且HOG算法進行特征提取的效率快而準確;第二使用SVM算法進行模型訓練可以更快更準確的得到分類模型,對干擾少的圖片分辨力強。

HOG+SVM的行人檢測也存在缺點,一是如果圖像的行人很多且很密集,容易出現漏報行人和出現一個檢測的方形框,把兩個或者三四個行人框住的情況;二是當圖像中的特征不是很明顯或者存在人形雕像或者類似人形的圖案,影子之類的物體也會檢測為行人,會出現誤報。三是對于坐在物體上的人和坐在車上的人以及靠太近的行人識別不出來。這還需要之后進一步的探索。

猜你喜歡
特征檢測模型
一半模型
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
抓住特征巧觀察
3D打印中的模型分割與打包
主站蜘蛛池模板: 亚欧成人无码AV在线播放| 黄色网页在线播放| 国产高清在线丝袜精品一区| 91在线无码精品秘九色APP| 亚洲天堂在线免费| a毛片免费在线观看| 91在线精品免费免费播放| 亚洲美女视频一区| 全裸无码专区| 国产在线日本| 青青草一区| 国产91视频观看| 午夜精品久久久久久久无码软件| 99激情网| 欧美成人看片一区二区三区 | 国产亚洲精久久久久久无码AV| 伊在人亚洲香蕉精品播放| 亚洲一区二区视频在线观看| 福利小视频在线播放| 亚洲AⅤ综合在线欧美一区| 欧美一区二区三区欧美日韩亚洲| 免费看a级毛片| 亚洲欧美综合另类图片小说区| 欧美亚洲另类在线观看| 97在线观看视频免费| 国产精品嫩草影院视频| 婷婷在线网站| 日本福利视频网站| 久久免费精品琪琪| 欧美成人精品高清在线下载| 人妻一区二区三区无码精品一区| 久久亚洲精少妇毛片午夜无码| 国产性精品| 精品国产一区二区三区在线观看| 亚洲国产中文在线二区三区免| 99热最新在线| 亚洲成AV人手机在线观看网站| 91亚洲精选| 白浆视频在线观看| 国产精品香蕉在线| a级毛片一区二区免费视频| 亚洲av无码牛牛影视在线二区| 91福利片| 视频国产精品丝袜第一页| 97超爽成人免费视频在线播放| 国产精品私拍在线爆乳| 久久动漫精品| yjizz视频最新网站在线| 91麻豆精品视频| 国产欧美日韩一区二区视频在线| 爱爱影院18禁免费| 国产精品三级av及在线观看| 婷婷午夜影院| 亚洲男人的天堂在线| 国产一线在线| 午夜激情婷婷| 日韩视频精品在线| 四虎精品国产永久在线观看| 在线精品亚洲一区二区古装| 国产成年无码AⅤ片在线| 国产精品久久精品| 国产啪在线| 亚洲欧洲自拍拍偷午夜色无码| a级毛片免费播放| 怡红院美国分院一区二区| 茄子视频毛片免费观看| 国产成年女人特黄特色大片免费| 国产免费高清无需播放器| 中文字幕佐山爱一区二区免费| 国产污视频在线观看| 免费全部高H视频无码无遮掩| 国产麻豆福利av在线播放 | 18黑白丝水手服自慰喷水网站| 亚洲乱伦视频| 自偷自拍三级全三级视频 | 亚洲美女高潮久久久久久久| 99视频免费观看| 真实国产乱子伦视频| 欧美有码在线| 美女一区二区在线观看| 美女国产在线| 亚洲国产日韩视频观看|