整合FPGA-HOG加速器於嵌入式軟硬體平台之即時人形偵測系統
158
0
0
全文
(2) i.
(3) 誌謝 隨著碩士論文的完成,代表碩士研究生涯即將告一段落,也代表著漫長的學生求學 階段即將結束,從而進入人生下一個階段。首先我要先感謝我的指導教授蕭培墉博士, 在我就讀研究所期間的鼓勵與研究方法的指導,使我受益良多,尤其是指導我們製作七 大階段文件工程用以解決研究上的問題。不僅僅是在研究所階段受用,未來進入職場工 作後也是一項受用無窮的技能。. 同時也要感謝各位口試委員,蕭勝夫博士、陳春僥博士以及黃世勳博士願意撥冗擔 任我的論文口試委員,並且在口試的過程中,提出各種寶貴的意見,使得本論文可以更 趨於豐富與完整。. 另外也要感謝研究所的兩位學長,顏履安、王威淵,在我剛進研究所時的各種幫忙 與指導,以及分享與傳承研究經驗、資料。另外也要感謝我的研究所同學林鈞彥,在求 學路上能夠互相討論課業與研究內容。以及感謝實驗室學弟吳輝明、許勝為、林穎宏在 實驗過程以及各種大小事務上的幫忙,例如在走廊上來回走動以供監視器取得影像作為 實驗材料,以及協助人形偵測系統測試等。. 最後要感謝家人們在當初鼓勵我報考與就讀研究所,以及就讀研究所期間的支持與 關心,使得本論文得以順利完成。. ii.
(4) 整合 FPGA-HOG 加速器於嵌入式軟硬體平台之 即時人形偵測系統. 指導教授:蕭培墉 博士(教授) 國立高雄大學電機工程學系. 學生:林世育 國立高雄大學電機工程學系. 摘要. 近年來人形偵測應用於智慧型監控系統(Intelligent Surveillance System,ISS)、智慧 型運輸系統(Intelligent Transportation Systems,ITS)的需求逐漸受到重視。其應用範圍涵 蓋許多不同的室內與室外場景。例如機場通關監控、車站大廳、十字路口、百貨公司、 公車候車亭、各種道路系統等。過去幾年來各種創新的物件特徵 (Feature)描述子 (Descriptor)種類繁多,其中應用於人形且被引用率最高的是一種稱為梯度方向直方圖 (Histograms of Oriented Gradients,HOG)的區域特徵描述子,其搭配線性 SVM 分類器可 獲得有效的分類。但因為 HOG 在一套人形偵測系統中重複地被使用的次數非常多,亦 即在 HOG 原作者 Dalal 的方法中一個偵測視窗需要進行 105 次的 HOG 計算,而一張影 像中通常包含上百至上千個偵測視窗,導致運算量龐大,無法達到即時且實用的用途。 本研究在不影響偵測率的前提之下提升運算速度,提出了一種基於 HOG 與 AdaBoost 機器學習所建立的 HOG-AdaBoost-LFV(Long Feature Vector)人形分類器。另外也使用 FPGA 晶片進行包含梯度運算模組與直方圖累積模組等電路模組的 HOG 硬體加速器設 計,最後結合 ARM 處理器進行人形偵測器中其餘軟體的運算,成功的完成了一套整合. iii.
(5) 軟硬體協同設計的嵌入式人形偵測系統。本系統可兼顧體積小、成本低、運算速度快、 具可攜性的優點,可以被內建於小型攝影機或監視器上。實驗方面,除了採用 Dalal 與 本論文提出的人形分類器方法之外,另外還採用了兩種基於 HOG 與 Adaboost 機器學習 的方法,共計四種方法進行實驗與結果比較。本研究將人形偵測中的 HOG 轉為硬體電 路加速運算後,在嵌入式平台上最快每秒可以處理 1051 個偵測視窗的運算,且準確率 (Accuracy)與原先純軟體運算比較僅有±0.6%的浮動誤差。另外我們還為人形偵測系統引 入熱區圖(Heat Map),可應用在人形計數與人潮的統計與分析。. 關鍵字:HOG、SVM、AdaBoost、機器學習、人形偵測、熱區圖、FPGA 硬體加速器、 ARM、即時嵌入式系統、軟硬體協同設計。. iv.
(6) A Real-Time Human Detection System Integrated with FPGA Based HOG Accelerator on an Embedded HW/SW Platform. Advisor:Professor Pei-Yung Hsiao Institute of Electrical Engineering National University of Kaohsiung. Student:Shih-Yu Lin Institute of Electrical Engineering National University of Kaohsiung. ABSTRACT. The application of human detection to Intelligent Surveillance Systems (ISS) and Intelligent Transportation Systems (ITS) is gradually emphasized in past years. The applications cover various indoor and outdoor fields, such as airport customs monitoring, station halls, crossroads, department stores, bus stops, and various road systems. There are a lot of innovative object feature descriptors, among which the one applied to human detection with the highest citation is the local feature descriptor called Histograms of Oriented Gradients (HOG), which presents effective detection rate by matching with, for example, linear SVM classifiers. Nevertheless, HOG is repeatedly used in a human detection system for many times. That is, a detection window in Dalal’s, the original designer, HOG would proceed 105 times of HOG calculation, and an image generally contains hundreds to thousands of detection windows so that the real-time and practical usage cannot be achieved because of the enormous HOG computations. To enhance the operation speed without. v.
(7) affecting the detection rate, an HOG and AdaBoost machine learning based HOG-AdaBoost-LFV (Long Feature Vector) human classifier is established in this study. Besides, FPGA chip is also utilized for the design of HOG hardware accelerator covering the circuit modules of gradient operation module and histogram cumulative module. Finally, the rest algorithmic operation in the human detector is integrated with ARM processor to successfully complete the hardware/software co-design as an embedded human detection system. This system presents the advantages of small size, low cost, fast operation speed, and portability and can be built in a mini-camera or a monitor. The human classifiers presented by Dalal and proposed in this study and two additional HOG and Adaboost machine learning based approaches are applied to the experiments and the comparisons. In this study, HOG in the human detection is converted into hardware circuits to accelerate the computation, where the operations of the most 1051 detection windows per second could be handled on the FPGA/ARM embedded platform, and the accuracy merely appears ±0.6% error compared to the original pure software operations. What is more, Heat Map is introduced to the human detection system for counting the number of detected people and crowd statistics and analyses.. Keywords:HOG, SVM, AdaBoost, Machine Learning, Human Detection, Heat Map, FPGA Accelerator, ARM, Real-Time Embedded System, HW/SW Co-Design.. vi.
(8) 目錄. 口試委員審定書……………………………………………………………………………….i 誌謝…………………………………………………………………………………………....ii 中文摘要……………………………………………………………………………………...iii 英文摘要……………………………………………………………………………………....v 第一章 緒論…………………………………………………………………………………1 1.1 研究背景與動機……………………………………………………………………1 1.2 研究問題與挑戰……………………………………………………………………3 1.3 相關文獻回顧與探討………………………………………………………………5 1.4 章節組織與架構……………………………………………………………………8 第二章 HOG 區域特徵描述子與各種基於 HOG 之人形分類器…………………………10 2.1 梯度方向直方圖(HOG)…………………………………………………………10 2.2 Dalal 人形分類器(Method 1)...…………………………………………………18 2.3 HOG-AdaBoost 人形分類器(Method 2)….……………………………………22 2.4 GDguiding AdaBoost 人形分類器(Method 3)…………………………………27 2.5 HOG-AdaBoost-LFV 人形分類器(Our)(Method 4)……………………………30 第三章 基於 FPGA 之 One-HOG 硬體加速器…………………………………………….36 3.1 One-HOG 硬體加速器系統概觀…………………………………………………36 3.2 梯度模組(Gradient Module)……………………………………………………...38 3.2.1 梯度分量模組(Gradient Components)…………………………………...38 3.2.2 梯度大小模組(Gradient Magnitude)……………………………………..41 3.2.3 梯度方向模組(Gradient Orientation)…………………………………….41 3.3 直方圖模組(Histogram Module)…………………………………………………46 3.3.1 Block To 4 Cells……………………………………………………………47. vii.
(9) 3.3.2 Vote 9D Vector…………………………………………………………….48 3.4 One-HOG 硬體加速器系統總結…………………………………………………49 第四章 模組化設計之即時人形偵測器……………………………………………………52 4.1 人形偵測器概述…………………………………………………………………...52 4.2 偵測視窗掃描(Detecting Window Scanning) …………………………………...55 4.3 人形偵測器前處理………………………………………………………………...58 4.3.1 灰階化(Grey Scale)………………………………………………………...58 4.3.2 背景切割(Background Segmentation)……………………………………59 4.4 偵測視窗切割(Detecting Window Segmentation)………………………………62 4.5 偵測視窗縮放(Detecting Window Scaling)……………………………………...64 4.6 人形分類器偵測階段(Detecting Stage)…………………………………………..72 4.7 人形偵測器後處理………………………………………………………………...73 4.7.1 非極大值抑制(Non Maximum Suppression,NMS)……………………...74 4.7.2 平均偏移(Mean-Shift,MS)………………………………………………..75 4.8 人形偵測系統應用範例之人群熱區圖分析……………………………………...76 第五章 嵌入式平台軟硬體整合設計………………………………………………………80 5.1 MaCube ARM/FPGA 整合開發平台……………………………………………..80 5.2 ARM/FPGA 軟硬體整合與協同設計(Co-Design)………………………………..81 5.3 ARM 處理器與 FPGA 之間的資料傳輸速度瓶頸解析…………………………..86 5.4 嵌入式模組化程式設計要點…………………………..…………………………..91 第六章 實驗結果與比較……………………………………………………………………93 6.1 實驗設備…………………………………………………………………………...93 6.2 影像資料庫………………………………………………………………………...95 6.2.1 靜態資料庫………………………………………………………………....95 6.2.2 動態資料庫…………………………………………………………………99 6.3 靜動態資料庫實驗結果………………………………………………………….103. viii.
(10) 6.3.1 靜態資料庫實驗結果、統計、分析與比較………………………………105 6.3.2 動態資料庫實驗結果、統計、分析與比較………………………………109 第七章 結論………………………………………………………………………………119 參考文獻……………………………………………………………………………………121 附錄一 重要名詞解釋..……………………………………………………………………127 附錄二 論文發表與得獎……………..……………………………………………………132. ix.
(11) 圖目錄. 圖 1-1. 人形偵測系統應用於各種場景預期效果圖………………………………………3. 圖 1-2. 攝影機水平拍攝之距離與人形大小關係…………………………………………4. 圖 1-3. 多樣化且不固定的人形姿態………………………………………………………4. 圖 1-4. 複雜的背景與人形遮蔽……………………………………………………………5. 圖 2-1. HOG 名詞示意圖…………………………………………………………………11. 圖 2-2. 水平與垂直方向分量 Convolution 遮罩…………………………………………12. 圖 2-3. Signed Gradient 與 Unsigned Gradient 示意圖…………………………………13. 圖 2-4. Unsigned gradient 與 9 bins……………………………………………………...13. 圖 2-5. HOG 之 9D Vector 累積示意圖…………………………………………………..14. 圖 2-6. HOG 之 9D Vector 與 36D Vector 示意圖……………………………………….15. 圖 2-7. HOG 視覺化直方圖繪製示意圖…………………………………………………16. 圖 2-8. oneHOG 主模組與子模組架構圖………………………………………………..16. 圖 2-9. oneHOG 主模組測試專案函式呼叫架構圖……………………………………..17. 圖 2-10 oneHOG 主模組測試專案流程圖………………………………………………..17 圖 2-11 訓練樣本範例圖…………………………………………………………………..18 圖 2-12 Dalal 人形分類器區塊位置圖……………………………………………………19 圖 2-13 Dalal 人形分類器訓練階段流程圖………………………………………………21 圖 2-14 Dalal 人形分類器測試階段流程圖………………………………………………21 圖 2-15 HOG 人形分類器測試階段運作流程範例………………………………………22 圖 2-16 HOG-AdaBoost 人形分類器區塊位置圖(CBCL Datasets)…………………….26 圖 2-17 HOG-AdaBoost 人形分類器測試階段運作流程範例…………………………..27 圖 2-18 GDguiding AdaBoost 人形分類器訓練與測試階段流程圖…………………….28 圖 2-19 全域偵測器產生過程流程圖……………………………………………………..29. x.
(12) 圖 2-20 三種強分類器之弱分類器位置與數量示意圖…………………………………..30 圖 2-21 HOG-AdaBoost-LFV 人形分類器區塊位置圖(CBCL Datasets)………………31 圖 2-22 HOG-AdaBoost-LFV 人形分類器測試階段流程圖…………………………….35 圖 2-23 HOG-AdaBoost-LFV 人形分類器測試階段運作流程範例…………………….35 圖 3-1. One-HOG 軟體模組與子模組運算時間花費比例………………………………36. 圖 3-2. FPGA 模擬階段電路模組方塊圖………………………………………………...37. 圖 3-3. FPGA 電路模組階層圖…………………………………………………………...38. 圖 3-4. Full Buffering 模組電路圖……………………………………………………….39. 圖 3-5. Full Buffering(FB)示意圖………………………………………………………..40. 圖 3-6. FB 與 Gradient Components 模組電路圖………………………………………40. 圖 3-7. Components To Magnitude 模組電路圖………………………………………...41. 圖 3-8. unsigned gradient 與 9-Bins 示意圖……………………………………………...42. 圖 3-9. 放大倍率與歸類位移比例關係圖………………………………………………..44. 圖 3-10 Components To Orientation 模組電路圖……………………………………….46 圖 3-11 直方圖累積模組電路圖…………………………………………………………..47 圖 3-12 Vote 9D Vector 模組電路圖……………………………………………………...48 圖 3-13 模擬測試輸入之區塊(Block)…………………………………………………….49 圖 3-14 Xilinx ISE 模擬結果………………………………………………………………49 圖 3-15 軟體運算結果……………………………………………………………………..50 圖 3-16 One-HOG 硬體加速器 FPGA 電路模組方塊圖…………………………………51 圖 4-1. 人形偵測器進行單張 Frame 偵測流程圖………………………………………..53. 圖 4-2. 理想偵測視窗掃描示意圖………………………………………………………..55. 圖 4-3. 偵測視窗掃描參數檔案格式……………………………………………………..56. 圖 4-4. 偵測視窗掃描候選示意圖(區域)………………………………………………...57. 圖 4-5. 偵測視窗掃描候選示意圖(整體)………………………………………………...58. 圖 4-6. 灰階化前處理示意圖……………………………………………………………..59. xi.
(13) 圖 4-7. 背景相減與二值化的結果………………………………………………………..60. 圖 4-8. 侵蝕(Erosion)結果示意圖………………………………………………………..61. 圖 4-9. 膨脹(Dilation)結果示意圖……………………………………………………….61. 圖 4-10 偵測視窗切割判斷位置示意圖…………………………………………………..62 圖 4-11 經由背景切割偵測視窗切割運作範例…………………………………………..63 圖 4-12 偵測視窗切割結果示意圖………………………………………………………..63 圖 4-13 Image Scaling 示意圖…………………………………………………………….65 圖 4-14 三種插值演算法效果……………………………………………………………..67 圖 4-15 線性插值 Kernel 示意圖………………………………………………………….68 圖 4-16 一維線性插值示意圖……………………………………………………………..69 圖 4-17 雙線性插值 2D 與 3D 視角示意圖………………………………………………..69 圖 4-18 Scaling Up 範例 Step1…………………………………………………………….71 圖 4-19 Scaling Up 範例 Step2…………………………………………………………….71 圖 4-20 Image Scaling 實際應用於人形偵測系統之中間成果圖……………………….72 圖 4-21 人形偵測系統儲存結果…………………………………………………………..73 圖 4-22 Frame 未經後處理的結果………………………………………………………..74 圖 4-23 Frame 經過 NMS 處理的結果……………………………………………………75 圖 4-24 Frame 經過 NMS 與 MS 處理的結果…………………………………………….76 圖 4-25 人群駐留與熱區圖示意圖………………………………………………………..77 圖 4-26 HSL 色彩空間…………………………………………………………………….77 圖 4-27 熱區圖繪製流程圖………………………………………………………………..78 圖 4-28 熱區圖透明化混合示意圖………………………………………………………..79 圖 5-1. MaCube 開發板…………………………………………………………………...80. 圖 5-2. MaCube 開發板 ARM / FPGA 之 GMI 接線圖………………………………….81. 圖 5-3. 嵌入式即時人形偵測系統之開發系統全景圖…………………………………..81. 圖 5-4. MaCube 開發板與 One-HOG Accelerator 模組化架構方塊圖………………83. xii.
(14) 圖 5-5. 中斷訊號應用於 One-HOG Accelerator 之軟體流程圖………………………..84. 圖 5-6. 嵌入式人形偵測系統軟硬體整合架構圖………………………………………..85. 圖 5-7. Memory mapping 與 Buffer 位址關係圖………………………………………...87. 圖 5-8. ARM/FPGA 軟硬體協同運作計算 One-HOG 花費時間分析………………….89. 圖 5-9. 大小為 16x16 之測試 Block……………………………………………………….90. 圖 5-10 人形偵測系統程式模組化切割…………………………………………………..92 圖 6-1. VMware 虛擬機架設之 Ubuntu 系統……………………………………………94. 圖 6-2. CBCL 樣本集示意圖……………………………………………………………..96. 圖 6-3. CVC 樣本集示意圖..……………………………………………………………...97. 圖 6-4. INRIA 樣本集示意圖……………………………………………………………..98. 圖 6-5. Caviar 影片場景示意圖…………………………………………………………100. 圖 6-6. 2007 AVSS 影片場景示意圖……………………………………………………101. 圖 6-7. Campus 影片場景示意圖……………………………………………………….102. 圖 6-8. Surveillance Camera 影片場景示意圖…………………………………………103. 圖 6-9. 動態資料庫實驗流程範例圖……………………………………………………110. 圖 6-10 四種方法偵測結果比較…………………………………………………………112 圖 6-11 嵌入式平台實際運作照片………………………………………………………113 圖 6-12 Caviar 資料庫影片偵測結果……………………………………………………113 圖 6-13 2007 AVSS 資料庫影片偵測結果………………………………………………114 圖 6-14 Campus 資料庫影片偵測結果………………………………………………….114 圖 6-15 Surveillance Camera 資料庫影片偵測結果……………………………………115 圖 6-16 過於模糊的人形…………………………………………………………………115 圖 6-17 嚴重重疊的人形…………………………………………………………………115 圖 6-18 Caviar 資料庫影片偵測結果之熱區圖繪製……………………………………116 圖 6-19 2007 AVSS 資料庫影片偵測結果之熱區圖繪製………………………………117 圖 6-20 Campus 資料庫影片偵測結果之熱區圖繪製………………………………….117. xiii.
(15) 圖 6-21 Surveillance Camera 資料庫影片偵測結果之熱區圖繪製…………………...118. xiv.
(16) 表目錄. 表 3-1. tan(θ)建表………………………………………………………………………..44. 表 3-2. 區間查表判斷式…………………………………………………………………..45. 表 3-3. HOG 軟硬體計算時間比較表……………………………………………………50. 表 4-1. 人形偵測器模組耗時分析(Dalal, Method 1)……………………………………54. 表 4-2. 人形偵測器模組耗時分析(Our, Method 4)……………………………………..54. 表 5-1. FPGA 資源使用量………………………………………………………………...85. 表 5-2. MaCube 平台 ARM 與 FPGA 間的傳輸時間……………………………………88. 表 6-1. 實驗平台規格……………………………………………………………………..93. 表 6-2. 靜態資料庫樣本數量……………………………………………………………..98. 表 6-3. 動態資料庫訓練樣本數量………………………………………………………..99. 表 6-4. 動態資料庫測試影片……………………………………………………………100. 表 6-5. 四種人形分類器與兩套平台偵測視窗運算效率………………………………106. 表 6-6. 靜態資料庫偵測率實驗結果 1.…………………………………………………107. 表 6-7. 靜態資料庫偵測率實驗結果 2.…………………………………………………108. 表 6-8. 動態資料庫實驗結果……………………………………………………………111. xv.
(17) 第一章 緒論 1.1. 研究背景與動機 近年來隨著科技的日新月異,以及電腦視覺(Computer Vision)技術的發展,使 用影像處理的相關演算法撰寫程式進行人形偵測(Human Detection)得以實現。人形 偵測在智慧型監控系統(Intelligent Surveillance System,ISS)、數位看板觀看人群計 數(Digital Signage Viewer Counting)與智慧型運輸系統(Intelligent Transportation Systems,ITS)的應用領域中,是一項受到國際矚目的重要核心的技術,且掀起一 股熱絡的研究風潮[1-10]。人形偵測的相關研究範圍非常廣泛,包含人群切割與計 數 (Crowd Segmentation and Counting)[1-3] 、人流分析 [4-5] 、人形追蹤 (Human Tracking)[1,5]等。其日常生活中的功能可以被應用於許多不同的室內與室外場景, 例如車輛駕駛輔助系統[6]、公共交通系統[7-8]、公車站牌[9]、人群疏散路線規畫 [10]、機場通關監控、擁擠人潮分析、車站大廳、百貨公司…等場景。 過去幾年來各種創新的特徵描述子(Descriptor)種類繁多,其中應用於人形且被 引用率最高的是在 2005 年由法國國家計算機技術與控制研究所研究員的 Navneet Dalal 等人[11]所提出的梯度方向直方圖(Histograms of Oriented Gradients,HOG)區 域特徵(Local Feature)描述子。且 HOG 的用途不僅只能於人形偵測,近年也有其他 學者將其應用於其他物件偵測(Object Detection),例如停止標示(Stop Sign)[12]、車 輛(Vehicle)[13-14]、貓(Cat)[15-16]的偵測等。 但是 HOG 根據不同的系統設定,被使用的次數往往動輒高達數萬次至數百萬 次以上,導致無法達到即時偵測的需求。以人形偵測系統為例,若 Frame 的長寬 為 640x480,偵測視窗大小固定為 64x128,偵測視窗掃描移動步數(Shift Step)為 12 個像素(Pixels),則其一張 Frame 的所有偵測視窗數量為 1470 個,若以 HOG 作者 於文章中所敘述的方法,即一個偵測視窗需要進行 105 次 HOG 的計算,則一張 Frame 要計算的 HOG 次數為 154350 次,若要達到 30 FPS 的即時處理,代表一秒. 1.
(18) 鐘要計算 3858750 次的 HOG,這在純軟體運算上是一項難以突破的瓶頸,因此本 研究除了使用 FPGA 將關鍵的 HOG 硬體化完成 One-HOG 加速器之外,也朝向改 良演算法的方向研究,以減少系統的運算量。 考量到智慧型監控系統的應用,一般來說監控系統都是統一由後端監控站的 電腦來匯整資訊,多數監視攝影機的畫面串流即時傳送到監控站以供相關人員監 看,引入人形偵測系統之後,由於監視攝影機的數量龐大,後端電腦勢必來不及 即時處理所有影像資料,數量如此龐大的影像資料若能在各個監視攝影機端預先 運算,並且回傳人形偵測完畢的結果,後端電腦僅需進行資料的接收與顯示,可 以大大降低負擔,因此使人形偵測系統能夠被內建於監視攝影機上也是本研究的 考量重點之一。雖然隨著電腦技術的精進,應用於一般個人電腦的 x86 架構處理 器(CPU)的效能也隨之提高,但是運算速度並非都能達到即時的需求。且其成本高, 以目前市面上英特爾公司的高效能消費級處理器 i7-4790k 為例,原廠報價為 350 元美金,再加上電腦其餘必備配件,成本可能高於 500 元美金,若要將系統內建 於攝影機或監視器中,耗電量與散熱也是重要的考量因素。另外,近年來由於基 於 ARM(Advanced RISC Machine)處理器架構之嵌入式系統的發展,具備低成本、 高效能、低耗電的特性,實際上近期也已經有一些平價的 ARM 純軟體開發平台上 市,例如從 2012 年開始上市,且 2015 年已經發展出第二代的樹梅派(Raspberry Pi)[17]單板電腦,價格約為 35 元美金,證明了 ARM 系統的低成本。因此,本研 究目的為使用嵌入式系統[18-26]與 FPGA 硬體加速器[19-24]進行軟硬體整合 [25-26],可兼顧體積小、成本低、運算速度快、具可攜性的優點。並使本架構在 應用上,可以被內建於小型攝影機或監視器上。 圖 1-1 為人形偵測系統應用於各種不同的場景時的預期效果圖,各子圖中:(a) 是交通路口的應用;(b)是看板廣告人口分析,可記錄面向攝影機的人數;(c)是通 關監控;(d)是智慧型監控應用,在(c)與(d)的場景中,當系統檢測到有人進入 PZ 區域(Passing Zone)時則進行紀錄,可以做為場地人數控管方面的應用。. 2.
(19) 圖 1-1 人形偵測系統應用於各種場景預期效果圖 (a)交通路口應用; (b)看板觀看人口廣告分析; (c)通關監控; (d)智慧監控應用,黃色 標記視窗於(b)為凝視看板的人,於(c)(d)為通過的人,而(c)(d)中粉紅色區域為 Passing Zone。. 1.2. 研究問題與挑戰 本研究涵蓋兩個方向,一是人形偵測系統演算法,二是 HOG-FPGA 硬體加速 器的設計與 ARM 處理器與 FPGA 硬體加速器之間的軟硬體整合。 在人形偵測系統演算法上的問題包括了幾個部分:影像中人形大小問題、多 樣化且不固定的人形姿態、複雜的背景與人形遮蔽(Occlusion)等問題。 影像中人形大小問題: 在一個固定的場景中,攝影機的拍攝視角與拍攝位置的不同,對於攝影結果會產 生很大的差異性,在不同的拍攝視角之下,人形的長寬比例與大小會有相當幅度 的差異性,基本上人形距離攝影機的距離與拍攝得到的人形大小成反比,即距離 攝影機越近則拍攝結果的人形越大,反之則拍攝結果的人形越小,例如將攝影機 3.
(20) 與地板呈水平狀態進行拍攝,得到圖 1-2 的結果,其中:(a)人形距離攝影機距離 為 2 公尺;(b)人形距離攝影機距離為 5 公尺;(c)人形距離攝影機距離為 8 公尺。 雖然在不同的場景、攝影機與不同的拍攝視角之下,距離與人形大小的關係並沒 有一定的規則性,但是基本上都符合距離與拍攝結果的人形大小成反比。另外即 使在相同的距離之下,人本身的身高也會影響拍攝結果中的人形大小。如何使人 形偵測系統能適用於各種不同的場景是一項必須考量與解決的問題之一。. 180x360. 100x200. (a). (b). 80x160. (c). 圖 1-2 攝影機水平拍攝之距離與人形大小關係. 多樣化且不固定的人形姿態: 人形有著多變的外形(Appearance)與姿勢(Pose),即使人的姿勢相同,但隨著人的 身高、身上衣服配件與攜帶物品的不同,拍攝出來的外型也會有相當大的差異。 且人的姿勢是具有高自由度的,例如站姿、坐姿、蹲姿、停止與走動等,例如圖 1-3 所示。. 圖 1-3 多樣化且不固定的人形姿態. 4.
(21) 複雜的背景與人形遮蔽(Occlusion): 在不同的室內與室外拍攝場景中均有可能存在有複雜的背景,例如桌椅、汽車、 樹木、雕像等,另外當場景中存在有一個以上的物體時即會發生人形遮蔽現象, 例如人與人之間的互相遮蔽、人被其他場景中的物件遮蔽,導致人形的外觀不完 整,這些情形均會影響到人形偵測系統的結果,例如圖 1-4 所示。. 圖 1-4 複雜的背景與人形遮蔽. 其中不同場景的人形大小問題會影響到 FPGA 硬體加速器設計,由問題中可 以發現場景再怎麼改變,其基本單位仍是偵測視窗,但根據場景以及待偵測物體 的不同,偵測視窗比例與其區塊(Block)的位置與數量設定是可變的,如何設計出 一套可以適用於任何場景的人形偵測系統與其適用的 FPGA 硬體加速器,且成功 的整合運作於 ARM 處理器上的軟體,是一項研究上的挑戰之一。. 1.3. 相關文獻回顧與探討 近年來有不少學者紛紛投入進行應用於人形偵測的 HOG 硬體化加速的相關研 究[27-35],在使用硬體加速 HOG 運算速度的研究中,大致分成兩方面,一方面是 使用場式可程式閘陣列(Field Programmable Gate Array,FPGA)搭配硬體描述語言 (Hardware Description Language,HDL)進行設計,另外一方面即是以全客戶設計型 (Full Custom Design)或者標準單元設計型(Cell Based Design)實際進行超大型積體. 5.
(22) 電路(Very Large Scale Integration,VLSI)晶片設計。其中有部分研究僅包含 HOG 硬體化,另外一部分的研究則是包含 HOG 硬體化與整套人形偵測系統。 R. Kadota[27]等人提出了一些方法用以簡化 HOG 的計算,並以 Altera Stratix II FPGA 進行 HOG 的硬體化設計。Pei-Yin Chen[28]等人提出將 HOG 中較複雜的計 算修改使用近似的方法,以減少硬體成本,並使用台積電(TSMC)0.13 微米製程的 元件庫(Cell Library)進行 HOG 的 VLSI 電路設計。M. Hemmati[29]等人則採用 Xilinx Zynq-7000 的 FPGA 設計出在 HDTV 的解析度(1920x1080)之下可達到 60FPS 的 HOG 計算速度。雖然以上文獻中提到的速度均可達到即時(Real-Time),但是只有 包含 HOG 的計算結果,忽略了資料的輸入與輸出以及將其應用至整套人形偵測系 統中其餘模組所需要的運算時間。而在 M. Hatto[30]等人的方法中,需要保留一張 Frame 中所有 Detection Window 的 HOG Feature,該作者採取了 HOG 硬體化的同 時降低 HOG Feature 的精度用以節省記憶體空間(Data Reduction)。但也降低了 2.68%的準確率(Accuracy)。 另外在 S. Bauer[31-32]等人的研究中則是採用 FPGA 結合電腦顯示卡上的圖形 處理單元(Graphics Processing Unit,GPU)進行人形偵測系統的建立,他們在電腦上 安裝 PCI-e 介面的 Camera Link 影像擷取卡,影像透過 Camera Link 介面進入後利 用該擷取卡上的 Spartan 3 XC3S 4000 FPGA 進行 HOG 的運算,運算完畢的 HOG 特徵向量傳送到電腦的中央處理器(CPU)進行正規化(Normalization )之後再將其傳 送到 GPU,進行 SVM 的分類運算,最後再將分類結果傳回 CPU 進行人形位置的 標示。其缺點是影像的輸入來源必須採用 Camera Link 的介面,且其 HOG 特徵向 量的計算是針對整張 Frame,這意味著其偵測視窗的大小、掃描移動步數等的設定 上必須固定,在系統的應用上較不靈活。K. Mizuno[33-34]等人則提到高性能的處 理器與沉重的計算成本雖然可以達到即時的物件偵測,但是高性能的處理器需要 高功率消耗,所以不適合應用於使用電池的系統,因此提出低功率的 HOG 特徵提 取器的設計,並且分別使用 FPGA 與 VLSI 進行全硬體化的人形偵測系統設計。 A. Suleiman[35]等人也提到低功率上的問題,例如將系統應用在無人飛行載具 6.
(23) (Unmanned Aerial Vehicle,UAV)上,則受限於電池的問題,消耗功率不能太高, 並且提到多尺度支持(Multi-Scale Support)用以解決人形大小不一致的問題,其方法 是利用原始圖像進行 12 次縮放產生 12 層的金字塔圖像,但其設計僅有模擬結果, 尚未能實際應用。從以上文獻中可以發現,人形偵測系統的建立除了基本純軟體 的方法之外,也有純硬體的方法,以及結合軟體與硬體優點的軟硬體整合三種方 式,這三種方法各有優缺點。 純軟體的方法在應用方面的靈活性是最高的,若在軟體程式設計時有考慮到 在實際應用上的相關參數問題,那麼之後系統即可以在不增加成本的情況之下簡 單的透過參數的調整,即可達到各種不同場景的應用,甚至也能應用於人形之外 的物件偵測。但是一般純軟體在運算速度上通常較硬體的方法慢,若要使用純軟 體達到即時偵測的需求,需要高性能的處理器,這意味著需要高成本與高耗電量, 系統體積也無法縮小,無法達到可攜式或內建於監視器等需求。 純硬體的方法在應用方面的靈活性是最低的,例如在人形偵測系統實際應用 上,針對不同場景中的人形大小不一致的問題,大多數文獻的設計為了節省運算 量,都是針對整張 Frame 進行 HOG 的基本單位,即大小為 8x8 的 Cell 特徵向量計 算,因此偵測視窗的大小、掃描移動步數等設定是固定的,在晶片完成後即不能 調整。若輸入影像中的人形大小與偵測視窗大小差異太大,則系統就無法偵測到 了。即使引入多尺度支持(Multi-Scale Support),其效果仍是有限,無法達到萬用性。 但是純硬體的運算速度相較於其他兩種方法是最快的,例如 K. Mizuno[33-34]等人 的文章中提到他們設計的系統在速度上可以達到 1920x1080@30 FPS,但是其偵測 視窗大小固定為 64x128,偵測視窗移動步數固定為 8 Pixels,也就是說,其輸入的 來源影像有限制,不能應用於任意場景。另外還有來源影像的輸入與結果的輸出 問題,在純硬體的設計上,通常需要使用特殊介面的攝影機進行來源影像的拍攝, 若是事先拍攝好的影片檔案則不能進行偵測。偵測完畢的結果如何儲存與也是一 個問題,在相關文獻中通常是直接輸出螢幕顯示結果,其偵測結果的數據往往無 法進一步的分析與利用。 7.
(24) 軟硬體整合的方法,即本研究使用的方法,是結合軟體的高靈活性與硬體的 高速運算速度,將系統中的參數設定等問題,以及運算較不花時間的模組交由軟 體端處理。而系統中最耗時的 HOG 特徵向量則交由硬體端計算,如以一來即可兼 顧靈活性以及運算速度,且軟體端對於處理器性能的要求較不高,意味著可以顧 及系統的成本與體積。但是軟體與硬體間資料的傳輸速度瓶頸是軟硬體協同運作 的設計中不可忽視的一環,不論在任何應用中,運作花費的傳輸時間往往遠大於 硬體運算時間。. 1.4. 章節組織與架構 本論文的章節組織與架構一共安排有七個章節: 第一章描述本論文的研究背景與動機、問題與挑戰以及與本研究有直接相關 的文獻回顧與探討。 第二章進行梯度方向直方圖(Histograms of Oriented Gradients,HOG)區域特徵 (Local Feature)描述子的運算過程說明,以及四種基於 HOG 的人形分類器(Human Classifier)的介紹。第一種方法為 2005 年提出 HOG 特徵描述子的作者 Dalal 等人[11] 於文章中敘述的方法;第二種方法為毛詮毅[36]在 2011 年提出的以 HOG 結合 Adaboost 機器學習(Machine Learning)[37-39]演算法所完成的 HOG-AdaBoost 人形 分類器,這個方法是毛詮毅從 Zhu[39]在 2006 年所提出的方法簡化而來;第三種 方法為顏履安[40]在 2014 年提出的將 HOG-AdaBoost 人形分類器結合基於多重全 域樣板比對(Template Matching)的全域偵測器(Global Detector)所完成的 GDguiding AdaBoost 人形分類器;第四種為本研究[41]提出的方法,是基於第二種方法 HOG-AdaBoost 人 形 分 類 器 的 修 改 , 使 其 具 有 更 佳 的 效 能 , 稱 之 為 HOG-AdaBoost-LFV(Long Feature Vector)。 第三章為本研究重點之一,將詳細介紹本研究使用 FPGA 進行 One-HOG 硬體 加速器硬體電路設計的方法,包含 HOG 硬體加速器概觀、梯度計算電路模組、直. 8.
(25) 方圖累積電路模組。 第四章為模組化設計之即時人形偵測器的介紹,將詳細說明本研究以 C 語言 完成之模組化人形偵測器的各個子模組其詳細原理與演算法,包含:人形偵測器 概述、偵測視窗掃描、人形偵測前處理、偵測視窗切割、偵測視窗縮放、人形分 類器分類階段、人形偵測後處理,以及使用熱區圖做為人形偵測器的應用之一。 第五章為嵌入式平台軟硬體整合,包含 SMIMS MaCube 嵌入式開發平台的介 紹,以及平台上 ARM 處理器的軟體與 FPGA 晶片上的 HOG 硬體加速器之間使用 中斷訊號進行控制的軟硬體資料傳輸方式,及資料傳輸速度瓶頸的解析。 第六章為實驗結果,包含實驗設備與實驗影像資料庫的介紹。實驗設備上採 用一般桌上型個人電腦與 SMIMS MaCube 嵌入式開發平台。於影像資料庫上分別 使用靜態資料庫與動態資料庫進行實驗的效能比較。靜態資料庫即為偵測視窗大 小的樣本集,採用 CBCL Pedestrian Dataset[42]、CVC Virtual Pedestrian Datasets[43]、 INRIA Person Dataset[44],共三套靜態資料庫進行實驗。動態資料庫即為連續影片, 我們將影片轉存為 Frame 影像進行實驗,採用 Caviar[45]與 2007 年 AVSS[46]的地 鐵監視器影像,以及一套使用攝影機拍攝自校園的影片,還有我們自行架設於校 園走廊監視器取得的影像,一共四套動態資料庫進行實驗。 第七章為結論,總結本研究提出來的方法,除了成功脫離個人電腦並且於可 攜式的嵌入式平台上運作之外,在不影響偵測率的情況下能夠有效的加快人形偵 測系統的運算效率。. 9.
(26) 第二章 HOG 區域特徵描述子與各種基於 HOG 之人形分類器 在本章將進行梯度方向直方圖(Histograms of Oriented Gradients,HOG)區域特 徵描述子的運算過程與介紹,以及四種基於 HOG 特徵所建構的人形分類器(Human Classifier)介紹。人形分類器的用途是分類一個偵測視窗是為人或者是為非人,也 就是說其輸入是一個 64x128 的偵測視窗候選,其輸出是為是人或非人兩種分類結 果之一。第一種方法(Method 1)為 2005 年提出 HOG 特徵描述子的作者 Dalal 等人 [11]於文章中敘述的方法,我們稱之為 Dalal 人形分類器;第二種方法(Method 2) 為毛詮毅[36]在 2011 年簡化 Zhu[39]的方法所提出的以 HOG 結合 AdaBoost 機器學 習(Machine Learning)演算法所完成的 HOG-AdaBoost 人形分類器;第三種方法 (Method 3)為顏履安[40]提出的將 HOG-AdaBoost 人形分類器結合全域特徵且基於 多重全域樣板比對(Template Matching)的全域偵測器(Global Detector)所完成的 GDguiding AdaBoost 人形分類器;第四種方法(Method 4)為本研究[41]提出的方法, 是基於第二種方法 HOG-AdaBoost 人形分類器的修改,使其具有更佳的效能,稱 之為 HOG-AdaBoost-LFV(Long Feature Vector)人形分類器。其中 Dalal 人形分類器 與 HOG-AdaBoost-LFV 人形分類器是由許多個弱分類器(Weak Classifier)所組成, 但並不使用弱分類器的權重值,我們稱為串接型分類器(Concatenate Classifier)。而 HOG-AdaBoost 人形分類器與 GDguiding AdaBoost 人形分類器使用的是由許多個 弱分類器所組成的強分類器(Strong Classifier)。 關於區域特徵與全域特徵、各種分類器等較詳細的重要名詞解釋附於附錄一 的 4-1~4-2、5-1~5-4 項提供參考。. 2.1. 梯度方向直方圖(HOG) 本研究採用的梯度方向直方圖(Histograms of Oriented Gradients,HOG),是在 2005 年由 N. Dalal 與 B. Triggs 等人提出的一種用來進行人形偵測的特徵描述子,. 10.
(27) 其概念是以 36 個維度向量來代表一個影像區塊(Block)內物體的輪廓與外觀的資訊。 區塊的形狀分為兩種,分別為圓形(Circle-HOG)與矩形(Rectangular-HOG)。C-HOG 與 R-HOG 效果差異不大,但是 R-HOG 在實作上比較方便。因此本研究採用 R-HOG 進行系統實作。在不同應用的情況之下,區塊的長寬可以介於 12x12 至 64x128 之 間,其長寬比例可以為 1:1、1:2 與 2:1,即區塊之間的移動步數若為 1 個 Pixel,那 麼在一張偵測視窗中的區塊數量最大為 291997 個。 我們的人形偵測系統中採用 1:1 大小的區塊,並且區塊大小固定為 16x16。其 中在一張影像畫格(Frame)中包含若干個偵測視窗,一個偵測視窗中包含若干個區 塊,一個區塊中包含四個單元(Cell),如圖 2-1 所示。. 640. 64 8. 1:1. 16 8. 128. 480. 16 Block Cells Detecting Window. Frame. 圖 2-1 HOG 名詞示意圖. 計算一個 Block 的 36 維向量(36D Vector)稱為一個 HOG 的計算。共需經過五 個步驟,分別是:梯度分量、梯度大小、梯度方向、累積直方圖與直方圖正規化, 將在底下分別介紹。. Step.1 梯度分量(Gradient Components) 計算 HOG 特徵向量的第一個步驟是計算區塊內每個像素的水平方向梯度分量 Gx 與垂直方向的梯度分量 Gy。即經由公式(2-1),使用遮罩 [-1, 0, 1]與[-1, 0, 1]T 進 行影像旋積(Convolution Operation),如圖 2-2 所示,即可計算出 Gx 與 Gy。若影像. 11.
(28) 的色階為 8-bit,則 Gx 與 Gy 值的範圍將會落在-255 與+255 之間。雖然 HOG 原作 者也有測試過其他較複雜的遮罩去計算 Gx 與 Gy 的值,例如 Sobel 等。但經實驗所 表現的效果很差,所以得到結論為遮罩越簡單效果越好。. Gx ( x, y ) f ( x 1, y ) f ( x 1, y). (2-1). Gy ( x, y ) f ( x, y 1) f ( x, y 1). -1 Gx. -1. 0. +1. Gy. 0 +1. 圖 2-2 水平與垂直方向分量 Convolution 遮罩. Step.2 梯度大小(Gradient Magnitude) 接著進行第二個步驟的計算,使用步驟一所計算完成的水平與垂直方向的梯 度分量 Gx 與 Gy,並使用公式(2-2)進行梯度大小的計算。其計算方式為平方相加後 開根號,若影像的色階為 8-bit,將 Gx 與 Gy 的最大值+255 帶入公式(2-2),可以計 算得到梯度大小的最大值為 360.62,即梯度大小結果值的範圍將會落在 0~360.62 之間。. f ( x, y) Gx ( x, y)2 Gy ( x, y) 2. (2-2). Step.3 梯度方向(Gradient Orientation) 接著進行第三個步驟的計算,使用步驟一所計算完成的水平與垂直方向的梯 度分量 Gx 與 Gy,並使用公式(2-3)進行梯度方向的計算。依照該公式計算完畢的結 果為徑度(Radian),將結果換算為角度(Degree)後,因為 HOG 使用的是 Unsigned. 12.
(29) Gradient,所以換算成角度後若其為負角度則加上 180 度,使其結果介於 0~180 度 之間。Signed Gradient 與 Unsigned Gradient 的示意圖如圖 2-3 所示。. ( x, y ) tan 1. G y ( x, y ). (2-3). Gx ( x, y ). Y Y. 90°. 90° (-90°). 45°. 135°. 180° -180°. 0°. 135° (-45°) X 180° (0°). 0° (180°). X. Unsigned gradient. -45°. -135°. 45° (-135°). -90° Signed gradient. 圖 2-3 Signed Gradient 與 Unsigned Gradient 示意圖. Step.4 累積直方圖(Accumulated Histogram) 經過步驟二與步驟三的計算之後會得到梯度大小與梯度方向。梯度方向以 20 度的範圍作為 1 個區間(Bin)來做分割,Unsigned Gradient 的範圍為 0~180 度之間, 因此共有 9 個角度區間,如圖 2-4 所示。. Y 120° 140°. 7. 60° 40°. 6 5 4 3. 8. 160° 180°. 80°. 100°. 2. 9. 20°. 1 0° unsigned gradient. 圖 2-4 Unsigned gradient 與 9 bins 13. X.
(30) 將每一個區塊區分為 4 個單元(Cell),每個 Cell 中的每個像素位置均有其對應 的梯度大小與方向,依序將其梯度大小累積至其梯度方向區間,1 個 Cell 中的每個 像素位置全部累積完畢之後可以得到一個直方圖,如圖 2-5 的圖中是使用一個像素 進行累積示意,一個 Cell 累積完畢的直方圖也可稱為一個 9 維的向量(9D Vector) 或 9 維的直方圖(9D Histogram)。一共 4 個單元,將 4 個單元所累積出的 4 組 9 維 向量串接(Concatenate)為 36 維向量。如圖 2-6 所示。. 64 16 8. Cell 1 128. Cell 2. 16. 8. Cell 3. Cell 4. 區塊 (16x16 Block). 偵測視窗 (Detecting Window). Magnitude = 74.8 Orientation = 172.96 172.96 => Bin 9. Magnitude Accumulation 74.8 ………………… 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 圖 2-5 HOG 之 9D Vector 累積示意圖. 14. 9D Vector Bins.
(31) 64 16. 128. Cell 1. Cell 2. Cell 3. Cell 4. 16. 區塊 (16x16 Block). 偵測視窗 (Detecting Window). 9D Vector 1~4. 9D Vector 1~4 Concatenated into 36D Vector. 圖 2-6 HOG 之 9D Vector 與 36D Vector 示意圖. Step.5 直方圖正規化(L2-Normalization) 將步驟四累積完成的直方圖,即 36 維向量,進行正規化(Normalization)使其 每維向量數值均介於 0 到 1 之間。HOG 原作者在此步驟測試了四種方法:L2-norm、 L1-norm、L1-sqrt、L2-Hys,結論是 L2-norm、L1-sqrt、L2-Hys 三種方法的效果都 很好,而 L1-norm 表現出一點不可靠性,但相對於沒有正規化,四種方法都很有 效。我們使用 L2-norm,如公式(2-4)。其中(||v||2)2 = v02+v12+…+v352,𝜀:𝐸𝑃𝑆𝐼𝐿𝑂𝑁, 是一個極小的常數(a small constant),其存在意義是為了避免分母為 0 的情形發生。 在我們的程式中將其定義為 0.000001。. vi . vi ( v 2 )2 2. , i 0 ~ 35. 15. (2-4).
(32) 經過五個步驟的計算之後得到的經過正規化的 36 維向量,也就是一次完整的 HOG 計算,即為一個區塊的 HOG 特徵。圖 2-7 是為了將 HOG 視覺化,實際由偵 測視窗中的一些區塊所實際計算出的 HOG 繪製成直方圖的示意圖。. ……. ……. 圖 2-7 HOG 視覺化直方圖繪製示意圖. 在純軟體程式中我們藉由撰寫 C 語言模組化程式的方式,將一個 HOG 的計算 以一個 oneHOG 主模組實現,主模組函式名稱為 compute_oneHOG_36D_vector(), 其函式模組架構圖如圖 2-8 所示。圖 2-9 與圖 2-10 分別為 oneHOG 主模組測試專 案函式呼叫架構圖與流程圖。. oneHOG主模組 梯度計算子模組 梯度分量子模組 梯度大小子模組 梯度方向子模組 直方圖統計子模組 直方圖累加子模組 直方圖正規化子模組. 圖 2-8 oneHOG 主模組與子模組架構圖. 16.
(33) main() Read_BMPImgFile() 如果非4的倍數. bPiexl_0_Delete() setOriginalBlock() compute_oneHOG_36D_vector() blockTo4Maps(). blockToGradientComponents() ComponentsToMagnitude() ComponentsToOrientation(). oneHOG_vote_histograms(). block_vote_36D_vector(). 函式內呼叫 L2normalization_36D_vector(). 循序執行函式. 圖 2-9 oneHOG 主模組測試專案函式呼叫架構圖. Start. 宣告一個BMPDataStructure結構指標 BlockGreyBMP 並配置好記憶體空間. 呼叫Read_BMPImgFile()函式讀取BMP 圖檔. 否. 呼叫 bPiexl_0_Delete() 執行刪除零. 輸入BMP為4的倍數?. 輸入(Input): 灰階BMP圖檔 其內容為一個Block. 輸出(Output): 36D Vector, 即oneHOG. 呼叫compute_oneHOG_36D_vector() 主模組函式,進行oneHOG的計算. 主模組函式內部呼叫 blockTo4Maps()函式計算 梯度分量、大小、方向. 是 主模組函式內部呼叫 oneHOG_vote_histograms() 函式計算36D向量. 宣告OriginalBlock結構並呼叫 setOriginalBlock()函式配置內部記憶體空 間並填入Block寬高與像素. 圖 2-10 oneHOG 主模組測試專案流程圖. 17. End.
(34) 2.2. Dalal 人形分類器(Method 1) 在基於機器學習的人形分類器中,一般都需分成兩個階段,即訓練階段 (Training Stage)與測試階段(Testing Stage),測試階段又可以稱為偵測階段(Detecting Stage),在進入訓練階段之前使用者要事先針對要測試的場景類型進行蒐集並製作 出解析度大小為 64x128 的訓練樣本集(Training Sample),以供程式做機器學習之訓 練使用,訓練樣本集是由多張的正樣本(Positive Sample)與多張的負樣本(Negative Sample)所組合而合成的。其中,正樣本的圖片,內容需包含各種擬偵測的同類型 物件(Object)。在本系統中即為人(Human),範例如圖 2-11 上排所示。相反的,負 樣本的圖片,內容為任何不包含人(Non-human)的圖片,如圖 2-11 下排所示。另外 在樣本的數量上,一般來說負樣本的數量需要多於正樣本的數量,在我們的系統 中採用的正樣本與負樣本的比例大約是 1:3 到 1:4 之間。. 圖 2-11 訓練樣本範例圖。上排為正樣本,下排為負樣本。. 在 HOG 原始作者 Dalal 的文章中所描述的設定中,偵測視窗大小為 64x128, 區塊的大小為 16x16,一個區塊中包含四個大小為 8x8 的單元,區塊的掃描移動間 距為 8 個像素,其區塊掃描位置圖如圖 2-12 所示。. 18.
(35) 64. Dalal Human Classifier Block Locations (Totally there are 105 Blocks). 128. 16 16. 圖 2-12 Dalal 人形分類器區塊位置圖. 有了 HOG 向量特徵之後需要一個分類器來進行分類,Dalal 於 2005 年的文章 [11]中提到他們使用 HOG 搭配線性支持向量機(Linear Support Vector Machine, LSVM)[47-49]作為基礎分類器(Classifier),並且使用的是 SVM-Light 函式庫。而在 我們的系統中使用的是由國立臺灣大學(NTU)的林智仁(Chih-Jen Lin)博士所開發 的 LibLinear(1.9.4)[49]函式庫。另外,在機器學習演算法中,SVM 屬於一種監督 式學習的方法,亦即要事先人為針對訓練樣本集進行 Ground Truth 的標註,在人 形偵測系統中即是對正樣本標註為人(+1),對負樣本標註為非人(-1)。Dalal 人形分 類器的設定以及其訓練階段的演算法如下,另外圖 2-13 為訓練階段的流程圖。. Dalal 人形分類器設定 偵測視窗大小(Detecting Window Size):64x128 Pixels. 區塊大小(Block Size):16x16 Pixels. 單元大小(Cell Size):8x8 Pixels. 區塊移動間距(Block Spacing Stride):8 Pixels. 一個偵測視窗的區塊數量:105 Blocks. (7x15) 基礎分類器:線性支持向量機。(Linear Support Vector Machine,LSVM). 19.
(36) Dalal 人形分類器 Training Stage Input: 訓練樣本集以及其經由人為標註的正確結果(Ground Truth)。 p. is total number of positive sample.. n. is total number of negative sample.. m. is total number of training sample,. m = p + n.. Step 1:計算所有正樣本的 3780D 向量特徵。 for (i = 1; i <= p; i++) { Step 1.1 計算第 i 張正樣本第 1 個到第 105 個 HOG 特徵。 Step 1.2 將 105 個 36D 向量特徵串接成 3780D 向量特徵。 Step 1.3 將第 i 張正樣本計算得到的 3780D 向量特徵標示 Ground Truth 為人。(+1.0) } Step 2:計算所有負樣本的 3780D 向量特徵 for (i = 1; i <= n; i++) { Step 2.1 計算第 i 張負樣本第 1 個到第 105 個 HOG 特徵。 Step 2.2 將 105 個 36D 向量特徵串接成 3780D 向量特徵。 Step 2.3 將第 i 張負樣本計算得到的 3780D 向量特徵標示 Ground Truth 為非人。(-1.0) } Step 3:利用全部樣本的 3780D 特徵向量與其 Ground Truth 進行 Linear SVM 的訓練。 Step 4:輸出訓練完畢且可用來分類的 SVM Model File。. 20.
(37) Start. Output SVM Model File (Input) Read Training Sample Config & Training Samples. Calculate HOG Vector Set Ground Truth (All sample; One sample=>3780d). Set Lib Linear (Default values & Problem) Check Lib Linear (Parameters & Problem) Block Coordinate Scanning Lib Linear Training Output SVM Model File Save Model File End. 圖 2-13 Dalal 人形分類器訓練階段流程圖. Input: One Detection Window. One Detecting Window Classifier Module Start 105 HOG Features Computing from a Detection Window. 105 36D-HOG feature will concatenate into the 3780D feature vector Use Linear SVM Classifier to Classification. Output Classification Results(+1 or -1) End. 圖 2-14 Dalal 人形分類器測試階段流程圖. 21.
(38) 訓練階段完成後得到的 SVM Model File 就可以於測試階段使用了,流程圖如 圖 2-14 所示,偵測階段相較於訓練階段較為簡單,若偵測視窗大小與訓練樣本集 的大小(64x128)不同,則需要先縮放(Scaling Up/Down)至 64x128,接著計算偵測視 窗中第 1 個到第 105 個 HOG 的 36D 特徵向量並且將其依序串接(Concatenated)成 3780D 特徵向量,此特徵向量即可使用訓練好的 Linear SVM 進行分類,並且根據 分類結果(+1.0 or -1.0)輸出結果是人(Human)(+1.0)或者結果非人(Non-Human)(-1.0)。 其運作流程範例如圖 2-15 所示。. 36D Vector 1. 36D Vector 2. ……. HOG. 3780D (105x36). 36D Vector 104. (64x128). Linear SVM. Concatenated. Human! (+1). 36D Vector 105. 36D Vector 1. (64x128). 36D Vector 2. ……. HOG. Linear SVM. Concatenated. 3780D (105x36). 36D Vector 104. 36D Vector 105. NonHuman! (-1). 圖 2-15 HOG 人形分類器測試階段運作流程範例. 2.3. HOG-AdaBoost 人形分類器(Method 2) HOG-AdaBoost 人形分類器是毛詮毅[36]在 2011 年提出的以 HOG 結合 Adaboost 機器學習(Machine Learning)演算法所完成的方法,這個方法是毛詮毅從 22.
(39) Zhu[39]在 2006 年所提出的方法簡化而來。將偵測視窗中的每個區塊的 36 維特徵 向量結合 Linear SVM 作為一弱分類器,其訓練階段過程中一共需要經過兩個階段 的訓練,階段一:經由 Linear SVM 的訓練階段可以得到 105 個弱分類器的 SVM Model File。階段二:經由 AdaBoost 訓練階段後可以得到一組強分類器,強分類器 包含若干個(最多 T 個)弱分類器與其權重 Alpha_t(αt),如圖 2-16 為經由 AdaBoost 訓練後所得到的弱分類器,即區塊的位置圖,此範例經由 AdaBoost 所挑選出的區 塊數量為 23 個,由圖中可以發現區塊位置較多覆蓋在人形周圍,而角落的區塊因 為不具分類效果所以並無被挑選到。HOG-AdaBoost 人形分類器的設定以及其訓練 階段的演算法如下。. HOG-AdaBoost 人形分類器設定 偵測視窗大小(Detecting Window Size):64x128 Pixels. 區塊大小(Block Size):16x16 Pixels. 單元大小(Cell Size):8x8 Pixels. 區塊移動間距(Block Spacing Stride):8 Pixels. 一個偵測視窗的總區塊數量:105 Blocks. (7x15) 一個偵測視窗使用的區塊數量上限(T):40 Blocks. 基礎分類器:線性支持向量機。(Linear Support Vector Machine,LSVM) 機器學習演算法:自適應增強。(Adaptive Boosting,AdaBoost). 23.
(40) HOG-AdaBoost 人形分類器 Training Stage Input: 訓練樣本集以及其經由人為標註的正確結果(Ground Truth)。 p. is total number of positive sample.. n. is total number of negative sample.. m. is total number of training sample,. B. is total number of blocks. (105). m = p + n.. Stage1:Linear SVM 訓練階段 將每個 HOG 特徵視為弱分類器(Weak Classifier),進行 Linear SVM 的訓練並且 記錄每個弱分類器對樣本的分類結果。. for (j = 1; j <= B ; j++) { Step 1:計算所有正樣本的第 j 個 HOG 向量特徵。 for (i = 1; i <= p; i++) { Step 1.1 計算第 i 張正樣本的第 j 個 HOG 特徵。 Step 1.2 將第 i 張正樣本的第 j 個區塊計算得到的 36D 向量特徵標示 Ground Truth 為人。(+1.0) } Step 2:計算所有負樣本的第 j 個 HOG 向量特徵。 for (i = 1; i <= n; i++) { Step 1.1 計算第 i 張負樣本的第 j 個 HOG 特徵。 Step 1.2 將第 i 張負樣本的第 j 個區塊計算得到的 36D 向量特徵標示 Ground Truth 為非人。(-1.0) } Step 3:利用全部樣本的第 j 個區塊所計算得到的 36D 特徵向量與其 Ground Truth 進行 Linear SVM 的訓練。 Step 4:輸出訓練完畢的第 j 個弱分類器的 SVM Model File。 Step 5:使用第 j 個弱分類器的 SVM Model File,對所有樣本進行分類並且 記錄結果。 } 24.
數據
+7
相關文件
SPCE061A 的開發是通過線上調試器 PROBE 實現的。它既
ALTERA FPGA之編譯流程 (資料來源:
操作流程: 系統選單->財產管理系統->點選報廢申請單->填寫報廢申請單資料(主 單、明細)->點選確認
戴爾安裝了位在維吉尼亞州的 WebMethods 公司所開發的 B2B 整合軟體。WebMethods 公司所開發的 B2B 整合軟體 WebMethods
針對 WPAN 802.15.3 系統之適應性柵狀碼調變/解調,我們以此 DSP/FPGA 硬體實現與模擬測試平台進行效能模擬、以及硬體電路設計、實現與測試,其測 試平台如圖 5.1、圖
FPGA(Field Programmable Gate Array)為「場式可程式閘陣列」的簡稱,是一 個可供使用者程式化編輯邏輯閘元件的半導體晶片
在與 WINS 有關的研究之中,除了研發感測器硬體這個領域之外,其它的領域均需要
(Embedded System)為主,主要也都以 Linux 軟體平台來運作。對 EPON ONU Client 端,可以透過 GUI 介面選單來設定其所要運作的功能,配合 Linux 軟體與