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

Xây dựng hệ thống phát hiện khuôn mặt và cảnh báo bằng Email trên Android với vi xử lý ARM CORTEX A8

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.22 MB, 6 trang )

Đoàn Ngọc Phƣơng

Tạp chí KHOA HỌC & CÔNG NGHỆ

116 (02): 105 - 110

XÂY DỰNG HỆ THỐNG PHÁT HIỆN KHUÔN MẶT VÀ CẢNH BÁO BẰNG
EMAIL TRÊN ANDROID VỚI VI XỬ LÝ ARM CORTEX A8
Đoàn Ngọc Phương*
Trường Đại học Công nghệ thông tin và Truyền thông – ĐH Thái Nguyên

TÓM TẮT
Sự phát triển của các nền tảng sử dụng hệ điều hành Android và vi xử lý ARM, cùng với sự ra đời
của phiên bản OpenCV dành cho Android đã tạo điều kiện cho các lập trình viên phát triển các
ứng dụng thị giác máy tính cho các hệ thống nhúng. Trong đó, các ứng dụng nhận diện khuôn mặt
trên hệ nhúng hiện nay đang rất đƣợc quan tâm nhƣng chƣa đƣợc khai thác hết. Bài báo này sẽ đề
xuất phƣơng pháp xây dựng hệ thống phát hiện khuôn mặt và gửi thông báo bằng email cho ngƣời
dùng. Hệ thống đƣợc triển khai trên bộ Kit ARM Cubie A10 đƣợc cài đặt hệ điều hành Android
với vi điều khiển ARM Cortex A8. Qua quá trình thực nghiệm, hệ thống đã đã đạt đƣợc các kết
quả tốt thể hiện hiệu quả của việc sử dụng các hệ thống nhúng trong bài toán phát hiện xâm nhập
qua hình ảnh và cảnh báo tới ngƣời dùng.
Từ khóa: ARM, Cortex A8, OpenCV, OpenCV4Android, phát hiện khuôn mặt, thị giác máy tính,
thị giác nhúng, Android.

GIỚI THIỆU*
Phát hiện khuôn mặt là kỹ thuật cho phép
phát hiện ra khuôn mặt ngƣời trong một
khung hình hay trong một đoạn video [1]. Kỹ
thuật này cho phép phân biệt khuôn mặt với
các thành phần khác trong hình ảnh nhƣ cơ
thể, cây cối, xe cộ, …, sau đó xác định vị trí


và kích thƣớc của khuôn mặt để sử dụng
trong các mục đích khác nhau. Phát hiện
khuôn mặt đƣợc phát triển từ những năm 70
của thế kỷ trƣớc [1] và đã đạt đƣợc nhiều
thành tựu đáng kể với những giải thuật điển
hình nhƣ adaboost, các đặc trƣng haar-like,
mô hình Cascade of Classifiers [1]. Những
giải thuật đó đã giải quyết đƣợc các vấn đề
đặt ra với phát hiện khuôn mặt, đó là: Phát
hiện khuôn mặt ngƣời ở các tƣ thế khác nhau;
Phát hiện khuôn mặt khi trên khuôn mặt có
nhiều chi tiết không thuộc khuôn mặt ngƣời;
Phát hiện các trạng thái khác nhau của khuôn
mặt;Phát hiện khuôn mặt khi nó bị che khuất
một phần,…Phát hiện khuôn mặt đã đƣợc áp
dụng trong rất nhiều lĩnh vực [1]: Xác minh
tội phạm,bảo mật,tìm kiếm dữ liệu…
Tuy có một lịch sử phát triển lâu dài nhƣ vậy,
nhƣng phát hiện khuôn mặt vẫn tiếp tục đƣợc
*

Tel: 0979 479940, Email:

nghiên cứu, cải tiến để phù hợp với những
yêu cầu mới. Gần đây, kỹ thuật phát hiện
khuôn mặt bắt đầu đƣợc sử dụng rộng rãi
trong các hệ thống nhúng với hai lý do chính,
một là:Sự phát triển của vi xử lý tiên tiến, tiết
kiệm điện năng ARM, sự xuất hiện của các hệ
điều hành nhƣ Android, Linux trên các hệ

thống nhúng [6], [9]; Hai là, sự hỗ trợ của hệ
điều hành Android cho bộ thƣ viện thị giác
máy tính OpenCV[9].
Với những xu hƣớng phát triển nhƣ vậy, giờ
đây ngƣời lập trình có thể sử dụng thƣ viện
OpenCV để tạo ra các ứng dụng phát hiện
khuôn mặt cho các hệ nhúng sử dụng nền
tảng Android với lõi vi xử lý ARM [6], [8].
Trên thực tế bài toán đã đƣợc triển khai rất
hiệu quả trên các thiết bị di động, tuy nhiên
các nhà phát triển chƣa thực sự quan tâm tới
việc phát triển ứng dụng phát hiện khuôn mặt
trên các hệ thống nhúng. Bên cạnh đó, các hệ
thống quan sát hiện nay phần lớn chỉ quan
tâm tới thị trƣờng của camera, khả năng phát
hiện đối tƣợng mà chƣa thực sự quan tâm tới
khả năng tự động gửi thông báo từ xa cho
ngƣời dùng.
Bài báo này đề xuất về việc xây dựng một hệ
thống thông minh cho phép phát hiện khuôn
mặt và gửi email đến ngƣời giám sát trên một
105


Đoàn Ngọc Phƣơng

Tạp chí KHOA HỌC & CÔNG NGHỆ

hệ nhúng. Chƣơng trình điều khiển đƣợc triển
khai trên bộ kit Cubie A10 với nền tảng

Android 4.0.4 và vi xử lý ARM Cortex A8.
Để thực hiện thu hình ảnh, hệ thống sử dụng
một camera để quan sát môi trƣờng xung
quanh. Khi phát hiện thấy có ngƣời đi vào
vùng quan sát, chƣơng trình sẽ chụp lại hình
ảnh và tự động gửi thông báo đến ngƣời sử
dụng bằng email.
ANDROID VÀ ARM
Android đƣợc phát triển và tối ƣu hóa cho bộ
vi xử lý lõi ARM [6]. Đặc biệt, hệ thống
Android hoạt động tốt trên lõi ARM
Cortex™-Ax, trong đó có ARM Cortex-A8,
vi xử lý kết hợp các chức năng của một CPU
lớp netbook cho các hệ thống nhúng. Với ƣu
điểm tiêu thụ điện năng thấp, vi điều khiển
ARM là vi điều khiển phù hợp với các điện
thoại cầm tay thông minh – môi trƣờng mà
ARM đƣợc triển khai mạnh mẽ [4]. Các thiết
bị ARMv7 nhƣ ARM Cortex-A8 đƣợc tích
hợp công nghệ SIMD tiên tiến đƣợc gọi là
công nghệ Neon, đƣợc sử dụng để tăng tốc độ
nhiều thao tác nhƣ mã hóa hay thao tác đồ
họa trên điểm ảnh và có thể cải thiện hiệu
suất trên mã ARM hoặc tập lệnh THUMB®.
[6] Tất cả các thiết bị TI đều có công nghệ
Neon. Hiện nay có nhiều thế hệ ARM mới, ví
dụ nhƣ ARM9, nhƣng Android không đƣợc
tối ƣu hóa cho ARM9. Mặc dù Android có thể
đƣợc triển khai trên hệ thống có lõi ARM9,
nhƣng hiệu suất sẽ thấp hơn so với việc dùng

nhân ARM Cortex-A8 [6]. Hơn nữa với lõi
ARM Cortex A8 có thể thực hiện nhiều công
việc phức tạp với giá thành hợp lý mà không
cần đến các lõi hiện đại hơn.
Các môi trƣờng phát triển của Android:
Với thành tựu đạt đƣợc trong thị trƣờng điện
thoại di động, Android đang nỗ lực phát triển
để xâm chiếm vào các thị trƣờng khác nhƣ thị
trƣờng các thiết bị gia dụng, các thiết bị
chuẩn đoán y tế, các dây truyền công
nghiệp,…. Trong đó Android đặc biệt chú ý
đến các môi trƣờng mà những thế mạnh của
nó có thể đƣợc phát huy, đó là các môi
106

116 (02): 105 - 110

trƣờng: Quan tâm đến nội dung đa phƣơng
tiện;Linh hoạt, hƣớng đồ họa và có giao diện
trực quan dựa trên cảm ứng;Có ít nhất một
thành phần truyền thông.
Xử lý đa phƣơng tiện:Vì hầu hết các hệ
thống Android đều có các ứng dụng đa
phƣơng tiện mạnh mẽ nhƣ xem phim, chụp
hình,…, cho nên các nhà phát triển thƣờng
đặc biệt chú ý để làm thế nào video, âm thanh
và đồ họa đƣợc xử lý tốt trên hệ thống. Phần
lớn các bộ mã hóa/giải mã đƣợc cấu hình sẵn
với Android thƣờng độ phân giải thấp/tốc độ
mã hóa chậm vì các hệ thống có mục tiêu

thiết kế cho ARM™-A8 . [6], [2]Một số nền
tảng, nhƣ bộ vi xử lýđiện thoại TI OMAP™,
bộ vi xử lý video DaVinci và C6000 DSP + vi
xử lý ARM, thƣờng kết hợp lõi ARM Cortex
với lõi xử lý DSP. Điều đó đem lại hiệu quả
trong việc xử lý đa phƣơng tiện, vì lõi DSP có
thể giúp giảm tải và đồng thời làm tăng tốc xử
lý đa phƣơng tiện cho lõi ARM.
CÔNG CỤ PHÁT TRIỂN
OpenCV:[2], [7], [8] Là thƣ viện thị giác
máy tính mã nguồn mở, đƣợc cấp phép từ
năm 2000 bởi BSD. OpenCV đƣợc xây dựng
nhằm mục đích cung cấp những công cụ cần
thiết để giải quyết các vấn đề thị giác máy
tính. Bao gồm các chức năng xử lý hình ảnh ở
mức độ thấp và các thuật toán cao cấp nhƣ
phát hiện khuôn mặt, phát hiện ngƣời đi bộ.
Thƣ viện đã đƣợc tải về hơn 5 triệu lần. Các
trƣờng đại học hàng đầu và hơn 100 công ty
Foutine và nhiều thành viên khác đã phát triển
và duy trì hơn 2500 thuật toán có trong thƣ
viện. OpenCV đƣợc viết bằng C, C++, nhƣng
giao diện ứng dụng cũng bao gồm
wrappercho Java, MATLAB và Python.
OpenCV hiện đang hỗ trợ cho Linux, Mac OS
X, Android và các nền tảng iOS.[2] OpenCV
bắt đầu hỗ trợ Android trong phiên bản
OpenCV 2.2. Sau đó NDVIA đã tham gia vào
dự án OpenCV và từ phiên bản OpenCV 2.3
các nhà phát triển đã có thể sử dụng OpenCV

trên nền tảng Android với các công cụ đầy đủ
và mạnh mẽ hơn.


Đoàn Ngọc Phƣơng

Tạp chí KHOA HỌC & CÔNG NGHỆ

Kit phát triển:Các công cụ phát triển cho
ứng dụng Anrdoid trên vi xử lý ARM rất
phong phú, không chỉ là phần mềm mà còn là
các công cụ phần cứng. Với công nghệ tiên
tiến và với những ƣu điểm của vi điều khiển
ARM, rất nhiều bo mạch ARM đã ra đời cho
phép ngƣời lập trình có thể nghiên cứu và xây
dựng hệ thống ngay trên các thiết bị thật. Các
bộ Kit phát triển này thƣờng hỗ trợ các hệ
điều hành Android và Linux [6].

116 (02): 105 - 110

chƣơng trình điều khiển và là sản phẩm cuối
cùng của hệ thống.

Hình 2: Mô hình hệ thống
Hình 1: Kit Cubie A10

Hệ thống quan sát ngƣời qua nhận dạng
khuôn mặt và gửi email cảnh báo của bài báo
đƣợc thực hiện trên board Cubie A10 của

Công nghệ Công ty TNHH CubieTech tại
Chu Hải, Trung quốc [1], board hỗ trợ hệ điều
hành Adroid, Linux, cho phép kết nối ổ HD,
có cổng USB, HDMI, Ethernet, phục vụ cho
việc kết nối mạng, LCD, các thiết bị ngoại vi
nhƣ: chuột, bàn phím, camera, thích hợp cho
việc phát triển các dự án liên quan đến thị
giác máy tính trên hệ điều hành Android.
XÂY DỰNG HỆ THỐNG PHÁT HIỆN
KHUÔN MẶT VÀ GỬI THÔNG TIN
CẢNH BÁO QUA EMAIL.
Hệ thống mà tác giả đề xuất cho phép quan
sát môi trƣờng xung quanh, nhận diện có
ngƣời trong môi trƣờng quan sát thông qua
việc phát hiện khuôn mặt, sau đó chụp ảnh và
gửi thông báo đến ngƣời dùng qua email.
Hệ thống gồm có một chƣơng trình điều
khiển và một bo mạch. Chƣơng trình đƣợc
xây dựng để điều khiển bật/tắt camera, phát
hiện khuôn mặt ngƣời trong khuôn hình mà
camera thu đƣợc, chụp hình và gửi email
thông báo. Bo mạch đƣợc sử dụng để cài đặt

Phƣơng pháp xây dựng hệ thống. Quá trình
thực hiện của hệ thống quan sát phát hiện khuôn
mặt và gửi thông báo qua emailnhƣ sau:
Chuẩn bị board: Để vận hành board cần
đƣợc gắn các thiết bị ngoại vi nhƣ camera,
cáp ethernet, sau đó nạp hệ điều hành và chạy
chƣơng trình điều khiển.

Xử lý video và gửi email: Hoàn tất các bƣớc
khởi động, chƣơng trình bắt đầu thực hiện
công việc chính: Theo dõi môi trƣờng xung
quanh qua camera (chƣơng trình không đƣợc
thiết kế để camera có khả năng thay đổi góc
quan sát, để thuận tiện cho việc lựa chọn thiết
bị camera của ngƣời sử dụng), chạy khối
chƣơng trình phát hiện khuôn mặt qua video,
nếu thấy có khuôn mặt xuất hiện, lập tức đánh
dấu vùng chứa khuôn mặt, thực hiện chụp
hình, hình đƣợc thu nhỏ kích cỡ là 100x100,
lƣu trong thƣ mục Gallery của thiết bị. Sau đó
khối chƣơng trình gửi email đƣợc gọi, ảnh đã
chụp đƣợc đính kèm vào emailvà chƣơng
trình sẽ tiến hành gửi thông báo đến ngƣời
dùng. Quá trình kiểm tra phát hiện khuôn mặt
và gửi email đƣợc tiếp tục thực hiện cho đến
khi ứng dụng bị tắt hoặc board bị ngắt nguồn.
107


Đoàn Ngọc Phƣơng

Tạp chí KHOA HỌC & CÔNG NGHỆ

116 (02): 105 - 110

Trong một bức ảnh, có nhiều vùng không
chứa khuôn mặt, nếu loại bỏ đƣợc những
vùng này thời gian tính toán sẽ đƣợc giảm đi

đáng kể, vì vậy, ảnh đƣợc chia ra làm nhiều
cửa sổ nhỏ. Trong quá trình phát hiện đối
tƣợng, các cửa sổ không chứa khuôn mặt sẽ
đƣợc loại bỏ dần [9].
Nếu áp dụng tất cả các đặc trƣng trên một cửa
sổ sẽ tốn thời gian, nên các đặc trƣng đƣợc
chia thành các nhóm, và mỗi nhóm đƣợc áp
dụng trong các giai đoạn khác nhau của quá
trình phân lớp đối tƣợng [9].

Hình 3: Biểu đồ trạng thái của hệ thống

Thiết kế chức năng nhận dạng khuôn mặt
với OpenCV:OpenCV dùng thuật toán Haar
Cascade để phát hiện khuôn mặt cũng nhƣ các
đối tƣợng khác [9]. Haar Cascade là phƣơng
pháp phát hiện đối tƣợng đƣợc đƣa ra bởi
Paul Viola và Michael Jones năm 2001. Là
một phƣơng pháp học máy dựa trên một chức
năng Cascade đƣợc huấn luyện từ rất nhiều ảnh
khẳng định và phủ định, đƣợc sử dụng để phát
hiện đối tƣợng trong các bức ảnh khác nhau.
Với phát hiện khuôn mặt, ban đầu thuật toán
cần rất nhiều ảnh phủ định (không chứa
khuôn mặt) và khẳng định (chứa khuôn mặt)
để làm tập huấn luyện cho phân lớp. Sau
đó đƣa ra các đặc trƣng Haar. Các ảnh trong
tập huấn luyện đƣợc dùng để tính toán đặc
trƣng Haar.
Mỗi đặc trƣng Haar là một giá trị duy nhất thu

đƣợc bằng cách trừ đi tổng các điểm ảnh ở
hình chữ nhật màu trắng với tổng các điểm
ảnh nằm ở vùng chữ nhật màu đen. Để nhận
dạng khuôn mặt, ta cần áp dụng các đặc trƣng
Haar trên các hình ảnh cần kiểm tra. Sau đó
chọn đặc trƣng có tỉ lệ lỗi tối thiểu. Tuy nhiên
khi kết hợp các tính năng với nhau thì tỉ lệ
phát hiện đối tƣợng đạt hiệu quả tốt hơn, với
200 đặc trƣng Haar thì tỉ lệ phát hiện đối
tƣợng đạt 95% [9].
108

Trên mỗi cửa sổ, nếu ở giai đoạn đầu tiên bị
lỗi thì cửa sổ bị loại. Nếu vƣợt qua, áp dụng
giai đoạn tiếp theo của phân lớp và tiếp tục
quá trình. Cửa sổ vƣợt qua tất cả các giai
đoạn là khu vực chứa khuôn mặt [9].
OpenCV có tập huấn luyện tốt để huấn luyện
cho phát hiện mặt, mắt,..,tập huấn luyện đƣợc
lƣu
trong
các
file
XML
trong
opencv/data/haarcascades/. Ngƣời lập trình có
thể thay đổi file này để phát hiện các đối
tƣợng khác theo ý muốn.
Với phát hiện khuôn mặt trong video, chƣơng
trình sẽ cho phép camera thực hiện capture

ảnh liên tục, sau đó áp dụng thuật toán Haar
Cascade trên mỗi ảnh tĩnh chụp đƣợc.
KẾT QUẢ THỰC NGHIỆM

Hình 5: Test hệ thống với LCD monitor

Hệ thống chạy khá hiệu quả, phát hiện đƣợc
khuôn mặt trong trạng thái ánh sáng tốt, nếu
ánh sáng yếu hệ thống có thể không nhận
dạng đƣợc khuôn mặt, còn bị nhầm lẫn với
các vật thể có khung tối (giống khuôn mặt


Đoàn Ngọc Phƣơng

Tạp chí KHOA HỌC & CÔNG NGHỆ

ngƣời với đôi mắt). Chƣơng trình đƣợc thử
nghiệm với các trƣờng hợp sau:
- Trong trƣờng hợp điều kiện tốt, ánh sáng
thích hợp, không có vật thể lạ che khuất
khuôn mặt, chƣơng trình thực hiện với 100
lần thử nghiệm với các khuôn mặt khác nhau
theo hƣớng trực diện, số lần phát hiện đúng
khuôn mặt và gửi đƣợc email đạt 98%.
- Khi ánh sáng kém, hình ảnh khuôn mặt
không trực diện thì với 100 lần thử nghiệm,
chƣơng trình chỉ phát hiện đúng khuôn mặt và
gửi đƣợc email với tỉ lệ 30%.
Hạn chế của phần mềm điều khiển hệ thống

đó là việc nhận dạng khuôn mặt để phát hiện
có ngƣời trong khung hình là không hợp lý
trong các bài toán an ninh, giám sát. Do
những đối tƣợng di chuyển vào trong khung
hình có thể che mặt nên camera không thể
phát hiện ra đƣợc. Bên cạnh đó còn có những
vật thể không phải ngƣời nhƣ tranh ảnh, búp
bê,… tuy không phải ngƣời nhƣng vẫn đƣợc
hệ thống phát hiện khuôn mặt và đƣa ra thông
báo. Vì thế bài toán có thể phát triển trong
tƣơng lai là phát hiện ngƣời thông qua hình
dáng cơ thể nhƣ vậy có thể sử dụng cho nhiều
trƣờng hợp trong thực tế. Có thể áp dụng hệ
thống này trong những trƣờng hợp quan sát
đơn giản, ví dụ nhƣ khi vắng nhà, ngƣời dùng
có thể dùng hệ thống để biết đƣợc những vị
khách đã đến thăm.

Hình 6: Kết quả thực hiện nhận dạng khuôn mặt
trong điều kiện ánh sáng tốt.

116 (02): 105 - 110

KẾT LUẬN VÀ HƢỚNG NGHIÊN CỨU
TIẾP THEO
Bài báo đã trình bày về cơ sở lý thuyết, các
công cụ hỗ trợ và quá trình xây dựng hệ thống
phát hiện khuôn mặt và gửi email thông báo
trên hệ thống nhúng sử dụng hệ điều hành
Android và vi điều khiển ARM Cortex A8.

Tác giả đã thử nghiệm hệ thống trên bộ Kit
Cubie A10 của nhà phát triển CubieTech. Kết
quả cho thấy chƣơng trình hoạt động tốt, ổn
định trong điều kiện ánh sáng tốt và hình ảnh
khuôn mặt trực diện, tuy nhiên, trong những
điều kiện ánh sáng không tốt và khuôn mặt bị
che một phần thì việc nhận dạng khuôn mặt
của hệ thống không đạt hiệu quả cao. Vì vậy,
trong thời gian tới, tác giả sẽ tiếp tục nghiên
cứu các phƣơng pháp phát hiện khuôn mặt để
chƣơng trình đạt hiệu quả tốt hơn. Bài báo có
thể làm tài liệu tham khảo cho các lập trình
viên muốn tìm hiểu về cách xây dựng các hệ
thống quan sát, gửi thông báo trên nền tảng
Android với nhân vi xử lý ARM Cortex A8.
TÀI LIỆU THAM KHẢO
1. All Winner Technology CO.,Ltd, (2011) A10
development board hardware manual V1.1,
August 24.
2. Andrey Pavlenko, (2012) OpenCV for Android,
Itseez CO.
3. Andrew King, (2003) “A Survey of Methods for
Face Detection”.
4. ARM LTD, (2007) Cortex-A8 Technical
Reference Manual.
5. DanaH.Ballard, (1983) Christopher M. Brown,
Computer Vision, Prentice Hall.
6. Darren Etheridge, (2012) Android Multimedia
Engineering Manager,DSP and ARM, Texas
Instruments.

7. Gary Bradski, Adrian Kaehler, (2008) Learning
OpenCV: ComputerVision with the OpenCV
Library, O'Reilly.
8. G. Bradski, (Nov 2000) The opencv library,
Dr.Dobb’s Journal, vol. 25.
9. OpenCV 3.0.0.0, (2013) dev documentation,
Face Detection using Haar Cascades, opencv
dev team.
10. R. LaganiÃlre, (2011) OpenCV 2 Computer
Vision Application Programming Cookbook,
Packt Publishing.
11. Steve Furber, (2005) ARM-SoC Architecture,
Addison Wesley Publishing.

109


Đoàn Ngọc Phƣơng

Tạp chí KHOA HỌC & CÔNG NGHỆ

116 (02): 105 - 110

SUMMARY
BUILDING FACE DETECTION AND EMAIL ALERT SYSTEM
ON ANDROID WITH ARM CONRTEX A8 PROCESSOR
Phuong Doan Ngoc*
College of Information and Communication Technology - TNU

The development of the platform using the Android operating system and ARM processors, along

with the release of OpenCV version for Android enables programmers to develop applications for
computer vision embedded systems. In it, the face recognition applications on embedded systems
today is a very interesting development, but has not been fully exploited. This paper proposes the
construction method of face recognition system and notify the user by email. The system is
implemented on the ARM Cubie A10 Kit installed Android OS with ARM Cortex A8
microcontroller. Through experimentation, the system has achieved good results show the
effectiveness of the use of embedded systems in the problem of intrusion detection and visual
warning to the user.
Key words: ARM, Cortex A8, OpenCV, OpenCV4Android, FaceDetection, Computer Vision,
Embbed Vision, Android.

Ngày nhận bài:18/11/2013; Ngày phản biện:26/11/2013; Ngày duyệt đăng: 26/02/2014
Phản biện khoa học: TS. Phùng Trung Nghĩa – Trường ĐH Công nghệ Thông tin & Truyền thông - ĐHTN
*

Tel: 0979 479940, Email:

110



×