Tải bản đầy đủ (.pdf) (35 trang)

Thiết kế SOPC cho ứng dụng nhận dạng mặt người dùng phân tích thành phần chính (PCA) và lượng tử hóa vector (VQ)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.07 MB, 35 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN


TRẦN THỊ ĐIỂM



THIẾT KẾ SOPC CHO ỨNG DỤNG NHẬN DẠNG
MẶT NGƯỜI DÙNG PHÂN TÍCH THÀNH PHẦN
CHÍNH (PCA) VÀ LƯỢNG TỬ HÓA VECTOR (VQ)

Chuyên ngành: Vật Lý Điện Tử-Hướng Kỹ Thuật
Mã số: 60 44 03



LUẬN VĂN THẠC SĨ VẬT LÝ VÔ TUYẾN VÀ ĐIỆN TỬ- KỸ THUẬT


NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS. NGUYỄN HỮU PHƯƠNG

THÀNH PHỐ HỒ CHÍ MINH-NĂM 2009

1
MỤC LỤC

MỤC LỤC 1
GIỚI THIỆU ĐỀ TÀI 4
CHƯƠNG 1: TỔNG QUAN BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI 7


1.1. TỔNG QUAN BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI 7
1.2. CÁC PHƯƠNG PHÁP NHẬN DẠNG MẶT NGƯỜI 7
1.2.1. Mô hình Markov ẩn (Hidden Markov Model) 7
1.2.2. Support vector Machines (SVM) 7
1.2.3. Mạng neural 8
1.2.4. Principal Component Analysic (PCA) 8
1.2.5. Linear Discriminant Analysis (LDA) 8
1.2.6. Independent Component Analysis (ICA) 8
1.3. CÁC BƯỚC THỰC HIỆN BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI 9
1.4. KHÓ KHĂN VÀ THÁCH THỨC TRONG BÀI TOÁN NHẬN DẠNG MẶT
NGƯỜI 10
1.5. ỨNG DỤNG CỦA BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI 10
CHƯƠNG 2: PHÂN TÍCH THÀNH PHẦN CHÍNH 11
2.1. THÀNH PHẦN CHÍNH 11
2.2. CHỌN THÀNH PHẦN CHÍNH 11
2.2.1. Phương pháp tích lũy phần trăm trên tổng số biến 12
2.2.2. Phương pháp dựa trên kích thước của những biến trong những thành phần
chính 12
2.3. CÁC BƯỚC THỰC HIỆN BÀI TOÁN PCA 13
2.3.1. Chuẩn hóa về kích thước 13
2.3.2. Thực hiện phép trừ trung bình 13
2.3.3. Tạo ma trận hiệp phương sai 13
2.3.4. Tìm các trị riêng và vector riêng tương ứng 14
2.3.5. Xác định các thành phần và vector đặc trưng 14
2.3.6. Hình thành tập dữ liệu 14


Trần Thị Điểm

2

CHƯƠNG 3: CÔNG CỤ SOPC BUILDER 16
3.1. KHÁI NIỆM SOPC 16
3.2. SOPC BUILDER 16
3.3. AVALON BUS 16
3.3.1. Avalon bus module 16
3.3.2. Các thiết bị ngoại vi Avalon 17
3.4 COMPONENT TRONG SOPC 17
CHƯƠNG 4: HỆ THỐNG SOPC CHO ỨNG DỤNG NHẬN DẠNG MẶT
NGƯỜI 18
4.1. THUẬT TOÁN PHẦN CỨNG CHO ỨNG DỤNG NHẬN DẠNG MẶT
NGƯỜI 18
4.1.1. Tập dữ liệu 18
4.1.2. Tìm mặt trung bình 19
4.1.3. Tính sự sai lệch giữa từng mặt người và mặt trung bình 19
4.1.4. Tìm trị riêng và vector riêng 19
4.1.5. Thực hiện phép quay PCA 20
4.1.6. Tính khoảng cách Euclide 21
4.2. HỆ THỐNG SOPC CHO ƯNG DỤNG NHẬN DẠNG MẶT NGƯỜI 22
Toàn bộ hoạt động của khối tính trung bình được mô tả cụ thể trong hình 4.4. 23
Hình 4.4: Sơ đồ khối tính trung bình 23
Hình 4.5: Sơ đồ khối tính độ dư thừa 23
Hình 4.6: Sơ đồ khối bộ nhân 24
4.2.2. Mạch tính khoảng cách Euclide và tìm vị trí trung khớp nhất 24
CHƯƠNG 5: KẾT QUẢ THỰC NGHIỆM 26
5.1. KẾT QUẢ THUẬT TOÁN PCA ĐƯỢC KIỂM NGHIỆM TRÊN PHẦN
MỀM 26
5.2. KẾT QUẢ THỰC NGHIỆM TRÊN PHẦN CỨNG 26
5.2.1. Kết quả tổng hợp và phân tích mạch 26
5.2.2. Một số kết quả kiểm nghiệm trên phần cứng 27



Trần Thị Điểm

3
5.3. SO SÁNH HIỆU QUẢ THỰC HIỆN TRÊN PHẦN CỨNG VÀ TRÊN
PHẦN MỀM 28
5.3.1. Khối vector quantization 28
5.3.2. Các bộ gia tốc cho thuật toán PCA 28
5.3.3. Toàn bộ hệ thống 29
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 31
6.1. KẾT LUẬN 31
6.2. HƯỚNG PHÁT TRIỂN 31
TÀI LIỆU THAM KHẢO 33


Trần Thị Điểm

4

GIỚI THIỆU ĐỀ TÀI

Thời gian gần đây cùng với sự phát triển của công nghệ hiện đại, các lĩnh vực
ứng dụng ngày càng đa dạng và phong phú đã mang lại những hiệu quả cực kỳ thiết
thực. Ngày nay với xu hướng thiết kế ứng dụng nhằm tích hợp toàn bộ hệ thống trên
một chip (System On Chip-SoC) với giá thành rẻ đang được nghiên cứu và đầu t
ư
rộng rãi không chỉ ở Việt Nam mà trên toàn thế giới.Với sự ra đời của công nghệ
FPGA (Field Programmable Gate Array), một loại linh kiện logic khả trình kết hợp
với kỹ thuật SoPC (System On Programmable Chip) đã cho phép người thiết kế linh
hoạt hơn trong quá trình cài đặt các ứng dụng chạy thực tế và kiểm tra sản phẩm

trước và sau khi thiết kế IC (Integrated Circuit).
Ngày nay với sự ra đời của công nghệ SoC (System On Chip) đã tăng cường
khả năng xử lý cũng như tích hợp hệ thống trên một chip cho các ứng dụng phức
tạp. SoC tích hợp các khối phần cứng riêng rẽ vào một Chip với kiến trúc hoạt động
song song và độc lập nhau [1][2]. Do đó, luồng dữ liệu sẽ được xử lý song song dẫn
đến tốc độ hệ thống được tăng lên. Bản chất của SoC là sử dụng CPU nhúng như
một trung tâm xử lý phát các tín hiệu để điều khiển các bộ gia tốc (hay các khối xử
lý riêng rẽ) hoạt động. Ở đây CPU chỉ đóng vai trò phát tín hiệu điều khiển mà
không xử lý dữ liệu nên tốc độ hệ thống được cải thiện rất đáng kể. Đặc điểm này
được xem là điểm khác biệt lớn giữa một SoC và một máy tính cá nhân (PC). Ngoài
ra, hệ thống SoC còn có giá thành thấp, tiết kiệm diện tích và mức tiêu thụ công
suất thấp. Một hệ thống SoC được nghiên cứu trong đề tài là hệ thống SoPC được
tích hợp trên FPGA. Một số ưu điểm của một hệ thống SoPC trên FPGA so với một
máy tính cá nhân:
9 Tiết kiệm điện năng
9 Tốc độ xử lý và cấu hình nhanh
9 Nhỏ, gọn, ít chiếm diện tích


Trần Thị Điểm

5
9 Thời gian khởi động nhanh và có thể khởi động lại dễ dàng.
Nhận dạng nói chung và nhận dạng mặt người nói riêng là những ứng dụng
khá phổ biến đã và đang được nghiên cứu rất rộng rãi. Nhiều thuật toán khác nhau
đã ra đời để cải tiến chất lượng của kỹ thuật nhận dạng [16] như: Neural Network,
Hidden Markov Model, PCA (Principle Component Analysis), ICA (Independent
Component Analysis)…Tuy nhiên các thuật toán này hầu hết đều được mô phỏng
và chạy trên các phần mềm: Matlab, Visual C++. Ngoài ra để áp dụng thực tế hầu
hết các thuật toán này được lập trình và khởi động cùng với một hệ thống máy tính

hoặc được cài đặc vào các thiết bị điện thoại khá đắt tiền. Với thực tế trên, tác giả
chọn đề tài “Thiết kế SoPC cho ứng dụng nhận dạng mặt người dùng phân tích
thành phần chính (PCA) và lượng tử hóa vector (VQ)”. Tác giả hi vọng với đề tài
này sẽ tạo ra được một hệ thống nhận dạng mặt người với tốc độ xử lý nhanh, tích
hợp trên một chip duy nhất, giá thành thấp và kết cấu hệ thống đơn giản nhằm có
thể áp dụng rộng rãi vào trong thực tiễn.

BỐ CỤC LUẬN VĂN

Chương 1: Phần tổng quan.
Mục tiêu chính của chương này sẽ giới thiệu một cách tổng quan nhất về bài
toán nhận dạng mặt người. Qua đó cũng trình bày một số thuật toán nhận dạng mặt
người được sử dụng rộng rãi nhất thời gian gần đây.
Chương 2: Phân tích thành phần chính
Phần này tập trung giới thiệu các đặc điểm của thuật toán PCA và cách sử
dụng thuật toán PCA trong bài toán nhận dạng mặt người.
Chương 3: Công cụ SoPC Builder
Giới thiệu công cụ SoPC của hãng Altera trên công nghệ FPGA. Chương này
sẽ nêu rõ các đặc điểm của công cụ SoPC. Cách khởi tạo và hoạt động một thành
phần mới trong hệ thống SoPC.
Chương 4: Hệ thống SoPC cho ứng dụng nhận dạng mặt người


Trần Thị Điểm

6
Trình bày thuật toán nhận dạng mặt người trên phần cứng. Mục tiêu chính của
chương này sẽ mô tả rõ đặc điểm và cách hoạt động của từng khối thiết kế trong hệ
thống nhận dạng mặt người.
Chương 5: Kết quả thực nghiệm

Chương này trình bày các kết quả thực nghiệm cho cả phần cứng và phần
mềm.
Chương 6: Kết luận và hướng phát triển của đề tài.


Trần Thị Điểm

7
CHƯƠNG 1: TỔNG QUAN BÀI TOÁN NHẬN
DẠNG MẶT NGƯỜI

1.1. TỔNG QUAN BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI
Nhận dạng nói chung, nhận dạng mặt người nói riêng là một bài toán đã và
đang được nghiên cứu rất rộng rãi. Các nghiên cứu đi từ bài toán đơn giản, mỗi ảnh
chỉ có một khuôn mặt người nhìn thẳng vào thiết bị thu hình và đầu ở tư thế thẳng
đứng trong ảnh trắng đen. Cho đến bài toán mở rộng với nhiều trường hợp phức tạp
hơn như ảnh màu, nhiều khuôn mặt trong cùng một ảnh, nhiều tư thế thay đổi trong
ảnh… Không những thế bài toán còn mở rộng cả phạm vi nghiên cứu: từ môi
trường xung quanh khá đơn giản (trong phòng thí nghiệm) cho đến môi trường xung
quanh rất phức tạp (như trong thực tế).
1.2. CÁC PHƯƠNG PHÁP NHẬN DẠNG MẶT NGƯỜI
1.2.1. Mô hình Markov ẩn (Hidden Markov Model)
Mô hình Markov ẩn phân loại đặc điểm mặt dựa vào các thuộc tính của chuỗi
Markov. Một chuỗi các biến ngẫu nhiên được lấy ra dựa vào các giá trị pixel tương
ứng tạo ra chuỗi Markov nếu xác suất hệ thống ở trong trạng thái X
n+1
ứng với thời
điểm n+1 phụ thuộc vào xác suất hệ thống ở trong trạng thái này ứng với thời điểm
n. Trong chuỗi Markov sự chuyển dời từ trạng thái này sang trạng thái khác có thể
xảy ra, nhưng kết quả của các kí tự ngõ ra mới là quyết định. Mặc khác, trong mô

hình Markov ẩn, đặc điểm đối tượng ngõ ra phụ thuộc theo xác suất. Do đó, kết quả
là chúng ta có một phân bố xác suất của các đối tượng ngõ ra ở mỗi trạng thái. Kết
quả này dùng để thực hiện việc so sánh giữa hai khuôn mặt [16].
1.2.2. Support vector Machines (SVM)
Support vector Machines (SVM) thực tế là phương pháp phân loại nhị phân.
Bằng cách tạo ra các vector hỗ trợ. Các vector hỗ trợ bao gồm một tập con nhỏ của
các dữ liệu huấn luyện được trích ra bằng thuật toán. Mục tiêu của SVM là tìm ra
siêu mặt phẳng đặc biệt để có ranh giới phân biệt lớn nhất [16].


Trần Thị Điểm

8
1.2.3. Mạng neural
Mạng neural được sử dụng khá rộng rãi để nhận dạng mặt người bằng cách
kết hợp với các phương pháp liệt kê ở trên [16]. Kỹ thuật mạng neural là mô phỏng
cách thức các neural hoạt động trong não người. Điều này được xem như lý do
chính cho vai trò của nó trong nhận dạng mặt người. Một mạng neural có khả năng
hiệu chỉnh các trọng số theo sự sai biệt trong quá trình huấn luyện.
1.2.4. Principal Component Analysic (PCA)
PCA sử dụng phương pháp trích đặc trưng từ phép biến đổi Karhunen-Loeve.
Nguyên tắc của phương pháp PCA là tìm ra một không gian đặc trưng mới với số
chiều giảm hơn nhiều so với số chiều ban đầu nhưng vẫn đảm bảo đặc tính của tập
dữ liệu. Kết hợp tuyến tính các biến được tạo ra ta được các vector tương ứng hay
các thành phần chính. Số lượng biến được tạo ra ít hơn số lượng biến trong cơ sở dữ
liệu ban đầu. Bài toán nhận dạng mặt người sử dụng kỹ thuật này được áp dụng khá
rộng rãi và đạt được hiệu quả cao [8] [9]. Lý thuyết về ứng dụng của PCA sẽ được
trình bày chi tiết ở chương 2.
1.2.5. Linear Discriminant Analysis (LDA)
LDA là phương pháp khắc phục được hạn chế của phương pháp PCA là sự

giới hạn kích thước của tập dữ liệu bằng việc đưa vào các biệt số tiêu chuẩn [11].
LDA cực đại hoá tỷ số ph
ương sai giữa các lớp (between-class) và phương sai
trong một lớp (within-class) trong bất kỳ tập dữ liệu nào. Vì vậy phương pháp này
đảm bảo sự phân tách tối đa.
1.2.6. Independent Component Analysis (ICA)
Phân tích thành phần độc lập là trường hợp tổng quát của phân tích thành phần
chính [10]. Bài toán phân tích thành phần chính dựa vào mối quan hệ giữa những
pixel trong tập dữ liệu, những xác suất bậc cao xem như không chứa nhiều thông tin
và được bỏ qua. Tuy nhiên, trong bài toán nhận dạng những thông tin quan trọng có
thể chứa trong những mối quan hệ xác suất bậc cao của những pixels trong ảnh. Để
tìm ra không gian nhạy với những xác suất bậc cao, phương pháp ICA đã ra đời.
ICA trích những thành phần chính của thông tin tối ưu bằng phép biến đổi qua


Trần Thị Điểm

9
những neural từ hàm sigmoidal.
1.3. CÁC BƯỚC THỰC HIỆN BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI
Quá trình nhận dạng chia làm 2 phần [7] như hình 1.1 và hình 1.2. Trong đó:
X: tập dữ liệu gồm nhiều tấm ảnh khác nhau của nhiều đối tượng khác nhau. Tập
ảnh này được sắp xếp lại vào trong một ma trận X với mỗi ảnh tương ứng với một
vector cột.
X
mean
: ảnh trung bình của tập dữ liệu
X
%
: Ma trận chứa giá trị trừ giữa ảnh trung bình với từng ảnh trong tập dữ liệu X.

W
T
: Ma trận chiếu
X
g
: dữ liệu từng tấm ảnh (như là một vector).


1
X
~
g
X

1
)(
meang
T
g
XxWP −=
T
W

Hình 1.1: Quá trình huấn luyện [7]


1
XWP
T
x

~
=
)(
)(
)(
0
20
10
G
PPd
PPd
PPd
M
X
~
X
p
1
p
2
p
g
p

Hình 1.2: Quá trình nhận dạng [7]



Trần Thị Điểm


10
1.4. KHÓ KHĂN VÀ THÁCH THỨC TRONG BÀI TOÁN NHẬN DẠNG
MẶT NGƯỜI
Trong quá trình nhận dạng bài toán gặp một số khó khăn sau:
¾ Hướng của khuôn mặt đối với máy ảnh như nhìn thẳng, nhìn nghiêng, hay
nhìn từ trên xuống. Cùng trong một ảnh có thể có nhiều khuôn mặt ở những
tư thế khác nhau.
¾ Sự có mặt của các chi tiết không phải là đặc trưng của khuôn mặt người như:
quần áo, râu, mắt kính,
¾ Các nét mặt (facial expression) khác nhau trên khuôn mặt như: vui, buồn,
ngạc nhiên.
¾ Mặt người bị che khuất bởi các đối tượng khác có trong ảnh.
¾ Trục tọa độ của máy ảnh so với ảnh.
¾ Kích thước khác nhau của các khuôn mặt người và đặc biệt là trong một ảnh.
¾ Màu sắc của môi trường xung quanh hay màu sắc quần áo của người được
chụp lấy ảnh.
1.5. ỨNG DỤNG CỦA BÀI TOÁN NHẬN DẠNG MẶT NGƯỜI
Nhận dạng mặt người được áp dụng rất rộng rãi trong đời sống cũng như trong
khoa học kỹ thuật. Một vài ứng dụng về nhận dạng mặt người được liệt kê như sau:
¾ Hệ thống tương tác giữa người và máy: giúp những người bị tật hoặc khiếm
khuyết có thể trao đổi. Những người bị khiếm khuyết thông qua một số ký
hiệu: nháy mắt, điệu bộ khuôn mặt có thể biểu lộ những gì họ muốn. Đó là
các bài toán điệu bộ của bàn tay (hand gesture) hoặc điệu bộ khuôn mặt.
¾ Nhận dạng người A có phải là tội phạm truy nã hay không, giúp cơ quan an
ninh quản lý con người. Công việc nhận dạng có thể ở trong môi trường bình
thường cũng như trong bóng tối (sử dụng camera hồng ngoại).
¾ Hệ thống quan sát theo dõi và bảo vệ. Các hệ thống camera sẽ xác định đâu
là con người và theo dõi con người đó xem họ có vi phạm gì không, ví dụ
xâm phạm khu vực nào không được vào




Trần Thị Điểm

11
CHƯƠNG 2: PHÂN TÍCH THÀNH PHẦN CHÍNH

Phân tích thành phần chính là một kỹ thuật phân tích biến đổi được nghiên cứu
khá rộng rãi và biết đến nhiều. Thuật toán này lần đầu tiên được giới thiệu bởi
Pearson (1901), và được phát triển một cách độc lập bởi Hotelling (1933) [12].
Giống như những phương pháp phân tích biến đổi, thuật toán này không được sử
dụng rộng rãi cho tới khi kỹ thuật máy tính ra đời. Ý tưởng chính của thuật toán
phân tích thành phần chính là giảm số chiều của tập dữ liệu có sự tương quan lớn
giữa các biến. Mặc dù giảm số chiều của biến nhưng vẫn duy trùy sự biến đổi nhiều
nhất có thể của tập dữ liệu ban đầu. Đặc điểm của những biến mới này là không còn
đặc tính tương quan giữa chúng. Một đặc điểm khác của các biến là chúng được sắp
xếp để một vài biến đầu tiên nhất thể hiện hầu những đặc trưng của tất cả các biến
ban đầu. Trong PCA độ dư thừa có thể đo được bởi sự tương quan giữa các phần tử
dữ liệu. Mối tương quan thực hiện dựa trên cơ sở thống kê bậc 2. Thực chất của
PCA là giải quyết bài toán tìm trị riêng và vector riêng cho ma trận đối xứng.
2.1. THÀNH PHẦN CHÍNH
Trong phép biến đổi PCA, vector x được đưa về giá trị trung tâm bằng cách trừ
với giá trị trung bình của nó. Giá trị trung bình được ước lượng từ các mẫu
x(1),x(2),x(3),….x(T). Sau khi đã trung tâm hóa các mẫu, x sẽ được biến đổi tuyến
tính thành vector y với m hệ số (m<n), vì vậy độ dư thừa được quy vào mối tương
quan và sẽ bị loại bỏ. Tất cả quá trình trên được thực hiện bằng việc quay hệ thống
tọa độ trực giao làm cho các hệ số của x trong hệ tọa độ mới không còn trực giao.
Cùng lúc đó, sự biến đổi hình chiếu của x lên hệ trục tọa độ mới được cực đại hóa.
Trục tọa độ thứ nhất (thành phần chính thứ nhất) biểu diễn sự thay đổi lớn nhất, trục
thứ 2 (thành phần chính thứ hai) đáp ứng với sự sai khác lớn nhất theo hướng vuông

góc với trục thứ nhất, và cứ tiếp diễn như thế.
2.2. CHỌN THÀNH PHẦN CHÍNH
Sai số bình phương trung bình sẽ cho chúng ta biết được bao nhiêu tỉ lệ thành
phần chính bị loại bỏ. Nếu ta chọn m = n khi đó sai số là 0, nhưng lúc này thuật toán


Trần Thị Điểm

12
PCA không còn ý nghĩa. Vấn đề đặc ra là sự thỏa hiệp giữa sai số có thể chấp nhận
và số thành phần chính giữ lại. Đã và đang có rất nhiều công trình nghiên cứu để
tìm ra giải pháp tối ưu cho việc giữ lại bao nhiêu thành phần chính [12]. Một số
nghiên cứu được nêu ra như:
2.2.1. Phương pháp tích lũy phần trăm trên tổng số biến
Dựa trên tổng số biến có trong tập dữ liệu ban đầu, từ trên kết quả thực nghiệm
tác giả nhận xét và đưa ra công thức cho việc giữ lại bao nhiêu thành phần chính
như sau:

11 11
100 / 100 /
mP mP
mkjjk
kj kk
tlsl
== ==
==
k
l

∑∑∑

(2.1)
Rút giảm ta được:
(2.2)

=
=
m
k
km
lpt
1
/100
Trong đó l
k
: trị riêng thứ k
m: số m thành phần chính đầu tiên.
P: p biến trong tập dữ liệu cần trích đặc trưng
s
ij
: là biến của tập dữ liệu ban đầu.
Theo thực tế khảo sát phương pháp này chọn số thành phần chính cần loại bỏ là
khoảng 70% đến 90%.
2.2.2. Phương pháp dựa trên kích thước của những biến trong những thành
phần chính
Phương pháp trước được áp dụng cho trường hợp ma trận hiệp biến hoặc ma
trận tương quan. Phương pháp này đặt ra được áp dụng đặc biệt cho trường hợp ma
trận tương quan. Ý tưởng của quy luật là nếu tất cả các thành phần của tập dữ liệu
đầu là độc lập thì những thành phần chính của chúng có cùng một trục biến đổi và
có sự biến đổi là đơn vị. Vì vậy những thành phần chính khác có sự biến đổi nhỏ
hơn 1 sẽ chứa ít thông tin hơn những thành phần ở trục gốc, hay ta hoàn toàn có thể

loại bỏ những thành phần này mà không ảnh hưởng nhiều tới kết quả cuối cùng.
Quy luật này còn được gọi là quy luật Kaiser [12]. Quy luật chỉ giữ lại những thành


Trần Thị Điểm

13
phần chính lớn hơn hoặc bằng 1 và loại bỏ những thành phần nhỏ hơn 1.
Ngoài ra còn một số phương pháp khác như:
• Dùng giản đồ Scree [12]
• Dựa vào số thành phần với những trị riêng không cân bằng kết hợp với
những giả thuyết theo công thức toán học [12].
• Phương pháp chọn m thành phần chính theo Cross-Validatory [12].
Qua những phân tích bên trên ta đi đến một kết luận là tùy thuộc vào những đối
tượng khảo sát khác nhau khi dùng thuật toán PCA mà dẫn đến việc cần giữ bao
nhiêu thành phần chính cho thích hợp.
2.3 CÁC BƯỚC THỰC HIỆN BÀI TOÁN PCA
2.3.1 Chuẩn hóa về kích thước
Để thuận tiện cho quá trình minh họa, ta xét một tập dữ liệu đầu vào 2 chiều.
Đặc trưng của tập dữ liệu này là nó có thể cho ta thấy biểu đồ của dữ liệu và cách
thức PCA phân tích dữ liệu tại mỗi bước là rõ ràng nhất [13]. Để đảm bảo yêu cầu
trong quá trình xử lý tất cả dữ liệu của tập huấn luyện phải được chuẩn hóa về cùng
một đầu kiện ban đầu.
2.3.2. Thực hiện phép trừ trung bình
Cho tập gồm M ảnh mặt
12
, , ,
M
Γ
ΓΓ

, ta tính trung bình của tập hợp đó, ta có:

1
1
M
n
n
M
=
Ψ


(2.3)
Sự khác biệt giữa mỗi ảnh so với trị trung bình của nó:

ii
Φ
=Γ −Ψ (2.4)
2.3.3 Tạo ma trận hiệp phương sai
Khi dữ liệu đưa vào là hai chiều thì ma trận hiệp phương sai được tạo ra là ma
trận hai chiều. Nếu khi dữ liệu đưa vào là n chiều thì ma trận hiệp phương sai được
tạo ra sẽ là n chiều. Tất cả các phần tử không nằm trên đường chéo là các đại lương
dương, và với kì vọng là cả hai biến x và y cùng tăng lên. Tập hợp một số lượng lớn
các vector là đối tượng chính của PCA. Mục đích là tìm trong tập dữ liệu vector
trực giao mà nó diễn tả sự phân bố của dữ liệu. Vector riêng thứ k của ma trận
m
U


Trần Thị Điểm


14
hiệp phương sai sẽ được chọn làm thành phần chính nếu trị riêng

k
U
k
λ
đạt giá trị
cực đại:

2
1
1
(.)
M
T
kk
n
U
M
λ
=


n
(2.5)
Ma trận hiệp phương sai:

1

1
.
M
TT
nn
n
CA
M
=
=ΦΦ=

A
(2.6)
A=[
12
, , ,
M
ΦΦ Φ
].
V
ới ma trận
2.3.4. Tìm các trị riêng và vector riêng tương ứng
Ma trận hiệp phương sai là ma trận vuông, ta có thể tìm được các vector
riêng trương ứng với các trị riêng cho ma trận này dựa vào các bước đã được trình
bày ở phần trên. Không gian được tạo nên từ các vector riêng được gọi là không
gian con của tập ảnh huấn luyện
2.3.5. Xác định các thành phần và vector đặc trưng
Đây là giai đoạn nén dữ liệu và làm giảm số chiều của dữ liệu. Ta xác định các
vector riêng từ ma trận hiệp phương sai và bước tiếp theo là sắp xếp các trị riêng
theo thứ tự từ lớn đến nhỏ. Các vector riêng ứng với các trị riêng lớn nhất được

chọn làm các hành phần chính của dữ liệu, bên cạnh đó ta có thể bỏ qua các thành
phần ít quan trọng của dữ liệu. Khi bỏ bớt các thành phần đó ta sẽ làm mất đi thông
tin của dữ liệu, tuy nhiên dữ liệu sẽ bị mất ít nếu như trị riêng có giá trị nhỏ
2.3.6. Hình thành tập dữ liệu
Sau khi đã lựa chọn thành phần là các vector riêng mà ta muốn giữ lại trong dữ
liệu để làm vector đặc trưng, từ đó tạo nên không gian con cho tập dữ liệu, để thu
được tập dữ liệu tại sau khi biến đổi thực hiện phép nhân sau:
FinalData=RowFeatureVector x RowDataAdjust
Vì trong quá trình loại bỏ bớt một số thành phần của tập dữ liệu đã làm mất đi
thông tin của dữ liệu. Nếu ta lấy tất cả các vector riêng của dữ liệu thì dữ liệu ban


Trần Thị Điểm

15
đầu sẽ được lấy lại một cách đầy đủ. Dữ liệu ban đầu thu được qua phép biến đổi
được cho bởi công thức:
RowDataAdjust=RowFeatureVector
-1
x FinalData
Tuy nhiên để lấy lại lượng thông tin gốc ta cần cộng thêm giá trị trung bình
của dữ liệu ban đầu để hoàn tất việc lấy lại thông tin nguyên thủy.
RowOriginalData=(RowFeatureVector
T
x FinalData)+OriginalMean
Quá trình huấn luyện một ảnh là làm giảm sự tương quan giữa các thành phần
trong một ảnh. Sự kết hợp các trị riêng cho biết hạng của vector riêng biểu thị thành
phần có nghĩa của các biến trong ảnh. Ảnh mặt riêng được tính từ các vector riêng
của từng vùng đặc trưng được dùng để biểu diễn các ảnh mặt. Một không gian mặt
có số chiều, kích thước nhỏ hơn không gian mặt lúc đầu là cho quá trình nhận dạng.




Trần Thị Điểm

16
CHƯƠNG 3: CÔNG CỤ SOPC BUILDER

3.1. KHÁI NIỆM SOPC
System on Programmable chip (SoC) là một ý tưởng về sự tích hợp tất cả
mọi thành phần của một hệ thống vào một mạch tích hợp (IC). Mạch này có thể bao
gồm cả các chức năng số, tương tự, hoặc cả hai. Ứng dụng điển hình cho ý tưởng
này là các hệ thống nhúng. Các SoC có ưu điểm là giá thành thấp và đơn giản. Thiết
bị logic khả trình (PLD: Programmable logic device) là một thiết bị được tạo ra từ
các cổng logic, có khả năng lập trình được để tạo các ứng dụng khác nhau. Từ ý
tưởng trên, thuật ngữ SoPC (system on programmable chip) ra đời. Toàn bộ thiết kế
hệ thống sẽ được tạo trên một thiết bị logic khả trình (PLD). Lĩnh vực này thường
ứng dụng để thử nghiệm các hệ thống trước khi chế tạo các IC.
3.2. SOPC BUILDER
SoPC Builder là một công cụ phần mềm để tạo các hệ thống SoPC của hãng
Altera [18]. SoPC Builder cung cấp một môi trường đồ họa và chuẩn hóa cho việc
tạo ra một thiết kế hệ thống trên chip bao gồm các thành phần như CPU, giao tiếp
bộ nhớ, các thiết bị ngoài chuẩn và cả các thiết bị ngoài do người dùng tự định
nghĩa. SoPC Builder còn cho phép người dùng tuỳ chọn giao tiếp với các thành
phần độc lập của module hệ thống. SoPC sẽ kết nối tất cả các thành phần này lại và
tạo ra một module hệ thống duy nhất, tự động tạo ra các kết nối cần thiết để nối các
thiết bị lại với nhau
3.3. AVALON BUS
Avalon bus là một kiến trúc bus giản đơn, được thiết kế để kết nối các vi xử lý
nhúng và các thiết bị ngoại vi trong một hệ thống trên chip khả trình (SoPC).

Avalon bus là một giao tiếp mà đặc tả các kết nối cổng giữa các thiết bị master và
slave, đồng thời đặc tả thời gian liên lạc giữa các thiết bị.
3.3.1. Avalon bus module
Avalon bus module là xương sống của một module hệ thống. Đó là con
đường chính để giao tiếp giữa các thành phần thiết bị ngoại vi trong một thiết kế


Trần Thị Điểm

17
SoPC. Avalon bus module là một tập hợp các tín hiệu điều khiển, dữ liệu, địa chỉ và
các logic thỏa hiệp mà kết nối các thành phần tạo nên hệ thống. Avalon bus module
thực hiện một kiến trúc bus có thể cấu hình được, có nghĩa là có thể thay đổi để phù
hợp với nhu cầu kết nối các thiết bị ngoại vi của người thiết kế. Avalon bus module
được tạo một cách tự động bởi SoPC Builder, vì thế người thiết kế hệ thống có thể
tiết kiệm thời gian trong việc nối các thiết bị với nhau
3.3.2. Các thiết bị ngoại vi Avalon
Một thiết bị ngoại vi Avalon là một thiết bị logic, hoặc được tích hợp sẵn hoặc
nằm rời bên ngoài. Các thiết bị này thực hiện một số chức năng ở mức hệ thống và
giao tiếp với các thành phần khác trong hệ thống thông qua Avalon bus. Các thiết bị
này có thể được thêm vào hoặc lấy ra khỏi hệ thống vào thời điểm thiết kế để phù
hợp với yêu cầu của hệ thống.
3.4 COMPONENT TRONG SOPC
Ta có thể tạo ra một component mới từ những thiết kế tự tạo, component này
sau khi tạo có thể tích hợp vào hệ thống và sẽ được cấp địa chỉ để CPU Nios có thể
thông qua đó điều khiển hoạt động của component này. Đây là một giải pháp tốt cho
hệ thống vì nó sẽ giúp hệ thống tích hợp một cách hoàn hảo các thành phần. Tuy
nhiên, để có thể chuyển một file thiết kế thành component, ta phải có các chuẩn và
tín hiệu nhất định. Nói cách khác, ta cần một giao tiếp để có thể kết nối thiết kế tự
tạo vào hệ thống qua Avalon bus. Trong phần này, khóa luận chú trọng vào việc tạo

ra giao diện liên kết giữa component và Avalon bus. Tùy vào chức năng, thiết kế
của ta có thể là một thiết bị ngoại vi chủ hoặc là một thiết bị ngoại vi slave. Do đó,
nó cần ít nhất một cổng slave hoặc một cổng master.



Trần Thị Điểm

18
CHƯƠNG 4: HỆ THỐNG SOPC CHO ỨNG DỤNG
NHẬN DẠNG MẶT NGƯỜI

4.1. THUẬT TOÁN PHẦN CỨNG CHO ỨNG DỤNG NHẬN DẠNG MẶT
NGƯỜI
Toàn bộ thuật toán cho hệ thống nhận dạng mặt người được mô tả theo hình
4.1.

Hình 4.1: Thuật toán phần cứng cho hệ thống nhận dạng mặt người
Nguyên tắc hoạt động
Bước 1: Từ tập ảnh đầu vào (lấy từ camera hoặc tập dữ liệu có sẵn) ta tìm ảnh
trung bình cho toàn bộ tập dữ liệu.
Bước 2: Thực hiện việc chuẩn hóa tập ảnh đầu vào và ảnh cần nhận dạng bằng cách
trừ với ảnh trung bình để tìm ra sự sai lệch.
Bước 3: Thực hiện phép chiếu để tìm ra các giá trị tương ứng của từng mặt người.
Bước này được thực hiện bằng cách nhân sự sai lệch với những hệ số eigenfaces
tương ứng.
Bước 4: Để tìm ra đối tượng cần nhận dạng ta sử dụng khoảng cách Euclide kết hợp
với thuật toán Winner Take All thông qua lưu đồ thuật giải Vector Quantization.
4.1.1. Tập dữ liệu
Tập dữ liệu được xây dựng trên cơ sở tham khảo các tập dữ liệu chuẩn như:



Trần Thị Điểm

19
FERET, YALE, AT&T, MIT. Phần cứng được thiết kế cho thuật toán PCA ở đây
nhằm rút trích đặc trưng từ tập dữ liệu gồm nhiều khuôn mặt của nhiều người khác
nhau. Mỗi khuôn mặt người lại được thể hiện ở nhiều trạng thái, tính chất khác
nhau: vui, buồn, nhăn, có mang kính, không mang kính, khung nền thay đổi, vị trí
thay đổi….
4.1.2. Tìm mặt trung bình
Bước đầu tiên trong thuật toán PCA là tính giá trị khuôn mặt trung bình đại
diện cho toàn bộ dữ liệu. Công thức tính (4.1)















+++
+++

+++
=
NNN
hba
hba
hba
M
m



1
222
111
MMMM
r
(4.1)
Với : M là số ảnh của tập dữ liệu
N
aaa ,,
2
,
1
L là giá trị pixel của từng điểm ảnh trong một mặt người có N
pixel.
4.1.3. Tính sự sai lệch giữa từng mặt người và mặt trung bình
Sau khi tìm được mặt trung bình đại diện cho toàn bộ tập dữ liệu ta tiến hành
bước trừ giá trị từng mặt người cho giá trị trung bình tương ứng theo công thức
(4.2):


11
2
i
NN
am
am
a
am

2







=







MM
(4.2)
Với a
i
là sự sai biệt giữa mặt người thứ i trong tập dữ liệu với giá trị trung bình

Sau khi trừ giá trị của từng mặt người với giá trị mặt trung bình ta được một
tập dữ liệu mới gồm những giá trị sai lệnh của mặt người với giá trị mặt trung bình.
Ta gọi tập dữ liệu mới này là A.
4.1.4. Tìm trị riêng và vector riêng
Phần trọng tâm của thuật toán PCA là tìm những vector riêng ứng với những trị


Trần Thị Điểm

20
riêng được tính từ ma trận L=A
T
A. Có rất nhiều thuật toán để tìm trị riêng vector
riêng [14]. Nhưng do tính chất của ma trận L là một ma trận đối xứng nên ở đây tác
giả dùng thuật toán Jacobi [14] để tìm trị riêng, vector riêng. Sơ đồ thuật toán
Jacobi được cho như sau:

Hình 4.2: Sơ đồ tổng quát cho thuật toán Jacobi

4.1.5. Thực hiện phép quay PCA


Trần Thị Điểm

21
Ứng với những vector riêng có trị riêng lớn nhất ta dữ lại những vector này.
Những vector này sẽ xây dựng nên một không gian đặc trưng mới hay còn gọi là
không gian mặt. Công thức (4.3) thực hiện phép biến đổi này như sau:
U=A.V (4.3)
Với: U là không gian mặt

V: ma trận chứa những vector riêng ứng với những trị riêng ta cần giữ lại
Để tìm các eigenfaces của từng mặt người ta thực hiện phép chiếu lên không gian
vừa tìm được theo công thức (4.4):

T
i
UaΩ=
i
r
(4.4)
i
Ω : là những eigenface ứng với mặt người thứ i.
4.1.6. Tính khoảng cách Euclide
Để tìm ra mặt người trùng khớp nhất, ta có các tiêu chuẩn khác nhau để xác
định codeword (eigenface) khớp nhất với vector ngõ vào như: khoảng cách
Euclide, khoảng cách Manhatan, Nếu ta giả sử X là vector ngõ vào và T
j
là một
codeword thì khoảng cách Manhattan được cho bởi công thức (4.5):
(4.5)

=
−=
k
i
ijij
XTd
1
,
)(

Khoảng cách Euclide bình phương giữa hai Vector được tính theo công thức
(4.6). Trong đó, X
i
và T
i,j
là thành phần thứ i tương ứng của X và T
j
, k là số chiều
của X và T
j
, codeword có d
j
nhỏ nhất được xem là trùng khớp nhất.
(4.6)
2
1
,
)(

=
−=
k
i
ijij
XTd
Từ công thức (4.5) chúng ta thấy, mạch tính khoảng cách Manhattan đơn giản
nhưng làm giảm chất lượng kết quả mong muốn [5]. Ngược lại từ công thức (4.6)
chúng ta thấy rằng để tính toán khoảng cách Euclide bình phương cần k phép trừ và
k phép nhân. Vì phần cứng để thực hiện phép nhân cần nhiều cổng logic, nên phần
cứng tổng thể của (4.6) khá lớn, nhưng lại cho kết quả VQ tốt hơn. Tùy thuộc vào

mỗi thuật toán, độ chính xác và từng vấn đề cụ thể mà số codeword trong codebook
và số phần tử của mỗi codeword sẽ khác nhau. Do đó, nghiên cứu giải quyết vấn đề


Trần Thị Điểm

22
này bằng cách thiết kế codeword một cách dễ dàng phù hợp với từng ứng dụng khác
nhau [1][2].
4.2. HỆ THỐNG SOPC CHO ƯNG DỤNG NHẬN DẠNG MẶT NGƯỜI


Hình 4.3: SoPC cho ưng dụng nhận dạng mặt người
Toàn bộ hệ thống được tính hợp trên một chip duy nhất. Tất cả các thành phần
được xem như những accelerator kết nối với CPU. CPU đóng vai trò tạo các các tín
hiệu điều khiển cho hệ thống hoạt động. Hệ thống nhận dạng mặt người tập trung
chủ yếu vào 2 phần [3][4]. Phần cứng cho thuật toán PCA. Phần cứng vector
quantization tìm ra mặt người cần nhận dạng. Hệ thống được mô tả ở hình 4.3.


Trần Thị Điểm

23
4.2.1.1. Khối tính trung bình
Toàn bộ hoạt động của khối tính trung bình được mô tả cụ thể trong hình 4.4.

Hình 4.4: Sơ đồ khối tính trung bình
4.2.1.2. Khối tìm độ dư thừa của từng ảnh mẫu

Hình 4.5: Sơ đồ khối tính độ dư thừa

4.2.1.3. Khối nhân ma trận


Trần Thị Điểm

24

Hình 4.6: Sơ đồ khối bộ nhân
4.2.2. Mạch tính khoảng cách Euclide và tìm vị trí trung khớp nhất

Hình 4.7: Sơ đồ mạch khối thiết kế vector quantization
Nguyên tắc hoạt động


Trần Thị Điểm

×