Xử lý ảnh với Python

Một phần của tài liệu Nhận dạng cảm xúc thông qua khuôn mặt dùng mạng nơ ron tích chập CNN (Trang 37 - 41)

2.5.1 Giới thiệu ngơn ngữ lập trình Python:

Python là một ngơn ngữ lập trình thơng dịch hướng đối tượng và là một ngôn ngữ bậc cao, ngữ nghĩa động. Python hỗ trợ các module và gói, khuyến khích chương trình module hóa và tái sử 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.

Một vài đặc điểm về ngôn ngữ Python:

- Ngữ pháp đơn giản, dễ đọc.

- Vừa hướng thủ tục, vừa hướng đối tượng.

- Hỗ trợ module và hỗ trợ gói.

- Xử lý lỗi bằng ngoại lệ.

- Kiểu dữ liệu động ở mức cao.

- Có các bộ thư viện chuẩn và các module ngồi, đáp ứng tất cả các nhu cầu lập

- Có khả năng tương tác với các module khác viết trên C/C++ hoặc Java cho Jython, hoặc .Net cho IronPython.

- Có thể nhúng vào ứng dụng như một giao tiếp kịch bản.

Một số ưu điểm của ngôn ngữ Python:

- 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 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.

2.5.2 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.

Hình 2.18: 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 tốn tối ưu hố, 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 tốn có thể sử dụng thư viện Haar-Cascade trong việc phát hiện vị trí khn mặt để cải thiện tốc độ xử lý của bài tố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 u cầu quá cao về độ chính xác.

 Thư viện Keras

Keras là một thư vin c phỏt trin vo nm 2015 bi 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 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ư :

 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 tố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 tố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:

 Tính tốn theo mảng

 Triển khai hiệu quả các mảng đa chiều

CHƯƠNG 3

THIẾT KẾ HỆ THỐNG NHẬN DẠNG CẢM XÚC THÔNG QUA KHUÔN MẶT DÙNG MẠNG NƠ-RON TÍCH CHẬP TRÊN KIT RASPBERRY PI 4

Một phần của tài liệu Nhận dạng cảm xúc thông qua khuôn mặt dùng mạng nơ ron tích chập CNN (Trang 37 - 41)

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

(82 trang)