MÔ HÌNH THỐNG KÊ HỌC SÂU<br />
TRONG NHẬN DẠNG KHUÔN MẶT<br />
DEEP LEARNING STATISTIC MODEL IN FACE RECOGNITION<br />
<br />
Đỗ Thành Công<br />
Khoa Công nghệ thông tin,<br />
Trường Đại học Kinh doanh và Công nghệ Hà Nội<br />
E-mail: plc1810@gmail.com<br />
<br />
<br />
Ngày tòa soạn nhận được bài báo: 28/11/2018<br />
Ngày phản biện đánh giá: 18/12/2018<br />
Ngày bài báo được duyệt đăng: 28/12/2018<br />
<br />
<br />
Tóm tắt: Học sâu là thuật toán dựa trên một số ý tưởng từ não bộ tới việc tiếp thu<br />
nhiều tầng biểu đạt, diễn tả cả cụ thể lần trừu tượng, từ đó làm rõ nghĩa các loại dữ liệu.<br />
Học sâu được ứng dụng trong nhận diện hình ảnh, giọng nói, xử lý ngôn ngữ tự nhiên.<br />
Convolutional Neural Network (CNNs) là một trong những mô hình của học sâu đem lại<br />
kết quả có độ chính xác cao.<br />
Từ khóa:<br />
Summary: Deep learning refers to the number of layers through which the data is<br />
transformed. Deep learning is also known as deep structured learning and a part of a<br />
broader family of neural network methods based on convolutional neural networks (CNN)<br />
s. Deep learning is applied in image recognition, voice, natural language processing. It is<br />
one of the deep learning models that results in high accuracy.<br />
Keywords: Face Detection, Deep Learning, Convolutional Neural Network (CNNs)<br />
<br />
<br />
I. GIỚI THIỆU<br />
1. Định nghĩa xác định khuôn mặt<br />
Xác định khuôn mặt người (Face Detection) là một kỹ thuật máy tính để xác định các vị trí và<br />
các kích thước của khuôn mặt trong các ảnh bất kỳ (ảnh kỹ thuật số). Kỹ thuật này nhận biết các<br />
đặc trưng của khuôn mặt và bỏ qua các thứ khác như: tòa nhà, cây cối, cơ thể, …<br />
2. Ứng dụng nhận dạng khuôn mặt<br />
<br />
4 TẠP CHÍ KHOA HỌC<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
Bài toán nhận dạng khuôn mặt được phát triển từ những năm 1990, đến nay bài toán đã<br />
được ứng dụng trong rất nhiều lĩnh vực khác nhau.<br />
Xác minh tội phạm: Dựa vào ảnh của một người, nhận dạng xem người đấy có phải là tội<br />
phạm hay không bằng cách so sách với các ảnh tội phạm đang được lưu trữ. Hoặc có thể sử<br />
dụng camera để phát hiện tội phạm trong đám đông. Ứng dụng này giúp cơ quan an ninh quản<br />
lý con người tốt hơn.<br />
Camera chống trộm: Các hệ thống camera sẽ xác định đâu là con người và theo dõi xem<br />
con người đó có làm gì phạm pháp không, ví dụ như lấy trộm đồ, xâm nhập bất hợp pháp vào<br />
một khu vực nào đó.<br />
Bảo mật: Các ứng dụng về bảo mật rất đa dạng, một trong số đó là công nghệ nhận dạng<br />
mặt người của máy tính, điện thoại. Công nghệ này cho phép chủ nhân của thiết bị chỉ cần cho<br />
camera chụp hình đúng khuôn mặt là có thể đăng nhập.<br />
Lưu trữ khuôn mặt: Xác định mặt người có thể được ứng dụng trong các trạm rút tiền tự động<br />
(ATM). Lưu trữ được khuôn mặt của người rút tiền, ngân hàng có thể đối chứng và xử lý dễ dàng<br />
các trường hợp rút tiền phạm pháp.<br />
Trong thiết bị di động hay mạng xã hội, lưu trữ khuôn mặt giúp nhận dạng ảnh, phân loại ảnh<br />
bạn bè một cách nhanh chóng.<br />
Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua khuôn mặt người trên nhiều<br />
hệ cơ sở dữ liệu lưu trữ thật lớn, như internet, các hãng truyền hình, …. ví dụ: tìm các phim có<br />
diễn viên Thành Long đóng, tìm các trận đá bóng có Quang Hải đá, …<br />
Trong chụp hình, nhận dạng khuôn mặt để máy chụp hình thế hệ mới để cho kết quả hình<br />
ảnh đẹp hơn, nhất là khuôn mặt người.<br />
Một số hãng xe nhận dạng khuôn mặt để kiểm tra lái xe có ngủ gật hay không để thông báo<br />
khi cần thiết.<br />
3. Các phương pháp tiếp cận:<br />
Để xác định khuôn mặt trong ảnh ta có thể sử dụng theo bốn hướng tiếp cận chính. Ngoài<br />
ra cũng có rất nhiều nghiên cứu mà phương pháp xác định mặt người không chỉ dựa vào một<br />
hướng mà có liên quan đến nhiều hướng.<br />
Hướng tiếp cận tri thức: các đặc trưng của khuôn mặt sẽ được mã hóa thành các luật. Thông<br />
thường các luật thường mô tả các quan hệ của đặc trưng như khuôn mặt thường có hai mắt đối<br />
xứng qua trục thẳng đứng ở giữa khuôn mặt và có một mũi, một miệng. Các quan hệ đặc trưng<br />
có thể được mô tả như quan hệ về khoảng cách và vị trí.<br />
Hướng tiếp cận đặc trưng không thay đổi: xác định khuôn mặt người dựa trên các đặc trưng<br />
không bị thay đổi khi thay đối tư thế khuôn mặt , vị trí quan sát hay điều kiện ánh sáng thay đổi.<br />
Đã có rất nhiều nghiên cứu về hướng tiếp cận này, các đặc điểm không thay đổi được tìm thấy<br />
như màu da, lông mày, mắt, mũi, miệng hay các đường viền trên tóc …<br />
Hướng tiếp cận so khớp mẫu: các mẫu chuẩn của khuôn mặt (thường là khuôn mặt được<br />
<br />
TẠP CHÍ KHOA HỌC 5<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
chụp thẳng) sẽ được xác định trước hoặc được biểu diễn thành một hàm với các tham số cụ<br />
thể. Từ ảnh đầu vào, ta tính các giá trị tương quan so với các mẫu chuẩn về đường viền khuôn<br />
mặt, mắt, mũi và miệng. Thông qua các giá trị tương quan này mà hệ thống sẽ quyết định có hay<br />
không có tồn tại khuôn mặt trong ảnh.<br />
Hướng tiếp cận dựa trên diện mạo: Hướng tiếp cận dựa trên diện mạo trái ngược với hướng<br />
tiếp cận dựa trên so sánh khớp mẫu (các mẫu đã được các nhà nghiên cứu định nghĩa trước),<br />
các mẫu trong hướng tiếp cận này được học từ một tập ảnh mẫu. Có thể nói hướng tiếp cận dựa<br />
trên diện mạo áp dụng các kỹ thuật theo hướng xác suất thống kê và học máy để tìm những đặc<br />
tính liên quan của khuôn mặt và không phải là khuôn mặt.<br />
II. MÔ HÌNH HỌC SÂU (DEEP LEARNING)<br />
Học sâu là phương pháp sử dụng nhiều lớp các đơn vị xử lý phi tuyến để trích trọn các đặc<br />
trưng và chuyển đổi. Trong các lớp này thì giá trị của các lớp đầu ra của lớp trước sẽ là giá trị<br />
đầu vào cho lớp kế tiếp nó. Các thuật toán được sử dụng có thể là thuật toán học có giám sát<br />
hoặc không có giám sát. Học sâu thì thường được áp dụng cho các mô hình nhận dạng mẫu và<br />
các bài toán phân loại thống kê. Các thuật toán học sâu khác so với các thuật toán học nông ở<br />
việc biến đổi các tín hiệu tham số khi nó truyền từ lớp đầu vào cho lớp đầu ra, nơi một tham số<br />
biến đổi là một đơn vị xử lý có khả năng huấn luyện cho các tham số, chẳng hạn như trọng số<br />
và ngưỡng.<br />
1. Giới thiệu về mạng Neuron<br />
Mạng neuron nhân tạo, Artificial Neuron Network (ANN) gọi tắt là mạng neuron, neuron<br />
network, là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ neuron<br />
sinh học. Nó được tạo lên từ một số lượnglớn các phần tử (gọi là phần tử xử lý hay neuron) kết<br />
nối với nhau thông qua cácliên kết (gọi là trọng số liên kết) làm việc như một thể thống nhất để<br />
giải quyết mộtvấn đề cụ thể nào đó.<br />
Một mạng neuron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân<br />
loại dữ liệu ...) thông qua một quá trình học từ tập các mẫu huấn luyện. Về bản chất học chính<br />
là quá trình hiệu chỉnh trọng số liên kết giữa các neuron.<br />
Kiến trúc chung của một mạng nơron nhân tạo (ANN) gồm 3 thành phần đó là: Input Layer,<br />
Hidden Layer và Output Layer<br />
<br />
<br />
<br />
<br />
Hình 1. Mô hình mạng Neuron<br />
<br />
<br />
6 TẠP CHÍ KHOA HỌC<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
Theo hình trên, lớp ẩn (Hidden Layer) gồm các Nơron nhận dữ liệu input từ các Nơron ở lớp<br />
(Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo. Trong một ANN có thể<br />
có nhiều lớp ẩn.<br />
2. Huấn luyện mạng Neuron<br />
Mạng neuron nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng<br />
cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Trong<br />
trạng thái học thông tin được lan truyền theo hai chiều nhiều lần để học các trọng số. Có 3 kiểu<br />
học chính, mỗi kiểu học tương ứng với một nhiệm vụ học trừu tượng. Đó là học có giám sát (có<br />
mẫu), học không giám sát và học tăng cường. Thông thường loại kiến trúc mạng nào cũng có<br />
thể dùng được cho các nhiệm vụ.<br />
Học cố giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học có đầu vào và đầu ra<br />
tương ứng đầu vào đó. Mô hình được huấn luyện bằng cách giảm thiểu sai số lỗi (loss) của các<br />
dự đoán tại các vòng lặp huấn luyện. Sau quá trình huấn luyện. mô hình sẽ có khả năng đưa ra<br />
dự đoán về đầu ra với một đầu vào mới gặp (không có trong dữ liệu học). Nếu không gian đầu ra<br />
được biểu diễn dứới dạng rời rạc, ta gọi đó là bài toán phân loại (classification). Nếu không gian<br />
đầu ra được biểu diễn dưới dạng liên tục, ta gọi đó là bài toán hồi quy (regression).<br />
Học không giám sát: là cách huấn luyện một mô hình trong đó dữ liệu học chỉ bao gồm đầu<br />
vào mà không có đầu ra. Mô hình sẽ được huấn luyện cách để tìm cấu trúc hoặc mối quan hệ<br />
giữa các đầu vào. Một trong những phương pháp học không giám sát quan trọng nhất là phân<br />
cụm (clustering): Tạo các cụm khác nhau với mỗi cụm biểu diễn một đặc trưng nào đó của dữ<br />
liệu và phân các đầu vào mới vào các cụm theo các đặc trưng của đầu vào đó.<br />
Học tăng cường: là phương pháp huấn luyện hệ thống tự động. Phương pháp này không<br />
cần dữ liệu ban đầu mà sẽ thu thập dữ liệu thông qua phép thử đúng hay sai.<br />
3. Mạng neuron tích chập<br />
Convolutional Neuron Network (CNNs – Mạng neuron tích chập) là một trong những mô hình<br />
Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống thông minh với độ<br />
chính xác cao như hiện nay.<br />
Tích chập là một cửa sổ trên một mặt trận mô tả như hình:<br />
<br />
<br />
<br />
<br />
Hình 2. Mô hình tổ hợp tích chập<br />
<br />
<br />
TẠP CHÍ KHOA HỌC 7<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương đương với một điểm<br />
ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale thì giá trị biến thiên từ 0 đến 255).<br />
<br />
Sliding window còn có tên gọi là kernel, filter hay feature detector. Ở đây, ta dùng một ma<br />
trận filter 3×3 nhân từng thành phần tương ứng (element-wise) với ma trận ảnh bên trái. Gía trị<br />
đầu ra do tích của các thành phần này cộng lại. Kết quả của tích chập là một ma trận (convoled<br />
feature) sinh ra từ việc trượt ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma trận<br />
ảnh bên trái.<br />
<br />
Mạng neuron tích chập bao gồm các lớp sau: lớp Convolutional, lớp RELU, lớp Pooling, lớp<br />
Fully connected. Sự sắp xếp về số lượng và thứ tự giữa các lớp này sẽ tạo ra những mô hình<br />
khác nhau phù hợp cho các bài toán khác nhau.<br />
<br />
Lớp Convolutiinal: Lớp này chính là nơi thể hiện tư tưởng ban đầu của mạng nơ-ron tích<br />
chập. Thay vì kết nối toàn bộ điểm ảnh, lớp này sẽ sử dụng một bộ các bộ lọc (filters) có kích<br />
thước nhỏ so với ảnh (thường là 3×3 hoặc 5×5) áp vào một vùng trong ảnh và tiến hành tính<br />
tích chập giữa bộ filter và giá trị điểm ảnh trong vùng cục bộ đó. Bộ filter sẽ lần lượt được dịch<br />
chuyển theo một giá trị bước trượt (stride) chạy dọc theo ảnh và quét toàn bộ ảnh.<br />
<br />
Lớp RELU: Lớp này thường được cài đặt ngay sau lớp Convolutional. Lớp này sử dụng hàm<br />
kích hoạt f(x) = max(0,x)f(x)=max(0,x). Nói một cách đơn giản, lớp này có nhiệm vụ chuyển toàn<br />
bộ giá trị âm trong kết quả lấy từ lớp Convolutional thành giá trị 0. Ý nghĩa của cách cài đặt này<br />
chính là tạo nên tính phi tuyến cho mô hình. Tương tự như trong mạng truyền thẳng, việc xây<br />
dựng dựa trên các phép biến đổi tuyến tính sẽ khiến việc xây dựng đa tầng đa lớp trở nên vô<br />
nghĩa. Có rất nhiều cách để khiến mô hình trở nên phi tuyến như sử dụng các hàm kích hoạt<br />
sigmoid, tanh, … nhưng hàm f(x) = max(0,x)f(x)=max(0,x) dễ cài đặt, tính toán nhanh mà vẫn<br />
hiệu quả.<br />
<br />
Lớp Pooling: Lớp này sử dụng một cửa sổ trượt quét qua toàn bộ ảnh dữ liệu, mỗi lần trượt<br />
theo một bước trượt (stride) cho trước. Khác với lớp Convolutional, lớp Pooling không tính tích<br />
chập mà tiến hành lấy mẫu (subsampling). Khi cửa sổ trượt trên ảnh, chỉ có một giá trị được xem<br />
là giá trị đại diện cho thông tin ảnh tại vùng đó (giá trị mẫu) được giữ lại. Các phương thức lấy<br />
phổ biến trong lớp Pooling là MaxPooling ( lấy giá trị lớn nhất), MinPooling (lấy giá trị nhỏ nhất)<br />
và AveragePooling (lấy giá trị trung bình).<br />
<br />
Lớp Fully connected: Lớp này tương tự với lớp trong mạng nơ-ron truyền thẳng, các giá trị<br />
ảnh được liên kết đầy đủ vào node trong lớp tiếp theo. Sau khi ảnh được xử lý và rút trích đặc<br />
trưng từ các lớp trước đó, dữ liệu ảnh sẽ không còn quá lớn so với mô hình truyền thẳng nên ta<br />
có thể sử dụng mô hình truyền thẳng để tiến hành nhận dạng.<br />
<br />
III. XÂY DƯNG KIẾN TRÚC MẠNG CNNS NHẬN DẠNG KHUÔN MẶT<br />
<br />
1. Xây dựng mạng CNNs<br />
<br />
Xây dựng tầng Convolutiinal: sử dụng ảnh có kích thước (32*32*3). Sử dụng 6 bước lọc mỗi<br />
bước lọc có kích thước (5*5*3) ta sẽ được bản đồ kích thước 28.<br />
<br />
8 TẠP CHÍ KHOA HỌC<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
Hình 3. Tầng Convolutiinal<br />
Xây dựng tầng Pooling: Sử dụng 64 bộ lọc filter có kích thước [244*244*64] thực hiện với<br />
thông số F= 2, S=2 ta sẽ thu được đàu ra kích thước [112*112*64]<br />
<br />
<br />
<br />
<br />
Hình 4. Mô hình pooling cho ảnh<br />
<br />
Xây dựng hàm biến đổi tuyến tính: Về cơ bản, covolution là một phép biển đổi tuyến tính.<br />
Nếu tất cả các neuron được tổng hợp bởi các phép biến đổi tuyến tính thì một mạng neuron đều<br />
có thể đưa về dưới dạng một hàm tuyến tính. Tuy nhiên, các nghiên cứu gần đây chứng minh<br />
được việc sử dụng hàm ReLu (Rectified Linear Unit) là đáng tin cậy nhất.<br />
<br />
Kết nối Fully-connected: cách kết nối các neural ở hai tầng với nhau trong đó tầng sau kết<br />
nối đẩy đủ với các neural ở tầng trước nó. Đây cũng là dạng kết nối thường thấy ở ANN, trong<br />
CNN tầng này thường được sử dụng ở các tầng phí cuối của kiến trúc mạng.<br />
<br />
Trong bài toán phân lớp ảnh , CNNs sẽ được mô tả như sau:<br />
<br />
[[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC<br />
<br />
Trong đó:<br />
<br />
[CONV -> RELU]*N tức là trong kiến trúc này sau tầng CONV là tầng RELU, trong CNN kiến<br />
trúc 2 tầng này có thể lặp N lần.<br />
<br />
TẠP CHÍ KHOA HỌC 9<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
POOL? là tầng Pooling cho người thiết kế quyết định có thể có hoặc không.<br />
[[CONV -> RELU]*N -> POOL?]*M trong kiến trúc CNN có thể lặp lại M lần kiểu sau tầng<br />
CONV là tầng RELU và kế tới là tầng Pooling.<br />
[FC -> RELU]*K trong CNN có thể lặp K lần cấu trúc kiểu sau tầng FC là tầng RELU nhưng<br />
trước nó phải có tầng [CONV -> RELU].<br />
Như vậy CNNs sẽ cố gắng tìm ra các thông số tối ưu cho các filter tương ứng theo thứ tự<br />
pixel > edges > shapes > facial > high-level features.<br />
<br />
<br />
<br />
<br />
Hình 5. Thứ tự các bộ lọc trong mạng CNNs<br />
2. Huấn luyện mạng CNNS<br />
Bài toán áp dụng trong mô hình nhỏ chỉ nhận dạng 10 khuôn mặt người khác nhau. Sử dụng<br />
tập ảnh chụp 10 nghệ sỹ Việt Nam.Sử dụng 80% ảnh để huấn luyện và 20% ảnh để kiểm chứng.<br />
<br />
<br />
<br />
<br />
Hình 6. Mô hình mạng huấn luyện.<br />
<br />
<br />
10 TẠP CHÍ KHOA HỌC<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
Bước 1: Xây dựng tập thư viện là hình ảnh khuôn mặt người và được phân loại và lưu vào<br />
thư mục đặt theo tên nghệ sỹ và lưu vào thư mục training_face.<br />
<br />
<br />
<br />
<br />
Hình 6: Tập mẫu huấn luyện<br />
Bước 2: Thay đổi kích thước hình ảnh huấn luyện thành cỡ 128 x 128.<br />
a = tf.truncated_normal([16,128,128,3])<br />
sess = tf.Session()<br />
sess.run(tf.initialize_all_variables())<br />
sess.run(tf.shape(a))<br />
Bước 3: Đặt tên cho các lớp và thiết lập số lượng ảnh sử dụng kiểm tra.<br />
validation_size = 0.2<br />
img_size = 128<br />
num_channels = 3<br />
train_path = 'face_train'<br />
Bước 4: Thiết lập các tầng tích chập:<br />
filter_size_conv1 = 3<br />
num_filters_conv1 = 32<br />
filter_size_conv2 = 3<br />
num_filters_conv2 = 32<br />
<br />
TẠP CHÍ KHOA HỌC 11<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
filter_size_conv3 = 3<br />
num_filters_conv3 = 64<br />
Bước 5: Xây dựng tầng Flattening<br />
def create_flatten_layer(layer):<br />
layer_shape = layer.get_shape()<br />
num_features = layer_shape[1:4]<br />
layer = tf.reshape(layer, [-1, num_features])<br />
return layer<br />
Bước 6: Xây dựng kết nối Fully-connected<br />
def create_fc_layer(input, num_inputs, num_outputs, use_relu=True):<br />
weights = create_weights(shape=[num_inputs, num_outputs])<br />
biases = create_biases(num_outputs)<br />
layer = tf.matmul(input, weights) + biases<br />
if use_relu:<br />
layer = tf.nn.relu(layer)<br />
return layer<br />
Bước 7: Thực hiện huấn luyện mạng<br />
<br />
<br />
<br />
<br />
Hình 7. Kết quả huấn luyện mạng<br />
Kết quả huấn luyện sau 300 lần huấn luyện kết quả sai số đạt khoảng 68%.<br />
Bước 8: Lưu kết quả huấn luyện.<br />
saver.save(session, 'test/trainningData.xml')<br />
3. Xây dựng mô hình dự đoán:<br />
<br />
<br />
<br />
<br />
Hình 8. Mô hình dự đoán<br />
<br />
12 TẠP CHÍ KHOA HỌC<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
Bước 1: Load file huấn luyện<br />
Bước 2: Đọc ảnh đầu vào và tìm ra vùng gần giống dự đoán là khuôn mặt và lưu ảnh xử lý<br />
vào thư mục process.<br />
Bước 3: Đối sánh hình ảnh và so sánh với các lớp đã học được.<br />
Kết quả thử nghiệm với một ảnh không có trong tập huấn luyện. Thu được sai số khoảng<br />
0.97<br />
<br />
<br />
<br />
<br />
Hình 8. Kết quả thử nghiệm<br />
<br />
IV. HƯỚNG PHÁT TRIỂN<br />
<br />
Với phương pháp sử dụng mạng tích chập để nhận dạng khuôn mặt đem lại tỉ lệ thành công<br />
cao tuy nhiên vẫn còn tồn tại một số khó khăn:<br />
<br />
Tỉ lệ nhận dạng còn phụ thuộc vào điều kiện ánh sáng, phản chiếu, khuôn mặt bị che bởi tóc<br />
hay mũ.<br />
<br />
Màu sắc của môi trường xung quanh có thể có lẫn với khuôn mặt khiến kết quả không chính<br />
xác.<br />
<br />
Trong bức ảnh có nhiều khuôn mặt và có nhiều hướng mặt khác nhau.<br />
<br />
Để khắc phục những hạn chế trên ta có thể kết hợp hợp học tăng cường cùng thuật toán.<br />
<br />
IV. KẾT LUẬN<br />
<br />
TẠP CHÍ KHOA HỌC 13<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />
Bài toán nhận dạng khuôn mặt là một vấn đề hay có nhiều ứng dụng trong thực tế. Dữ liệu<br />
thu thập khi huấn luyện càng lớn sẽ đem kết quả chính xác.<br />
TÀI LIỆU THAM KHẢO<br />
[1] Z. Li, J.-i. Imai and M. Kaneko, "Robust face recognition using block-based bag of<br />
words.,"Pattern Recognition (ICPR), 2010 20th International Conference on. IEEE, pp. 1285-<br />
1288, 2010.<br />
[2] C.-F. Tsai, "Bag-of-words representation in image annotation: A review.," ISRN Artificial<br />
Intelligence 2012,2012.<br />
[3] S. Liao, A. K. Jain and S. Z. Li, "Partial face recognition: Alignment-free approach," IEEE<br />
Transactions on Pattern Analysis and Machine Intelligence 35.5, pp. 1193-1205, 2013.<br />
[4] R. Achanta, A. Shaji, K. Smith, A. Lucchi, P. Fua and S. Süsstrunk, "SLIC superpixels<br />
compared to state-of-the-art superpixel methods," IEEE transactions on pattern analysis and<br />
machine intelligence,vol. 34.11, pp. 2274-2282, 2012. [8] J. Y. Wright, G. A. Y., S. S. S. A. and Y.<br />
Ma, "Robust face recognition via sparse representation," IEEE transactions on pattern analysis<br />
and machine intelligence, vol. 31(2), pp. 210-227, 2009.<br />
[5] D. G. Lowe, "Distinctive image features from scale-invariant keypoints," International<br />
ournal of computer vision, vol. 60.2, pp. 91-110, 2004.<br />
[6] J. Canny, "A computational approach to edge detection, "IEEE Transactions on pattern<br />
analysis and machine intelligence,vol. 6, pp. 679-698, 1986. [7] K. Mikolajczyk, A. Zisserman and<br />
C. Schmid, "Shape recognition with edge-based features, "British Machine Vision Conference<br />
(BMVC'03), vol. Vol. 2, pp. 779-788, 2003.<br />
[8] K. Mikolajczyk and C. Schmid, "Scale & affine invariant interest point detectors,"<br />
International journal of computer vision,vol. 60(1), pp. 63-86, 2004.<br />
<br />
<br />
<br />
<br />
14 TẠP CHÍ KHOA HỌC<br />
QUẢN LÝ VÀ CÔNG NGHỆ<br />