Phân tích lựa chọn công cụ

Một phần của tài liệu (LUẬN văn THẠC sĩ) nhận dạng khuôn mặt người từ camera sử dụng đặc trưng haar like, ứng dụng trong giám sát an ninh (Trang 48 - 52)

Chương trình thực nghiệm được xây dựng dựa trên phương pháp phát hiện khuôn mặt từ đặc trưng Haar-like dựa trên phân lớp Haar Cascade, kết hợp với kỹ thuật LBP để trích xuất đặc trưng của mỗi khuôn mặt phục vụ cho quá trình nhận diện khuôn mặt. Thư viện OpenCV và ngôn ngữ lập trình Python được tôi lựa chọn để minh họa cho bài toán này.

Cấu hình phần cứng

Cấu hình phần cứng đề xuất như sau:

Bảng 3.1: Cấu hình phần cứng

Thành phần Chỉ số

CPU Intel® Core™ i5-3320 Processor

RAM 4GB

OS WINDOWS 7 PRO 64bit

Bộ nhớ ngoài 500 GB

Webcam HP HD Webcam

Trong thực nghiệm, hình ảnh từ camera đưa vào chương trình được sử dụng thông qua webcam gắn trên laptop.

Phần mềm, công cụ sử dụng

Bảng 3.2: Công cụ ngôn ngữ lập trình sử dụng trong chương trình thực nghiệm

STT Tên phần mềm Nguồn

1 Python https://www.python.org/

Ngôn ngữ lập trình Python là một ngôn ngữ lập trình phổ biến. Được tạo ra bởi Guido van Rossum vào năm 1991. Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics). Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn

dụng mã. Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và có thể được phân phối tự do.

Python là ngôn ngữ lập trình được hỗ trợ chạy được trên nhiều nền tảng khác nhau như Windows, Linux/Unix, OS/2, Mac, Amiga, Raspberry Pi và những hệ điều hành khác. Thậm chí có cả những phiên bản chạy trên .NET, máy ảo Java, và điện thoại di động (Nokia Series 60). Với cùng một mã nguồn sẽ chạy giống nhau trên mọi nền tảng. Python sử dụng trình thông dịch để thực thi các dòng code. Do đó, những dòng code có thể được thực thi ngay lập tức mà không cần biên dịch toàn bộ chương trình. Như vậy giúp chúng ta kiểm tra code nhanh hơn. Cú pháp của Python giúp lập trình viên sử dụng ít dòng code để lập trình cùng một thuật toán hơn so với các ngôn ngữ lập trình khác. Python cũng hỗ trợ hàm, thủ tục, hay kể cả lập trình hướng đối tượng. Python có thể kết nối với các đối tượng COM, .NET (Ironpython, Python for .net), và CORBA, Java… Python cũng được hỗ trợ bởi Internet Communications Engine (ICE) và nhiều công nghệ kết nối khác. Có thể viết các thư viện trên C/C++ để nhúng vào Python và ngược lại.

Cài đặt Python dùng giấy phép nguồn mở nên được sử dụng và phân tối tự do, ngay cả trong việc thương mại. Giấy phép Python được quản lý bởi Python Software Foundation. Do đó, trong phạm vi của luận văn, tôi lựa chọn ngôn ngữ lập trình Python để minh họa chương trình thực nghiệm của đề tài luận văn.

Thư viện sử dụng

Bảng 3.2: Thư viện sử dụng trong chương trình thực nghiệm

STT Tên Thư viện Nguồn

1 OpenCV (Open Source Computer Vision

Library) https://opencv.org/

Thư viện OpenCV (Open Source Computer Vision Library) là thư viện thị giác máy mã nguồn mở, OpenCV là thư viện mã nguồn mở được cấp phép BSD bao gồm hàng trăm thuật toán thị giác máy tính. OpenCV có cấu trúc module, có nghĩa là gói bao gồm một số thư viện chia sẻ hoặc thư viện tĩnh.

OpenCV được bắt đầu phát triển tại Intel từ năm 1999 bởi Gary Bradsky và bản phát hành đầu tiên ra mắt vào năm 2000. Vadim Pisarevsky đã cùng Gary Bradsky quản lý nhóm OpenCV phần mềm Intel của Nga. Vào năm 2005, OpenCV đã được sử dụng trên Stanley, chiếc xe đã giành chiến thắng trong Thử thách lớn DARPA năm 2005. Sau đó, sự phát triển tích cực của nó tiếp tục dưới sự hỗ trợ của Willow Garage với Gary Bradsky và Vadim Pisarevsky dẫn dắt dự án. OpenCV hiện hỗ trợ vô số thuật toán liên quan đến Thị giác máy tính và Học máy và đang mở rộng từng ngày.

OpenCV hỗ trợ nhiều ngôn ngữ lập trình như C ++, Python, Java, v.v., và có sẵn trên các nền tảng khác nhau bao gồm Windows, Linux, OS X, Android và iOS. Các giao diện cho các hoạt động GPU tốc độ cao dựa trên CUDA và OpenCL cũng đang được phát triển tích cực.

Những module đã được phát triển như sau:

- Core functionality (core) – một module nhỏ gọn xác định cấu trúc dữ liệu cơ bản, bao gồm mảng ma trận đa chiều dày đặc và các chức năng cơ bản được sử dụng bởi tất cả các module khác.

- Image Processing (imgproc) – module xử lý hình ảnh bao gồm bộ lọc tuyến tính và phi tuyến tính, biến đổi hình học của hình ảnh như thay đổi kích thước, ánh xạ lại trên bảng không gian chung, chuyển đổi không gian màu, histogram,...

Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn

- Video Analysis (video) – một module phân tích video có thể ước tính chuyển động, trừ nền và thuật toán theo dõi đối tượng.

- Camera Calibration and 3D Reconstruction (calib3d) – điều chỉnh máy ảnh và tái tạo 3D, nhiều thuật toán hình học về chế độ xem đa chiều cơ bản, hiệu chỉnh máy ảnh đơn và âm thanh nổi và các thành phần tái tạo 3D.

- 2D Features Framework (features2d) – pháthiện đặc trưng nổi bật, mô tả và so khớp mô tả.

- Object Detection (objdetect) – phát hiện các đối tượng và thể hiện các lớp của đối tượng ( ví dụ như khuôn mặt, mắt, cốc, người, xe ô tô,...)

OpenCV-Python là API Python cho OpenCV, kết hợp các phẩm chất tốt nhất của API OpenCV C ++ và ngôn ngữ Python.

Chuẩn bị thử nghiệm chương trình

Quá trình thử nghiệm chương trình đã được huấn luyện với dữ liệu thực tế gồm: tập ảnh huấn luyện gồm 400 hình ảnh khuôn mặt của 4 người tham gia thử nghiệm.

- Tập ảnh huấn luyện được đặt tên theo dạng: [Tên người]_[Số thứ tự frame].jpg. Ví dụ: AN-00000000.jpg, AN-00000001.jpg,...

- Phân lớp Haar Cascade [5] : haarcascade_frontalface_default.xml - Thư viện OpenCV for python 3.2

- Python 3.5.2

Một phần của tài liệu (LUẬN văn THẠC sĩ) nhận dạng khuôn mặt người từ camera sử dụng đặc trưng haar like, ứng dụng trong giám sát an ninh (Trang 48 - 52)

Tải bản đầy đủ (PDF)

(69 trang)