Bối cảnh và vấn đề nghiên cứu

Đồ án tốt nghiệp "Hệ thống đếm tiền Việt Nam đồng" do sinh viên Võ Thanh Hưng thực hiện dưới sự hướng dẫn của ThS. Huỳnh Quang Đức tại Khoa Công nghệ thông tin, Robot và Trí tuệ nhân tạo – Trường Đại học Bình Dương (thời gian thực hiện từ 29/03/2022 đến tháng 07/2022).

Về bối cảnh thực tiễn và lý do chọn đề tài, tác giả chỉ ra rằng nguy cơ dịch bệnh gia tăng trong những năm gần đây thúc đẩy nhu cầu về các giải pháp giao dịch hạn chế tiếp xúc trực tiếp nhằm bảo vệ sức khỏe cộng đồng. Việc ứng dụng công nghệ nhận dạng dựa trên máy học và học sâu để tính tổng tiền giúp người dùng hạn chế tiếp xúc trực tiếp khi trao đổi tiền mặt trong các hoạt động mua bán đông người. Bên cạnh đó, hệ thống còn hỗ trợ người nước ngoài và người khiếm thị xác định chính xác mệnh giá, loại tiền đưa vào, tính toán tổng số tiền cần thanh toán và hỗ trợ tự động hóa các giao dịch.

Mục tiêu và nhiệm vụ nghiên cứu được văn bản xác định cụ thể như sau:

  1. Xây dựng hệ thống nhận dạng và đếm tiền tệ tự động.
  2. Tổng hợp và trích xuất thông tin tiền tệ từ hình ảnh thu nhận qua camera để hiển thị trực tiếp lên giao diện người dùng.
  3. Bổ sung các thông tin liên quan thông qua kết quả nhận diện tiền tệ của người dùng.
  4. Tìm hiểu chuyên sâu về ngôn ngữ lập trình Python, ngôn ngữ Dart và kỹ thuật phát triển ứng dụng trên thiết bị di động.
  5. Hoàn thiện ứng dụng phần mềm có khả năng vận hành thực tế trên môi trường máy tính (Windows) và thiết bị di động.

Đối tượng nghiên cứu của đồ án là hình ảnh các mệnh giá tiền Việt Nam Đồng (VND), các thuật toán xử lý ảnh và mô hình học sâu phục vụ nhận dạng, phát hiện vật thể. Phạm vi nghiên cứu bao gồm việc khảo sát lý thuyết, thu thập và tiền xử lý tập dữ liệu hình ảnh tiền tệ, huấn luyện mô hình phân loại và phát hiện đối tượng, thiết kế kiến trúc hệ thống từ cơ sở dữ liệu đến giao diện người dùng trên thiết bị di động, và thực hiện kiểm thử trên môi trường giả lập cũng như thiết bị thực tế.

Cơ sở lý thuyết và phương pháp

Đồ án xây dựng giải pháp nhận dạng và đếm tiền tự động dựa trên nền tảng thị giác máy tính và mạng nơ-ron học sâu (Deep Learning), kết hợp với kiến trúc phần mềm phân tán giữa ứng dụng di động (Client) và máy chủ dịch vụ (Server).

Về mặt lý thuyết và mô hình học sâu, đồ án sử dụng hai kiến trúc chính:

  • Mô hình Deep Residual Networks 50 (ResNet50): Là kiến trúc mạng nơ-ron tích chập (CNN) sâu 50 lớp, bao gồm 48 lớp Convolution, 1 lớp MaxPool và 1 lớp Average Pool. ResNet giải quyết hiện tượng suy giảm độ dốc (vanishing gradient) khi huấn luyện các mạng nơ-ron có độ sâu lớn thông qua cơ chế kết nối tắt (residual/skip connections).
  • Mô hình Object Detection YOLOv6: Là mô hình phát hiện đối tượng một giai đoạn (one-stage detector). Thuật toán chia ảnh đầu vào thành lưới các ô kích thước $S \times S$, mỗi ô chịu trách nhiệm dự đoán các hộp giới hạn (bounding box), tọa độ vị trí, nhãn đối tượng và xác suất xuất hiện của đối tượng bên trong ô đó.

Phương pháp nghiên cứu và phát triển phần mềm được triển khai theo các kỹ thuật:

  • Phương pháp thu thập và xử lý dữ liệu: Thu thập dữ liệu hình ảnh tiền polymer Việt Nam; sử dụng công cụ LabelImg để gán nhãn bounding box (với nhãn money) phục vụ bài toán Object Detection; sử dụng nền tảng Roboflow để tiền xử lý ảnh (thay đổi kích thước, xoay ảnh, tăng cường dữ liệu) và phân chia tập dữ liệu huấn luyện/kiểm thử.
  • Phương pháp phân tích và thiết kế hệ thống: Sử dụng mô hình ngôn ngữ mô hình hóa thống nhất (UML) để xây dựng sơ đồ trường hợp sử dụng (Use Case Diagram), sơ đồ phân rã chức năng cho từng tác nhân và sơ đồ quan hệ thực thể cơ sở dữ liệu (Database Diagram).
  • Công nghệ và môi trường thực thi:
    • Ngôn ngữ lập trình: Python (xử lý logic, mô hình AI, backend) và Dart (lập trình giao diện).
    • Framework giao diện: Flutter của Google để xây dựng ứng dụng di động đa nền tảng (Android và iOS) từ một cơ sở mã nguồn duy nhất.
    • Máy chủ Backend: Flask App kết nối với hệ quản trị cơ sở dữ liệu quan hệ MySQL.
    • Nền tảng huấn luyện và công cụ phát triển: Google Colab, Google Drive, Visual Studio Code, Android Studio, XAMPP và PuTTY.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình client - server với luồng xử lý phân tách rõ ràng giữa giao diện người dùng và khối xử lý trí tuệ nhân tạo:

Thành phần hệ thống Công nghệ / Công cụ sử dụng Vai trò và chức năng chính
Giao diện Client Flutter, Dart, Android Studio Cung cấp giao diện chụp ảnh qua camera, đăng ký, đăng nhập, hiển thị kết quả đếm tiền sơ bộ và chi tiết.
Máy chủ Dịch vụ Flask App, Python 3.7 Tiếp nhận yêu cầu HTTP/REST từ client, chuyển tiếp ảnh vào pipeline xử lý nơ-ron và trả về kết quả JSON.
Mô hình AI / Xử lý ảnh YOLOv6, ResNet50, Roboflow Trích xuất đặc trưng hình ảnh tờ tiền, định vị vị trí và phân loại mệnh giá tiền tệ Việt Nam Đồng.
Cơ sở dữ liệu MySQL, XAMPP Lưu trữ thông tin tài khoản người dùng, phân quyền truy cập, các gói dịch vụ và lịch sử giao dịch.
Quản trị Máy chủ PuTTY (SSH), Khóa mnrcnsever Kết nối điều khiển và triển khai mã nguồn lên máy chủ từ xa tại địa chỉ Host 52.135.

Quy trình huấn luyện mô hình được triển khai qua hai luồng kỹ thuật:

  1. Huấn luyện phát hiện đối tượng trên Roboflow: Tập dữ liệu gồm 480 tệp ảnh gán nhãn bằng LabelImg được tải lên Roboflow dưới dạng Project Object Detection. Dữ liệu được cấu hình tỷ lệ phân chia mặc định (Train/Valid/Test), áp dụng các bước tiền xử lý kích thước và góc xoay, sau đó kích hoạt tiến trình huấn luyện (Start Train) và kiểm thử trực tiếp trên nền tảng web.
  2. Huấn luyện phân loại ảnh với ResNet50 trên Google Colab: Dữ liệu ảnh được phân loại theo các thư mục tương ứng với từng mệnh giá (ví dụ thư mục 100 cho 100.000 VND, thư mục 50 cho 50.000 VND), lưu trữ trên Google Drive và nạp vào môi trường Google Colab để huấn luyện mô hình nơ-ron tích chập ResNet50.

Hệ thống phân định hai nhóm tác nhân chính qua bảng đặc tả yêu cầu:

  • Tác nhân Admin: Thực hiện đăng nhập quản trị, thiết lập và cập nhật các gói sử dụng của người dùng, quản lý thông tin khách hàng, ngày hết hạn và theo dõi lịch sử giao dịch.
  • Tác nhân Người dùng (User): Thực hiện đăng ký tài khoản, đăng nhập hệ thống, sử dụng camera điện thoại để chụp ảnh tờ tiền, nhận diện mệnh giá và tổng tiền, xem bảng chi tiết số lượng từng tờ tiền và thực hiện tính năng quy đổi ngoại tệ.

Giao diện ứng dụng di động được hoàn thiện với các phân hệ chức năng: màn hình đăng nhập (yêu cầu mã hóa mật khẩu và xác thực cơ sở dữ liệu), màn hình đăng ký tài khoản mới, màn hình kích hoạt camera thu nhận ảnh, màn hình hiển thị tổng quan kết quả nhận dạng và màn hình thống kê chi tiết mệnh giá cùng số tờ tiền được phát hiện.

Nội dung chính theo từng chương

Bố cục cuốn đồ án gồm 43 trang, 5 bảng số liệu, 55 hình vẽ và được tổ chức thành 6 chương:

Chương 1. Tổng quan về đề tài

Chương này trình bày lý do lựa chọn đề tài xuất phát từ nhu cầu thực tiễn trong việc phòng ngừa dịch bệnh qua giao dịch không tiếp xúc và hỗ trợ các đối tượng đặc thù (người khiếm thị, người nước ngoài). Tác giả xác định các mục tiêu cốt lõi về việc xây dựng phần mềm nhận diện đếm tiền, trích xuất dữ liệu ra màn hình và hoàn thiện sản phẩm trên nền tảng di động. Kế hoạch thực hiện đề tài được lập chi tiết từ ngày 29/03/2022 đến ngày 11/07/2022, trải qua 7 giai đoạn từ nghiên cứu tài liệu, thu thập dữ liệu, lập trình thử nghiệm Python, tối ưu độ chính xác đến tích hợp mã nguồn và hoàn thiện báo cáo.

Chương 2. Cơ sở lý thuyết

Nội dung chương tập trung giới thiệu bài toán nhận dạng tiền tệ và phân tích các công nghệ nền tảng. Tác giả phân tích chi tiết về kiến trúc Flutter và ngôn ngữ Dart trong việc phát triển giao diện đa nền tảng thông qua hệ thống widget; đặc điểm ngữ pháp, tính năng xử lý module và các thư viện tính toán khoa học của ngôn ngữ Python; nguyên lý hoạt động của mạng nơ-ron tích chập sâu ResNet50 với các lớp tích chập và cơ chế skip connection; nguyên lý chia lưới $S \times S$ và dự đoán bounding box của mô hình YOLOv6; ưu điểm về tính bảo mật, hiệu năng và khả năng phân phối của hệ quản trị cơ sở dữ liệu MySQL; cùng các tính năng hỗ trợ tiền xử lý và gán nhãn của framework Roboflow.

Chương 3. Phân tích yêu cầu và tập dữ liệu

Chương 3 tiến hành mô hình hóa hệ thống thông qua bảng danh sách tác nhân (Admin, Người dùng), sơ đồ Use Case tổng quát, sơ đồ phân rã Use Case và các bảng đặc tả Use Case chi tiết (Đăng nhập, Đăng ký, Nhận dạng tiền tệ, Quy đổi ngoại tệ, Thêm gói, Quản lý thông tin). Tác giả trình bày sơ đồ cơ sở dữ liệu quan hệ (Database Diagram) để lưu trữ cấu trúc người dùng và hệ thống. Về dữ liệu, chương này mô tả cấu trúc lưu trữ tập dữ liệu hình ảnh phân loại theo từng thư mục mệnh giá, bảng thống kê mẫu dữ liệu (ghi nhận 100 tấm đối với mệnh giá 500.000 VND), và bộ dữ liệu 480 tệp ảnh được tiền xử lý, gán nhãn money bằng công cụ LabelImg cho bài toán nhận dạng vật thể.

Chương 4. Triển khai hệ thống

Chương này mô tả chi tiết quá trình hiện thực hóa phần mềm. Tác giả liệt kê bộ công cụ phát triển bao gồm Visual Studio Code, Android Studio, Python, Dart, Flutter và Flask App Server. Tiếp đó, chương minh họa chi tiết từng bước huấn luyện mô hình phát hiện đối tượng trên Roboflow (tạo dự án, tải dataset, chia tỷ lệ dữ liệu, thiết lập thông số kích thước/xoay ảnh, bắt đầu huấn luyện và kiểm thử giao diện web) và quy trình huấn luyện ResNet50 trên Google Colab qua liên kết Google Drive. Cuối cùng, chương trình bày chi tiết các màn hình giao diện người dùng được xây dựng bằng Flutter: giao diện đăng nhập, giao diện đăng ký, giao diện lấy ảnh từ camera điện thoại, giao diện nhận dạng sơ bộ và giao diện xem chi tiết số lượng tờ tiền theo mệnh giá.

Chương 5. Hướng dẫn cài đặt và sử dụng

Chương 5 cung cấp tài liệu hướng dẫn từng bước cài đặt các môi trường cần thiết để vận hành hệ thống. Tác giả hướng dẫn cài đặt Python phiên bản 3.7 (bản Windows x84-64 executable installer, lưu ý kích hoạt tùy chọn Add Python 3.7 to PATH), cài đặt Android Studio, Visual Studio Code và phần mềm PuTTY phiên bản 64-bit x86. Về phần vận hành, tài liệu hướng dẫn cấu hình máy trạm kết hợp với XAMPP và sử dụng PuTTY nhập Host Name 52.135, nạp khóa xác thực mnrcnsever tại mục Auth để kết nối điều khiển máy chủ backend.

Chương 6. Kết luận

Chương tổng kết lại toàn bộ quá trình thực hiện đồ án, đánh giá các mục tiêu đã hoàn thành về mặt xây dựng mô hình trí tuệ nhân tạo, thiết kế giao diện ứng dụng di động và tích hợp hệ thống máy chủ. Tác giả cũng chỉ ra những hạn chế còn tồn tại do giới hạn về thời gian và kinh nghiệm thực tế của sinh viên, đồng thời đề xuất các hướng phát triển nâng cao cho hệ thống trong tương lai.

Kết quả và đóng góp

Đồ án đã đạt được các kết quả cụ thể theo đúng nội dung được trình bày trong báo cáo:

Hạng mục kết quả Nội dung chi tiết đạt được trong văn bản
Sản phẩm phần mềm 01 ứng dụng di động hoàn chỉnh viết bằng Flutter kết nối máy chủ Flask App và cơ sở dữ liệu MySQL.
Mô hình học sâu Huấn luyện thành công mô hình phân loại ảnh ResNet50 trên Google Colab và mô hình YOLOv6 qua nền tảng Roboflow.
Tập dữ liệu thực nghiệm Xây dựng tập dữ liệu ảnh phân loại theo thư mục mệnh giá (có mẫu 100 ảnh mệnh giá 500.000 VND) và bộ dữ liệu 480 tệp ảnh gán nhãn money bằng LabelImg.
Chức năng hệ thống Thực hiện thành công các luồng nghiệp vụ: Đăng ký, đăng nhập xác thực, thu nhận ảnh từ camera di động, nhận diện mệnh giá, đếm số tờ và tính tổng số tiền chỉ trong vài giây.
Tài liệu kỹ thuật Báo cáo chi tiết gồm 43 trang, 6 chương, 5 bảng số liệu, 55 hình vẽ giao diện và hướng dẫn cài đặt môi trường.

Về giải pháp và kiến nghị, tác giả đề xuất ứng dụng phần mềm vào các hệ thống thanh toán tự động, máy đếm tiền thông minh và các công cụ hỗ trợ người khiếm thị hoặc khách du lịch nước ngoài nhằm rút ngắn thời gian tính toán và hạn chế tiếp xúc trực tiếp trong giao dịch tiền mặt.

Về mặt đóng góp, đồ án đã hiện thực hóa việc kết hợp giữa công nghệ thị giác máy tính hiện đại (mô hình mạng nơ-ron tích chập ResNet50, phát hiện đối tượng YOLOv6) với quy trình phát triển ứng dụng di động đa nền tảng (Flutter). Đồ án cung cấp quy trình chi tiết từ khâu thu thập dữ liệu thực tế, gán nhãn bằng LabelImg, quản lý dataset trên Roboflow, huấn luyện đám mây đến triển khai kết nối client - server qua giao thức mạng.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên phạm vi và nội dung được tác giả ghi nhận trong văn bản, đồ án còn một số điểm hạn chế:

  • Bộ dữ liệu thực nghiệm phục vụ huấn luyện còn có quy mô tương đối nhỏ (bộ dữ liệu phát hiện vật thể mới đạt 480 tệp ảnh, bảng thống kê chi tiết mới ghi nhận mẫu dữ liệu 100 tấm đối với mệnh giá 500.000 VND), chưa bao quát đầy đủ mọi điều kiện môi trường ánh sáng phức tạp hoặc các trường hợp tiền bị nhàu nát, gấp nếp nghiêm trọng.
  • Ứng dụng tập trung vào nhận dạng hình thức tờ tiền thật của đồng tiền Việt Nam, chưa tích hợp các cơ chế chuyên sâu để giám định hay phát hiện tiền giả tinh vi.
  • Một số use case được phân tích trong thiết kế như "Quy đổi ngoại tệ" và "Thêm gói dịch vụ/quản lý thông tin của Admin" mới dừng lại ở mức đặc tả yêu cầu và sơ đồ chức năng, chưa trình bày chi tiết kết quả thực nghiệm trong giao diện.

Hướng nghiên cứu và phát triển tiếp theo được đề xuất bao gồm:

  • Tiếp tục mở rộng và bổ sung tập dữ liệu hình ảnh với số lượng lớn hơn, đa dạng hóa các góc chụp, độ sáng và mở rộng nhận dạng thêm các loại ngoại tệ phổ biến.
  • Tối ưu hóa các thuật toán học sâu để tăng cường độ chính xác và tốc độ xử lý của mô hình, hướng tới việc nhúng trực tiếp mô hình xử lý nhẹ lên thiết bị di động mà không phụ thuộc hoàn toàn vào máy chủ.
  • Hoàn thiện đầy đủ các phân hệ quản trị nâng cao và tính năng quy đổi tỷ giá tiền tệ trực tuyến theo thời gian thực.

Giá trị tham khảo

Báo cáo đồ án tốt nghiệp là tài liệu tham khảo thực tế cho các đối tượng:

  • Sinh viên ngành Công nghệ thông tin, Trí tuệ nhân tạo và Khoa học máy tính: Tham khảo cấu trúc đồ án tốt nghiệp ứng dụng, cách thức viết tài liệu đặc tả yêu cầu phần mềm, xây dựng sơ đồ Use Case và thiết kế cơ sở dữ liệu quan hệ cho các bài toán nhận dạng.
  • Người nghiên cứu và lập trình viên ứng dụng di động / AI: Tham khảo quy trình tích hợp mô hình học sâu (ResNet50, YOLOv6) vào ứng dụng di động Flutter thông qua máy chủ Flask App; phương pháp sử dụng công cụ LabelImg và nền tảng Roboflow trong việc gán nhãn và tiền xử lý dữ liệu ảnh.
  • Phần đáng tham khảo nhất: Quy trình từng bước thiết lập huấn luyện trên Roboflow (Chương 4) và tài liệu hướng dẫn cấu hình môi trường máy trạm, kết nối máy chủ quản trị bằng PuTTY qua SSH Key (Chương 5).

Câu hỏi thường gặp

1. Hệ thống đếm tiền trong đồ án sử dụng các kiến trúc học sâu nào cho bài toán xử lý ảnh? Đồ án sử dụng hai mô hình học sâu: mạng nơ-ron tích chập Deep Residual Networks 50 (ResNet50) gồm 50 lớp để phân loại đặc trưng hình ảnh tờ tiền, và mô hình Object Detection YOLOv6 dựa trên cơ chế chia lưới $S \times S$ để định vị hộp giới hạn và nhận dạng vật thể.

2. Ứng dụng được xây dựng trên những ngôn ngữ và framework công nghệ nào? Ứng dụng phía người dùng (client) được viết bằng ngôn ngữ Dart trên nền tảng framework Flutter của Google để hỗ trợ đa nền tảng. Phía máy chủ xử lý logic và mô hình trí tuệ nhân tạo được xây dựng bằng ngôn ngữ Python với framework Flask App, kết nối cơ sở dữ liệu MySQL.

3. Quy mô tập dữ liệu gán nhãn cho bài toán phát hiện đối tượng trong đồ án là bao nhiêu? Tập dữ liệu phục vụ nhận dạng đối tượng (Object Detection) gồm 480 tệp ảnh được tiền xử lý và gán nhãn bounding box với nhãn money thông qua phần mềm chuyên dụng LabelImg trước khi tải lên Roboflow.

4. Hai nhóm tác nhân trong hệ thống được phân quyền thực hiện những chức năng nào? Tác nhân Admin có quyền đăng nhập quản trị, phân quyền, thêm các gói sử dụng, quản lý thông tin khách hàng, ngày hết hạn gói và theo dõi lịch sử giao dịch. Tác nhân Người dùng có quyền đăng ký, đăng nhập, chụp ảnh tiền từ camera, xem kết quả nhận dạng tổng tiền, xem chi tiết số tờ theo từng mệnh giá và quy đổi ngoại tệ.

5. Việc kết nối và triển khai máy chủ backend được thực hiện qua công cụ và thông số nào? Hệ thống sử dụng phần mềm PuTTY (phiên bản 64-bit x86) để kết nối máy chủ từ xa thông qua giao thức SSH với thông số Host Name 52.135 và nạp tệp khóa riêng tư xác thực mnrcnsever tại mục cấu hình Authentication.

Kết luận

Đồ án tốt nghiệp "Hệ thống đếm tiền Việt Nam đồng" của sinh viên Võ Thanh Hưng đã giải quyết bài toán tự động hóa nhận dạng và đếm tiền mặt dựa trên kỹ thuật thị giác máy tính và học sâu. Đề tài đã xây dựng thành công ứng dụng di động đa nền tảng bằng Flutter, tích hợp máy chủ Flask và các mô hình mạng nơ-ron ResNet50 cùng YOLOv6 để trích xuất mệnh giá và số lượng tiền tệ từ hình ảnh camera. Mặc dù quy mô tập dữ liệu thực nghiệm còn cần tiếp tục mở rộng, đồ án đã hoàn thành trọn vẹn quy trình phân tích, thiết kế, huấn luyện mô hình và triển khai một giải pháp công nghệ thông tin có tính ứng dụng thực tế.