Chương 1: Giới thiệu đề tài Đồ án tốt nghiệp 1. Tên đề tài Xây dựng mô hình học sâu để phát hiện biển số xe tại trường Đại học Phenikaa. Mục tiêu nghiên cứu và nội dung nghiên cứu của đồ án. Mục tiêu nghiên cứu của đồ án ● Xây dựng tập dữ liệu ảnh có đánh dấu các góc của biển số xe từ camera.
● Xây dựng mô hình học máy phát hiện biển số xe, để có thể đưa vào các thiết bị giám sát an ninh tại khu vực để xe. Nội dung nghiên cứu của đồ án ● Ứng dụng xử lý ảnh để tìm ra bài toán phù hợp để phát hiện biển số. ● Xây dựng mô hình học máy cổ điển với thư viện Sklearn. ● Xây dựng mô hình học máy nhẹ.
● Xây dựng mô hình Convolutional Neural Network (CNN) để phát hiện biển số xe. Thành viên tham gia thực hiện đồ án Bảng 1: Bảng thành viên thực hiện đồ án STT Họ và tên Chức vụ Email SĐT 01 Phạm Tiến Lâm Giảng viên lam.phamtien@phenik 0966263858 hướng dẫn aa-uni.vn 02 Đặng Văn Báu Sinh viên dangvanbau1999@gm 0973254960 ail. Phương thức thực hiện và kết quả 1. Phương thức thực hiện ● Nắm chắc kiến thức cơ bản về ngôn ngữ lập trình Python trên Windows và Ubuntu.
● Tìm hiểu thư viện Scikit - learn trong Python. ● Tìm hiểu thư viện OpenCV trong Python. 4 ● Áp dụng thư viện OpenCV vào bài toán xử lý ảnh. ● Chuẩn bị dữ liệu thô.
● Chuẩn hóa dữ liệu. ● Tìm hiểu CNN (Convolutional Neural Network) trong Keras để xây dựng mô hình học máy. ● Áp dụng và xây dựng mô hình CNN. Kết quả Tạo mô hình hình học sâu có thể phát hiện biển số xe và xoay biển số từ hình ảnh.
5 Chương 2: Tổng quan cơ sở lý thuyết và xử lý dữ liệu ảnh 2. Ngôn ngữ lập trình Python ● Ngôn ngữ lập trình Python được Guido van Rossum tạo ra cuối năm 1990. ● Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng. ● Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ.
Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu. ● Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời gian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix.
● Ngày nay, Python là ngôn ngữ phổ biến nhất được sử dụng để xây dựng và đào tạo mạng nơ-ron, cụ thể là mạng nơ-ron tích hợp. ● Cú pháp Python giúp dễ dàng diễn đạt các khái niệm toán học, vì vậy ngay cả những người không quen thuộc với ngôn ngữ này cũng có thể bắt đầu xây dựng các mô hình toán học một cách dễ dàng. ● Python được thiết kế để dễ sử dụng, học nhanh và có cú pháp dễ tiếp cận. ● Có rất nhiều khung và thư viện Python có sẵn cho máy học và học sâu, bao gồm NumPy, scikit-learning, cũng như các khung học sâu “ba lớn” mà chúng ta sẽ thảo luận trong phần sau.
● Python thích hợp để viết mã và triển khai hợp tác, vì mã của nó dễ đọc và dễ truyền tải cho người khác. ● Python có một cộng đồng lớn hỗ trợ ngôn ngữ này. ● Tất cả các khuôn khổ học tập sâu chính đều hỗ trợ Python. Trong số này, các nền tảng phổ biến và mạnh mẽ nhất là TensorFlow, Keras (thường được sử dụng làm trình bao bọc phía trước cho TensorFlow) và PyTorch.
Tổng quan về thư viện Scikit - learn trong Python 2. Khái niệm Scikit-learn (Sklearn) là thư viện mạnh mẽ nhất dành cho các thuật toán học máy được viết trên ngôn ngữ Python. Thư viện cung cấp một tập các công cụ xử lý các bài toán machine learning và statistical modeling gồm: classification, regression, clustering, và dimensionality reduction. Thư viện được cấp phép bản quyền chuẩn FreeBSD và chạy được trên nhiều nền tảng Linux.
Scikit-learn được sử dụng như một tài liệu để học tập. Để cài đặt scikit-learn trước tiên phải cài thư viện SciPy (Scientific Python). Những thành phần gồm: ● Numpy: Gói thư viện xử lý dãy số và ma trận nhiều chiều. ● SciPy: Gói các hàm tính toán logic khoa học.
● Matplotlib: Biểu diễn dữ liệu dưới dạng đồ thị 2 chiều, 3 chiều. ● IPython Notebook: dùng để tương tác trực quan với Python. ● SymPy: Gói thư viện các kí tự toán học. ● Pandas: Xử lý, phân tích dữ liệu dưới dạng bảng.
Những thư viện mở rộng của SciPy thường được đặt tên dạng SciKits. Như thư viện này là gói các lớp, hàm sử dụng trong thuật toán học máy thì được đặt tên là scikit-learn. Scikit-learn hỗ trợ mạnh mẽ trong việc xây dựng các sản phẩm. Nghĩa là thư viện này tập trung sâu trong việc xây dựng các yếu tố: dễ sử dụng, dễ code, dễ tham khảo, dễ làm việc, hiệu quả cao.
Mặc dù được viết cho Python nhưng thực ra các thư viện nền tảng của scikit-learn lại được viết dưới các thư viện của C để tăng hiệu suất làm việc. Ví dụ như: Numpy (Tính toán ma trận), LAPACK, LibSVM và Cython. Thuật toán Thư viện tập trung vào việc mô hình hóa dữ liệu. Nó không tập trung vào việc truyền tải dữ liệu, biến đổi hay tổng hợp dữ liệu.
Những công việc này dành cho thư viện Numpy và Pandas. Sau đây là một số nhóm thuật toán được xây dựng bởi thư viện scikit-learn: ● Clustering ( phân cụm) : là một kỹ thuật không được giám sát. Với phân cụm, thuật toán cố gắng tìm một mẫu trong tập dữ liệu không có nhãn được liên kết với nó. ● Classification ( phân loại) : là một kỹ thuật được giám sát.
Các thuật toán phân loại xem xét dữ liệu hiện có và dự đoán dữ liệu mới thuộc về cái gì. Với dữ liệu máy, nó có thể được sử dụng để dự đoán chất lượng vật liệu bằng một số thông số đã biết (ví dụ: độ ẩm, cường độ, màu sắc,…). Đầu ra của dự đoán vật liệu sau đó sẽ là loại chất lượng (“tốt” hoặc “xấu” hoặc một số trong một không gian xác định như 1-10). ● Regression ( hồi quy): Hồi quy thường bị nhầm lẫn với phân cụm.
Với hồi quy, không có nhãn phân loại nào (chẳng hạn như tốt hay xấu, spam hay không spam,…) được dự đoán. Thay vào đó, kết quả hồi quy cho ra các số liên tục, thường không bị ràng buộc. ● Dimensionality Reduction and Feature extraction: Mục đích của thuật toán này là để giảm số lượng thuộc tính quan trọng của dữ liệu bằng các phương pháp như tổng hợp, biểu diễn dữ liệu và lựa chọn đặc trưng. Ví dụ thuật toán PCA (Principal component analysis).
Trích xuất đặc trưng. Mục đích là để định nghĩa các thuộc tình với dữ liệu hình ảnh và dữ liệu ngôn ngữ. Tổng quan về Deep Learning và bài toán nhận diện trong thị giác máy tính 2. Mạng nơron Mạng Neural là một mô hình toán học hay mô hình tính toán được xây dựng dựa trên các mạng neural sinh học.
Nó gồm có một nhóm các neural nhân tạo 8 (nút) nối với nhau, và xử lý thông tin bằng cách truyền theo các kết nối và tính giá trị mới tại các nút. Hình 1: Mạng nơ-ron nhân tạo. Hình 2: Thuật toán mạng nơ-ron. Layer đầu tiên là input layer, các layer ở giữa được gọi là hidden layer, layer cuối cùng được gọi là output layer.
Các hình tròn được gọi là node. Mỗi mô hình luôn có 1 input layer, 1 output layer, có thể có hoặc không các hidden layer. Tổng số layer trong mô hình được quy ước là số layer – 1 (Không tính input layer). Ví dụ như ở hình trên có 1 input layer, 2 hidden layer và 1 output layer.
Số lượng layer của mô hình là 3 layer. Mỗi node trong hidden layer và output layer : ● Liên kết với tất cả các node ở layer trước đó với các hệ số w riêng. ● Mỗi node có 1 hệ số bias b riêng. ● Diễn ra 2 bước: tính tổng linear và áp dụng activation function.
Định nghĩa Deep Learning Deep learning (còn gọi là học sâu). Khái niệm này được lấy cảm hứng từ chức năng giống với các tế bào não của con người gọi là tế bào thần kinh. Deep Learning là tập con của Machine Learning và nó có tác dụng hỗ trợ cho máy tính tự huấn luyện chính nó để có thể thực hiện mọi tác vụ tương tự như con người. Điều này chính là giúp máy tính bắt chước con người cách học hỏi và suy nghĩ.
Các hệ thống của Deep Learning có khả năng cải thiện được những hiệu suất của chúng với quyền truy cập vào dữ liệu sẽ được nhiều hơn. Thông thường, phiên bản máy sẽ có nhiều kinh nghiệm hơn; những máy móc đã có đủ kinh nghiệm thì sẽ được mang đi phục vụ cho những công việc như: lái xe, phát hiện người,. Deep Learning có hỗ trợ cho việc dịch ngôn ngữ, phân loại các hình ảnh, nhận dạng giọng nói. Chính vì thế, nó có thể được ứng dụng để giải quyết mọi nhu cầu cần nhận dạng mẫu mà không cần đến sự can thiệp của con người.
Deep Learning hoạt động dựa vào mạng lưới thần kinh nhân tạo và nó bao gồm nhiều lớp chứa các dữ liệu mô phỏng cách thức vận hành của não người. Bộ phận mạng thần kinh nhân tạo này giống với não người bao gồm: Các node (nó là đơn vị thần kinh trong mạng thần kinh nhân tạo) là những neuron thần kinh. Hầu hết các node bản thân thường chỉ có khả năng trả lời cho những câu hỏi đơn giản và cơ bản nhất; với những tác vụ khó thì chúng sẽ tiến hành liên kết với nhau để trả lời. Bạn có thể dạy hoặc có thể huấn luyện chúng bằng những thuật toán cụ thể.
Những node giải đáp các câu hỏi phức tạp thì sẽ được gọi là mạng lưới thần kinh sâu (DNN), nó được định nghĩa như sau: Mạng lưới thần kinh sâu có khả năng thực hiện các hoạt động phức tạp như biểu diễn, trừu tượng có mang các ý nghĩa về âm thanh, văn bản và hình ảnh. Chúng được đánh giá là lĩnh vực phát triển nhất trong Machine Learning. Cách thức hoạt động của Deep Learning Các dòng thông tin sẽ được trải qua nhiều lớp cho đến lớp sau cùng. Lấy quy trình học của con người làm ví dụ cụ thể.
Qua các lớp đầu tiên sẽ tập trung vào việc học các khái niệm cụ thể hơn trong khi các lớp sâu hơn sẽ sử dụng thông tin đã học để nghiên cứu và phân tích sâu hơn trong các khái niệm trừu tượng .