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

pdf 6 trang hapham 50
Bạn đang xem tài liệu "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", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfxay_dung_he_thong_phat_hien_khuon_mat_va_canh_bao_bang_email.pdf

Nội dung text: 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

  1. Đ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* nghiên cứu, cải tiến để phù hợp với những Phát hiện khuôn mặt là kỹ thuật cho phép yêu cầu mới. Gần đây, kỹ thuật phát hiện phát hiện ra khuôn mặt ngƣời trong một khuôn mặt bắt đầu đƣợc sử dụng rộng rãi khung hình hay trong một đoạn video [1]. Kỹ trong các hệ thống nhúng với hai lý do chính, thuật này cho phép phân biệt khuôn mặt với một là:Sự phát triển của vi xử lý tiên tiến, tiết các thành phần khác trong hình ảnh nhƣ cơ kiệm điện năng ARM, sự xuất hiện của các hệ thể, cây cối, xe cộ, , sau đó xác định vị trí điều hành nhƣ Android, Linux trên các hệ và kích thƣớc của khuôn mặt để sử dụng thống nhúng [6], [9]; Hai là, sự hỗ trợ của hệ trong các mục đích khác nhau. Phát hiện điều hành Android cho bộ thƣ viện thị giác khuôn mặt đƣợc phát triển từ những năm 70 máy tính OpenCV[9]. của thế kỷ trƣớc [1] và đã đạt đƣợc nhiều Với những xu hƣớng phát triển nhƣ vậy, giờ thành tựu đáng kể với những giải thuật điển đây ngƣời lập trình có thể sử dụng thƣ viện hình nhƣ adaboost, các đặc trƣng haar-like, OpenCV để tạo ra các ứng dụng phát hiện mô hình Cascade of Classifiers [1]. Những khuôn mặt cho các hệ nhúng sử dụng nền giải thuật đó đã giải quyết đƣợc các vấn đề tảng Android với lõi vi xử lý ARM [6], [8]. đặt ra với phát hiện khuôn mặt, đó là: Phát Trên thực tế bài toán đã đƣợc triển khai rất hiện khuôn mặt ngƣời ở các tƣ thế khác nhau; hiệu quả trên các thiết bị di động, tuy nhiên Phát hiện khuôn mặt khi trên khuôn mặt có các nhà phát triển chƣa thực sự quan tâm tới nhiều chi tiết không thuộc khuôn mặt ngƣời; việc phát triển ứng dụng phát hiện khuôn mặt Phát hiện các trạng thái khác nhau của khuôn trên các hệ thống nhúng. Bên cạnh đó, các hệ mặt;Phát hiện khuôn mặt khi nó bị che khuất thống quan sát hiện nay phần lớn chỉ quan một phần, Phát hiện khuôn mặt đã đƣợc áp tâm tới thị trƣờng của camera, khả năng phát dụng trong rất nhiều lĩnh vực [1]: Xác minh hiện đối tƣợng mà chƣa thực sự quan tâm tới tội phạm,bảo mật,tìm kiếm dữ liệu khả năng tự động gửi thông báo từ xa cho Tuy có một lịch sử phát triển lâu dài nhƣ vậy, ngƣời dùng. nhƣng phát hiện khuôn mặt vẫn tiếp tục đƣợc 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 * Tel: 0979 479940, Email: dnphuong@ictu.edu.vn mặt và gửi email đến ngƣời giám sát trên một 105
  2. Đoàn Ngọc Phƣơng Tạp chí KHOA HỌC & CÔNG NGHỆ 116 (02): 105 - 110 hệ nhúng. Chƣơng trình điều khiển đƣợc triển trƣờng: Quan tâm đến nội dung đa phƣơng khai trên bộ kit Cubie A10 với nền tảng tiện;Linh hoạt, hƣớng đồ họa và có giao diện Android 4.0.4 và vi xử lý ARM Cortex A8. trực quan dựa trên cảm ứng;Có ít nhất một Để thực hiện thu hình ảnh, hệ thống sử dụng thành phần truyền thông. một camera để quan sát môi trƣờng xung Xử lý đa phƣơng tiện:Vì hầu hết các hệ quanh. Khi phát hiện thấy có ngƣời đi vào thống Android đều có các ứng dụng đa vùng quan sát, chƣơng trình sẽ chụp lại hình phƣơng tiện mạnh mẽ nhƣ xem phim, chụp ảnh và tự động gửi thông báo đến ngƣời sử hình, , cho nên các nhà phát triển thƣờng dụng bằng email. đặc biệt chú ý để làm thế nào video, âm thanh ANDROID VÀ ARM và đồ họa đƣợc xử lý tốt trên hệ thống. Phần Android đƣợc phát triển và tối ƣu hóa cho bộ lớn các bộ mã hóa/giải mã đƣợc cấu hình sẵn vi xử lý lõi ARM [6]. Đặc biệt, hệ thống với Android thƣờng độ phân giải thấp/tốc độ Android hoạt động tốt trên lõi ARM mã hóa chậm vì các hệ thống có mục tiêu Cortex™-Ax, trong đó có ARM Cortex-A8, thiết kế cho ARM™-A8 . [6], [2]Một số nền vi xử lý kết hợp các chức năng của một CPU tảng, nhƣ bộ vi xử lýđiện thoại TI OMAP™, lớp netbook cho các hệ thống nhúng. Với ƣu bộ vi xử lý video DaVinci và C6000 DSP + vi điểm tiêu thụ điện năng thấp, vi điều khiển xử lý ARM, thƣờng kết hợp lõi ARM Cortex ARM là vi điều khiển phù hợp với các điện với lõi xử lý DSP. Điều đó đem lại hiệu quả thoại cầm tay thông minh – môi trƣờng mà trong việc xử lý đa phƣơng tiện, vì lõi DSP có ARM đƣợc triển khai mạnh mẽ [4]. Các thiết thể giúp giảm tải và đồng thời làm tăng tốc xử bị ARMv7 nhƣ ARM Cortex-A8 đƣợc tích lý đa phƣơng tiện cho lõi ARM. hợp công nghệ SIMD tiên tiến đƣợc gọi là CÔNG CỤ PHÁT TRIỂN công nghệ Neon, đƣợc sử dụng để tăng tốc độ OpenCV:[2], [7], [8] Là thƣ viện thị giác nhiều thao tác nhƣ mã hóa hay thao tác đồ máy tính mã nguồn mở, đƣợc cấp phép từ họa trên điểm ảnh và có thể cải thiện hiệu năm 2000 bởi BSD. OpenCV đƣợc xây dựng suất trên mã ARM hoặc tập lệnh THUMB®. nhằm mục đích cung cấp những công cụ cần [6] Tất cả các thiết bị TI đều có công nghệ thiết để giải quyết các vấn đề thị giác máy Neon. Hiện nay có nhiều thế hệ ARM mới, ví tính. Bao gồm các chức năng xử lý hình ảnh ở dụ nhƣ ARM9, nhƣng Android không đƣợc mức độ thấp và các thuật toán cao cấp nhƣ tối ƣu hóa cho ARM9. Mặc dù Android có thể phát hiện khuôn mặt, phát hiện ngƣời đi bộ. đƣợc triển khai trên hệ thống có lõi ARM9, Thƣ viện đã đƣợc tải về hơn 5 triệu lần. Các nhƣng hiệu suất sẽ thấp hơn so với việc dùng trƣờng đại học hàng đầu và hơn 100 công ty nhân ARM Cortex-A8 [6]. Hơn nữa với lõi Foutine và nhiều thành viên khác đã phát triển ARM Cortex A8 có thể thực hiện nhiều công và duy trì hơn 2500 thuật toán có trong thƣ việc phức tạp với giá thành hợp lý mà không viện. OpenCV đƣợc viết bằng C, C++, nhƣng cần đến các lõi hiện đại hơn. giao diện ứng dụng cũng bao gồm Các môi trƣờng phát triển của Android: wrappercho Java, MATLAB và Python. Với thành tựu đạt đƣợc trong thị trƣờng điện OpenCV hiện đang hỗ trợ cho Linux, Mac OS thoại di động, Android đang nỗ lực phát triển X, Android và các nền tảng iOS.[2] OpenCV để xâm chiếm vào các thị trƣờng khác nhƣ thị bắt đầu hỗ trợ Android trong phiên bản trƣờng các thiết bị gia dụng, các thiết bị OpenCV 2.2. Sau đó NDVIA đã tham gia vào chuẩn đoán y tế, các dây truyền công dự án OpenCV và từ phiên bản OpenCV 2.3 nghiệp, . Trong đó Android đặc biệt chú ý các nhà phát triển đã có thể sử dụng OpenCV đến các môi trƣờng mà những thế mạnh của trên nền tảng Android với các công cụ đầy đủ nó có thể đƣợc phát huy, đó là các môi và mạnh mẽ hơn. 106
  3. Đoàn Ngọc Phƣơng Tạp chí KHOA HỌC & CÔNG NGHỆ 116 (02): 105 - 110 Kit phát triển:Các công cụ phát triển cho chƣơng trình điều khiển và là sản phẩm cuối ứng dụng Anrdoid trên vi xử lý ARM rất cùng của hệ thống. 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]. Hình 2: Mô hình hệ thống Hình 1: Kit Cubie A10 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 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 mặt và gửi thông báo qua emailnhƣ sau: đƣợc thực hiện trên board Cubie A10 của Chuẩn bị board: Để vận hành board cần Công nghệ Công ty TNHH CubieTech tại đƣợc gắn các thiết bị ngoại vi nhƣ camera, Chu Hải, Trung quốc [1], board hỗ trợ hệ điều cáp ethernet, sau đó nạp hệ điều hành và chạy hành Adroid, Linux, cho phép kết nối ổ HD, chƣơng trình điều khiển. có cổng USB, HDMI, Ethernet, phục vụ cho Xử lý video và gửi email: Hoàn tất các bƣớc việc kết nối mạng, LCD, các thiết bị ngoại vi khởi động, chƣơng trình bắt đầu thực hiện nhƣ: chuột, bàn phím, camera, thích hợp cho công việc chính: Theo dõi môi trƣờng xung 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. quanh qua camera (chƣơng trình không đƣợc thiết kế để camera có khả năng thay đổi góc XÂY DỰNG HỆ THỐNG PHÁT HIỆN quan sát, để thuận tiện cho việc lựa chọn thiết KHUÔN MẶT VÀ GỬI THÔNG TIN CẢNH BÁO QUA EMAIL. 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, Hệ thống mà tác giả đề xuất cho phép quan nếu thấy có khuôn mặt xuất hiện, lập tức đánh 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 dấu vùng chứa khuôn mặt, thực hiện chụp việc phát hiện khuôn mặt, sau đó chụp ảnh và hình, hình đƣợc thu nhỏ kích cỡ là 100x100, gửi thông báo đến ngƣời dùng qua email. lƣu trong thƣ mục Gallery của thiết bị. Sau đó Hệ thống gồm có một chƣơng trình điều khối chƣơng trình gửi email đƣợc gọi, ảnh đã khiển và một bo mạch. Chƣơng trình đƣợc chụp đƣợc đính kèm vào emailvà chƣơng xây dựng để điều khiển bật/tắt camera, phát trình sẽ tiến hành gửi thông báo đến ngƣời hiện khuôn mặt ngƣời trong khuôn hình mà dùng. Quá trình kiểm tra phát hiện khuôn mặt camera thu đƣợc, chụp hình và gửi email và gửi email đƣợc tiếp tục thực hiện cho đến thông báo. Bo mạch đƣợc sử dụng để cài đặt khi ứng dụng bị tắt hoặc board bị ngắt nguồn. 107
  4. Đ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]. 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 Hình 3: Biểu đồ trạng thái của hệ thống 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]. Thiết kế chức năng nhận dạng khuôn mặt OpenCV có tập huấn luyện tốt để huấn luyện với OpenCV:OpenCV dùng thuật toán Haar cho phát hiện mặt, mắt, ,tập huấn luyện đƣợc Cascade để phát hiện khuôn mặt cũng nhƣ các lƣu trong các file XML trong đối tƣợng khác [9]. Haar Cascade là phƣơng opencv/data/haarcascades/. Ngƣời lập trình có pháp phát hiện đối tƣợng đƣợc đƣa ra bởi thể thay đổi file này để phát hiện các đối Paul Viola và Michael Jones năm 2001. Là tƣợng khác theo ý muốn. 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 Với phát hiện khuôn mặt trong video, chƣơng khẳng định và phủ định, đƣợc sử dụng để phát trình sẽ cho phép camera thực hiện capture hiện đối tƣợng trong các bức ảnh khác nhau. ả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. 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 KẾT QUẢ THỰC NGHIỆM 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 đó Hình 5: Test hệ thống với LCD monitor chọn đặc trƣng có tỉ lệ lỗi tối thiểu. Tuy nhiên Hệ thống chạy khá hiệu quả, phát hiện đƣợc khi kết hợp các tính năng với nhau thì tỉ lệ khuôn mặt trong trạng thái ánh sáng tốt, nếu phát hiện đối tƣợng đạt hiệu quả tốt hơn, với ánh sáng yếu hệ thống có thể không nhận 200 đặc trƣng Haar thì tỉ lệ phát hiện đối dạng đƣợc khuôn mặt, còn bị nhầm lẫn với tƣợng đạt 95% [9]. các vật thể có khung tối (giống khuôn mặt 108
  5. Đoàn Ngọc Phƣơng Tạp chí KHOA HỌC & CÔNG NGHỆ 116 (02): 105 - 110 ngƣời với đôi mắt). Chƣơng trình đƣợc thử KẾT LUẬN VÀ HƢỚNG NGHIÊN CỨU nghiệm với các trƣờng hợp sau: TIẾP THEO - Trong trƣờng hợp điều kiện tốt, ánh sáng Bài báo đã trình bày về cơ sở lý thuyết, các thích hợp, không có vật thể lạ che khuất công cụ hỗ trợ và quá trình xây dựng hệ thống khuôn mặt, chƣơng trình thực hiện với 100 phát hiện khuôn mặt và gửi email thông báo lần thử nghiệm với các khuôn mặt khác nhau trên hệ thống nhúng sử dụng hệ điều hành theo hƣớng trực diện, số lần phát hiện đúng Android và vi điều khiển ARM Cortex A8. khuôn mặt và gửi đƣợc email đạt 98%. 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 - Khi ánh sáng kém, hình ảnh khuôn mặt quả cho thấy chƣơng trình hoạt động tốt, ổn không trực diện thì với 100 lần thử nghiệm, định trong điều kiện ánh sáng tốt và hình ảnh chƣơng trình chỉ phát hiện đúng khuôn mặt và khuôn mặt trực diện, tuy nhiên, trong những gửi đƣợc email với tỉ lệ 30%. điều kiện ánh sáng không tốt và khuôn mặt bị Hạn chế của phần mềm điều khiển hệ thống che một phần thì việc nhận dạng khuôn mặt đó là việc nhận dạng khuôn mặt để phát hiện của hệ thống không đạt hiệu quả cao. Vì vậy, có ngƣời trong khung hình là không hợp lý trong thời gian tới, tác giả sẽ tiếp tục nghiên trong các bài toán an ninh, giám sát. Do 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ó những đối tƣợng di chuyển vào trong khung thể làm tài liệu tham khảo cho các lập trình hình có thể che mặt nên camera không thể viên muốn tìm hiểu về cách xây dựng các hệ phát hiện ra đƣợc. Bên cạnh đó còn có những thống quan sát, gửi thông báo trên nền tảng vật thể không phải ngƣời nhƣ tranh ảnh, búp Android với nhân vi xử lý ARM Cortex A8. 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 TÀI LIỆU THAM KHẢO báo. Vì thế bài toán có thể phát triển trong 1. All Winner Technology CO.,Ltd, (2011) A10 tƣơng lai là phát hiện ngƣời thông qua hình development board hardware manual V1.1, dáng cơ thể nhƣ vậy có thể sử dụng cho nhiều August 24. 2. Andrey Pavlenko, (2012) OpenCV for Android, trƣờng hợp trong thực tế. Có thể áp dụng hệ Itseez CO. thống này trong những trƣờng hợp quan sát 3. Andrew King, (2003) “A Survey of Methods for đơn giản, ví dụ nhƣ khi vắng nhà, ngƣời dùng Face Detection”. có thể dùng hệ thống để biết đƣợc những vị 4. ARM LTD, (2007) Cortex-A8 Technical Reference Manual. khách đã đến thăm. 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. Hình 6: Kết quả thực hiện nhận dạng khuôn mặt 11. Steve Furber, (2005) ARM-SoC Architecture, trong điều kiện ánh sáng tốt. Addison Wesley Publishing. 109
  6. Đ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: dnphuong@ictu.edu.vn 110