Chương 1 CƠ SỞ LÝ THUYẾT 1. Ngôn ngữ lập trình Python Ngôn ngữ Python được tạo ra bởi Guido van Rossum vào năm 1990, Python được phát triển trong một dự án mã nguồn mở bởi tổ chức phi lợi nhuận Python Software Foundation đứng ra quản lý. Là ngôn ngữ bậc cao, có hình thức và cấu trúc rõ ràng, thư viện được hỗ trợ phong phú và đa dạng nên khá thân thiện với người mới học và tìm hiểu lập trình. Vì vậy, từ năm 2016 Python đã là một trong những ngôn ngữ phổ biến trên thế giới, không những được sử dụng trên máy tính, Python còn có thể tận dụng để tạo ra các ứng dụng chạy trên nền tảng di động như IOS và Android.
Python có thể hoạt động được hầu hết trên các hệ điều hành phổ biến hiện nay như: Windows, Linux, MacOS, iOS, Android.1: Bảng xếp hạng sự phổ biến của các ngôn ngữ lập trình hiện nay (Nguồn: http://pypl.io) Dưới đây là một số đặc điểm và lợi ích của Python: [4] - Dễ học và đọc: Python có cú pháp đơn giản và dễ hiểu, giúp người mới học lập trình nhanh chóng tiếp cận và hiểu được mã nguồn. Cú pháp rõ ràng và sử dụng các từ khóa có ý nghĩa giúp mã Python dễ đọc và dễ bảo trì. SVTH: Trần Thị Phương Nhi 4 Nghiên cứu ứng dụng mạng nơ ron trong việc cảnh báo tài xế buồn ngủ khi đang lái xe - Ngôn ngữ đa mục đích: Python được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm phát triển web, trí tuệ nhân tạo, phân tích dữ liệu, hệ thống nhúng, game và nhiều lĩnh vực khác. Điều này cho phép bạn áp dụng Python cho nhiều loại dự án và sử dụng lại mã nguồn.
- Thư viện phong phú: Python đi kèm với một số thư viện và framework phổ biến như NumPy, pandas, TensorFlow, Django, Flask và nhiều thư viện khác. Nhờ vào các thư viện này, bạn có thể xây dựng các ứng dụng mạnh mẽ và hiệu quả trong thời gian ngắn. - Hỗ trợ đa nền tảng: Python có sẵn cho nhiều hệ điều hành như Windows, macOS và Linux. Bạn có thể viết và chạy mã Python trên nhiều nền tảng khác nhau mà không cần phải thay đổi mã nguồn.
- Cộng đồng phát triển mạnh mẽ: Python có một cộng đồng phát triển lớn và nhiều nguồn tài nguyên hữu ích như tài liệu, diễn đàn và các dự án mã nguồn mở. Bạn có thể tìm thấy hỗ trợ và giải đáp các câu hỏi của mình từ cộng đồng Python. - Hỗ trợ cho lập trình hướng đối tượng: Python hỗ trợ lập trình hướng đối tượng, cho phép bạn xây dựng và tổ chức mã nguồn một cách có cấu trúc và linh hoạt. Lập trình hướng đối tượng giúp tăng tính module và tái sử dụng mã nguồn.
Python là một ngôn ngữ lập trình đa dụng và mạnh mẽ, được sử dụng trong nhiều lĩnh vực và có cộng đồng phát triển đông đảo.2: Ngôn ngữ lập trình Python SVTH: Trần Thị Phương Nhi 5 Nghiên cứu ứng dụng mạng nơ ron trong việc cảnh báo tài xế buồn ngủ khi đang lái xe 1. Tổng quan về học sâu Những năm gần đây trong lĩnh vực nghiên cứu về trí tuệ nhân tạo (AI), học máy (Machine Learning - ML) đã đạt được những thành công đáng kể. Nó cho phép máy tính tiến gần hơn đến việc kết hợp hiệu suất của con người trong các lĩnh vực như: nhận dạng khuôn mặt, nhận dạng giọng nói và nhận dạng ngôn ngữ.3: Tổng quan về Trí tuệ nhân tạo Machine Learning là một lĩnh vực của AI mà trong đó máy tính được lập trình để tự động học hỏi từ dữ liệu mà không cần được lập trình cụ thể cho từng tác vụ. Thay vì việc lập trình, máy tính sẽ dựa trên các thuật toán học máy để tự động tìm ra các kết quả dự đoán chính xác từ dữ liệu đầu vào và điều chỉnh chúng theo thời gian với mục đích tối ưu hóa đầu ra.
Các ứng dụng của học máy rất phong phú và đa dạng, từ phân loại hình ảnh và giọng nói, dự đoán thị trường chứng khoán, xử lý ngôn ngữ tự nhiên và nhiều ứng dụng khác. Deep Learning (DL) là một lĩnh vực của AI tập trung vào việc xây dựng các mô hình máy học dựa trên các kiến trúc mạng nơ ron nhân tạo được thiết kế theo cấu trúc phân tầng sâu (deep), giúp cho máy tính xử lý và học được các dữ liệu phức tạp như hình ảnh, âm thanh, văn bản và video. Các mô hình học sâu ngày nay thường được sử dụng trong các ứng dụng như nhận dạng hình ảnh, nhận diện giọng nói, xử lý ngôn ngữ tự nhiên, trích xuất thông tin và dự đoán cũng như trong nhiều lĩnh vực khoa học khác. [6] Ví dụ: Một ví dụ về học máy đơn giản là dự đoán doanh số bán kem dựa trên nhiệt độ ngoài trời.
Tuy nhiên, khi áp dụng vào nhiều vấn đề thực tế, các mô hình SVTH: Trần Thị Phương Nhi 6 Nghiên cứu ứng dụng mạng nơ ron trong việc cảnh báo tài xế buồn ngủ khi đang lái xe đơn giản như vậy không còn phù hợp. Ví dụ như nhận dạng số viết tay, với sự đa dạng lớn về kích thước và hình dạng của mỗi chữ số, đòi hỏi máy tính phải có khả năng xử lý các tính năng phức tạp và tương tác lớn hơn giữa chúng. Vì vậy, học sâu với các mạng lưới thần kinh mạnh mẽ và linh hoạt trở nên cần thiết để giải quyết các vấn đề này. Mạng lưới thần kinh trong học sâu là một loạt các mô hình toán học có cấu trúc và được lấy cảm hứng từ bộ não con người.
Mỗi nơ ron trong mạng lưới được thể hiện bằng một hàm toán học, sẽ xử lý thông tin đầu vào và chuyển đổi nó thành một dạng dễ dàng hơn để điều chỉnh trước khi xuất ra đầu ra. Ta có thể hình dung các nơ ron trong mạng lưới thần kinh được sắp xếp theo từng lớp, giống như hình dưới đây.4: Mô phỏng mạng lưới thần kinh trong học sâu 1. Lý thuyết về mạng nơ ron trí tuệ nhân tạo 1. Mạng nơ ron nhân tạo Một trong những phương pháp phổ biến và chính trong học sâu là sử dụng Mạng nơ-ron nhân tạo (ANN).
Mô hình này được lấy cảm hứng từ cấu trúc não người, cơ quan phức tạp nhất trong cơ thể con người, gồm hơn 90 tỷ tế bào thần kinh. Các tế bào này được kết nối với nhau bằng các sợi thần kinh gọi là “sợi trục” và “đuôi gai”, giúp truyền thông tin giữa các tế bào. [7] ANN được phát minh lần đầu tiên vào năm 1958 bởi nhà tâm lý học Frank Rosenblatt. Mô hình này gồm nhiều nút tương tự như các nơ ron được kết nối chặt chẽ và tổ chức thành các lớp ẩn khác nhau.
Dữ liệu được đưa vào qua lớp đầu vào SVTH: Trần Thị Phương Nhi 7 Nghiên cứu ứng dụng mạng nơ ron trong việc cảnh báo tài xế buồn ngủ khi đang lái xe và đi qua các lớp ẩn tuần tự trước khi cho ra kết quả cuối cùng ở lớp đầu ra, ví dụ như xác định một hình ảnh có chứa đối tượng gì đó, chẳng hạn như “Mèo”. Một nơ ron đơn lẻ (được gọi là perceptron trong ANN) được biểu diễn như sau: Hình 1.5: Mô phỏng nơron trong mạng Perceptron đa tầng là một dạng ANN đơn giản nhất, bao gồm một lớp đầu vào duy nhất, một hoặc nhiều lớp ẩn và một lớp đầu ra. Mỗi lớp chứa một tập hợp perceptron. Lớp đầu vào là một hoặc nhiều chức năng của dữ liệu đầu vào.
Mỗi lớp ẩn có một hoặc nhiều nơ-ron và xử lý một số khía cạnh của tính năng trước khi gửi thông tin được xử lý đến lớp ẩn tiếp theo. Quá trình lớp đầu ra nhận dữ liệu từ lớp ẩn cuối cùng và đưa ra kết quả.6: Mô phỏng mạng nơron nhân tạo nhiều lớp SVTH: Trần Thị Phương Nhi 8 Nghiên cứu ứng dụng mạng nơ ron trong việc cảnh báo tài xế buồn ngủ khi đang lái xe 1. Mạng nơ ron tích chập Mạng Nơ-ron Tích Chập (Convolutional Neural Network - CNN) là một trong những mô hình ANN phổ biến nhất và cũng là một trong những mô hình của DL. Nó sử dụng tập hợp các thuật toán ma trận để tạo ra mô hình dữ liệu trừu tượng ở mức cao bằng cách sử dụng nhiều lớp xử lý cấu trúc phức tạp.
Cấu trúc của CNN bao gồm: - Một tập hợp các lớp tích chập (convolution) được xếp chồng lên nhau và sử dụng các hàm phi tuyến tính (nonlinear activation) như ReLU và tanh để kích hoạt các trọng số trong các node. Mỗi lớp sau khi qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo. - Lớp tiếp theo của CNN là kết quả của việc tích chập từ lớp trước đó, điều này cho phép tạo ra các kết nối cục bộ. Mỗi neuron ở lớp kế tiếp được tạo ra từ kết quả của filter được áp dụng lên một vùng ảnh cục bộ của neuron trước đó.
- Mỗi lớp trong CNN sử dụng hàng trăm đến hàng nghìn filter khác nhau và kết hợp kết quả của chúng lại. Ngoài ra, một số lớp khác như pooling/subsampling layer được sử dụng để chắt lọc các thông tin hữu ích từ ảnh và loại bỏ càng nhiều nhiễu càng tốt.7: Mô phỏng về mạng nơron tích chập Trong kiến trúc mạng CNN, có hai khía cạnh quan trọng cần được chú ý là tính bất biến (Location Invariance) và tính kết hợp (Compositionality). Khi chúng ta xử lý cùng một đối tượng nhưng ở các góc độ khác (translation, rotation, scaling), sẽ ảnh hưởng đáng kể đến độ chính xác của thuật toán. Để giải quyết vấn đề này, SVTH: Trần Thị Phương Nhi 9 Nghiên cứu ứng dụng mạng nơ ron trong việc cảnh báo tài xế buồn ngủ khi đang lái xe ta sử dụng lớp pooling để đạt được tính bất biến với các phép biến đổi và lớp convolution để kết hợp thông tin từ các tầng thấp đến cao và trừu tượng hơn.
Nhờ sự đồng nhất và tuyệt vời của kiến trúc này, mạng nơ-ron tích chập là một mô hình với độ chính xác rất cao. Cách hoạt động này tương tự như cách con người nhận biết các vật thể trong tự nhiên. Một số mạng nơ ron nổi tiếng 1. Mạng AlexNet AlexNet là một mạng CNN đã giành chiến thắng trong cuộc thi ImageNet LSVRC-2012 vào năm 2012 với tỷ lệ lỗi thấp hơn một khoảng lớn so với các đối thủ khác (15,3% so với 26,2%).8: Hình minh hoạ mạng AlexNet AlexNet gồm 5 lớp convolution và 3 lớp Fully connected.Các lớp convolution (hay còn gọi là các filter) trích xuất thông tin hữu ích từ các hình ảnh.
Một lớp convolution thường bao gồm nhiều kernel có cùng kích thước.