Ứng dụng nhận diện vật thể và tra cứu từ vựng thông qua hình ảnh

Đề tài “Ứng dụng học từ vựng từ ảnh” được phát triển nhằm cung cấp một công cụ hỗ trợ học ngôn ngữ hiện đại và hiệu quả, tận dụng tối đa lợi thế của công nghệ xử lý ảnh và dịch thuật tự động. Ứng dụng tập trung vào việc biến các vật thể và văn bản trong môi trường thực tế thành nguồn tài nguyên học tập phong phú, giúp người dùng tiếp cận từ vựng một cách trực quan và tương tác.

TÁC GIẢ

Võ Gia Kiệt

GIẢNG VIÊN HƯỚNG DẪN

NGÀNH

Năm:

Tổng quan

Trong bối cảnh công nghệ số phát triển mạnh mẽ, các phương pháp học ngôn ngữ trực quan và tương tác ngày càng được ưu tiên. Nhận thấy tiềm năng lớn của việc tích hợp công nghệ xử lý ảnh (như nhận diện văn bản và vật thể) với dịch vụ dịch thuật tự động và lưu trữ dữ liệu người dùng, em đã quyết định lựa chọn đề tài xây dựng một ứng dụng học từ vựng từ các hình ảnh.

Đề tài này không chỉ hứa hẹn nâng cao hiệu quả học tập thông qua hình ảnh thực tế mà còn tạo cơ hội để em tiếp cận và vận dụng các kiến thức đã học vào giải quyết một bài toán cụ thể trong lĩnh vực công nghệ thông tin. Đặc biệt, việc tích hợp nhiều công nghệ và dịch vụ như Firestore, dịch vụ lưu trữ ảnh bên ngoài (Cloudinary), nhận diện văn bản (OCR) và lập trình giao diện bằng Flutter sẽ giúp em rèn luyện kỹ năng tổng hợp và tư duy hệ thống.

Em tin rằng đề tài này không chỉ có ý nghĩa trong khuôn khổ học phần mà còn có thể phát triển thành một ứng dụng thực tế, hữu ích, hỗ trợ hiệu quả cho người học ngoại ngữ. Hơn hết, đây là lần đầu tiếp cận và sử dụng Flutter cùng với việc tích hợp mobile app với mô hình học máy. Do đó, em rất mong nhận được sự góp ý và đánh giá để đề tài này được triển khai một cách tốt nhất.

Mục tiêu của đề tài

Mục tiêu chính của đề tài là xây dựng một ứng dụng hoạt động ổn định và hiệu quả, đáp ứng các yêu cầu kỹ thuật và trải nghiệm người dùng, cụ thể:

  • Nhận diện được các vật thể: Đảm bảo khả năng nhận diện chính xác các vật thể trong ảnh đầu vào, là nền tảng cho việc trích xuất từ vựng liên quan.
  • Nhận diện được chữ viết: Phát triển chức năng nhận diện ký tự quang học (OCR) để trích xuất văn bản từ ảnh một cách hiệu quả, không phụ thuộc vào phông chữ hay định dạng.
  • Lấy label của các vật thể và các chữ đã được tách riêng lẻ để tiến hành dịch thuật: Hoàn thiện quy trình xử lý từ hình ảnh đến việc tách biệt các đối tượng (vật thể và chữ viết), thu thập các “label” (tên gọi, nội dung) của chúng để sau đó chuyển giao cho module dịch thuật, đảm bảo thông tin được dịch chính xác và đầy đủ.

Chức năng chính của ứng dụng

Ứng dụng được thiết kế với các chức năng cốt lõi sau để đảm bảo trải nghiệm học tập toàn diện và thuận tiện cho người dùng:

  • Đăng nhập / Đăng ký: Cho phép người dùng tạo tài khoản và quản lý thông tin cá nhân, đảm bảo an toàn dữ liệu và cá nhân hóa trải nghiệm học tập.
  • Chụp / Tải ảnh: Cung cấp khả năng chụp ảnh trực tiếp từ camera hoặc tải ảnh có sẵn từ thư viện thiết bị, làm nguồn dữ liệu đầu vào cho quá trình nhận diện và dịch thuật.
  • Nhận diện vật thể và chữ viết: Tích hợp công nghệ nhận diện hình ảnh tiên tiến để xác định các vật thể và trích xuất văn bản có trong ảnh, làm cơ sở cho việc dịch và học từ vựng.
  • Lưu các từ đã dịch thành công: Cho phép người dùng lưu trữ các từ vựng đã được dịch, tạo thành kho từ vựng cá nhân để ôn tập và luyện tập sau này.
  • Thêm/ xóa/ sửa các danh sách hoặc từ vựng: Cung cấp công cụ quản lý linh hoạt, cho phép người dùng tự tạo, chỉnh sửa hoặc xóa các danh sách từ vựng và từng từ cụ thể theo nhu cầu học tập của mình.
  • Xem lịch sử hoạt động: Ghi lại các hoạt động của người dùng như các từ đã tra cứu, đã dịch, giúp người dùng dễ dàng theo dõi tiến độ học tập và ôn lại các từ đã gặp.

Demo

link github

link video demo.

User cases và Flow app

image 29
image 30

Các chức năng đã thực hiện

Nhận diện vật thể

Sau khi người dùng chụp ảnh hoặc tải ảnh thì ảnh sẽ bắt đầu được phân tích, đầu tiên sẽ đi qua Yolov5s và trả về kết quả sau:

image 31

Thực hiện hóa:

  • Clone mô hình yolov5s từ nguồn https://github.com/ultralytics/yolov5.git và làm theo hướng dẫn từ nguồn https://github.com/zldrobit/yolov5 để chuyển đổi định dạng sang .tflite
  • Người dùng chụp/ tải ảnh gốc.
  • Yolov5s hoạt động: Tạo riêng class YoloModel để quản lí hoạt động của mô hình yolov5s
    o Hàm _preProcess: Tiền xử lí ảnh: resize cho chuẩn kích thước mà yolov5s có thể phân tích – thường là 640×640, chuyển sang dạng Float32, chuẩn hóa RGB theo kênh.
    o Hàm _postProcess: Hậu xử lí ảnh: lọc các vật thể có độ nhận diện thấp, scale về tọa độ ảnh gốc để phù hợp với thiết bị đang tải ảnh xử lí.
    o Hàm _calculateIoU: Tính tỷ lệ chồng lặp giữa 2 bounding box.
    o Hàm _nonMaxSuppression: Loại bỏ các khung chồng lặp (có IoU được tính từ hàm _calculateIoU lớn hơn ngưỡng – bị chồng lặp).
    o Hàm runOnImage: Chạy _preProcess để định dạng lại ảnh sau đó tiến hành nhận diện, tiếp đến gửi danh sách nhận diện đến _postProcess để xử lí lọc confidence và scale lại ảnh về tọa độ gốc.
  • Hàm _processImage trong home_process(hàm xử lí ảnh trước khi đưa lên screen):
    o OCR: Đây là phần xử lí đầu trong hàm vì không phải phân tích lại hình ảnh(lúc em chạy thử với ảnh gốc thì không hề gây lỗi từ máy vật lí đến máy ảo và chỉ cần phân tích lại các văn bản được nhận diện ví dụ tách riêng lẻ từng từ đơn).
    o Đọc ảnh gốc: Kiểm tra ảnh có hợp lệ hoặc đúng kích thước – tải ảnh lên thành công hay chưa, đồng thời lưu giữ lại ảnh gốc để trả lên giao diện.
    o Yolov5s: Chạy hàm runOnImage để lấy danh sách các vật thể nhận diện, sau đó tách lấy các label. Tiến đến, vẽ các bouding box kèm label cùng confidence trên ảnh.
    o Set list: lấy các label nhận diện được từ phiên làm việc của Yolov5s và các từ nhận diện được từ OCR tạo thành danh sách để tiến hành đi phân tích bởi hàm analyzeWords.
    o Hàm analyzeWords: Đầu tiên sẽ kiểm tra và loại các từ thuộc dạng không dịch được như a, an, the,… sau đó dịch từng từ trong danh sách và trả kết quả là một map có value là từ Tiếng Anh và key là nghĩa Tiếng Việt.

Nhận diện chữ viết

image 32

Dịch thuật

image 33

Lưu trữ từ vựng

image 34

Kết luận

Qua quá trình xây dựng và phát triển ứng dụng “Nhận diện vật thể và tra cứu từ vựng thông quahình ảnh”, em đã đạt được những kết quả nhất định trong việc hiện thực hóa các ý tưởng ban đầu, tạo ra một công cụ hỗ trợ học ngôn ngữ trực quan và tương tác. Tuy nhiên, bên cạnh những kết quả đạt được, em cũng nhận thấy một số hạn chế cần được cải thiện trong các phiên bản tiếp theo.

Nhược điểm của ứng dụng

  • Nhận diện vật thể: Khả năng nhận diện vật thể của ứng dụng hiện tại còn có những hạn chế nhất định về độ chính xác và phạm vi các đối tượng có thể nhận diện. Điều này có thể ảnh hưởng đến khả năng trích xuất từ vựng phù hợp từ hình ảnh.
  • Nhận diện chữ viết: Quá trình ngắt chữ và trích xuất văn bản từ hình ảnh (OCR) đôi khi còn mắc phải sai sót, đặc biệt với các phông chữ phức tạp hoặc điều kiện ánh sáng không lý tưởng.
  • Hạn chế dịch thuật: Do việc sử dụng từ điển cục bộ (local dictionary.txt) thay vì các API dịch thuật mạnh mẽ hơn, khả năng dịch thuật của ứng dụng còn bị hạn chế về độ phong phú của từ vựng và khả năng xử lý các ngữ cảnh phức tạp.

Hướng phát triển

    • Xây dựng riêng một Backend Server để tự quản lí.
    • Nhận diện vật thể: Tiếp tục nghiên cứu và áp dụng các mô hình học sâu tiên tiến hơn hoặc tinh chỉnh mô hình Yolov5s để cải thiện độ chính xác và khả năng nhận diện đa dạng các loại vật thể trong nhiều điều kiện khác nhau.
    • Nhận diện chữ viết: Rà soát và cải tiến lại thuật toán ngắt chữ cũng như tối ưu hóa các tham số của Google ML Kit Text Recognition để giảm thiểu sai sót và nâng cao hiệu quả trích xuất văn bản.
    • Dịch thuật: Ưu tiên thay đổi và tích hợp các API dịch thuật chuyên nghiệp (nếu có thể giải quyết được vấn đề về chi phí hoặc tìm được dịch vụ miễn phí ổn định) để đảm bảo độ chính xác cao hơn, đồng thời bổ sung thêm các tính năng như phiên âm và loại từ (danh từ, động từ, tính từ…) cho từ vựng được dịch.
    • Phát triển khả năng học từ vựng bằng các minigame: Tích hợp các trò chơi nhỏ (minigame) như nối từ, flashcard, hoặc các hoạt động tương tác khác để biến quá trình học từ vựng trở nên thú vị và hiệu quả hơn, giúp người dùng ghi nhớ từ lâu hơn.
    • Tính năng thêm lại từ vựng đã xóa: Bổ sung tính năng cho phép người dùng khôi phục các từ vựng đã lỡ xóa, tránh mất mát dữ liệu và tăng tính tiện ích cho việc quản lý từ vựng cá nhân.