CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI 1.1 Tên đề tài “Hệ thống đếm tiền Việt Nam đồng” 1.2 Lí do chọn đề tài Ngày nay, nguy cơ dịch bệnh tăng cao trong những năm gần đây người dùng cần đến một giải pháp hạn chế tiếp xúc, an toàn hơn. Đó là lí do mà em chọn công nghệ nhận dạng bằng phương pháp máy học và học sâu, qua đó giúp người dùng hạn chế việc tiếp xúc trực tiếp trong đám đông, việc chọn nhận dạng tổng tiền giúp người dùng tránh tiếp xúc trong khi trao đổi. Như vậy, người dùng có thể hạn chế nguy cơ ảnh hưởng tới sức khoẻ.
Ngoài ra, giúp người nước ngoài, người khiếm thị xác định loại và mệnh giá tiền đưa vào và cần thanh toán bao nhiêu tiền và hỗ trợ giao dịch tự động.3 Mục tiêu đề tài - Xây dựng hệ thống điểm danh nhận dạng và đếm tiền tệ. - Từ hình ảnh tiền camera quay được có thể đếm tiền tệ và trích xuất thông tin tiền tệ ra màn hình giao diện. - Xây dựng ứng dụng một cách hoàn thiện nhất để có thể áp dụng vào thực tế. - Tìm hiểu về ngôn ngữ lập trình Python, Dart.
- Tìm hiểu về lập trình trên thiết bị di động.4 Ý nghĩa thực tiễn - Tạo ra được sản phẩm là ứng dụng đếm tiền tự động bằng công nghệ nhận diện tiền tệ đã tích hợp với kho dữ liệu có sẵn. Giúp tiết kiệm thời gian với việc nhận diện đếm tiền tệ chỉ trong vài giây. - Nhận diện mạnh mẻ, thân thiện với người dùng. GVHD: Huỳnh Quang Đức 1 SVTH: Võ Thanh Hưng Đồ án tốt nghiệp Chương 2.
Cơ sở lý thuyết CHƯƠNG 2.1 Giới thiệu về bài toán nhận dạng đếm tiền Trong vài năm qua, công nghệ tiên tiến đã đóng một vai trò quan trọng việc nhận dạng tiền tệ thật trong các nền kinh tế. Một giải pháp hiệu quả để phát hiện và nhận dạng tiền tệ là điều quan trọng trong các giao dịch tự động. Ứng dụng này giúp người dung nhận dạng tiền dựa trên xử lý ảnh dùng mạng học sâu để trích xuất đặc trưng. Ứng dụng này tập trung vào nhận dạng đúng tiền thật dựa trên hình thức của tờ tiền, phương pháp đề xuất có thể áp dụng để nhận biết nhiều loại mệnh giá và đếm tiền cũng như đưa ra những kết quả chuẩn xác về tiền tệ.2 Giới thiệu về Frameworks Flutter và ngôn ngữ Dart Frameworks Flutter của Google, một framework dựa trên ngôn ngữ lập trình Dart sử dụng tập hợp các widget có thể chỉnh sửa để xây dựng giao diện trong vài phút.
Ngoài ra còn đa dạng tính năng fix bug tiết kiệm thời gian hơn mà không cần phải thông qua máy ảo, máy android hoặc IOS. Flutter có các thành phần giao diện của riêng nó, cùng với một cơ chế để thực thi chúng trên đa nền tảng Android và IOS. Dart là ngôn ngữ hướng đối tượng lập trình cho Flutter bộ công cụ giao diện người dùng của Google để xây dựng các ứng dụng Mobile, Web và Desktop App, được phiên dịch nguyên mẫu từ một cơ sở mã lệnh duy nhất.3 Giới thiệu về ngôn ngữ Python 2.1 Python là gì? Python là một ngôn ngữ lập trình thông dịch(interpreter), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics). Python hỗ trợ các module và gói (packages), 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. Đặc điểm của ngôn ngữ python: Ngữ pháp đơn giản, dễ đọc. Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object-oriented) Hỗ trợ module và hỗ trợ gói (package) Xử lý lỗi bằng ngoại lệ (Exception) Kiểu dữ liệu động ở mức cao. Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình.
GVHD: Huỳnh Quang Đức 2 SVTH: Võ Thanh Hưng Đồ án tốt nghiệp Chương 2. Cơ sở lý thuyết 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 hay .Net cho IronPython) Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface).2 Ứng dụng của ngôn ngữ Python Lập trình ứng dụng web: Bạn có thể tạo web app có khả năng mở rộng (scalable) được bằng cách sử dụng framework và CMS (Hệ thống quản trị nội dung) được tích hợp trong Python. Vài nền tảng phổ biến để tạo web app là: Django, Flask, Pyramid, Plone, Django CMS. Các trang như Mozilla, Reddit, Instagram và PBS đều được viết bằng Python.
Khoa học và tính toán: Có nhiều thư viện trong Python cho khoa học và tính toán số liệu, như SciPy và NumPy, được sử dụng cho những mục đích chung chung trong tính toán. Và, có những thư viện cụ thể như: EarthPy cho khoa học trái đất, AstroPy cho Thiên văn học. Ngoài ra, Python còn được sử dụng nhiều trong machine learning, khai thác dữ liệu và deep learning. Tạo nguyên mẫu phần mềm: Python chậm hơn khi so sánh với các ngôn ngữ được biên dịch như C++ và Java.
Nó có thể không phải là lựa chọn tốt nếu nguồn lực bị giới hạn và yêu cầu về hiệu quả là bắt buộc. Tuy nhiên, Python là ngôn ngữ tuyệt vời để tạo những nguyên mẫu (bản chạy thử - prototype). Ví dụ, bạn có thể sử dụng Pygame (thư viện viết game) để tạo nguyên mẫu game trước. Nếu thích nguyên mẫu đó có thể dùng C++ để viết game thực sự.
Ngôn ngữ tốt để dạy lập trình: Python được nhiều công ty, trường học sử dụng để dạy lập trình cho trẻ em và những người mới lần đầu học lập trình. Bên cạnh những tính năng và khả năng tuyệt vời thì cú pháp đơn giản và dễ sử dụng của nó là lý do chính cho việc này.4 Mô hình học sâu Deep Residual Networks 50 và phương pháp thực hiện của xử lí ảnh Deep Residual Networks 50(ResNet50) là một mạng nơ-ron phức tạp có chiều sâu 50 lớp. ResNet, viết tắt của Residual Networks là một mạng nơ-ron cổ điển được sử dụng cho nhiều tác vụ thị giác máy tính. Bước đột phá cơ bản với ResNet là nó cho phép đào tạo mạng nơ-ron cực kỳ sâu với hơn 150 lớp.
ResNet50 là một biến thể của mô hình ResNet có 48 lớp Convolution cùng với 1 lớp MaxPool và 1 lớp Average Pool. GVHD: Huỳnh Quang Đức 3 SVTH: Võ Thanh Hưng Đồ án tốt nghiệp Chương 2. Cơ sở lý thuyết Hình 1. Kiến trúc ResNet50 2.5 Mô hình học sâu Object detection YOLOv6 YOLO chia một hình ảnh thành một hệ thống lưới và mỗi lưới sẽ phát hiện các đối tượng bên trong chính nó.
Nó có thể được sử dụng để dùng nó kết luận thực tế và yêu cầu rất ít tài nguyên dữ liệu. Kiến trúc YOLOv6 YOLO đã đề xuất một phương pháp khác trong đó cả hai giai đoạn đều được tiến hành trong cùng một mạng nơ-ron. Đầu tiên, hình ảnh được chia thành các ô, mỗi ô có một vùng SxS có kích thước bằng nhau. Sau đó, mỗi ô phát hiện và định vị các đối tượng mà nó chứa với tọa độ hộp giới hạn (liên quan đến tọa độ của nó) với nhãn đối tượng và xác suất của đối tượng hiện diện trong ô.6 Hệ quản trị cơ sở dữ liệu MySQL MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng.
Tốc độ MySQL rất nhanh, những nhà phát triển cho rằng MySQL là cơ sở dữ liệu nhanh nhất mà bạn có thể có. GVHD: Huỳnh Quang Đức 4 SVTH: Võ Thanh Hưng Đồ án tốt nghiệp Chương 2. Cơ sở lý thuyết Dễ sử dụng MySQL tuy có tính năng cao nhưng thực sự là một hệ thống cơ sở dữ liệu rất đơn giản và ít phức tạp khi cài đặt và quản trị hơn các hệ thống lớn. Giá thành của MySQL là miễn phí cho hầu hết các việc sử dụng trong một tổ chức.
Hỗ trợ ngôn ngữ truy vấn MySQL hiểu SQL, là ngôn ngữ của sự chọn lựa cho tất cả các hệ thống cơ sở dữ liệu hiện đại. Bạn cũng có thể truy cập MySQL bằng cách sử dụng các ứng dụng mà hỗ trợ ODBC (Open Database Connectivity -một giao thức giao tiếp cơ sở dữ liệu được phát triển bởi Microsoft). Năng lực: Nhiều client “người dùng” có thể truy cập đến server trong cùng một thời gian. Các client có thể sử dụng nhiều cơ sở dữ liệu một cách đồng thời.
Bạn có thể truy cập MySQL tương tác với sử dụng một vài giao diện để bạn có thể đưa vào các truy vấn và xem các kết quả: các dòng yêu cầu của khách hàng, các trình duyệt Web… Kết nối và bảo mật: MySQL được nối mạng một cách đầy đủ, các cơ sở dữ liệu có thể được truy cập từ bất kỳ nơi nào trên Internet do đó bạn có thể chia sẽ dữ liệu của bạn với bất kỳ ai, bất kỳ nơi nào. Nhưng MySQL kiểm soát quyền truy cập cho nên người mà không nên nhìn thấy dữ liệu của bạn thì không thể nhìn được. Tính linh động: MySQL chạy trên nhiều hệ thống UNIX cũng như không phải UNIX chẳng hạn như Windows hay OS/2. MySQL chạy được các với mọi phần cứng từ các máy PC ở nhà cho đến các máy server.
Sự phân phối rộng: MySQL rất dễ dàng đạt được, chỉ cần sử dụng trình duyệt web của bạn. Nếu bạn không hiểu làm thế nào mà nó làm việc hay tò mò về thuật toán, bạn có thể lấy mã nguồn và tìm tòi nó. Nếu bạn không thích một vài cái, bạn có thể thay đổi nó. Sự hỗ trợ: Bạn có thể tìm thấy các tài nguyên có sẵn mà MySQL hỗ trợ.
Cộng đồng MySQL rất có trách nhiệm. Họ trả lời các câu hỏi trên mailing list thường chỉ trong vài phút. Khi lỗi được phát hiện, các nhà phát triển sẽ đưa ra cách khắc phục trong vài ngày, thậm chí có khi trong vài giờ và cách khắc phục đó sẽ ngay lập tức có sẵn trên Internet.7 Giới thiệu về Frameworks Roboflow Roboflow là một framework dành cho nhà phát triển Thị giác Máy tính để thu thập dữ liệu tốt hơn để xử lý trước và các kỹ thuật đào tạo mô hình. Roboflow có sẵn các tập dữ liệu công khai cho người dùng và cũng có quyền truy cập để người dùng tải lên dữ liệu tùy chỉnh của riêng họ.
Roboflow chấp nhận các định dạng chú thích khác nhau. Trong quá trình xử lý trước dữ liệu, có các bước liên quan như định hướng hình ảnh, thay đổi kích thước, độ tương phản và tăng cường dữ liệu. GVHD: Huỳnh Quang Đức 5 SVTH: Võ Thanh Hưng Đồ án tốt nghiệp Chương 3.