TÓM TẮT Bài toán này trình bày một phương pháp sử dụng luồng hình ảnh từ camera để tạo ra chú thích bằng ngôn ngữ tự nhiên trong thời gian thực.. Động lực nghiên cứu chính trong đồ án nà
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
GIẢNG VIÊN HƯỚNG DẪN
TS NGUYỄN TẤN TRẦN MINH KHANG
Trang 21.4 Mục tiêu và phạm vi nghiên cứu 3
Trang 4PHỤ LỤC 27
Trang 5DANH MỤC HÌNH
Hình 1 Đầu vào và đầu ra của bài toán 3
Hình 2 Ví dụ về mô hình sinh câu mô tả cho hình ảnh 5
Hình 3 Sơ đồ minh họa kiến trúc mô hình [3] 6
Hình 4 Flutter 8
Hình 5 Visual Studio Code 9
Hình 6 Sơ đồ Activity 15
Hình 7 Kiến trúc server 16
Hình 8 Class diagram 17
Hình 9 Firestore Database 18
Hình 10 Storage 19
Hình 11 Home & Live Camera Screen 20
Hình 12 Result Display & History Screen 21
Hình 13 About App Screen 22
Trang 6DANH MỤC BẢNG
Trang 7DANH MỤC TỪ VIẾT TẮT
Từ viết tắt Từ nguyên gốc
Trang 8TÓM TẮT
Bài toán này trình bày một phương pháp sử dụng luồng hình ảnh từ camera để tạo ra chú thích bằng ngôn ngữ tự nhiên trong thời gian thực Trong dự án này, chúng tôi sẽ tạo một ứng dụng camera sử dụng một mô hình được đào tạo trước tùy chỉnh lưu trữ trên thiết bị Chúng tôi sử dụng bộ dữ liệu Microsoft COCO gồm 330,000 ảnh với hơn 200,000 ảnh được gán nhãn Mô hình này sử dụng mạng nơ-ron tích chập sâu (CNN) và mạng nơ-ron ngắn hạn dài (LSTM) cho việc tạo ra các chú thích
Trang 9… đồng thời cũng giảm thiểu sự phụ thuộc vào con người trong quá trình tạo ra các chú thích trực tiếp Ví dụ như trong lĩnh vực an ninh, camera sẽ liên tục thu vào dữ liệu và ứng dụng sẽ đưa ra các dòng chú thích trực tiếp từ nguồn dữ liệu đó nhằm cung cấp thông tin cho nhân viên an ninh
Cuối cùng, nghiên cứu này có thể mở ra các khả năng mới cho ứng dụng của trí tuệ nhân tạo và học sâu trong việc xử lý dữ liệu thời gian thực Nó có thể dẫn đến những tiến bộ đáng kể trong các lĩnh vực khác như phân tích ngôn ngữ tự động, xử lý âm thanh, và ứng dụng trí tuệ nhân tạo khác
Đầu vào của bài toán là nguồn dữ liệu trực tiếp từ máy quay của điện thoại, đầu ra là những dòng chú thích miêu tả khung cảnh đó
Trang 101 Ly chứa cà phê
2 Ly được đặt trên bàn
3 Chiếc thìa được để trên bàn
Hình 1 Đầu vào và đầu ra của bài toán
Thách thức về thời gian thực: Các ứng dụng trực tiếp yêu cầu kết quả được tạo ra ngay lập tức, do đó, các hệ thống phải xử lý dữ liệu và tạo ra chú thích trong thời gian gần như thực sự Điều này đòi hỏi các giải pháp có thể đáp ứng được yêu cầu về tốc
độ xử lý
Thách thức về phân tích hình ảnh: Các giải pháp phân tích hình ảnh cần phải đối mặt với nhiều thách thức khác nhau, bao gồm ánh sáng yếu, chất lượng hình ảnh kém, nhiễu hình ảnh và các cảnh quay phức tạp Ứng dụng phải được thiết kế để có khả năng phân tích và xử lý các điều kiện khác nhau để đảm bảo chất lượng chú thích cao
Thách thức về việc tích hợp các công nghệ mới: Các giải pháp tốt nhất trong việc tạo
ra chú thích trực tiếp từ nguồn dữ liệu máy quay sử dụng các công nghệ tiên tiến như học sâu, học máy và xử lý ngôn ngữ tự nhiên Do đó, ứng dụng cần phải tích hợp các công nghệ này để đảm bảo tính khả dụng và nâng cao trải nghiệm người dùng
- Mục tiêu: xây dựng thành thành công ứng dụng di động tích hợp mô hình “Tạo chú thích trực tiếp từ nguồn dữ liệu máy quay”
Trang 11- Phạm vi: sử dụng model đã được huấn luyện trước đó Đưa ra chú thích trực tiếp cho nguồn dữ liệu từ máy quay
Nghiên cứu sẽ giúp ích rất nhiều cho những người khiếm thính hoặc gặp khó khăn với nghe trong việc truy cập các thông tin từ video trực tiếp Ngoài ra, nghiên cứu còn hữu ích trong rất nhiều các lĩnh vực đời sống như giáo dục, an ninh, truyền thông,
… đồng thời cũng đóng góp vào các nghiên cứu liên quan đến học sâu, xử lý ngôn ngữ tự nhiên và phân tích hình ảnh Các công trình nghiên cứu có thể giúp tăng cường kiến thức và kỹ năng của cộng đồng nghiên cứu về các công nghệ mới trong lĩnh vực này
Phần còn lại của báo cáo được trình bày theo bố cục như sau:
CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT
CHƯƠNG 3 – PHÂN TÍCH THIẾT KẾ HỆ THỐNG
CHƯƠNG 4 – CÀI ĐẶT ỨNG DỤNG
CHƯƠNG 5 – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trang 12Chương 2 CƠ SỞ LÝ THUYẾT
- Tên bộ dữ liệu: Microsoft COCO
- Tổng quan bộ dữ liệu: Bộ dữ liệu là một bộ dữ liệu phổ biến được sử dụng trong rất nhiều các bài toán hiện nay vì số lượng ảnh lớn và tính đa dạng của bộ
dữ liệu Bộ dữ liệu bao gồm 330,000 ảnh với hơn 200,000 ảnh đã được gán nhãn, trong đó bao gồm 1,5 triệu trường hợp đối tượng, 80 danh mục đối tượng và 91 danh mục vật thể Mỗi ảnh dùng trong huấn luyện và đánh giá sẽ có 5 caption độc lập với nhau được cung cấp bởi con người [1]
Mô hình Image Caption Generator tạo ra các chú thích mô tả nội dung của các hình ảnh trong Bộ dữ liệu COCO Mô hình bao gồm một encoder model (một mạng tích chập sâu sử dụng kiến trúc Inception-v3 được huấn luyện trên dữ liệu ImageNet-2012) và một decoder model (một mạng lưới LSTM được huấn luyện dựa trên mã hóa từ mô hình mã hóa hình ảnh) Đầu vào của mô hình là một hình ảnh, và đầu ra là một câu mô tả nội dung của hình ảnh Mô hình này được xây dựng dựa trên mô hình Show and Tell Image Caption Generator
- Ví dụ minh họa:
Hình 2 Ví dụ về mô hình sinh câu mô tả cho hình ảnh
Kiến trúc mô hình:
Trang 13Mô hình Show and Tell là một ví dụ về encoder-decoder neural network Nó hoạt động bằng cách "mã hóa" một hình ảnh thành một biểu diễn vector có độ dài cố định, và sau đó "giải mã" biểu diễn thành một mô tả ngôn ngữ tự nhiên [2]
Bộ mã hóa hình ảnh là một mạng nơ-ron tích chập sâu Loại mạng này được sử dụng rộng rãi cho các nhiệm vụ hình ảnh và trong thời điểm mô hình Show and Tell ra mắt thì đây là một công nghệ tiên tiến nhất để nhận dạng và phát hiện đối tượng Loại được chọn ở đây cụ thể là mô hình nhận dạng hình ảnh Inception v3 được huấn luyện trước trên tập dữ liệu phân loại hình ảnh ILSVRC-2012-CLS [2]
Bộ giải mã là mạng bộ nhớ ngắn hạn dài (LSTM) Loại mạng này thường được sử dụng cho các nhiệm vụ mô hình chuỗi như mô hình ngôn ngữ và dịch máy Trong
mô hình Show and Tell, mạng LSTM được huấn luyện như một mô hình ngôn ngữ dựa trên mã hóa hình ảnh
Các từ trong các chú thích được biểu diễn bằng một mô hình nhúng Mỗi từ trong kho từ vựng được liên kết với một biểu diễn vector có độ dài cố định mà đã được học trong quá trình huấn luyện
Hình 3 Sơ đồ minh họa kiến trúc mô hình [3]
Trong biểu đồ này, {s0, s1, , sN-1} là các từ trong chú thích và {wes0, wes1, , wesN-1} là các vectơ nhúng tương ứng của chúng Các đầu ra {p1, p2, , pN} của
Trang 14LSTM là phân bố xác suất được tạo ra bởi mô hình cho từ tiếp theo trong câu Các {log p1(s1), log p2(s2), , log pN(sN)} là log-likelihood của từ chính xác ở mỗi bước Tổng của các log này là mục tiêu tối thiểu hóa của mô hình [2]
Trong giai đoạn đầu tiên của việc huấn luyện, các tham số của mô hình Inception v3 được giữ cố định: đó chỉ đơn giản là một chức năng mã hóa hình ảnh tĩnh Một lớp có thể được huấn luyện được thêm vào đầu mô hình Inception v3 để biến đổi vectơ nhúng hình ảnh thành không gian vectơ nhúng từ Mô hình được huấn luyện liên quan đến các tham số của nhúng từ, các tham số của lớp trên cùng của Inception v3 và các tham số của LSTM Trong giai đoạn thứ hai của việc huấn luyện, tất cả các tham số (bao gồm cả các tham số của Inception v3) được huấn luyện để điều chỉnh cùng nhau mã hóa hình ảnh và LSTM [2]
Cho mô hình được huấn luyện và một hình ảnh, sử dụng thuật toán beam search
để tạo ra các chú thích cho hình ảnh đó Các chú thích được tạo ra từng từ một, trong đó tại mỗi bước t, sử dụng tập các câu đã đã được tạo với chiều dài t - 1 để tạo ra một tập các câu mới với chiều dài t Chúng tôi chỉ giữ lại top k ứng viên tại mỗi bước, trong đó tham số siêu k này được gọi là kích thước của dải (beam size) Chúng tôi đã tìm thấy hiệu suất tốt nhất với k = 3 [2]
Flutter là một bộ công cụ phát triển giao diện người dùng (UI) mã nguồn mở được tạo ra bởi Google giúp xây dựng ứng dụng đa nền tảng Với Flutter, nhà phát triển có thể viết code bằng ngôn ngữ lập trình Dart và triển khai trên nhiều nền tảng khác nhau, bao gồm di động, web và máy tính để bàn Ứng dụng Flutter cung cấp hiệu suất nhanh nhờ vào bộ công cụ xây dựng hình ảnh Skia và cung cấp giao diện người dùng tùy chỉnh với một bộ tiện ích phong phú Tính năng hot reload cho phép thay đổi mã nguồn ngay lập tức và cập nhật ứng dụng trong thời gian thực Flutter tích hợp tốt với các tính năng gốc của các nền tảng và có một
Trang 15cộng đồng mã nguồn mở có thể trợ, làm cho nó trở thành lựa chọn phổ biến cho các nhà phát triển muốn phát triển ứng dụng hiệu quả và hấp dẫn về mặt thị giác
Hình 4 Flutter
Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn được phát triển bởi Microsoft Nó cung cấp một trải nghiệm viết mã mượt mà trên các nền tảng
và ngôn ngữ lập trình khác nhau Với hệ sinh thái mở rộng phong phú, giao diện trực quan, tích hợp kiểm soát phiên bản, khả năng gỡ lỗi, tự động hóa nhiệm vụ
và tính năng cộng tác trực tiếp, VS Code mang đến cho nhà phát triển môi trường linh hoạt và hiệu quả cho việc viết mã Nó có khả năng tùy chỉnh cao, tối ưu hóa hiệu suất và đã trở nên phổ biến trong cộng đồng nhà phát triển nhờ tính đa năng và trải nghiệm thân thiện với người dùng
Trang 16Hình 5 Visual Studio Code
Trang 17Chương 3 PHÂN TÍCH THIẾT KẾ HỆ THỐNG
3.1.1 Mục đích khảo sát hiện trạng
Mục đích của phần khảo sát hiện trạng là để xác định tình hình và tiến độ của các nghiên cứu, ứng dụng và công trình liên quan đến việc sinh câu mô tả cho bức ảnh Bằng cách tiến hành khảo sát này, chúng ta có thể hiểu rõ hơn về các phương pháp, thách thức và tiềm năng trong lĩnh vực này, từ đó định hình hướng phát triển cho hệ thống của dự án
3.1.2 Hiện trạng hiện nay
Trong thời gian gần đây, việc nghiên cứu và phát triển các phương pháp tự động sinh câu mô tả cho bức ảnh đã thu hút sự quan tâm đáng kể từ cộng đồng nghiên cứu trong lĩnh vực Trí tuệ nhân tạo và xử lý ngôn ngữ tự nhiên Dưới đây là một
số điểm quan trọng trong thực trạng hiện nay:
- Phát triển mô hình học sâu: Các mô hình học sâu, đặc biệt là mạng nơ-ron
đệ quy (RNN) và mạng nơ-ron biến thể (LSTM, GRU), đã được áp dụng để tạo ra các câu mô tả cho ảnh Các mô hình này học cách ánh xạ từ dữ liệu ảnh sang ngôn ngữ tự nhiên
- Ứng dụng trong dịch thuật tự động: Việc sinh câu mô tả ảnh có thể hỗ trợ việc dịch thuật bằng cách tạo ra các mô tả tiếng mục tiêu cho ảnh nguồn
- Thách thức về hiểu biết ngữ nghĩa: Mô hình vẫn gặp khó khăn trong việc hiểu sâu hơn về ngữ nghĩa của hình ảnh và tạo ra các mô tả phản ánh mặt sâu của nội dung
- Các ứng dụng thực tế: Các ứng dụng thực tế của sinh câu mô tả ảnh bao gồm hỗ trợ người khiếm thị, nội dung đa phương tiện trên mạng xã hội,
và dịch thuật tự động
Trang 18- Các thách thức trong đánh giá chất lượng: Để đánh giá chất lượng của mô hình sinh câu mô tả ảnh vẫn là một vấn đề phức tạp, bởi vì không có một tiêu chuẩn đánh giá duy nhất
3 Chụp ảnh mới Người dùng chụp ảnh mới bằng
camera của thiết bị
4 Xem câu mô tả ảnh Người dùng có thể xem câu mô tả
Trang 19Luồng chính:
1 Sau khi chọn chức năng này, hệ thống sẽ hiển thị hình ảnh trực tiếp từ camera của thiết bị, người dùng có thể xoay camera tuỳ ý
2 Ứng dụng sẽ hiển thị câu mô tả ảnh cho đầu vào từ camera và tiến hành
dự đoán câu mô tả cho ảnh
Luồng thay thế: Không có luồng thay thế
Camera Roll:
Mô tả: Người dùng chọn ảnh từ thư viện ảnh của thiết bị
Luồng chính:
1 Người dùng chọn tùy chọn “Camera roll”
2 Ứng dụng mở thư viện ảnh của người dùng để cho phép họ duyệt qua các ảnh có sẵn
3 Người dùng chọn ảnh mà họ muốn sinh câu mô tả
4 Ứng dụng xác nhận việc chọn ảnh và hiển thị ảnh được chọn trong giao diện ứng dụng và gửi yêu cầu lên server để tiến hành xử lý
5 Sau khi server xử lý xong sẽ trả về kết quả (các câu mô tả tương ứng với ảnh) cho người dùng và hiển thị kết quả lên giao diện ứng dụng
6 Ứng dụng sẽ tự động lưu ảnh và các câu mô tả tương ứng vào database thông qua Firebase
Luồng thay thế:
1 Trong bước 3 của luồng chính, người dùng có thể huỷ bỏ việc chọn ảnh
2 Ứng dụng đóng thư viện ảnh và không thực hiện việc chọn ảnh
- Nếu xảy ra lỗi trong quá trình gửi ảnh:
1 Server sẽ trả về một thông báo “Something wrong, do you want to try again?”,
2 Nếu người dùng chọn nút “Go back”, ứng dụng sẽ quay lại màn hình Home
Trang 203 Nếu người dùng chọn nút “Try again”, ứng dụng sẽ gửi lại yêu cầu đó lên server để xử lý và trả về kết quả cho người dùng
Take a photo:
Mô tả: Người dùng chụp một bức ảnh mới bằng camera của thiết bị
Luồng chính:
1 Người dùng chọn tùy chọn “Take a Photo”
2 Hệ thống kích hoạt máy ảnh trước hoặc sau của thiết bị, hiển thị hình ảnh trực tiếp trong giao diện ứng dụng
1 Trong bước 3 của luồng chính, người dùng có thể huỷ bỏ việc chụp ảnh
2 Hệ thống tắt máy ảnh và không thực hiện việc chụp ảnh
- Nếu xảy ra lỗi trong quá trình gửi ảnh:
1 Server sẽ trả về một thông báo “Something wrong, do you want to try again?”,
2 Nếu người dùng chọn nút “Go back”, ứng dụng sẽ quay lại màn hình Home
3 Nếu người dùng chọn nút “Try again”, ứng dụng sẽ gửi lại yêu cầu đó lên server để xử lý và trả về kết quả cho người dùng
Trang 212 Chọn một ảnh muốn hiển thị xem lại kết quả
3 Firebase nhận yêu cầu từ ứng dụng và dựa vào id của thiết bị để tìm id kết quả trùng khớp với yêu cầu
4 Gửi lại kết quả đã lưu trên database về cho người dùng và hiển thị lên màn hình giao diện
Luồng thay thế: Không có luồng thay thế
Trang 223.2.4 Sơ đồ activity
Hình 6 Sơ đồ Activity
Hệ thống sử dụng đồng thời hai server để tiến hành xử lý yêu cầu người dùng và lưu cơ sở dữ liệu cho ứng dụng Trong đó, server chính chứa mô hình máy học
đã được huấn luyện trước và server thứ hai chứa cơ sở dữ liệu của hệ thống
Trang 23Hình 7 Kiến trúc server
3.3.1 Deploy
- Server MAX Image Caption Generator được deploy trên nền tảng Google Cloud Run Google Cloud Run là một môi trường quản lý máy chủ của Google dành cho triển khai và phát triển trên những serverless HTTP containers mà không cần lo lắng về việc cung cấp machines, cấu hình cluster hoặc autoscaling
- Server thứ hai là Firebase, một nền tảng giúp phát triển các ứng dụng di động trong web Bên cạnh đó, Firebase còn được hiểu là một dịch vụ cơ
sở dữ liệu hoạt động trên nền tảng đám mây cloud với hệ thống máy chủ mạnh mẽ của Google
3.3.2 Chức năng
- MAX Image Caption Generator là server chính của hệ thống Server có nhiệm vụ tiếp nhận dữ liệu đầu vào (dữ liệu dạng ảnh) dưới dạng các yêu cầu (request) được gửi từ phía người dùng sau đó đưa qua mô hình máy học đã được huấn luyện trước để xử lý và cuối cùng trả về cho người dùng kết quả dự đoán (response) là các dòng mô tả tương ứng với dữ liệu nhận vào
Trang 24- Firebase có nhiệm vụ lưu trữ kết quả vào database sau khi server chính gửi phản hồi thành công về cho người dùng Sau khi nhận được kết quả trả về từ server chính, ứng dụng sẽ tự động gửi yêu cầu lưu trữ kết quả bao gồm ảnh và các dòng mô tả tương ứng kèm theo Device ID để xác định
dữ liệu lưu trữ thuộc thiết bị nào Sau đó Firebase thực hiện lưu trữ dữ liệu được yêu cầu và trả về kết quả hiển thị trong màn hình History
+ id: Định danh duy nhất cho dự đoán
+ imageUrl: Đường dẫn của hình ảnh được sử dụng cho dự đoán
+ predicts: Dữ liệu dự đoán được tạo ra
+ time: Thời điểm khi dự đoán được thực hiện
Hình 8 Class diagram
- Firestore Database: được thiết kế để lưu trữ và đồng bộ dữ liệu thời gian thực giữa các ứng dụng web và di động Dựa trên mô hình tài liệu (document-oriented), Firestore hỗ trợ lưu trữ dữ liệu dưới dạng các tài liệu (documents) trong các bộ sưu tập (collections) Hình dưới là tổ chức
dữ liệu của class diagram ở trên firestore