• 沒有找到結果。

中 華 大 學

N/A
N/A
Protected

Academic year: 2022

Share "中 華 大 學"

Copied!
59
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學 碩 士 論 文

題目:以單晶片實現之人臉偵測演算法

Single-chip implementation of face detection algorithm

系 所 別:資訊工程學系碩士班 學號姓名:E09602017 魏先鴻 指導教授:鄭芳炫 博士

中華民國 九十九 年 八 月

(2)

摘要

人臉偵測在許多方面有很廣泛的應用,例如安全監控、家用機器人、互動性電玩、

行車安全與智慧型家電等,嵌入式系統中實現人臉偵測演算法的需求非常強烈。雖然在 PC上已經有快速又精確的人臉偵測演算法,但是這些演算法需要大量的記憶體資源與運 算資源,需要進一步的改良才能在嵌入式系統上實現。目前已有一些用ASIC實現的硬體 人臉偵測線路與在高單價的DSP上實現的人臉偵測系統,這些系統通常價格較高,不易 普及到各種應用中。由於單晶片具有低耗電與低成本的優勢,因此本文提出了一個用單 晶片實現的人臉偵測系統,其中的分類器採用OpenCV(Open Source Computer Vision Library)已訓練好的人臉偵測器。輸入影像為160x120,最後在駿億電子的KBDM810晶片 上執行,實驗結果frame rate為2 frames/sec,在資源方面使用RAM 28K bytes與ROM 35 K bytes。

關鍵詞─人臉偵測、單晶片、嵌入式系統

(3)

ABSTRACT

Face detection has extensive applications at a lot of field such as security monitoring, home robot, interaction game, traffic safety and intelligent household appliance. Demand for face detection algorithm in the embedded system is very strong. Although face detection algorithm in the personal computer could be executed fast and correctly, they need a large number of resources and computational operation. They can be realized in the embedded system if further improvements are conducted. At present, face detection system with ASIC hardware circuit or with high performance DSP have been already realized. However they suffer from high price and hard to use widely. Because the advantage of low power consumption and low cost for a single chip system, the face detection system has been implemented on a single chip system in this thesis. Classifier which uses OpenCV (Open Source Computer Vision Library) was a detector that has been training for face detecting.

Input image is 160pixel x 120pixel. The result of the experiment is 2 frames per second, and the necessary resource used for programming the KBDM810 are 28K-byte RAM and 35K-byte ROM.

Keywords ─ face detection, single chip, embedded system

(4)

誌謝

三年的研究所生涯中,在身兼學業與工作的同時,常因 分身乏術就使我的研究進度停滯,但是終究克服了所有的 問題。 一路走來,該感謝的人很多,不論是自己的同班同 學,還有公司裡的同事和朋友,都給我很大的幫助,其中 又以指導教授給我最大的支持和協助。由於工作的因素,

所以學校的 meeting 常會缺席,但是鄭老師依然包容著 我,並持續指導著我,給我相當多的資源和建議。最後我 要感謝我的爸爸,不時的為我打氣加油,讓我有動力的完 成學業

中華大學 資工所

研究生 魏先鴻

(5)

目錄

摘要 ... i

Abstract ... 錯誤! 尚未定義書籤。 誌謝 ... iii

目錄 ... iv

圖目錄 ... vi

表目錄 ... vii

第一章 簡介 ... 1

1.1 動機與目的... 1

1.2 研究方向 ... 2

1.3 論文架構 ... 2

第二章 人臉偵測系統的架構與介紹 ... 4

2.1 OpenCV 的簡介... 4

2.2 人臉偵測演算法... 4

2.3 Haar 特徵 ... 5

2.4 OpenCV 中 Viola 人臉偵測流程... 12

2.5 提出改良型人臉偵測流程 ... 16

第三章人臉偵測方法的複雜度與資源使用度... 18

3.1 計算複雜度 ... 18

3.2 空間複雜度 ... 18

3.3 已提出減少複雜度的方法 ... 19

第四章 改良式人臉偵測系統 ... 21

4.1 使用線形累加記憶體計算區塊像素平方值總合... 21

4.2 化簡分類器... 23

4.3 精簡式積分圖像 ... 28

4.4 提早拒絕策略 ... 29

4.5 提早過關策略 ... 32

4.6 調整特微儲存方式 ... 34

第五章 實驗結果 ... 35

5.1 實驗平台 ... 35

5.2 所需系統資源 ... 36

5.3 人臉偵測率比較 ... 38

5.3 人臉偵測速度的比較 ... 42

(6)

第六章 未來展望 ... 48

6.1 結論 ... 48

6.2 未來展望 ... 48

(7)

圖目錄

圖 1. 五種 H

AAR

特徵 ... 5

圖 2. 三種 H

AAR

特徵計算方式與其權重值 ... 6

圖 3. 積分圖像 的定義與圖示 ∑∑

=

x i j y

j i I y x II ( , ) ( , ) ... 7

圖 4. 利用積分圖像可以快速的計算出區塊內像素值的總合。區塊 A 內像素 值總合,可用積分圖像中的

A

+

D

-

B

-

C

得到... 7

圖 5. 層疊遞進式分類器結構示意圖... 9

圖 6. O

PEN

CV 所提供偵測人臉的第一個強分類器中的九個 H

AAR

特徵 ... 11

圖 7 人類偵測系統運作方式。利用移動偵測視窗在整張輸入影像上掃描, 將框到的子圖用分類器來判斷是否為人臉。... 13

圖 8.人臉偵測流程圖。 ... 14

圖 9. 傳統每個

STAGE

的計算流程... 15

圖 10 改良後的人臉偵測流程圖... 17

圖 11 線性纍加記憶體,以 4

X

4 的移動視窗為例 ... 23

圖 12 五種 H

AAR

特徵對稱的方式。 ... 24

圖 13 三種改良式 H

AAR

特徵計算方式與其權重值 ... 24

圖 14 化簡分類器後每個強分類器的計算流程 ... 27

圖 15 圖示 1

BYTES

的積分圖像 ... 29

圖 16.加入提早拒絕後每個強分類器的計算流程 ... 31

圖 17.加入提早拒絕策略與提早通過策略後每個強分類器的計算流程... 34

圖 18

KB810 的系統架構... 35

圖 19.帶狀積分圖像,每個元素 2

BYTES

,共需要 8000

BYTES

(160

X

25

X

2) . 37 圖 20.為改良後的人臉偵測方式實驗的結果(A) ... 39

圖 21.為 O

PEN

CV 實驗的結果(A) ... 39

圖 22.為 O

PEN

CV 與改良後的人臉偵測方式共同無法偵測出人臉的圖 ... 40

圖 23.改良後的人臉偵測方式實驗的結果(B)... 41

圖 24.O

PEN

CV 實驗的結果(B) ... 41

圖 25.160

X

120 的測試圖片 ... 43

圖 28. 每個強分類器中所計算的弱分類器的數量 ... 46

圖 29. 在每個強分類器下所計算的弱分類器數量與傳統作法比較 ... 46

(8)

表目錄

表 1 O

PEN

CV 所提供人臉分類器特徵類別統計 ... 10

表 2. 積分圖在不同大小像素的圖片所需的記憶體空間 ... 19

表 3. 平方積分圖像在不同圖片大小下所需的記憶體空間 ... 19

表 4. O

PEN

CV 所提供在第一個強分類器中的特徵與化簡完的結果 ... 25

表 5. O

PEN

CV 所提供在 S

TAGE

0 的特徵在加入提早拒絕策略方法後化簡的結 果 ... 30

表 5 人臉偵測系統所需要的記憶體總表... 38

表 6.CMU

DATA

-

BASE

在 O

PEN

CV 與改良後的人臉偵測方式中的偵測率。40 表 7 O

PEN

CV 與 MCU 的人臉偵測方式速度的比較表 A ... 42

表 8 O

PEN

CV 與 MCU 的人臉偵測方式速度的比較表 B... 44

表 9. 不同策略下,所計算弱分類器數量比較表 ... 47

(9)

第一章 簡介

1.1 動機與目的

人臉偵測有很廣泛的應用。一開始只是用做人臉辨識的先前的步驟而已[3],主 要為了能準確地定位出人臉,人臉辨識才能有高的辨識率。當 Viola and Jones [7]推出 第一個在 PC 上實現的即時人臉偵測系統之後,各式各樣的應用也愈來愈多。像是在 數位相機上,可利用偵測到的人臉資訊來做更精確的白平衡、自動對焦與自動曝光 等。在智慧型家電上,如電視或冷氣,自動偵測人臉存在與否來開啟或關閉家電,以 達到節能的效果。在行車安全上,可用來偵測駕駛者的精神狀態,再以聲音提醒駕駛 者。用在自動提款機上,就能防止歹徒為了躲避是款機上的監視系統,而戴安全帽遮 住臉來提款。另外還可以應用在電子寵物,家用機器人,安全監控,互動性電玩上。

人 臉 偵 測 方 法 迄 今 已 有 十 幾 年 , 已 有 各 式 各 樣 的 方 法 被 提 出 [2] , 例 如 feature-based [15]、 利用膚色的方法[12] 、 Eigenface [3] 、 Neural Network [4][5] 、 Support Vector Machine [6]與 Adaboost [7]等。Sung [4]、Rowley [5]與 Osuna[6]在差 不多時間提出了高偵測率的人臉偵測方法,這三個方法都是用機器學習的方法來訓練 人臉偵測系統。Viola and Jones [7]提出了一個精確的即時人臉偵測演算法,他們用很 容易計算的 Haar 特徵,再利用積分圖像來加速特徵的計算。這個方法利用 adaboost 來 挑選合適的弱分類器,來組成一個高偵測率的強分類器。他們也利用一個層疊遞進式 (Cascade structure)的結構來早期剔除掉不可能是人臉的區塊,以達到即時偵測。

(10)

雖然現在已存在很成熟的演算法,但因為人臉偵測的演算法其運算複雜度很高加 上記憶體需求量太大,大多在 PC 平台上實現。想要達成上述的應用,將人臉偵測演 算法用嵌入式平台實現是有必要的。目前已有不少廠商在 ARM 平台上開發人臉偵測 演算法,也有些廠商直接將人臉偵測演算法 ASIC(Application-specific integrated circuit) 化,這類的產品成本較高只適合對成本較不敏感與低秏電要求不高的應用。現今目前 尚未有單晶片版本的人臉偵測平台出現,會選擇以單晶片做為開發的平台主要是單晶 片在全世界被普遍使用,開發工具齊全,多半具有低耗電,低成本的優點。我們提出 了一個以駿億電子公司的單晶片為平台的人臉偵測系統,其中分類器採用 Intel OpenCV [8][9]裡面的人臉偵測器。

1.2 研究方向

我們希望保留高準確人臉偵測的特性,並結合 Viola 快速人臉偵測的概念,提出 一個適合於單晶片實作的演算法。在實作上希望能降低演算法所需的記憶體空間,使 人臉偵測演算法能在低成本的晶單片上執行。

1.3 論文架構

本文的架構如下,在第二章描述人臉偵測系統與其組成的要件。,包含了 Viola 所 提出的 Haar 特徵[7]、用來加速計算特徵的積分圖像、Boosting 演算法的精髓弱分類 器與強分類器、最後介紹能快速濾掉非人臉視窗所用的層疊遞進式分類器結構。第三 章說明人臉偵測方法的複雜度與在不同解析度的圖片上做人臉偵測所需要的記憶體 資 源 。 接 下 來 第 四 章 詳 述 我 們 所 提 出 來 改 進 後 的 方 法 , 包 含 利 用 line-based accumulative buffer 來取代積分圖像、化簡分類器、精簡式的積分圖像與在不降低人

(11)

臉偵測的準確度下提出使用提早拒絕策略與提早過關策略的觀念減少弱分類器的計 算。第五章針對我們所提出來改良式人臉偵測系統在單晶片台上與 OpenCV 做比較,

不論執行效率與人臉偵測率都有不輸 OpenCV 的效能。第六章說明本篇論文的結論以 及未來的研究方向。

(12)

第二章 人臉偵測系統的架構與介紹

本章將介紹 OpenCV(Open Source Computer Vision Library)為何,接下來將介紹 Viola 演算法包含 Haar 特徵、用來加速計算特徵的積分圖像(Integral Image)、Boosting 演算法中的弱分類器(Weak classifier) 與強分類器(Strong classifier)、介紹能快速濾掉 非人臉視窗所用的層疊遞進式分類器結構(Cascade structure),最後介紹 OpenCV 的人 臉偵測流程。

2.1 OpenCV 的簡介

OpenCV 是由 Intel 所開發出來的一個開放原始碼的機器視覺函式庫,是由一系 列的 C 程式和少量的 C++程式所構成的函式庫,其實現了許多影像處理和電腦視覺 方面常用的通用演算法,Viola 人臉偵測演算法是其中的一項。

2.2 人臉偵測演算法

在我們的單晶片人臉偵測系統中,我們使用 Intel OpenCV 已經訓練好的人臉偵 測器。此人臉偵測器是 boosting-based 的方法,利用簡單的區塊像素值總合相減後 的差值當做特徵值,此種特徵值稱為 Haar 特徵,每一個特徵皆可形成一個弱分類器。

利用 boosting-based 的方法可以在訓練階段從訓練資料中找出較有鑑別力的弱分類 器,這些弱分類器加上權重可以組合成一個強大的分類器。為了快速計算 Haar 特徵,

引進了積分圖像的概念。此方法更進一步採用了層疊遞進式架構,使人臉偵測器運算 更快速。底下描述此方法的運作方式。

(13)

2.3 Haar 特徵

人臉有很多地方有高低反差,像是額頭比眼睛亮,嘴角的陰影比臉頰還要黑,這 些區塊像素值總合相減之後的差值當做人臉偵測時的特徵。此種特徵稱為 Haar 特 徵。這類的特徵的好處是簡單且容易計算,用積分圖像可以加速特徵的計算,以達到 即時偵測的目的。總共有五種 Haar 特徵, 圖 1所示。白色區塊內的像素值的總合,

與黑色區塊的像素值總合之間的相差值當做特徵。

圖 1. 五種 Haar 特徵

為了更容易表達與運算,特徵的計算方法如下:

=

=

} , , 1 {

) ( Re

) (

N I

i

i i

I

x cSum r

f

L

ω

(1)

上述的式子所表示的意思是任意個區塊總合 RecSum 的權重和即是特徵值。N 是 區塊的個數,權重

ω

i屬於實數域,ri是在子圖 (24x24)裡的任意區塊。這樣的特徵範 圍太大了,在實作上限縮了特徵的範圍,只使用如圖 1的五種特徵,其中白色區塊與

X2 Y2

X3 Y3

X2Y2

(14)

黑色區塊的大小是一樣的。

二個區塊的權重不同號,而且與其大小有關。權重不同號是為了計算區塊的差 值,而以區塊大小的倍數當做權重。比如說 haar_x3,大白塊比小黑塊大三倍,所以 白塊的權重是-1,而黑塊的權重是+3。而 haar_x2,因為大白塊比小黑塊大二倍,所 以大白塊的權重為-1,而小黑塊的權重則為+2,如圖 2所示。

圖 2. 三種 Haar 特徵計算方式與其權重值

所謂的積分圖像的概念,如圖 3所示,點(i, j)位置的值為左上角所有灰色方 塊範圍內的像素的值的加總。因為原始影像的像素值是正值,所以積分圖像的左下 角的值,永遠大於右上角的值。有了輸入影像的積分圖像我們就可以用簡單的運算 得到影像中任意大小區塊的像素值總合,如圖 4所示,區塊 A 內像素值總合,可用 積分圖像中的 a+d-b-c 得到。

積 分 圖 像 內 每 個 元 素 的 大 小 與 輸 入 影 像 大 小 有 關 。 若 輸 入 影 像 大 小 為 640x480,則積分圖像每個元素所需要的大小為 640x480x255,即 27bit。

= * -1 + * 3

3 1 / 3 ) ( /

)

(

0 1

1

= Area r Area r = =

w

0

= − 1 w

= * -1 + * 2

2 1 / 2 ) ( /

)

(

0 1

1

= Area r Area r = =

w

0

= − 1 w

= *-1 + *2 + *2

(15)

圖 3. 積分圖像 的定義與圖示

∑∑

=

x

i j y

j i I y

x

II ( , ) ( , )

圖 4. 利用積分圖像可以快速的計算出區塊內像素值的總合。區塊 A 內像素值總合,可用積分圖像中的 a+d-b-c 得到

Boosting 演算法的精髓就是將許多弱分類器結合成一個強分類器。弱分類器的 定義如下:

(i,j)

Input Image

d

c

b

a A

(x,y)

Sum of region A =a+d-b-c 積分圖像

(16)

⎩ ⎨

= <

θ α

θ α

) (

) ) (

( f x

x x f

h

i R

i L

i (2)

其中

f

i(x)是式 1 中定義的 Haar 特徵值,

θ

是門檻值,而

α

L

α

R分別是人臉與 非人臉的機率值。這些值都是在訓練階段,由 positive data 與 negative data 所 決定。

每個一 Haar 特徵包含三個矩型、

θ

(浮點數需要 4bytes)、

α

L(浮點數需要 4bytes) 與

α

R(浮點數需要 4bytes),每一個矩型包含了矩型的權重(需要 1byte)、矩型的左 上角的座標(包含 x,y 需要 2bytes)與矩型的長寬(需要 2bytes),所以記錄一個 Haar 特徵需要 5bytes(矩型)*3+4bytes(

θ

)+4bytes(

α

L)+4bytes(

α

R)=27bytes。OpenCV 所提供偵測人臉的包含 2913 個 Haar 特徵,所以特徵全部需要 2913*27=78651Bytes。

強分類器的定義如下:

<

=

=

i wcNum

i

i

x h t

StageOutpu

0

)

(

(3)

⎩ ⎨

⎧ >

reject otherwise

pass hold

StageThres t

StageOuptu

(4) 由多個弱分類器加總所組成。當其輸出值大於門檻值時,則此子影像為人臉。

強分類器是由多個弱分類器所組成,其運算複雜度與弱分類器的個數有關,一個 精確的強分類器通常有上百到上千個弱分類器。在一張影像中,大部份都是非人臉,

人臉佔極少數。以 VGA 大小為例,若 24x24 大小時子視窗一次移動一個像素,影像每 次縮小倍率為 1/1.2 倍,共掃瞄 10 層的話,總共有 84 萬個子圖,其中是人臉的子圖

(17)

大概不會超過 100 個。這 84 萬皆經過一個強分類器來分辨是否為人臉,會很耗時。

為了要達到快速的人臉偵測,利用多個強分類器形成階層式結構來代替一個強分 類器。如圖 5所示,每一個階段是一個強分類器其主要任務是過濾非人臉。每個 stage 的在訓練時要求其在寬鬆的人臉標準下,盡量過濾掉非人臉。在訓練時,後一層的 stage 的非人臉資料,是經過前一層已訓練好的 stage 過濾後所剩下的,愈後面的非 人臉會愈來愈少,也愈來愈難分類,所以愈後面的 stage 會有愈多的弱分類器。大部 份的非人臉在前幾個階段就會被過濾掉。最後通過所有階段的子圖即為人臉。

圖 5. 層疊遞進式分類器結構示意圖

表 1 為 OpenCV 所提供人臉分類器其 Haar 特徵類別的統計表,由表中可得知本 分類器總共由 2913 個弱分類器組成 25 個強分類器。強分類器 0 與強分類 1 各別只有 9 個與 16 個弱分類器,大部份的非人臉在最前面幾個強分類器即被過濾掉其計算量 是非常少的,所以層疊遞進式分類器能是個有效的分類器。

圖 6為 OpenCV 所提供偵測人臉的第一個強分類器中的九個 Haar 特徵,這九個 Haar 特徵大多落在人臉中的眼、鼻子、嘴巴及人臉的輪廓區域,而這些區域也是判 斷是否為人臉重要的特徵。所以第一強分類能讓非人臉的子圖,在利用極少的 Haar

……..

Non-face

強分類器 N 人臉

非人臉 強分類器 1

(18)

特徵即可將非人臉的子圖過濾掉,進而增進整個人臉分類器的執行效能。

表1 OpenCV 所提供人臉分類器特徵類別統計 Stage

Type 0 1 2 3 4 5 6 7 8 X3&Y3 4 13 11 20 20 25 28 38 52 X2&Y2 5 3 14 7 25 22 20 27 18 X2Y2 0 0 2 5 7 6 14 7 13 TOTAL 9 16 27 32 52 53 62 72 83

Stage

Type 9 10 11 12 13 14 15 16 17 X3&Y3 47 60 55 64 65 62 79 80 62 X2&Y2 28 23 41 46 45 46 39 41 54 X2Y2 16 16 19 17 25 28 19 38 39 total 91 99 115 127 135 136 137 159 155

Stage

Type 18 19 20 21 22 23 24 total X3&Y3 78 106 91 98 94 106 100 1458 X2&Y2 62 55 57 49 58 59 54 898

X2Y2 29 35 49 34 47 46 46 557 total 169 196 197 181 199 211 200 2913

(19)

圖 6. OpenCV 所提供偵測人臉的第一個強分類器中的九個 Haar 特徵

由於輸入影像可能在不同的光源與不同的曝光下所拍攝,會造成人臉的亮度不一 樣,所以必須做光源補償(lighting compensation)。光源補償如下列式子所示:

σ μ c

y x y I

x

I = ( , ) −

) ,

(

(5)

X X

n ( )2

(20)

每 一 個 像 素 值 減 掉 區 塊 像 素 的 平 均 值 後 , 再 除 以 整 個 區 塊 的 變 異 度 (variance)。我們可以利用積分圖像得到像素平均值,計算變異度需要區塊內像素值 平方總合,這個值可以由一個平方積分圈像(Squared Integral Image)或稱平方積分 圖像(SII)快速計算得到,其定義如下:

∑∑

=

x

i j y

j i I y

x

SII ( , ) ( , )

2 (6)

2.4 OpenCV 中 Viola 人臉偵測流程

Viola 人臉偵測一開始先初始子視窗大小(一般為 24x24),設定子視窗的放大倍 率(一般為 1.2 倍),一開始先依輸入的影像建立積分圖像與 Square 積分圖像,再將 輸入影像中一一截取 24x24 大小的子圖丟入層疊遞進式分類器結構判斷是否為人 臉,如圖 7。

∑∑

=

x i j y

j i I y

x

SII

( , ) ( , )2

n X n X

X n

X

X n X X n X

X X

n

i n i

i i n

i n i

i i

n

i i n

i i n

i i

2

0 0

2 2

0 0

2

2

0 0

2 0

2

2 ) (

⎟ ⎠

⎜ ⎞

=

⎟ ⎟

⎟ ⎟

⎜ ⎜

⎜ ⎜

=

+

=

∑ ∑

∑ ∑

=

=

=

=

=

=

=

∑∑

=

x i j y

j i I y

x

II

( , ) (, )

(21)

圖 7人類偵測系統運作方式。利用移動偵測視窗在整張輸入影像上掃 描,將框到的子圖用分類器來判斷是否為人臉。

整張影像中所有 24x24 大小的視窗都偵測完後將判斷此子視窗大小是否小於輸 入影像大小,是的話,再依子視窗放大倍率放大,然後重復上述操作,直到所有的視 窗都偵測過為止,流程如圖 8。圖 9為圖 8中 Detect 方塊的詳細的流程。

………

…..

Moving window

Face/Nonface Classifier

subimages

………

…..

Moving window

………

…..

Moving window

Face/Nonface Classifier

subimages

Face/Nonface Classifier

subimages

(22)

圖 8.人臉偵測流程圖。

Start

Calculate integral image

Calculate square integral image

Scan next windows

Detect

Last window?

NO

YES

Image size<

windows size

END NO YES

Scale up Windows

Output the window

(23)

圖 9. 傳統每個 stage 的計算流程 Pass to next stage

Start

Next Classifier

Process haar feature Compare with threshold and

accumulate stage-output

Last haar feature?

NO

YES

Last classifier?

END NO

stage-output

>Threshold?

YES

Reject sub-windows NO

NO

(24)

2.5 提出改良型人臉偵測流程

為了避免大量復雜的運算,我們將改良圖傳統 Viola 演算法的流程,如圖 10所 示。一開始我們不計算整張輸入影像的積分圖像,而是以循序的方式來取得原始子視 窗(一般為 24x24)的輸入影像,再此計算輸入影像的積分圖像。根據參考文獻[13]的 研究指出,縮小輸入影像的大小而不去放大矩型特徵的大小仍可以獲得相當好的偵測 結果,是因為矩型特徵在計算像素灰階值總和時皆是單純的使用簡單的矩形來做相加 減,所以相對於各個矩型方塊內的像素灰階值總和的比例才是影響偵測品質最大的原 因。

(25)

圖 10 改良後的人臉偵測流程圖 Start

Calculate integral image

Calculate square integral image

Scan next windows

Detect

Last window?

NO

YES

Image size<

windows size

END NO YES

Scale down image Output the window

(26)

第三章人臉偵測方法的複雜度與資源使用度

3.1 計算複雜度

人臉偵測系統用一個移動視窗(moving window )掃過所有可能的子圖來偵測輸入 影像中不同位置的人臉。為了要偵測不同大小的人臉,系統還必須多層次的縮小輸入 影像,再重新掃瞄一次。以 VGA 大小的輸入影像為例,當移動偵測視窗大小為 24x24,

而每次只移動一個像素時,則必須要掃瞄 28 萬次((640-24)x(480-24))。若設定最大偵 測人臉大小為 256x256,假設輸入影像每次縮小倍率為 1.2 倍時,全部得掃瞄 10 層總 共有 84 萬個候選區塊,系統的複雜度很高。

在判斷每個子圖是否為人臉時,都要對記憶體做存取。而因為子圖太多了,造成 記憶體頻寬需求量很大。為了要使整個系統達到準確又快速,縮減記憶體使用量,加 速分類器的判斷都是必要的。

3.2 空間複雜度

在原來的方法中,使用積分圖像(II)來快速計算 Haar 特徵,使用平方積分圖像計 算變異度,用來做光源補償。如表 2所示,在不同大小圖片下積分圖像所需的空間大 小也不同。以 640x480 圖片大小為例,積分圖像裡面最大值為 255x640x480,每個元 素將近要 27bits 所以需要 640x480x27bits=1012KBytes。

表 3所示,在不同大小圖片下平方積分圈所需的空間大小也不同。平方積分圖像 最大值為 2552x640x480,將近需要 35bits。以 640x480 圖片大小為例平方積分圖像所 需要的記憶空間為 640x480x35bits=1312.5Kbytes。

積分圖像與平方積分圖像會隨著輸入圖片大小而快速成長,在較小尺寸 160x120

(27)

下積分圖像加上平方積分圖像也需要 126K 的記憶體空間。126K 在單晶片等級的 IC 中是屬於十分龐大的面積,面積的大小也表示 IC 成本的高低,若可以將所需記憶體 空間縮小,也表示 IC 成本較低。

表2. 積分圖在不同大小像素的圖片所需的記憶體空間

圖片大小 每個元素所需 bit 積分圖像所需空間 160x120 23bit 53.9Kbytes 320x240 25bit 234.4Kbtes 640x480 27bit 1012.5Kbytes 1024x768 28bit 2688Kbytes

表3. 平方積分圖像在不同圖片大小下所需的記憶體空間

圖片大小 每個元素所需 bit 平方積分圖像所需空間 160x120 31bit 72.7Kbytes 320x240 33bit 309.4Kbtes 640x480 35bit 1312.5Kbytes 1024x768 36bit 3456Kbytes

3.3 已提出減少複雜度的方法

為了在嵌入式系統上實現,有許多研究提出不同的方法來降低複雜度。Wong and Chiu[10] 用硬體線路來實現人臉偵測系統,他們主要概念是利用一個區域性積分影像 來取代整張積分影像,以減少記憶體使用量。每個移動視窗都產生一個區域性積分影 像,由於區域性積分影像數量太多,他們設計了一個特殊的硬體線路來快速的計算移 動視窗區域性積分影像。

(28)

某些方法為了要減少子圖的數量,採用一些 pre-filter 來過濾掉大量的子圖。最常 用的是利用膚色來過濾[2][15]。這類的方法的缺點是膚色模型並不穩定,很容易受到 環境光源、相機白平衡、相機自動曝光等等的因素的影響。尤其在強光下,膚色幾乎 變白色,很容易出錯。

上述的方法都是利用特殊的硬體線路完成人臉偵測系統,不易修改。利用 DSP 為平台者,則有高成本的缺點。因為單晶片廣泛使的被應用在不同的場合,發展工具 齊全,而且俱有低耗電低成本的優點,我們提出了一個在單晶片上實現的人臉偵測系 統。我們的人臉偵測演算法提出了一個精簡式的積分圖像來代替原本的積分圖像。我 們也利用行緩衝區(line buffer)[13]來計算移動視窗內像素值平方總合,來代替平方積 分圖像。而且針對弱分類表中的

α

值做化簡,使得所需記憶體空間縮小到能夠放入 單晶片的內部記憶體中,這表示整個人臉偵測系統花費在記體的存取的時間,相較外 掛記憶體(如外掛 SRAM)的系統少很多。記憶體空間的縮小表示整體的成本較低,非 常適合應用在對成本十分敏感的場合。我們也提出了一個可以使用提早拒絕、提早過 關策略的改良人臉分類器,在不降低偵測品質下,用來快速濾除非人臉子圖。

(29)

第四章 改良式人臉偵測系統

目前大部份即時人臉偵測演算法都在 PC 上實現。單晶片的資源並不像 PC 那麼 的多, 想用單晶片來實現人臉偵測方法需要針對記憶體空間的消耗做改良。人臉偵測 演算法對記憶體讀取非常頻繁,由移動視窗切出的候選區域非常的多,記憶體讀取上 需要很大的頻寬。為了達到省電與即時的目的,演算法所需要的記憶體空間需縮減到 能塞入晶片內部記憶體之中。我們所提出來的方法有精簡型的積分圖像,使用線形累 加記憶體(line-based accumulative buffer)來計算移動視窗像素值平方總合,精簡 classifier table 與提早拒絕、提早過關策略,精簡 Haar 特徵儲存等。

4.1 使用線形累加記憶體計算區塊像素平方值總合

如 2.3 節所述,人臉偵測演算法利用每個像素除上子圖的變異度來克服在不同光 影變化下拍攝到的人臉的問題。我們可以用子圖裡像素值的平方和來快速計算變異 度。傳統的實現方法是建立一張平方積分圖像,再用移動視窗在平方積分圖像上 4 個角落的點,如圖 6 般計算出區塊內像素值平方的總合。此平方積分圖像比積分圖像 還要耗記憶體,當 frame 大小為 VGA(640x480)時,平方積分圖像上的每個元素需要 35 bits (2562x640x480),整個平方積分圖像需要 1.3M bytes 左右。在人臉偵測方法中,

每個子圖只需要一個變異度值,而且子圖的大小是固定的。我們不需要計算任意大小 區塊的像素值變異數,所以我們使用線形累加記憶體來代替平方積分圖像。

我們的做法是對移動視窗內的子圖的行(column)上的像素平方值總合存到行緩 衝區之後,再沿著行緩衝區加總,即可得到子圖內部所有像素平方值的總合。而由於 移動視窗是順序移動的,所以要計算下個移動視窗所框到的子圖的變異度值時,我們

(30)

如圖 11所示,我們以大小為 4x4 的移動視窗 (mw) 為例,其中 mwk與 mwk+1 只差一排行。mwk的四排行內的像素值平方加總後,分別儲入行緩衝區的 b[k], b[k+1] , b[k+2] , b[k+3]之中。此四個值是 mwk的 squared 像素和。計算 mwk+1時,只需要將 mwk的值減掉 b[k]再加上 b[k+4]即可。

行緩衝區的長度與輸入影像的寬度一樣,而行緩衝區每個元素的大小,則與子圖 的大小有關。在我們的實作上,輸入影像為 160x120, 子圖大小為 24x24,所以行緩 衝區中最大值為 160x24x24x256,每個元素需要 4 bytes 的儲存空間。也就是說,行緩 衝區的大小為 160x4 bytes。

(31)

圖 11 線性纍加記憶體,以 4x4 的移動視窗為例

4.2 化簡分類器

儲存一個分類器需要 78651 bytes,需要大量的記憶體空間,所以有化簡的必要。

利用 Haar 特徵有對稱性的特點如圖 12,所以只需儲存第一個矩型的左上角座標及長 寬,而第二第三個矩型可利用第一個矩型的資訊計算得知,藉此來簡化所需儲存的容 量,如圖 13。經過這一步的簡化每一個 Haar 特徵只包含一個矩型、

θ

(浮點數需要 4bytes)、

α

L(浮點數需要 4bytes)與

α

R(浮點數需要 4bytes),每一個矩型包含了矩 型的 Type(需要 1byte)、矩型的左上角的座標(包含 x,y 需要 2bytes)與矩型的長寬

Moving window

k k+1 k+4 Line buffer

此四個值

b[k],b[k+1],b[k+1] ,b[k+3]加 總起來即是 moving window k 的 squared pixel sum

Moving

window k Moving window

k+1

計算 moving window (mw) k+1 時,只需要將 mv k 的值 減掉 b[k]再加上 b[k+4]即可

(32)

( 需 要 2bytes) , 所 以 記 錄 一 個 Haar 特 徵 需 要 5bytes( 矩 型)+4bytes(

θ

)+4bytes(

α

L)+4bytes(

α

R)=17bytes。OpenCV 所提供偵測人臉的包含 2913 個 Haar 特徵,所以特徵全部需要 2913*17=49521Bytes。

圖 12 五種 Haar 特徵對稱的方式。

圖 13 三種改良式 Haar 特徵計算方式與其權重值

= *1 + *1 + *1 + *1

= * 1 + * -1

= * 1 + * -1

X2

Y2

= * 1 + * 1 + * 1

Y3

= * 1 + * 1 + * 1

X3

Y3 等距

X2 等距

Y2

等距

X3

等距

X2Y2 等距

X2

X2Y2

(33)

每個弱分類器中有兩個

α

值,分別為

α

R

α

L,每個

α

值用定點數儲存需要 4

bytes 的空間。為了要降低分類器的儲存空間,我們將其中一個

α

省略掉。詳述如下:

我們將每個強分類器中所有的弱分類器的

α

L相加,成為 default stage output。每 個弱分類器只儲存

α

)R=

α

R-

α

L。此時 stage 的運算方式可用下列式子表示。

⎩⎨

= <

+

α θ

θ

) (

) ( 0

x f

x t f

StageOutpu

i R

) i (8)

我們的概念是,先假設所有的弱分類器每次都是

f

i(x)<

θ

,預先把

α

L加到 stage output 內。當

f

i(x)<

θ

的時,不做任何事。而當

f

i(x)≥

θ

時,我們猜錯了,必須要在 stage output 值中,加上

α

R,再減去

α

L,此即為

α

)R的值。如此,我們在每個 stage 將

Threshold 改 為 儲 存

DefaultOut pue Threshold

i

R

=

=0

α

, 最 後 將 判 斷 式

StageOutput<Threshold 改為 StageOutput<0,其流程如圖 14。經過本步驟化簡後將可 以省下每個弱分類器的

α

L, OpenCV 所提供偵測人臉的包含 2913 個 Haar 特徵,儲 存特徵需要 2913*13=37869Bytes。表 1 為 OpenCV 所提供偵測人臉第一個強分類器 中九個 Haar 特徵的

α

值,化簡最後的結果如表 4。

表4. OpenCV 所提供在第一個強分類器中的特徵與化簡完的結果

feature

α

R

α

L

α

)R=

α

R-

α

L 0 2.0875380 - 2.2172100 4.3047480 1 - 1.8633940 1.3272050 -3.1905990 2 - 1.5105250 1.0625730 -2.5730980 3 - 0.8746390 1.1760340 -2.0506730 4 - 0.7794570 1.2608420 -2.0402990 5 0.5575130 - 1.8743000 2.4318130

(34)

6 - 1.6911930 0.4400970 -2.1312900 7 - 1.4769540 0.4435010 -1.9204550 8 - 0.8590920 0.8525560 -1.7116480 門檻值 -5.04225

Default Output 2.471298

(35)

圖 14 化簡分類器後每個強分類器的計算流程 Pass to next stage

Start

Next Classifier

Process haar feature Compare with threshold and

accumulate stage-output

Last haar feature?

NO

YES

Last classifier?

END NO

stage-output

>0

YES

Reject sub-windows NO

NO

(36)

4.3 精簡式積分圖像

積分圖像可以快速的計算輸入影像上任意大小區塊像素值的總合,可用來快速計 算 Haar 特徵。積分圖像的定義如圖 3與式 2 所示, 其大小與輸入影像大小有關,以 輸入影像大小為 VGA 為例,積分圖像每個元素需要 27 bits。事實上,在人臉偵測方 法中,並不需要計算任意大小的區塊像素加總值,最大的 Haar 特徵為子圖的大小。

以圖 1的 haar 特徵 X2 為例,最大的區塊的大小為子圖的一半。積分圖像內部的元素 只要能記錄最大區塊像素值總合的最大值即可。傳統上積分圖像的左下角的值一定會 大於右上角的值,但是我們並不需要忠實的累加原始像素值,我們只需要積分圖像裡 面四個點的差值就可以計算出區塊總合值。換句話說,在建立積分圖像時為了不讓累 加值溢位所以需要比較多的記憶空間。但在計算區塊如圖 4,我們只需要知道 a, b, c, d 之間的差值就好,再利用其關係 b>d, c>d,即可輕易計算出區塊像素值總合。

建立積分圖像時若像素加總值大於最大值時,就任其溢位,其值會變小。我們已 經知道 a 大於 b, c 與 d,而且 b>d , c>d。當我們利用積分圖像來計算區塊像素值總合 時,若 a 的值比 b, c 與 d 還要小,我們即可了解,a 真正的值是 a 加上溢位前的最大 值。只要區塊像素值加總不超過積分圖像內部每個元素的儲存空間,即可用這個精簡 的積分圖像正確且快速的計算出來。

舉例來說,圖 15是一個 1 byte 的積分圖像。其中 a 的值是 15,而 b, c 與 d 的值 都比 a 大。我們即可知道 a 實際上的值是 256+15。以圖 15為例 A 區域的值應該為 a+b-c-b=(256+15)+180-190-250=11,實作上只需要直接拿 a,b,c 與 d 做計算得到的結果 相同。

(37)

圖 15 圖示 1bytes 的積分圖像

若採用圖 2的方式來計算 Haar 特徵,一次取得最大的矩型區塊為 24x24,使用 256 階的灰階,最大區塊像素的總合值為 24x24x256<218,每個元素的需要 18bits。在 OpenCV 所提供的人臉 Haar 特徵,利用 4.3 節的方式一次取得最大的 Haar 特徵的區 塊 為 22x11 , 使 用 256 階 的 灰 階 。 則 此 最 大 區 塊 像 素 值 的 總 合 值 最 大 為 22x11x256=61952<216,不管輸入影像有多大,我們所使用的積分圖像每個元素只需 要用 2 bytes 來記錄即可。

4.4 提早拒絕策略

原來的做法需要計算每一個強分類器中的所有弱分類器後才能判斷子圖是否被 剔除,其流程如圖 16。最後判斷是否將子圖是否被剔除跟據 Stage-Outpue 是否小於 Threshold,至於 Stage-output 比 Threshold 的值小多少並不在意。所以我們加入了 early rejection 的觀念,在不需要計算全部的弱分類器的 Haar 特徵值的情況下,預先就判 定某個子圖是否被剔除。我們的做法是,先將

α

)R的值轉成負的,再對

α

)R值的大小做

d=180

c=250

b=190

a=15(256+15) A

(38)

排序。每次計算弱分類器時,當

f

i(x)≥

θ

,加上

α

)R,會使得 stage output 值愈來愈小。

當 stage output 最後小於 stage threshold 時,此子圖則會被剔除,流程如圖 15。有了 這樣的機制後,不需要計算強分類器中所有的弱分類器,即可提前將此子圖剔除。當

α

)R並不是負的,我們將 Haar 特徵的計算顛倒過來,以 haar_x2 來說,原本來大白塊 的權重是負的,改成小黑塊是負的。這樣一來就能保證所有的

α

)R的值是負的,我們 用扣分的概念,達到早期剔除的效果。

表 5. OpenCV 所提供在 Stage0 的特徵在加入提早拒絕策略方法後化簡 的結果

feature

α

)R

0 -4.3047480 1 -3.1905990 2 -2.5730980 3 -2.4318130 4 -2.1312900 5 -2.0506730 6 -2.0402990 7 -1.9204550 8 -1.7116480 Default Output 14.250409

(39)

圖 16.加入提早拒絕後每個強分類器的計算流程 Pass to next stage

Start

Next Classifier

Process haar feature Compare with threshold and

accumulate stage-output

stage-output

>Threshold?

NO

YES

Last classifier?

END NO

Last haar feature?

YES

Reject sub-windows

YES

NO

NO

(40)

4.5 提早過關策略

本節將提出在不計算所有強分類器中的 Haar 特徵值的情況下,就能預先判定某 子圖是否能進到下一個強分類器。我們的做法是預計算每個強分類器中的

α

sum,可

以式子(9)表示。在計算每個弱分類器後將計算

α

remain

α

remain初始值為

α

sum,可

以用式子(10)表示。

=

=

0 i

Ri

sum

α

α

(9)

=

= +

0 i

Ri

remain

α

α

(10)

當強分類器的輸出大於

α

remain時則表示此子圖則會進入下一個強分類器,不需 要將整個弱分類器都算完,即可提前將此子圖提前進入下一個強分類器,其流程如圖 17。

(41)

Start

Next Classifier

Process haar feature Compare with threshold and

accumulate stage-output

stage-output

>Threshold?

NO

YES

Last haar feature?

END NO

YES

Reject sub-windows

Pass to next stage YES

NO

NO

Last classifier?

YES

stage-output

>

α

remain

NO

(42)

圖 17.加入提早拒絕策略與提早通過策略後每個強分類器的計算流程

4.6 調整特微儲存方式

還有對 Haar 特徵儲存方式做調整以減少儲存空間,每一個 Haar 特徵包含個一矩 型,記錄矩型左上角的座標 x<24<25、y<24<25 各需要 5bit 的空間,矩型的長寬 w<24<25,h <24<25各需要 5bit 的空間,記錄矩型的 Type 需要 6bit,全部可以放入 4bytes 的空間中。θ與

α

)R若用浮點數計算太過複雜,將浮點數改用 32bit 固定點數表示將 能加快運算。最後所以記錄一個 Haar 特徵需要 4bytes(矩型) + 4bytes(

θ

) + 4bytes(

α

)R)=12bytes。OpenCV 所提供偵測人臉的包含 2913 個 Haar 特徵,所以特徵 全部需要 2913*12=34956Bytes。因為人臉分類器的特徵是事先訓練好固定不變的,

我們將此特徵表儲放到 ROM 裡面。

(43)

第五章 實驗結果

5.1 實驗平台

由於人臉偵測時需要大量讀取記憶體,所以我們希望能與所有的工作空間都塞入 IC 之中,以避免外部記憶體頻寬不足的問題。我們採用駿億電子公司的單晶片編號 KBDM810,其工作時脈為 64MHz,效能差不多是 64MIPS,硬體架構如圖 18。

圖 18 KB810 的系統架構

其內部有 ROM 128K bytes、SRAM 48K bytes 與 PROGRAM RAM 80K bytes。此 單晶片有支援 1 個乘加的指令只需 1 個指令週期,在計算圖 2中有乘加動作的 Haar 特徵時非常合適。我們利用第四節所述的方法將 OpenCV 上的人臉偵測分類器化簡,

(44)

整個輸入影像、精簡式的積分圖像,計算子圖 變異數時所用的行緩衝區與 classifier table 都可置入晶片中。

我們的系統中,輸入影像為 160x120,移動視窗為 24x24。縮小倍率 為 1/1.2,

將影像縮小至小於移動視窗為止,共有 8 層。移動視窗每次跳兩個像素。總共有 28,602 個子圖。最後我們的結果是 2 frames/sec。

5.2 所需系統資源

在資源使用方面,我們儲存整張的輸入影像,共需要 19,200 bytes。建立積分圖 像時因為 Haar 特徵最大為 22x11 大小,所以立積分圖像的每個元素只需要 2 bytes。

我們並沒有用一整張的積分圖像,而是用 160x25 的帶狀積分圖像,如圖 19所示,當 移 動 視 窗 掃 描 到 下 一 條 列 時 , 捨 棄 上 一 條 列 , 加 入 新 的 列 即 可 , 總 共 需 要 160x25x2=8000 bytes。實作時每次捨棄一條列並加入新的列時,必需將整個帶狀立積 分圖像中每條列都向上位移一列,搬動 24 條列的資料相當的耗時。此單晶片提供硬 體架構環状緩衝區可以有效減少資料的搬移。

(45)

圖 19.帶狀積分圖像,每個元素 2 bytes,共需要 8000 bytes(160x25x2)

原本需要用平方積分圖像來快速計算變異度,用於補償光源不平均,現在只需要 一條線性記憶體 (即 160x4 bytes)。原本分類器所需要的分類表的空間為需要 102,128 bytes,用我們的方法每個弱分類器省掉了一個

α

值,並且對 Haar 特徵儲存方式做調 整,最後總共需要 34,956 bytes。表 6 列出我們的人臉偵測平台所需要的記憶體資源,

RAM 28K bytes 而 ROM 需要 35 K bytes。

Moving window 輸入影像

帶狀積分圖像,大小為 160x25 建立帶狀積分圖像

(46)

表5人臉偵測系統所需要的記憶體總表

5.3 人臉偵測率比較

在本節中,我們將針改良後的人臉偵測方式以 CMU 圖庫(包含 43 張影像 164 個 人臉)做測試,並與 OpenCV 測試的結果做比較。因為 CMU 圖庫 中的圖片大小並非 160x120,而是有各種尺寸,所需記憶體空間太大無法將實驗的平台架設在單晶片上。

所以我們將實驗平台用相同的演算法架設在 PC 上,與 OpenCV 比較其辨識率。

實驗結果如表 6,由表中可以得知改良後的人臉偵測方式方法與 OpenCV 有高辨 識率與較高的誤判率。在測 CMU 圖庫大多圖片 OpenCV 與改良後的人臉偵測方式執 行出的結果大數都一致,如圖 20與圖 21是有找到人臉的結果。如圖 22上雖有 2 個 人臉,但 OpenCV 與改良後的人臉偵測方式同時無法在其中偵測出人臉。

所需空間(bytes) 總計(bytes) 輸入影像 19,200

帶狀積分圖像 8000 line buffer 640

27,840(RAM)

wc table 34956 34,956Bytes (ROM)

(47)

圖 20.為改良後的人臉偵測方式實驗的結果(A)

圖 21.為 OpenCV 實驗的結果(A)

(48)

表6.CMU data-base 在 OpenCV 與改良後的人臉偵測方式中的偵測率 CMU 圖庫 OPENCV 改良後的人臉偵測方式

人臉總數 偵測數 誤判數 偵測數 誤判數

164 134 16 155 17

圖 22.為 OpenCV 與改良後的人臉偵測方式共同無法偵測出人臉的圖

進一步比較 OpenCV 與改良後的人臉偵測方式實驗結果的差異,圖 23與圖 24 為實驗結果差異最大的圖片,由圖 23左上角可知改良後的人臉偵測方式在此處誤判 人臉區域,OpenCV 在同一處正確的偵測出人臉。比較圖 23與圖 24在人臉偵測總數 上,明顯的改良後的人臉偵測方式得到較高的偵測數,因此在表 6中呈現出改良後的 人臉偵測方式有較高的人臉偵測率與較高的人臉誤判率。

(49)

圖 23.改良後的人臉偵測方式實驗的結果(B)

圖 24.OpenCV 實驗的結果(B)

(50)

5.3 人臉偵測速度的比較

在本節中,我們將針 MCU 的人臉偵測方式在單晶片的平台上與 OpenCV 以 PC 為平台,用相同的圖庫測試其速度。因為 CMU 圖庫的圖並非為 160x120 的大小,所 以以手動的方式在其中挑選適合栽切縮小至 160x120 的圖,以這些圖為測試的樣本,

各別輸入 OpenCV 及改良後的人臉偵測方式,得到的數據如表 7可得知 MCU 的人臉 偵測與 OpenCV 相較下是使用非常少的系統資源,並還能有接近 OpenCV 執行速度。

在本實驗中 OpenCV 與 MCU 的人臉偵測方式在人臉偵率都偏低,主要原因為在將 CMU 圖庫縮小裁切成 160x120 的大小後,會使得一些團體照片中的人臉尺寸過小。

如圖 25中有九個人臉,其右上角為 24x24 的方框,明顯得九個人臉都過小所以 OpenCV 及改良式人臉偵測都無法在本圖中偵測到人臉。如圖 26及圖 27,在人臉尺 寸較大的情況下,OpenCV 與 MCU 的人臉偵測都能正確的偵測出人臉。

表7 OpenCV 與 MCU 的人臉偵測方式速度的比較表 A

測試樣本人臉總數:56

OPENCV MCU

偵測到人臉數

17 20

執行速度

136 msec/frame 308 msec/frame

執行平台

OS:WINXP SP3

CPU:Intel® coreTM2 Duo CPU T7250 CPU clock:2G

RAM 2Gbytes

MCU:駿億電子 16BIT MCU SYS-CLOCK:64M

Internal memory:48K

(51)

圖 25.160x120 的測試圖片

圖 26 改良後的人臉偵測方式實驗的結果(C)

24x24

(52)

圖 27. OpenCV 實驗的結果((C)

直接截取 CMU 圖庫中人臉的區域,使得人臉部的面積較大,重新比較人臉偵測 率結果如表 8,明顯得在人臉面積較大的情況下偵測人臉出率較高。

表8 OpenCV 與 MCU 的人臉偵測方式速度的比較表 B 測試樣本人臉總數:42

OPENCV MCU

偵測到人臉數

32 38

執行速度

162 msec/frame 342 msec/frame

執行平台

OS:WINXP SP3

CPU:Intel® coreTM2 Duo CPU T7250 CPU clock:2G

RAM 2Gbytes

MCU:駿億電子 16BIT MCU SYS-CLOCK:64M

Internal memory:48K

(53)

5.4 提早拒絕策略與提早通過策略的效果分析

在本節我們將分析加入提早拒絕策略(Early-rejection)與提早通過策略(Early-pass) 策略的影響,以 5.3 節 160x120 的圖片為測試樣本,傳統做法總共需要計算 27,904,581 個弱分類器,各别測試只有提早拒絕策略與提早通過策略,其結果如圖 28與圖 29。

圖 28的橫軸為強分類器的編號,縱軸為在強分類器中所需要計算的弱分類器數量,

由本圖可看出加入提早拒絕策略與提早通過策略能減少計算弱分類器的數量, 由表 9 得知,加入提早拒絕策略與提早通過策略將能減少 14%的計算量。

進一步分析提早通過策略為何效果優於提早拒絕策略,主要原因為提早拒絕策略 只能加快當下無法通過的強分類器的運算,假設有一子圖會在第 n 個強分類器被拒 絕,而前面第 0 至 n-1 個強分類器的計算並未因使用提早拒絕策略而減少計算量,只 可能減少第 n 個強分類器的計算量。而提早過關策略則相反,假設有一子圖會在第 n 個強分類器被拒絕,前面的第 0 至 n-1 個強分類器都有可能因提早過關策略使得 0 至 n-1 個強分類器計算減少,因為如此由表 9得知提早過關策略效果優於提早拒絕策略。

(54)

.

0 1000000 2000000 3000000 4000000 5000000 6000000

Stage number

weak classifier

傳統做法 Early rejcection Early pass

Early rejcetion&pass

圖 28. 每個強分類器中所計算的弱分類器的數量

0.0%

20.0%

40.0%

60.0%

80.0%

100.0%

120.0%

Stage Number

EasyRejection EasyPass

Easy Rejection&Pass

圖 29. 在每個強分類器下所計算的弱分類器數量與傳統作法比較

(55)

表9. 不同策略下,所計算弱分類器數量比較表

策略 計算弱分類器的數量 減少比例

傳統做法 27,904,581 --

加入提早拒絕策略 26,575,247 4.8%

加入提早拒通過策略 25,314,632 9.3%

加入提早拒絕策略與提

早拒通過策略 23,985,298 14.0%

(56)

第六章 未來展望

6.1 結論

由於科技的進步,很多應用都需要得知週圍環境是否有人的存在,人臉是判斷是 否有人存在的重要特徵。現今人臉偵測最普徧的應用為數位相機,因為多了人臉位置 的資訊,所以能針對人臉的區域調整出最佳的曝光、景深及白片衡等參數。去年更有 日本廠商將人臉偵測應用在電視機上,讓電視機在無人觀看時能自動關機,以達到省 電的功能。可以應用之處很多,但因現今存在的方案成本都太高,使的應用的場合因 成本的考量所受到限制。

傳統人臉辨識演算法需要大量的記憶體空間,只適合在系統資源較豐富的台平,

如 PC 或 32 位元的 CPU 上,這些台平成本較高。以成本為考量所以選擇 MCU 等級 的嵌入式系統,嵌入式系統中若需要大量的記憶體空間,一般來說有二種方式:一、

將記憶體內建在 IC 內部,優點為 IC 內部的記億體存取速度快,缺點為 IC 成本將大 幅提高。二、在嵌入式系統中加上一顆記憶體,優點為成本較前者低,缺點為外加的 記憶體匯流排的頻寬的限制,將使得存取速度下降。本文主要化簡人臉偵測演算法所 需要的記憶體空間,將使得整個人臉偵測系統能能放入嵌入式系統上,同時兼顧了成 本記憶體存取的效能。

實驗證明,在極小的記憶體空間與 MCU 等級的計算平台,不管在辨識率與效能 上都接近 PC 等級的效能。

6.2 未來展望

本文中是使用 OpenCV 所提供的人臉分類器,它所需的資源在嵌入式系統中可能 尚未最佳化,未來可以針人臉分類器所需的記憶體做化簡,重新訓練適合在嵌入式系

(57)

統的人臉分類器。

人臉偵測演算法已經十分成熟,應用上欠缺的是低成本的方案,本文雖然提出了 一個低成本的人臉偵測系統,但受限於 MCU 的計算能力尚未達到能處理即時影像的 速度。未來針對人臉偵測演算法硬體化,配合本文所提出的人臉偵測系統所需的記體 空間很小,將能兼顧成本與效能。

(58)

參考文獻

[1]. G. Yang and T. S. Huang, “Human Face Detection in Complex Background,” Pattern Recognition, vol. 27, no. 1, 53-63, 1994.

[2]. M.H. Yang, D.J. Kriegman, and N. Ahuja, “Detecting Faces in Images: A Survey”,

IEEE Trans. PAMI, Vol. 24, pp.34-58, 2002.

[3]. Pentland, B. Moghaddam, and T. Starner, “View-Based and Modular Eigenspaces of Face Recognition”, In Proc. IEEE Conf. On CVPR, pp. 84–91, 1994.

[4]. H.A. Rowley, S. Baluja, and T. Kanade, “Neural Network-Based Face Detection”,

IEEE Trans. PAMI, Vol. 20, pp. 22–38, 1998.

[5]. K.K. Sung and T. Poggio, “Example-Based Learning for View-Based Human Face

Detection”, IEEE Trans. PAMI, pp. 39-51, 1998.

[6]. E. Osuna, R. Freund, and F. Girosi, “Training Support Vector Machines: An Application to Face Detection“, Proc. IEEE CVPR, pp. 17-19, 1997.

[7]. P. Viola and M. J. Jones, “Robust real-time face detection“, in International Journal

of Computer Vision, Vol. 57, no. 2, pp. 137-154, 2004

[8]. R. Lienhart and J. Maydt, “An extended set of Haar-like features for rapid object detection”, IEEE ICIP 2002, Vol. 1, pp. 900-903, Sep. 2002.

[9]. Intel’s open source computer vision library, http://www.intel.com/technology/

computing/opencv/index.htm.

[10]. Wei-Shu Wong and Ching-Te Chiu,“Design and Implementation of a Boosted Cascade Based Face Detection System”, Master thesis in Department of Computer Science, National Tsing Hua University。

[11]. K. Khattab, J. Mitteran, J. Dubois, J. Matas, "Embedded System Study for Real Time Boosting Based Face Detection" IEEE Industrial Electronics, IECON 2006, pp.

(59)

3461-3465.

[12]. Rein-Lien Hsu, Abdel-Mottaleb. M., Jain,A.K., “Face Detection in Color Images”

IEEE Trans. on PAMI, Vol.24, Issue:5, pp.696-706, May 2002

[13]. X.B.Yu Wei, and Charayaphan Chareonsak, “FPGA IMPLEMENT ATION OF ADABOOST ALGORITHM FOR DETECTION-OF FACE BIOMETICS, “in IEEE

International Workshop on Biomedical Circuits & Systems, 2004.

[14]. 陳育瑞, 陳培殷, “即時多人臉測晶片實作”, 成功大學資工所碩士論文。

[15]. 張榮勝,張文鐘,”使用膚色比例前處理之即時性人臉偵測系統”,交通大學電信所 碩士論文。

參考文獻

相關文件

This is to inform kindergartens and primary schools of the “Library Cards for All School Children” scheme and the arrangement of bulk application for library cards of the

 Light travels between source and detector as a probability wave.

 Light travels between source and detector as a probability wave..

double-slit experiment is a phenomenon which is impossible, absolutely impossible to explain in any classical way, and.. which has in it the heart of quantum mechanics -

If the source is very highly coherent and the detector is placed very far behind the sample, one will observe a fringe pattern as different components of the beam,

• CEPC design has to maintain the possibility for SPPC, but there is no need now to firmly prove the feasibility of SPPC,.. scientifically

It has been an open question whether the family of merit functions ψ p (p &gt; 1), the generalized Fischer-Burmeister (FB) merit function, associated to the second-order cone is

It clarifies that Upāyakauśalya, in the process of translation, has been accepted in Confucian culture, and is an important practice of wisdom in Mahāyāna Buddhism which