ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT HÀN ĐỒ ÁN CƠ SỞ 5 Đề tài NHẬN DẠNG BIỂN SỐ XE BẰNG PYTHON Lời mở đầu Sự phát triển mạnh mẽ của công nghệ thông tin tron[.]
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN - - ĐỒ ÁN CƠ SỞ Đề tài : NHẬN DẠNG BIỂN SỐ XE BẰNG PYTHON Lời mở đầu Sự phát triển mạnh mẽ công nghệ thông tin năm gần tạo nên thay đổi to lớn sống người Nó ngày khẳng định vai trị phát triển chung xã hội.Trong thời đại ngày việc người làm máy móc làm nhờ người lập trình viên biến máy tính ngoại vi trở thành hệ thống thơng minh thực cơng việc Đơn giản cơng việc gửi xe, vài năm trước đến bãi gửi xe thấy tất xe phải nhân viên coi xe gi giấy, việc vô bất tiện nhiều rủi ro giấy dễ bị hư hao, rách dính nước… khơng việc ghi giấy khơng thể tránh khỏi sai sót người nhân viên coi xe thoáng tập trung ghi sai, thời gian. Trong khn khổ chương trình học, yêu cầu đồ án kết thúc mơn, em viết chương trình : “ NHẬN DẠNG BIỂN SỐ XE BẰNG PYTHON” Song thời gian có hạn, cịn thiếu nhiều kinh nghiệm kỹ cịn hạn chế Nên chắn khơng tránh khỏi thiếu sót Vì em mong nhận nhiều ý kiến đóng góp từ thầy bạn bè để chúng em hoàn thành tốt đề tài Chân thành cảm ơn thầy cô bạn Lời cảm ơn Để đồ án đạt kết tốt đẹp, em nhận hỗ trợ, giúp đỡ thầy Với tình cảm sâu sắc, chân thành, cho phép em bày tỏ lòng biết ơn sâu sắc đến tất quý thầy cô tạo điều kiện giúp đỡ trình học tập nghiên cứu đề tài Trước hết chúng em xin gửi tới quý thầy cô Khoa Công Nghệ Thông Tin Truyền Thông - Đại Học Đà Nẵng lời chào trân trọng, lời chúc sức khỏe lời cảm ơn sâu sắc Với quan tâm, dạy dỗ, bảo tận tình chu đáo kiến thức mà thầy truyền đạt giúp em hồn thành đề tài mơn học lập trình mạng Đặc biệt em xin gửi lời cảm ơn chân thành đến giảng viên ThS Lê Kim Trọng quan tâm giúp đỡ tận tình chúng em hồn thành tốt đồ án thời gian qua Với điều kiện thời gian kinh nghiệm hạn chế, đồ án khơng thể tránh thiếu sót Em mong nhận bảo, đóng góp ý kiến thầy cơ, để em bổ sung, nâng cao kinh nghiệm kỹ thân để phục vụ cho công việc thực tế sau em xin chân thành cảm ơn! MỤC LỤC Trang Chương GIỚI THIỆU TỔNG QUAN 1.1 Tổng quan đề tài 1.2 Mục tiêu nghiên cứu đề tài 1.3 Phương pháp nghiên cứu 1.4 PyQt5 và Qt Designer: 1.4.1 Qt: 1.4.2 PyQt: .2 1.4.3 Qt Designer: 1.5 Sơ lược ngơn ngữ lập trình Python 1.5.1 Nguồn gốc cái tên “python”: 1.5.2 Tính Python: 1.5.3 Cơng cụ lập trình Python-Pycharm: Chương NGHIÊN CỨU TỔNG QUAN 2.1 Trí tuệ nhân tạo - AI ? 2.1.1 AI ? 2.1.2 Ứng dụng AI thực tế : .6 2.2 Nhận dạng biển số 2.2.1 Sự phát triển nhận dạng biển số 2.2.2 Nhận dạng biển số xe ? .8 2.3 Kiến trúc mạng WPOD 2.3.1 Tại lại chọn mạng WPOD ? .8 2.3.2 Cách hoạt động mạng WPOD 10 2.3.3 Chi tiết kiến trúc mạng WPOD 11 2.4 Phương pháp nhận dạng Support Vector Machine (SVM) .12 2.4.1 Tổng quan SVM 12 2.4.2 Các vector hỗ trợ 13 2.4.3 Thủ thuật Kernel 15 Chương PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 17 3.1 Phân tích yêu cầu 17 3.1.1 Yêu cầu chức 17 3.1.2 Yêu cầu hệ thống 17 3.2 Biểu đồ ca sử dụng 17 3.2.1 Chức đưa liệu vào 17 3.2.2 Chức đưa ảnh threshold .17 3.2.3 Chức đưa contour tìm 18 3.2.4 Chức nhận dạng hiển thị biển số xe 18 3.3 Thiết kế hệ thống 19 3.3.1 Phương pháp nhận dạng biển số xe thông thường 20 3.3.2 Giải toán WPOD SVM 21 Chương CHƯƠNG TRÌNH DEMO 24 4.1 Một số hình ảnh chương trình 24 4.2 Code chương trình 26 Chương Kết luận 30 5.1 Kết quả đạt được: 30 5.2 Hạn chế: 30 5.3 Hướng phát triển: 30 TÀI LIỆU THAM KHẢO 31 DANH MỤC HÌNH ẢNH Trang Hình 1: Hình ảnh ví dụ nhận dạng biển số Hình 2: Kết detect dùng YOLO ảnh với hướng nhìn diện hướng nghiêng chụp biển số xe Hình 3: Kết dectect sử dụng WPOD cho trường hợp biển số xe bị nghiêng Hình 4: Hoạt động mạng WPOD 10 Hình 5: Kiến trúc mạng WPOD .11 Hình 6: SVM 12 Hình 7: SVM khơng gian hai chiều ba chiều .13 Hình 8: Siêu phẳng tối ưu có lề cực đại 13 Hình 9: Vector hỗ trợ .14 Hình 10: Dữ liệu phân tách phi tuyến tính 14 Hình 11: ví dụ Φ(x) = x2+x 15 HÌnh 12: Biểu diễn trực quan thủ thuật Kernel .15 Hình 13: Biểu đồ use-case .19 Hình 14: Lưu đồ chi tiết hệ thống nhận diện biển số xe 20 Hình 15: Các bước xử lý toán 20 Hình 15: Data dùng để train 22 Hình 16: Code model SVM .23 Hình 17: Predict biển số 24 Hình 18: Ảnh biển số sau threshold .24 Hình 19: Các contour tìm 25 Hình 20 Kết nhận dạng 26 Hình 21: Lấy liệu .26 Hình 22: Tách biển số 27 Hình 23: Chuyển ảnh gray threshold 28 Hình 24: Tìm contour nhận dạng 29 Chương GIỚI THIỆU TỔNG QUAN 1.1 Tổng quan đề tài Sự phát triển mạnh mẽ công nghệ thông tin năm gần tạo nên thay đổi to lớn sống người Nó ngày khẳng định vai trị phát triển chung xã hội.Trong thời đại ngày việc người làm máy móc làm nhờ người lập trình viên biến máy tính ngoại vi trở thành hệ thống thơng minh thực cơng việc Đơn giản cơng việc gửi xe, vài năm trước đến bãi gửi xe thấy tất xe phải nhân viên coi xe gi giấy, việc vô bất tiện nhiều rủi ro giấy dễ bị hư hao, rách dính nước… khơng việc ghi giấy khơng thể tránh khỏi sai sót người nhân viên coi xe thống tập trung ghi sai, thời gian. Để bắt kịp với xu nay, em muốn nghiên cứu tiếp cận tốn nhận dạng Vì em muốn thực đề tài nhận dạng biển số xe ngôn ngữ lập trình Python .Mục tiêu dự kiến em hiểu thêm toán nhận dạng, ứng dụng vào thực tế 1.2 Mục tiêu nghiên cứu đề tài - Xây dựng chương trình giúp người dùng nhận dạng biển số thơng qua hình ảnh camera đầu vào - Chương trình nhận dạng số xe cách xác in hình - Hiểu rõ thuật toán nhận dạng cách hoạt động nhằm nâng cao hiểu biết công nghệ 1.3 Phương pháp nghiên cứu - Tìm hiểu ngơn ngữ lập trình Python - Tìm hiểu cơng cụ lập trình Pycharm - Tìm hiểu thư viện hỗ trợ lập trình - Tham khảo các chức năng, các điểm ưu nhược của các ứng dụng đã có, từ đó quyết định các ứng dụng và hướng phát triển - Tham khảo và lập trình giao diện cho ứng dụng - Phân tích chức yêu cầu cần có - Nghiên cứu cách thức hoạt động toán nhận dạng - Nghiên cứu hiểu thuật toán toán nhận dạng biển số xe - Kiểm thử phần mềm, sửa chữa phát triển thêm ý tưởng - Xây dựng báo cáo hoàn chỉnh 1.4 PyQt5 và Qt Designer: 1.4.1 Qt: Qt Application framework đa tảng viết ngôn ngữ C++ , dùng để phát triển ứng dụng desktop, hệ thống nhúng mobile Hỗ trợ cho platform bao gồm : Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS số platform khác 1.4.2 PyQt: PyQt Python interface Qt, kết hợp ngơn ngữ lập trình Python thư viện Qt, thư viện bao gồm thành phần giao diện điều khiển (widgets , graphical control elements) PyQt phát triển Riverbank Computing Limited Các class PyQt5 chia thành module, bao gồm : QtCore : module bao gồm phần lõi không thuộc chức GUI, ví dụ dùng để làm việc với thời gian, file thư mục, loại liệu, streams, URLs, mime type, threads processes