PCM7230上的即時人臉偵測

指導教授:賴尚宏
學生:金立軒 楊皓量
學校:清華大學
系級:資工08級

第一部分

動機

隨著硬體技術不斷地在進步,許多以往各自獨立的技術逐漸可以整合在一起,例如手機上結合了相機、網路、視訊、音樂等功能。因此我們希望將現在已有的技術將其實現在嵌入式系統上,其中我們的目標是希望將即時人臉偵測(real-time face detection)實作在PCM-7230嵌入式系統上。

嵌入式系統資訊

Name

PCM-7230

CPU

XScale PXA255 400 MHz default
(200,300 MHz optional)

OS support

WinCE.NET 4.1, Linux kernel 2.4.19

Boot Loader

1 MB AMD Flash ROM for Bootloader

OS image storage

OS Image loaded from external CF at
default or optional memory module

WDT

PXA255 internal

RTC

HT1381, backup by internal backup
battery

Flash

Optional CF card or memory module
up to 64MB

SDRAM

32/64 MB (default) SDRAM on board
or upto 128 MB thru memory module

LCD

Default thru Tvia5202G,support
640x480 & 800x600(default)
(1024x768 is by project)Or PXA255
internal LCD controller reserved for
QVGA/

CRT

Yes

Video-in/ out

Output NTSC (Default) /PAL, Up to
VGA (640X480) resolution support

T/S

4-wire resistant touch screen

SM bus

For smart battery, pin header, I2C bus

System Back-up Battery

Rechargeable Li-ion battery 65mAH,
Support System SDRAM and RTC

CompactFlash

1x type II CF slot support I/O & data mode

PCMCIA

1x type II PCMCIA slot support I/O & data mode.

研究內容

首先這個專題分成兩個部份,分別是硬體與軟體。硬體部分從系統的線路配置到作業環境的安裝等等,而軟體部分,也就是要在一般個人電腦上(Windows XP)先測試已有的即時人臉偵測技術是否能順利且正常地運作,再將其換到嵌入式系統的平台上(WinCE)。

影像如何擷取

這裡是研究已有的程式範例─Directshow examples,其採用DirectX SDK來開發程式,以下將詳細介紹整個程式主體的內容。
  1. 下載並安裝DirectX SDK:
  2. 因為一般我們電腦中所安裝的DirectX並沒有讓程式設計者自行開發的工具,因此必須先去下載這個軟體─DirectX SDK。其中在Microsoft官方網站下載2007年之後的版本似乎將此開發部分給抽離出來,故須去別處下載較舊的版本。
  3. 設定資料夾路徑:
  4. 安裝完畢後會於安裝所在的硬碟出現DXSDK此資料夾,將此資料夾中的Include與Lib二資料夾路徑加入Visual C++中Tools→Options→Directories)。
  5. Directshow程式正確porting步驟:
  6. Directshow程式碼tracing:

如何偵測人臉

使用已有的技術,也就是OpenCV這個軟體。其中它在即時人臉偵測的流程如下:
即時人臉偵測的流程

如何實現在硬體上

  1. 安裝WinCE至PCM7230板子
  2. USB Driver
  3. 由於我們於硬體部分尚未解決在上面安裝程式開發環境的問題,故目前尚無法將此技術於嵌入式系統上測試。不過就我們所找的資料提到較多人在WinCE上使用的程式開發環境為eMbedded Visual C++ 4.0,我也先去下載到Windows XP上來測試其他程式是否能順利compile並執行,這是目前還在進行的部份。

第二部分

因為第一部分的硬體問題一直無法解決,WinCE遲遲無法與電腦溝通,因此我們將決定將板子上的OS改為linux,並將現有的人臉偵測程式改成可以讓embeded compiler成功compile,再將compile出來的執行檔丟到PCM7230上執行,但由於PCM7230所提供的運算速度太差,所以還未能做到即時的人臉偵測,若將來能與硬體設計者合作,把一些運算寫在板子上,將能夠大幅增加現在的運算速度。

參考資料

[1] OpenCV 中文網站
http://www.opencv.org.cn/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh-tw
[2] Robust Real-time Face Detection
International Journal of Computer Vision 57(2), 137-154, 2004
[3] 全部的 eVC 歷史問答精華集
http://www.programmer-club.com/pc2020v5/kb/kb_default.asp?board_pc2020=evc