- Python dễ dàng kết nối với các thành phần khác: 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
29
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.
- Python là ngôn ngữ có khả năng chạy trên nhiều nền tảng: Python có cho mọi hệ điều hành: Windows, Linux/Unix, OS/2, Mac, Amiga, 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 rất đơn giản và dễ học: Python có hệ thống thư viện chuẩn và các thư viện mã nguồn mở được chia sẻ bởi cộng đồng lớn trên mạng.
- Python là ngôn ngữ mã nguồn mở: 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.
Các thư viện sử dụng trong Python
Trong đề tài sử dụng sử dụng bộ phân lớp Haar-Cascde của thư viện OpenCV, thư viện Keras với backend của Tensorflow, ngoài ra còn có một số thư viện cơ bản cho deep learning như Numpy và Imutils.
30
Hình 2.20: Cấu trúc thư viện OpenCV
OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính, xử lý ảnh và máy học. Nó chứa hàng ngàn thuật toán tối ưu hoá, trong đó cung cấp một bộ công cụ phổ biến cho các ứng dụng về thị giác máy tính. OpenCV đang được sử dụng trong rất nhiều ứng dụng, từ khâu hình ảnh xem đường của Google tới việc chạy các chương trình nghệ thuật tương tác, nhận diện khuôn mặt, hay rô-bốt, xe hơi tự lái.
Trong đề tài này, OpenCV được sử dụng cho các thao tác đọc, xử lý ảnh cơ bản, phần cài đặt thuật toán có thể sử dụng thư viện Haar-Cascade trong việc phát hiện vị trí khuôn mặt để cải thiện tốc độ xử lý của bài toán. Tuy nhiên, với độ chính xác tương đối kém của nó thì Haar-Cascade chỉ được áp dụng ở công đoạn đòi hỏi tốc độ xử lý cao mà không yêu cầu quá cao về độ chính xác.
Thư viện Keras
Keras là một thư viện được phát triển vào năm 2015 bởi François Chollet, là một kỹ sư nghiên cứu lĩnh vực học sâu tại google. Nó là một thư viện mã nguồn mở hàng đầu cho mạng nơ-ron nhân tạo được viết bởi ngôn ngữ python. Keras là một API bậc cao có thể sử dụng chung với các thư viện học sâu nổi tiếng như tensorflow(được phát triển bởi
31
google), Microsoft Cognitive Toolkit (được phát triển bởi microsoft), theano (người phát triển chính Yoshua Bengio). Keras có một số ưu điểm như :
Dễ sử dụng, xây dựng model nhanh.
Có thể run trên cả cpu và gpu.
Hỗ trợ xây dựng CNN , RNN và có thể kết hợp cả 2. Cấu trúc của Keras có thể được chia ra thành 3 phần chính:
Hàm chức năng để dựng bộ xương cho model.
Hàm chức năng dùng để tiền dữ liệu.
Hàm chức năng ở trong bộ xương của model.
Thư viện Numpy
NumPy là một từ viết tắt của "Numeric Python" hoặc "Numerical Python". Nó là một mô-đun mở rộng mã nguồn mở cho Python, cung cấp các chức năng biên dịch nhanh cho các thao tác toán học và số. Hơn nữa, NumPy làm phong phú ngôn ngữ lập trình Python với các cấu trúc dữ liệu mạnh mẽ để tính toán hiệu quả các mảng và ma trận đa chiều. Việc thực hiện thậm chí là nhằm vào ma trận và mảng khổng lồ. Bên cạnh đó các mô-đun cung cấp một thư viện lớn các chức năng toán học cấp cao để hoạt động trên các ma trận và mảng.
NumPy dựa trên hai mô đun Python trước đó về xử lý các mảng. Một trong số đó là Numeric. Numeric cũng giống NumPy như một môđun Python cho hiệu suất cao, tính toán số học, nhưng nó là lỗi thời ngày nay. Một bản tiền nhiệm khác của NumPy là Numarray, là một bản viết lại hoàn chỉnh của Numeric nhưng cũng không được ủng hộ. NumPy là sự sáp nhập của cả hai, nghĩa là nó được xây dựng trên mã của Numeric và các tính năng của Numarray.
Ưu điểm của việc sử dụng Numpy với Python:
32
Triển khai hiệu quả các mảng đa chiều
33
CHƯƠNG 3 : XÂY DỰNG HỆ THỐNG NHẬN DIỆN KHUÔN MẶT VÀ CẢM XÚC DÙNG MẠNG NƠ-RON TÍCH CHẬP TRÊN KIT RASPBERRY PI 4