1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu chú thích ảnh tự động sử dụng học sâu và viết ứng dụng minh họa

165 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Chú Thích Ảnh Tự Động Sử Dụng Học Sâu Và Viết Ứng Dụng Minh Họa
Tác giả Nguyễn Lê Bảo Thanh, Huỳnh Nguyễn Tấn Nhạc
Người hướng dẫn TS. Trần Nhật Quang
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2023
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 165
Dung lượng 9,58 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI (16)
    • 1. Lý do chọn đề tài (16)
    • 2. Mục tiêu và đóng góp (0)
      • 2.1. Mục tiêu (16)
      • 2.2. Đóng góp (17)
    • 3. Lộ trình thực hiện và các công việc liên quan (0)
  • CHƯƠNG 2: TÌM HIỂU VỀ LÝ THUYẾT (20)
    • 1. Lý thuyết chung (20)
      • 1.1. Ngôn ngữ lập trình Python (20)
        • 1.1.1. Python là gì? (20)
        • 1.1.2. Cú pháp trong Python (21)
        • 1.1.3. Kiểu dữ liệu (22)
      • 1.2. AI (Artificial Intelligence) (22)
        • 1.2.1. AI (Artificial Intelligence) là gì? (22)
        • 1.2.2. Một số ứng dụng AI (23)
      • 1.3. Machine Learning (23)
        • 1.3.1. Machine Learning là gì? (23)
        • 1.3.2. Mục tiêu của Machine Learning? (24)
        • 1.3.3. Các phương pháp Machine Learning (24)
      • 1.4. Deep Learning [1] (24)
        • 1.4.1. Deep Learning (học sâu) là gì? (24)
        • 1.4.2. Lịch sử phát triển của học sâu? (25)
        • 1.4.3. Các kiến trúc của học sâu (27)
        • 1.4.4. Các ứng dụng của học sâu (29)
    • 2. Image Captionings (29)
      • 2.3. Các kiến trúc (30)
      • 2.4. Ứng dụng (30)
  • CHƯƠNG 3: PHÂN TÍCH DỮ LIỆU (31)
    • 1. The Flickr8k [2] (31)
    • 2. The Flickr30k [3] (33)
    • 3. The MS COCO (Microsoft Common Objects in Context) [4] (34)
  • CHƯƠNG 4: PHƯƠNG PHÁP HỌC (36)
    • 1. Cở sở lý thuyết (36)
      • 1.1. Giới thiệu bài toán (0)
      • 1.2. Kiến thức nền tảng (44)
        • 1.2.1. Rút trích đặc trưng ảnh bằng mạng nơ-ron tích chập (44)
        • 1.2.2. Xây dựng mô hình ngôn ngữ bằng mạng nơ-ron hồi quy (0)
          • 1.2.2.1. Mô hình ngôn ngữ n-gram (50)
          • 1.2.2.2. Mô hình ngôn ngữ dựa trên mạng nơ-ron (0)
      • 1.3. Tự động mô tả nội dung ảnh bằng mô hình CNN-LSTM-Attention (0)
        • 1.3.1. Mô hình CNN-LSTM cho bài toán tự động mô tả nội dung ảnh (0)
          • 1.3.1.1. Kiến trúc mô hình CNN-LSTM (69)
          • 1.3.1.2. Huấn luyện mô hình CNN-LSTM (71)
          • 1.3.1.3. Phát sinh câu mô tả từ ảnh với mô hình CNN-LSTM đã được huấn luyện 59 1.3.2. Mô hình CNN-LSTM-Attention cho bài toán tự động mô tả nội dung ảnh 62 1.3.2.1. Vấn đề của mô hình CNN-LSTM và cách khắc phục bằng cơ chế (74)
          • 1.3.2.2. Kiến trúc mô hình CNN-LSTM-Attention (78)
          • 1.3.2.3. Huấn luyện mô hình CNN-LSTM-Attention (82)
          • 1.3.2.4. Phát sinh câu mô tả từ ảnh với mô hình CNN-LSTM-Attention đã được huấn luyện (87)
      • 1.4. Transformer (89)
        • 1.4.3. Encoder (97)
        • 1.4.4. Decoder (99)
        • 1.4.5. Các thí nghiệm được đề cập (101)
    • 2. Phương pháp thực hiện (0)
      • 2.1. CNN (110)
      • 2.2. LSTM (111)
      • 2.3. Transformer (112)
        • 2.3.1. Origin Motivation (112)
        • 2.3.2. By pixel (112)
        • 2.3.3. By channel (115)
        • 2.3.4. Loss Function (115)
      • 2.4. Beam Search (116)
  • CHƯƠNG 5: PHƯƠNG PHÁP ĐÁNH GIÁ (119)
    • 1. Đánh giá tự động (0)
      • 1.1. BLEU: bleu (119)
      • 1.2. CIDEr: cider (119)
      • 1.3. ROUGE: rouge (120)
      • 1.4. METEOR: meteor (120)
    • 2. Đánh giá thủ công (120)
  • CHƯƠNG 6: XÂY DỰNG MÔ HÌNH – THỰC NGHIỆM CHƯƠNG TRÌNH (122)
    • 1. Dataset (122)
    • 2. Xử lý dữ liệu (123)
    • 3. Model (125)
      • 3.1. CNN: models.py (125)
        • 3.1.1. Giới thiệu (125)
        • 3.1.2. Mô hình CNN Encoder (125)
          • 3.1.2.1. Lớp CNN_Encoder (125)
          • 3.1.2.2. Khởi tạo lớp CNN_Encoder (125)
          • 3.1.2.3. Phương thức forward (126)
          • 3.1.2.4. Phương thức fine_tune (126)
      • 3.2. Transformer: transformer.py (126)
        • 3.2.3. Lớp PoswiseFeedForwardNet (128)
        • 3.2.4. Lớp EncoderLayer (128)
        • 3.2.5. Lớp Encoder (129)
        • 3.2.6. Lớp DecoderLayer (130)
        • 3.2.7. Lớp Decoder (131)
        • 3.2.8. Lớp Transformer (132)
    • 4. Training: train.py (133)
      • 4.1. Train (133)
      • 4.2. Validate (134)
      • 4.3. Main (136)
    • 5. Result (137)
      • 5.1. Kết quả sau khi training (137)
      • 5.3. Testing (138)
    • 6. Thực nghiệm (0)
      • 6.1. Một số ảnh giao dện website (142)
      • 6.2. Một số phần khác của website (149)
  • CHƯƠNG 7: KẾT LUẬN VÀ MỤC TIÊU PHÁT TRIỂN (150)
    • 1. Đánh giá kết quả thực hiện (0)
    • 2. Ưu điểm và nhược điểm (4)
    • 3. Hướng phát triển (151)
  • TÀI LIỆU THAM KHẢO (153)
  • PHỤ LỤC (155)

Nội dung

GIỚI THIỆU ĐỀ TÀI

Mục tiêu và đóng góp

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI

1 Lý do chọn đề tài

Trong bối cảnh phát triển nhanh chóng của trí tuệ nhân tạo, chú thích ảnh tự động bằng học sâu đã trở thành một chủ đề hấp dẫn trong ngành công nghệ thông tin Việc phát triển các mô hình này giúp tự động hóa quá trình nhận diện và phân tích đối tượng trong ảnh, giảm thiểu sự phụ thuộc vào con người và tăng tốc độ xử lý dữ liệu Nhờ đó, con người không còn phải tốn thời gian gắn nhãn mô tả nội dung cho ảnh một cách thủ công Đồng thời, nhóm nghiên cứu cũng hướng đến việc áp dụng công nghệ này để hỗ trợ nạn nhân khiếm thị, giúp họ hình dung nội dung của các bức ảnh.

Nhóm đã quyết định chọn đề tài "Tìm hiểu về chú thích ảnh tự động bằng học sâu và viết ứng dụng minh họa" với mục đích khám phá công nghệ học sâu và ứng dụng của nó trong việc phát triển mô hình chú thích ảnh tự động Qua việc xây dựng ứng dụng minh họa, nhóm mong muốn trình bày cách áp dụng kiến thức và kỹ năng đã học vào việc tạo ra một ứng dụng thực tế.

Nhóm nghiên cứu mong muốn góp phần vào sự phát triển của ngành công nghệ thông tin và trí tuệ nhân tạo, hy vọng rằng đề tài này sẽ mang lại giá trị và ý nghĩa trong việc ứng dụng học sâu để giải quyết các vấn đề thực tiễn.

2 Mục tiêu và đóng góp

Mục tiêu của Image Captioning là phát triển một mô hình máy tính có khả năng tự động sinh ra các câu miêu tả về hình ảnh Cụ thể, khi nhận vào một bức ảnh, mô hình sẽ xử lý và tạo ra một câu miêu tả nội dung của bức ảnh đó Về mặt học thuật, Image Captioning kết hợp hai lĩnh vực quan trọng là Computer Vision và Natural Language Processing để xây dựng một ứng dụng hiệu quả.

2 hiểu và sản xuất ngôn ngữ tự nhiên

Image Captioning là công nghệ giúp máy tính tự động hiểu và xử lý hình ảnh, mang lại sự linh hoạt cho các hệ thống Ứng dụng này cho phép tạo ra miêu tả tự động cho hình ảnh trên trang web và ứng dụng di động, giúp người dùng dễ dàng tìm kiếm và truy cập thông tin một cách nhanh chóng và thuận tiện.

Image Captioning có thể được ứng dụng trong nhiều lĩnh vực như truyền thông, quảng cáo và giải trí Chẳng hạn, nó có khả năng tự động miêu tả hình ảnh trên các mạng xã hội hoặc tạo ra các đoạn phim ngắn với mô tả tự động cho các đối tượng.

Nhóm chúng tôi đặt mục tiêu xây dựng một hệ thống cơ bản cho phép người dùng tìm kiếm hình ảnh dựa trên các đặc trưng của đối tượng Ngoài ra, chúng tôi cũng phát triển một module cho phép người dùng nhập ảnh đầu vào, từ đó xuất ra dự đoán chú thích và đọc lên nội dung đó.

Nguyễn Lê Bảo Thanh Huỳnh Nguyễn Tấn Nhạc

• Nghiên cứu phương pháp mô hình chú thích ảnh và quy tắc tập dữ liệu

• Tìm hiểu các dataset Flickr8k,

• Triển khai mô hình trên máy cục bộ

• Tạo một ứng dụng website dành cho máy tính để hỗ trợ quá trình chú thích

• Nghiên cứu phương pháp mô hình chú thích ảnh và quy tắc tập dữ liệu

• Tìm hiểu về dataset Flickr8k, Flickr30k và MS COCO

• Triển khai mô hình trên máy cục bộ

• Tìm hiểu cách triển khai trên website theo ý định ban đầu

3 Lộ trình thực hiện và các công việc liên quan

Nhóm nghiên cứu đã tiến hành tìm hiểu về các phương pháp và mô hình Image Captioning, trong đó bao gồm các thuật toán deep learning như LSTM, GRU, CNN và Transformer, nhằm áp dụng hiệu quả trong lĩnh vực này.

Để phát triển mô hình Image Captioning, nhóm nghiên cứu đã tìm hiểu các bộ dữ liệu phù hợp cho việc huấn luyện và kiểm thử Bên cạnh đó, nhóm cũng khám phá các thư viện hỗ trợ như PyTorch, TensorFlow và Keras, nhằm xây dựng và huấn luyện mô hình hiệu quả.

Để huấn luyện và kiểm thử mô hình, nhóm tiến hành thu thập và chuẩn bị dữ liệu sau khi đã nghiên cứu các bộ dữ liệu Các bước chuẩn bị bao gồm xử lý ảnh, tiền xử lý dữ liệu, chia tách tập huấn luyện và tập kiểm thử, cùng với việc chuẩn bị dữ liệu đầu vào cho mô hình.

Nhóm sẽ thiết kế và xây dựng mô hình Image Captioning cho dự án sau khi nghiên cứu các phương pháp và mô hình liên quan Quá trình này bao gồm việc xác định kiến trúc mạng, cài đặt mô hình trên thư viện hỗ trợ và tinh chỉnh các tham số để tối ưu hiệu suất của mô hình.

Sau khi xây dựng mô hình, nhóm sẽ tiến hành huấn luyện và kiểm thử trên các tập dữ liệu đã chuẩn bị Quá trình này bao gồm việc đưa dữ liệu vào mô hình, tiến hành huấn luyện trên tập huấn luyện và kiểm thử hiệu suất của mô hình trên tập kiểm thử.

Đánh giá và tinh chỉnh mô hình là bước quan trọng sau khi huấn luyện và kiểm thử Nhóm thực hiện đánh giá hiệu suất của mô hình và điều chỉnh các tham số để nâng cao độ chính xác Các chỉ số như BLEU, ROUGE, CIDEr và METEOR thường được sử dụng để đánh giá hiệu quả của mô hình.

Nhóm sẽ phát triển một ứng dụng minh họa nhằm thể hiện hiệu suất của mô hình Image Captioning Ứng dụng này cho phép người dùng nhập ảnh và tự động tạo chú thích cho ảnh bằng cách sử dụng mô hình đã được huấn luyện Ngoài ra, ứng dụng còn hỗ trợ tính năng tìm kiếm, cho phép người dùng nhập nội dung vào ô text để tìm kiếm các ảnh có nội dung liên quan, theo đề xuất của GVHD.

Sau khi hoàn thành dự án, nhóm sẽ viết báo cáo tốt nghiệp để trình bày kết quả và đánh giá của dự án Báo cáo này bao gồm các phần như giới thiệu dự án, tóm tắt phương pháp và mô hình Image Captioning đã sử dụng, quá trình thu thập và chuẩn bị dữ liệu, thiết kế và xây dựng mô hình, kết quả huấn luyện và kiểm thử mô hình, đánh giá và tinh chỉnh mô hình, cùng với ứng dụng minh họa và kết luận.

TÌM HIỂU VỀ LÝ THUYẾT

Lý thuyết chung

1.1 Ngôn ngữ lập trình Python

Python là một ngôn ngữ lập trình được sử dụng trong việc phát triển các ứng dụng web, phần mềm, máy học và khoa học dữ liệu

Những lợi ích mà Python mang lại:

• Các nhà phát triển có thể dễ dàng đọc và hiểu một chương trình Python vì ngôn ngữ này có cú pháp cơ bản giống tiếng Anh

Python nâng cao năng suất làm việc của các nhà phát triển nhờ vào việc cho phép họ viết chương trình với ít dòng mã hơn so với các ngôn ngữ lập trình khác.

Python sở hữu một thư viện tiêu chuẩn phong phú, cung cấp nhiều mã nguồn có thể tái sử dụng cho hầu hết các tác vụ Điều này giúp các nhà phát triển tiết kiệm thời gian và công sức, vì họ không cần phải viết mã từ đầu cho nhiều chức năng khác nhau.

• Các nhà phát triển có thể dễ dàng sử dụng Python với các ngôn ngữ lập trình phổ biến khác như Java, C và C++

Cộng đồng Python là một mạng lưới sôi động với hàng triệu nhà phát triển nhiệt tình trên toàn cầu, sẵn sàng hỗ trợ bạn Khi gặp khó khăn, bạn có thể nhanh chóng nhận được sự giúp đỡ từ cộng đồng này.

Trên Internet có vô vàn tài nguyên hữu ích cho việc học Python, bao gồm video, hướng dẫn, tài liệu và các chỉ dẫn dành cho nhà phát triển.

• Python có thể được sử dụng trên nhiều hệ điều hành máy tính khác nhau, chẳng hạn như Windows, macOS, Linux và Unix

Python được sử dụng trong những lĩnh vực như:

• Phát triển web phía máy chủ

• Tự động hóa các tập lệnh Python

• Khoa học dữ liệu và máy học

• Tự động hóa kiểm thử phần mềm

Những đặc điểm của Python:

• Python là một ngôn ngữ thông dịch

• Python là một ngôn ngữ dễ sử dụng

• Python là một ngôn ngữ linh hoạt

• Python là một ngôn ngữ cấp cao

• Là một ngôn ngữ lập trình hướng đối tượng

Một số thư viện phổ biến của Python: Matplotlib, Pandas, Numpy, Requests, OpenCV, Keras

SDK Python là bộ công cụ phần mềm giúp các nhà phát triển xây dựng ứng dụng bằng ngôn ngữ Python.

Python là một ngôn ngữ lập trình dễ đọc và dễ hiểu, nổi bật với định dạng trực quan gọn gàng Ngôn ngữ này thường sử dụng từ khóa bằng tiếng Anh, khác với nhiều ngôn ngữ khác thường sử dụng dấu câu.

Python sử dụng thụt lề bằng khoảng trắng hoặc ký tự tab để xác định khối lệnh, thay vì sử dụng ngoặc nhọn hay từ khóa Việc thụt lề thường diễn ra sau một câu lệnh và thụt ra để đánh dấu kết thúc khối lệnh hiện tại.

Một số câu lệnh trong python:

• Dấu = là một câu lệnh gán

• Câu lệnh if (if – else) thực thi khối lệnh nếu thỏa mãn điều kiện

• Câu lệnh for lặp qua các đối tượng, gán mỗi phần tử và một biến cục bộ để sử dụng trong khối lệnh của vòng lặp

• Câu lệnh while thực thi khối lệnh khi điều kiện đúng

• Câu lệnh try thực thi và bắt các ngoại lệ (except), dọn dẹp trong (finally)

• Câu lệnh break thoát ra khỏi vòng lặp

• Câu lệnh class thực thi một khối lệnh và gắn không gian tên cục bộ của nó vào một lớp, để dùng trong lập trình hướng đối tượng

• Câu lệnh def định nghĩa hàm hoặc một phương thức

• Câu lệnh return trả lại một giá trị từ một hàm hoặc một phương thức nào đó

• Câu lệnh import nhập các module khác nhau

Một số kiểu dữ liệu trong python là: bool, bytearray, bytes, complex, dict, float, frozenset, int, list, str, tuple, range, set, NoneType,…

1.2.1 AI (Artificial Intelligence) là gì?

AI hay trí truệ nhân tạo là một nghành kỹ thuật khoa học chế tạo máy móc thông minh, các chương trình máy tính thông minh

Trí tuệ nhân tạo (AI) được phát triển thông qua việc nghiên cứu cách con người suy nghĩ, học hỏi, ra quyết định và giải quyết vấn đề Kết quả từ những nghiên cứu này được áp dụng để tìm ra giải pháp và xây dựng các phần mềm và hệ thống thông minh.

• Tạo ra hệ thống có thể hiểu, suy nghĩ và học hỏi từ con người

• Tạo ra các hệ thống chuyên gia – các hệ thống này giúp giải quyết được vấn đề ở một vấn đề phức tạp cụ thể nào đó

AI được áp dụng vào nhiều lĩnh vực trong đời sống như Khoa học máy tính, Toán học, Sinh học, kỹ thuật,…

Trong thực tế, dữ liệu thường có những vấn đề như khối lượng lớn, thiếu định dạng và cấu trúc rõ ràng, cùng với sự thay đổi liên tục Kỹ thuật AI đã được chứng minh là một giải pháp hiệu quả để tổ chức và sử dụng kiến thức, giúp khắc phục những hạn chế này của dữ liệu.

1.2.2 Một số ứng dụng AI

Hệ thống AI đang hỗ trợ quản trị bằng cách tự động hóa các công việc hành chính hàng ngày, giúp giảm thiểu sai sót do con người và tối ưu hóa hiệu quả làm việc.

Điều trị từ xa đang trở thành giải pháp hiệu quả cho các tình huống không khẩn cấp, cho phép bệnh nhân liên hệ với hệ thống AI của bệnh viện để phân tích triệu chứng và nhập các dấu hiệu quan trọng Hệ thống này đánh giá nhu cầu chăm sóc y tế, từ đó giảm khối lượng công việc cho các chuyên gia y tế bằng cách chỉ chuyển các trường hợp cần thiết đến họ.

• Hỗ trợ chuẩn đoán: Thông qua thị giác máy tính và mạng lưới thần kinh tích chập,

AI hiện nay có khả năng quét hình ảnh cộng hưởng từ để phát hiện khối u và sự phát triển ác tính với tốc độ nhanh hơn và độ chính xác cao hơn so với bác sĩ x-quang.

Phẫu thuật robot mang lại độ chính xác cao với sai số rất nhỏ, cho phép thực hiện các ca phẫu thuật liên tục mà không gặp phải tình trạng kiệt sức.

• Giám sát các chỉ số quan trọng

• Ngoài ra còn rất nhiều những ứng dụng trong các lĩnh vực khác trong đời sống như nhận diện khuôn mặt, nhận diện giọng nói, ô tô tự lái…

Machine Learning là một ứng dụng quan trọng của trí tuệ nhân tạo (AI), cho phép hệ thống tự học hỏi và cải thiện từ kinh nghiệm mà không cần lập trình chi tiết Công nghệ này thường được áp dụng trong nhiều lĩnh vực khác nhau để tối ưu hóa quy trình và nâng cao hiệu quả.

9 trung vào các chương trình máy tính có thể truy cập dữ liệu và dùng nó để tự học

1.3.2 Mục tiêu của Machine Learning?

Mục tiêu của machine learning là giúp máy tính tự động học hỏi quy trình mà không cần can thiệp từ con người, đồng thời cải thiện khả năng điều chỉnh hành động Các thuật toán machine learning được giám sát, cho phép áp dụng và phân tích dữ liệu mới dựa trên các ví dụ đã được gắn nhãn, nhằm dự đoán các sự kiện trong tương lai.

1.3.3 Các phương pháp Machine Learning

Image Captionings

Image Captioning là một lĩnh vực quan trọng trong Machine Learning và Computer Vision, kết hợp nhận dạng hình ảnh với xử lý ngôn ngữ tự nhiên Công nghệ này giúp máy tính tự động tạo ra mô tả chi tiết cho hình ảnh, cho phép viết ra câu hoặc đoạn văn ngắn để diễn tả nội dung hình ảnh một cách chính xác.

Image Captioning là một quá trình tạo ra một câu hoặc đoạn văn mô tả nội dung của một hình ảnh Quá trình này bao gồm các bước sau:

Bước đầu tiên trong quy trình là áp dụng một mô hình Deep Learning để trích xuất đặc trưng từ hình ảnh Mô hình này thường được đào tạo trên một tập dữ liệu lớn, chẳng hạn như ImageNet, để cải thiện khả năng nhận diện và phân loại hình ảnh.

MS COCO hoặc Flickr30k để học cách trích xuất các đặc trưng của một hình ảnh (đề tài sử dụng MS COCO)

Bước 2: Áp dụng một mô hình Deep Learning khác để tạo ra câu hoặc đoạn văn mô tả nội dung hình ảnh Mô hình này được huấn luyện trên tập dữ liệu hình ảnh đã gán nhãn mô tả, sử dụng các đặc trưng hình ảnh đã được trích xuất ở bước trước để sinh ra mô tả chính xác về nội dung hình ảnh.

Trong lĩnh vực Image Captioning, kiến trúc phổ biến nhất là mô hình Encoder-Decoder Mô hình này bao gồm một Encoder để trích xuất đặc trưng hình ảnh và một Decoder để tạo ra câu mô tả nội dung hình ảnh Thông thường, mô hình Encoder sử dụng mạng Convolutional Neural Network (CNN), trong khi Decoder thường là mạng Recurrent Neural Network (RNN), bao gồm các loại như Long Short-Term Memory (LSTM) hoặc Gated Recurrent Unit (GRU).

Image Captioning được ứng dụng rộng rãi trong nhiều lĩnh vực như nhận dạng hình ảnh, tự động tạo mô tả cho trang web thương mại điện tử, ứng dụng đọc tin tức, và chú thích video trong nghiên cứu khoa học và y học Công nghệ này giúp máy tính hiểu nội dung hình ảnh và tạo mô tả tự động, tiết kiệm thời gian và công sức cho con người Hơn nữa, Image Captioning có thể kết hợp với công nghệ Nhận diện Giọng nói để tạo ra mô tả hình ảnh bằng giọng nói.

PHÂN TÍCH DỮ LIỆU

The Flickr8k [2]

Flickr8k là một bộ dữ liệu phổ biến trong lĩnh vực tạo chú thích hình ảnh, đặc biệt cho các mô hình sử dụng Deep Learning Bộ dữ liệu này bao gồm khoảng 8000 hình ảnh từ Flickr, mỗi hình ảnh kèm theo năm câu mô tả khác nhau Việc này không chỉ nâng cao độ chính xác trong huấn luyện mô hình tạo chú thích hình ảnh mà còn giúp mô hình học được nhiều cách diễn đạt khác nhau cho cùng một hình ảnh.

Bộ dữ liệu Flickr8k được chuẩn bị cẩn thận với tính đa dạng và phong phú, cung cấp hình ảnh từ nhiều chủ đề và phong cách khác nhau, bao gồm cảnh đô thị, thiên nhiên, phòng ngủ và nhà hàng Điều này giúp mô hình Image Captioning học cách mô tả hình ảnh trong nhiều tình huống, từ đó cải thiện khả năng tổng quát hóa của mô hình.

Bộ dữ liệu Flickr8k được coi là một trong những lựa chọn hàng đầu cho việc huấn luyện mô hình Image Captioning, đặc biệt với các mô hình Deep Learning Tuy nhiên, cần chú ý đến việc xử lý và chuẩn bị dữ liệu để đảm bảo tính đa dạng và đầy đủ của các mô tả cho mỗi hình ảnh, từ đó nâng cao chất lượng huấn luyện của mô hình.

Bộ dữ liệu Flickr8k là một nguồn tài nguyên phong phú và đa dạng, chứa đựng hàng nghìn hình ảnh thuộc nhiều chủ đề khác nhau, từ thiên nhiên, con người đến các hoạt động hàng ngày.

• Cảnh đô thị: bao gồm các hình ảnh về phố phường, tòa nhà, khu công nghiệp, giao thông đô thị,

• Cảnh thiên nhiên: bao gồm các hình ảnh về rừng, núi, đồng cỏ, biển, sông, suối, thác nước,

• Con người: bao gồm các hình ảnh về con người trong nhiều tình huống khác

17 nhau, ví dụ như: người đàn ông, phụ nữ, trẻ em, cặp đôi, đội tuyển bóng đá, người đi bộ, người lái xe, người đang tập thể dục,

Vật thể bao gồm nhiều hình ảnh đa dạng như xe hơi, tàu thuyền, máy bay, đồ ăn, đồ dùng trong nhà, quần áo và giày dép Những hình ảnh này không chỉ thể hiện sự phong phú của cuộc sống mà còn giúp người xem dễ dàng nhận diện và phân loại các loại vật thể khác nhau trong xã hội.

• Động vật: bao gồm các hình ảnh về các động vật khác nhau như chó, mèo, cá, bò, ngựa, chim,

Các chủ đề được lựa chọn phong phú và đa dạng nhằm giúp các mô hình Image Captioning học được nhiều cách diễn đạt khác nhau cho cùng một hình ảnh, từ đó nâng cao khả năng tổng quát hóa của mô hình.

Sau khi tra cứu, phân tích dữ liệu của dữ liệu ảnh Flickr8k có các thông tin sau:

• Tổng số các chủ đề (các đối tượng, vật thể được miêu tả trong các hình ảnh): 8

The article provides a breakdown of the number of images available for various themes: "people" has 2,517 images, "building" features 1,600 images, "nature" includes 1,191 images, "food" offers 901 images, "indoor" contains 726 images, "animal" has 625 images, "plant" features 501 images, and "transport" comprises 451 images.

• Số lượng caption cho mỗi hình ảnh: mỗi hình ảnh được gắn kèm 5 mô tả (caption) khác nhau, do đó tổng số caption trong Flickr8k là 40000

The Flickr30k [3]

Flickr30k là một tập dữ liệu lớn phục vụ cho bài toán Image Captioning, bao gồm hơn 30,000 bức ảnh, mỗi bức ảnh đi kèm với năm câu mô tả Tập dữ liệu này được thu thập từ trang web chia sẻ ảnh Flickr và được sử dụng rộng rãi trong cộng đồng học máy và xử lý ngôn ngữ tự nhiên.

Các câu mô tả trong tập dữ liệu Flickr30k được gắn liền với hình ảnh và được sáng tác bởi người dùng trên Flickr Những câu này có độ dài đa dạng, bao gồm từ ngữ, cụm từ và thông tin mô tả về đối tượng, hành động và bối cảnh của từng bức ảnh.

Tập dữ liệu Flickr30k cung cấp thông tin chi tiết về ảnh như đường dẫn, độ phân giải, tên tệp, thời gian tải lên và thông tin người dùng Để áp dụng tập dữ liệu này cho bài toán Image Captioning, chúng ta có thể tiền xử lý dữ liệu bằng cách tạo bộ từ vựng, đưa ảnh vào mô hình để sinh ra câu mô tả và đánh giá độ chính xác của các câu mô tả đó Flickr30k được xem là một tập dữ liệu quan trọng trong lĩnh vực Image Captioning và đã được sử dụng để đào tạo nhiều mô hình thành công.

Tập dữ liệu Flickr30k bao gồm nhiều chủ đề khác nhau trong đó có:

Con người và các hoạt động của họ là chủ đề phong phú, bao gồm những bức ảnh thể hiện sự đa dạng của con người như trẻ em, người lớn, và các nhóm người Những hoạt động hàng ngày như chơi đùa, làm việc, ăn uống, đọc sách, và điều khiển xe đạp không chỉ phản ánh cuộc sống mà còn tạo nên những khoảnh khắc đáng nhớ trong cuộc sống hàng ngày.

Động vật và thực vật bao gồm nhiều hình ảnh phong phú về các loài động vật như chó, mèo, chim, cá, voi, và voi rừng, cùng với các loại thực vật như cây cối, hoa lá, và cảnh quan thiên nhiên.

Các vật dụng và thiết bị bao gồm nhiều loại hình ảnh khác nhau, từ xe hơi, đồ nội thất, máy tính, đến đồ điện tử và đồ chơi Những hình ảnh này không chỉ thể hiện sự đa dạng của sản phẩm mà còn giúp người tiêu dùng dễ dàng nhận diện và lựa chọn những vật phẩm phù hợp với nhu cầu của mình.

Kiến trúc và các công trình nổi tiếng bao gồm những hình ảnh ấn tượng về các tòa nhà cao ốc, đền đài, lâu đài, cầu và nhiều công trình khác Những kiến trúc này không chỉ thể hiện vẻ đẹp nghệ thuật mà còn phản ánh văn hóa và lịch sử của mỗi địa phương Hãy khám phá vẻ đẹp của những công trình này để hiểu rõ hơn về giá trị kiến trúc trên thế giới.

Các địa điểm và cảnh quan đẹp trên thế giới bao gồm những hình ảnh nổi tiếng như Tháp Eiffel, chùa Phật Bà Đà Nẵng, thác Niagara và vườn quốc gia Yellowstone Những địa điểm này không chỉ thu hút khách du lịch mà còn là biểu tượng văn hóa và thiên nhiên đặc sắc của từng vùng miền.

Tập dữ liệu Flickr30k không chỉ bao gồm các chủ đề như thời trang, ẩm thực, nghệ thuật và thể thao, mà còn chứa đựng các sự kiện đặc biệt Sự đa dạng về chủ đề và đối tượng ảnh trong tập dữ liệu này rất phù hợp cho nhiều bài toán trong lĩnh vực Computer Vision và xử lý ngôn ngữ tự nhiên.

Sau khi tra cứu, phân tích dữ liệu của dữ liệu ảnh Flickr30k có các thông tin sau:

• Tổng số hình ảnh: 31.783 ảnh

• Số lượng chủ đề khác nhau: 1.014 chủ đề

• Các chủ đề phổ biến: con người, động vật, thiên nhiên, xe cộ, thể thao

• Số lượng caption cho mỗi ảnh: 5 caption

• Số lượng từ vựng khác nhau: 31.509

Việc tiền xử lý và lọc các chú thích không phù hợp với bức ảnh hoặc chứa lỗi ngữ pháp là một thách thức lớn, ảnh hưởng đến việc sử dụng bộ dữ liệu này trong các ứng dụng thực tế.

The MS COCO (Microsoft Common Objects in Context) [4]

Bộ dữ liệu MS COCO (Microsoft Common Objects in Context) là một trong những bộ dữ liệu ảnh quan trọng nhất trong lĩnh vực AI, học máy và học sâu Với hơn 330.000 ảnh và 2,5 triệu đối tượng được đánh dấu trong 80 loại khác nhau, MS COCO cung cấp một nguồn tài nguyên phong phú cho việc huấn luyện các mô hình Deep Learning nhằm phát hiện và phân loại đối tượng trong ảnh.

Bộ dữ liệu MS COCO được chia thành ba tập dữ liệu chính: train, validation và test Cụ thể:

• Tập train chứa khoảng 83,000 (82.783) ảnh

• Tập validation chứa khoảng 41,000 (40,504) ảnh

• Tập test chứa khoảng 41,000 (40,775) ảnh

Tất cả hình ảnh trong bộ dữ liệu COCO đều được chụp từ thực tế và được gán nhãn chính xác với các đối tượng, vị trí và bối cảnh Bộ dữ liệu này cung cấp tệp JSON chứa thông tin nhãn cho mỗi hình ảnh, bao gồm các đối tượng và tọa độ của chúng, cùng với các chú thích mô tả Để phân chia tập train, val và test, COCO cung cấp tệp JSON tên là instances.json, chứa thông tin về tên tệp hình ảnh, kích thước và các thông tin nhãn tương ứng Từ tệp này, chúng ta có thể xây dựng tập train, val và test bằng cách lấy ngẫu nhiên một phần trăm hình ảnh cho tập val và test, trong khi phần còn lại được sử dụng cho tập train.

COCO cung cấp một tệp JSON tên là captions.json, chứa các chú thích mô tả cho mỗi hình ảnh, rất hữu ích cho các nhiệm vụ tự động tạo chú thích Tương tự như các tập train, val và test, tệp chú thích này có thể được phân chia thành các tập train, val và test để phục vụ cho việc huấn luyện mô hình.

Bộ dữ liệu này bao gồm hơn 330,000 hình ảnh, trong đó tập huấn luyện có 118,000 hình, tập xác thực khoảng 5,000 hình và tập kiểm tra khoảng 41,000 hình, tổng cộng là 164,000 hình Vậy số hình ảnh còn lại đang ở đâu?

Bộ dữ liệu MS COCO có thể được chia thành các tập nhỏ hơn ngoài các tập train, validation và test, đặc biệt trong các bài toán liên quan đến object detection Những tập hình ảnh này có thể được sử dụng để đánh giá hiệu suất của mô hình trên từng loại đối tượng cụ thể hoặc để kiểm tra các mô hình khác không liên quan đến image captioning Tuy nhiên, thông tin về số lượng hình ảnh này chưa được công bố rộng rãi và không có trong tập dữ liệu chính thức của MS COCO.

PHƯƠNG PHÁP HỌC

Cở sở lý thuyết

Mỗi ngày, chúng ta tiếp xúc với nhiều hình ảnh từ Internet, tin tức, tài liệu và quảng cáo, và khả năng hiểu nội dung của chúng là một trong những khả năng cơ bản của con người Tuy nhiên, việc giúp máy tính hiểu được nội dung hình ảnh là một thách thức lớn trong lĩnh vực trí tuệ nhân tạo Một trong những cách đánh giá khả năng này là thông qua việc phát sinh câu mô tả cho hình ảnh Bài toán tự động mô tả nội dung ảnh yêu cầu máy tính phân tích và rút trích thông tin về các đối tượng, mối quan hệ và bối cảnh trong hình ảnh, điều này không hề đơn giản Sau khi rút trích thông tin, máy tính cần diễn đạt lại dưới dạng ngôn ngữ tự nhiên, đảm bảo câu mô tả phải chính xác về ngữ pháp, ngữ nghĩa và tính mạch lạc, làm cho nhiệm vụ này trở nên càng khó khăn hơn.

Hình 2: Minh họa bài toán phát sinh câu mô tả nội dung ảnh (src: https://luckytoilet.files.wordpress.com/2018/03/coco_val2014_000000085826.jpg?w00&h"5)

Mặc dù việc tự động mô tả nội dung hình ảnh là một thách thức lớn, nhưng nếu thành công, nó có thể được ứng dụng rộng rãi trong nhiều lĩnh vực Một ví dụ điển hình là khả năng tìm kiếm hình ảnh thông qua câu truy vấn bằng ngôn ngữ tự nhiên Khi hình ảnh được tải lên mạng, chúng sẽ được gán những câu mô tả tương ứng, cho phép trả về những hình ảnh có liên quan khi người dùng truy vấn Đặc biệt, ứng dụng này còn hỗ trợ người khiếm thị, giúp họ hiểu môi trường xung quanh thông qua các câu mô tả từ hình ảnh được trích xuất từ camera gắn trên kính Tự động mô tả nội dung hình ảnh không chỉ là một lĩnh vực nghiên cứu đầy thách thức trong trí tuệ nhân tạo mà còn ngày càng trở nên quan trọng và thu hút sự chú ý.

Một phương pháp tiếp cận bài toán mô tả ảnh là sử dụng các đặc trưng ảnh được rút trích thủ công và khuôn mẫu cố định Theo phương pháp của Li [5], đầu tiên, kỹ thuật nhận dạng ảnh được áp dụng để trích xuất thông tin từ ảnh, bao gồm các đối tượng như chim, xe buýt, xe hơi, cùng với các thuộc tính của chúng như có lông và màu đen, cũng như mối quan hệ không gian giữa các đối tượng như trên, gần, dưới Để thực hiện việc rút trích này, các đặc trưng như HOG và GIST được thiết kế thủ công và phân lớp bằng mô hình SVM Thông tin sau khi rút trích sẽ được chuyển đổi thành dạng bộ ba để thể hiện mối quan hệ giữa các đối tượng.

23 quan hệ giữa từng cặp đối tượng; trong đó,“obj1” và “obj2” là đối tượng trong ảnh,

“Adj1” và “adj2” là các thuộc tính của hai đối tượng khác nhau, trong khi “prep” thể hiện mối quan hệ không gian giữa chúng Từ bộ ba này, chúng tôi phát sinh các cụm từ dựa trên thống kê n-gram từ dữ liệu Google Web 1T O1 đại diện cho đối tượng và O2 cho đối tượng , với R là mối quan hệ giữa hai đối tượng Mô hình sẽ chọn ra ba tính từ hàng đầu cho mỗi đối tượng “obj” để mở rộng tập O1 và O2 Đối với hai cụm O1 và O2, chúng tôi tìm kiếm theo hai cách sắp xếp: và Tương tự, với ngữ R, chúng tôi tìm kiếm theo hai cách: và Thành phần là một chuỗi gồm (n-2) từ trong chuỗi n-gram, và các cụm từ sẽ được chọn dựa trên tỷ lệ xuất hiện trong bộ dữ liệu, giúp tạo ra những cụm từ tự nhiên và phù hợp hơn.

Khi kết hợp “obj1” là “người” và “adj1” là “xanh”, chúng ta có thể sử dụng cụm từ “người mặc áo xanh” thay vì chỉ đơn giản ghép “adj1” và “obj1” thành “người xanh” Tương tự, khi xem xét mối quan hệ R giữa hai đối tượng “obj1” và “obj2”, ví dụ với “obj1” là “xe đạp”, chúng ta có thể tạo ra các cụm từ mô tả chính xác hơn.

Chúng ta có thể chọn ngữ "man with a bicycle" thay vì "bicycle with a man" Cuối cùng, các ngữ này sẽ được ghép lại để tạo thành câu mô tả hoàn chỉnh Hình 3 minh họa các bước tạo ra câu mô tả bằng phương pháp này.

Hình 3: Minh họa phương pháp phát sinh câu mô tả theo khuôn mẫu cố định [5]

Chúng tôi áp dụng các kỹ thuật nhận dạng ảnh để trích xuất thông tin về hai đối tượng là "cừu" và "cây" Đối với "cừu", các thuộc tính liên quan bao gồm "lông xù" và "màu xám".

Quá trình rút trích thông tin từ hình ảnh bắt đầu bằng việc xác định các thuộc tính của đối tượng, như màu sắc và loại cây, cùng với mối quan hệ không gian giữa chúng Thông tin này được chuyển đổi thành các bộ ba như và Tiếp theo, các bộ ba được phân tích để phát sinh ngữ dựa trên thống kê n-gram Kuznetsova áp dụng phương pháp truy vấn ảnh từ cơ sở dữ liệu có sẵn các câu mô tả tương ứng, nhằm tạo ra câu mô tả cho ảnh cần xử lý Quá trình này dựa vào nhận diện đối tượng, hành động và bối cảnh, từ đó rút trích các thành phần ngữ như danh ngữ mô tả đối tượng chính, động ngữ mô tả hành động, và các ngữ giới từ mô tả mối quan hệ cũng như bối cảnh của bức ảnh.

Bài viết trình bày quy trình xây dựng cây cú pháp từ một tập hợp các ngữ ứng viên Đầu tiên, chúng ta tạo ra cây cú pháp dựa trên các ngữ này Để đảm bảo tính mạch lạc, việc lựa chọn các ngữ được thực hiện dựa trên tần suất xuất hiện của các n-gram tương ứng với cụm từ nối trong ngữ liệu Ví dụ, trong trường hợp danh ngữ (NP), chúng ta có ứng viên là "a sheep" và "a goat", cùng với ngữ giới từ thứ hai (PPscene) là "in the countryside" và "at bottom of the mountain" Qua phân tích, chúng ta chọn "a sheep" và "in the countryside" vì cụm từ nối "sheep in the" xuất hiện nhiều nhất trong ngữ liệu.

Hình 4: Minh họa phương pháp phát sinh câu mô tả dựa trên cây cú pháp [6]

Chúng tôi rút trích các ngữ fNP, VP, PPstuff, PPscenceg từ các câu chú thích của hình ảnh trong cơ sở dữ liệu Dựa trên các ngữ này, chúng tôi xây dựng cây cú pháp và tạo ra câu mô tả từ cây cú pháp đó.

Hai phương pháp trên có hạn chế là sử dụng các đặc trưng thiết kế thủ công để rút trích thông tin từ ảnh, điều này vừa tốn thời gian, công sức, vừa dễ dẫn đến việc rút trích đặc trưng không chính xác, gây ra mô tả không đúng.

Mặc dù câu mô tả có thể đúng về mặt ngữ pháp, nhưng tính đa dạng và tự nhiên của nó thường không cao, không thể hiện đầy đủ nội dung của bức ảnh Phương pháp sử dụng khuôn mẫu cố định chỉ tạo ra những câu đơn giản, thể hiện mối quan hệ giữa hai đối tượng trong ảnh, nhưng không đủ khả năng để mô tả toàn bộ bức ảnh khi có nhiều đối tượng và bối cảnh phức tạp Trong khi đó, phương pháp truy vấn ảnh dựa trên cơ sở dữ liệu chỉ dựa vào mô tả của các hình ảnh đã tồn tại, dẫn đến việc câu mô tả không thể hiện đúng thông tin cần thiết.

Việc xuất hiện các đối tượng, bối cảnh và mối quan hệ mới có thể làm hạn chế khả năng mô tả hình ảnh, đôi khi dẫn đến sự không liên quan giữa câu mô tả và nội dung bức ảnh Hai phương pháp hiện tại phân chia bài toán thành các phần nhỏ hơn như nhận dạng ảnh và phát sinh câu mô tả, nhưng việc xử lý từng phần bằng nhiều mô hình phức tạp vẫn không đạt được kết quả tốt.

Dựa trên thành công của mô hình học sâu trong thị giác máy tính và xử lý ngôn ngữ tự nhiên, các mô hình này đã được áp dụng vào việc tự động mô tả nội dung ảnh, mang lại hiệu quả vượt trội so với các phương pháp truyền thống Oriol Vinyals cùng cộng sự đã đề xuất một mô hình mới nhằm giải quyết bài toán này.

Mô hình "end-to-end" áp dụng khung "encoder-decoder" sử dụng một mô hình học sâu duy nhất để tự động tạo câu mô tả từ các đặc trưng ảnh như góc, cạnh và màu sắc, thay vì rút trích thủ công Việc này giúp tạo ra những câu mô tả mới, đa dạng và mang tính ngữ nghĩa cao hơn Mô hình sử dụng mạng nơ-ron tích chập (CNN) để rút trích đặc trưng ảnh và mạng nơ-ron hồi quy (RNN) để phát sinh câu dựa trên các đặc trưng này Mặc dù kết quả đạt được vượt trội hơn so với các phương pháp truy vấn hay khuôn mẫu, mô hình vẫn có hạn chế khi thông tin ảnh chỉ được đưa vào bước đầu tiên trong quá trình phát sinh từ, dẫn đến khả năng thông tin bị suy giảm và các từ ở cuối có thể không liên quan đến nội dung ảnh.

Hình 5: Minh họa phương pháp phát sinh câu mô tả dựa trên mô hình học sâu

Phương pháp thực hiện

Bài báo này giới thiệu một mô hình dựa trên Transformer thuần túy, sử dụng SwinTransformer làm bộ mã hóa xương sống, cho phép đào tạo từ đầu đến cuối từ hình ảnh đến mô tả một cách dễ dàng Họ cũng phát triển một bộ mã hóa tinh chỉnh, giúp cải thiện tính năng lưới hình ảnh và tính năng toàn cầu thông qua sự hướng dẫn lẫn nhau, tối ưu hóa lợi ích giữa sự chú ý cục bộ và toàn cầu.

Họ đã tinh chỉnh tính năng toàn cầu và kết hợp với các từ được tạo trước đó trong bộ giải mã, nhằm nâng cao tương tác đa phương thức và cải thiện khả năng lập mô hình Kết quả thử nghiệm trên bộ dữ liệu MSCOCO cho thấy mô hình đề xuất đạt hiệu suất cao nhất.

Trong bài viết này, nhóm sẽ trình bày phương pháp sử dụng trong mã (code) để xử lý hình ảnh Đầu tiên, các hình ảnh sẽ được đưa qua mạng nơ-ron tích chập (CNN) nhằm trích xuất các đặc điểm quan trọng Sau đó, các đặc điểm này sẽ được chuyển tiếp đến bộ giải mã (Decoder) để tạo ra chú thích cho hình ảnh Nhóm tập trung vào hai loại bộ giải mã, bao gồm Transformer và LSTM, với sự chú trọng chính vào Transformer.

Cả hai phương pháp đều áp dụng kỹ thuật Teacher Forcing, sử dụng sự thật cơ bản làm đầu vào tại mỗi bước giải mã, nhằm khắc phục sự phụ thuộc giữa các phần tử trong chuỗi Điều này cho phép đánh giá mô hình một cách chi tiết hơn trên từng phần của bài toán lớn Ngoài ra, trong quá trình chú thích và đánh giá, cả hai đều sử dụng beam search để nâng cao hiệu suất.

Nhóm nghiên cứu đã sử dụng mạng Residual 101 lớp được đào tạo trên tập dữ liệu ImageNet làm bộ mã hóa hình ảnh, vì CNN trước đó đã chứng minh hiệu suất xuất sắc trong phân loại hình ảnh với hàng nghìn danh mục và có thể dễ dàng tích hợp từ thư viện "torchvision".

Nhóm lưu ý rằng mô hình CNN đã được đào tạo trước đây để phân loại hình ảnh, do đó cần xóa hai lớp cuối cùng là các lớp tuyến tính với chức năng softmax khi áp dụng.

Khi nhóm thực hiện các thử nghiệm trước mô hình để xác định các tham số tối ưu cho quá trình đào tạo cuối cùng, họ đã quyết định không cập nhật trọng số trong giai đoạn đầu Điều này nhằm tránh việc làm hỏng trọng số của mạng nơ-ron tích chập (CNN) đã được đào tạo trước nếu độ dốc quá lớn.

Kích thước đầu ra của bộ mã hóa CNN là (Batch, 2048, 14, 14) Tuy nhiên, khi áp dụng phương pháp chú ý ByChannel trong mô hình transformer, kích thước đầu ra giảm xuống còn (Batch, 512, 14, 14) Điều này xảy ra do nhóm đã thêm một lớp CNN bổ sung để giảm kích thước kênh xuống 512, nhằm tránh lỗi tràn bộ nhớ do số lượng tính năng đầu vào quá lớn cho bộ mã hóa transformer.

Quá trình giải mã (decoding) hiển thị trong hình dưới đây:

Hình 33: Qúa trình giải mã CNN-LSTM

Sau khi sử dụng bộ mã hóa CNN, hình ảnh có kích thước (14, 14, 2048) được chia thành 196 vector 2048 chiều, đóng vai trò là các khóa cho từng bước truy vấn từ của bộ giải mã Lớp ẩn ban đầu h0 và lớp tế bào c0 được tạo ra thông qua quá trình chuyển đổi.

Quá trình xử lý hình ảnh bắt đầu bằng việc lấy trung bình các đặc trưng đầu ra của bộ mã hóa CNN trên hai chiều đầu tiên, tạo ra một tensor (1, 1, 2048) và nén thành vector 2048 chiều Hai lớp tuyến tính được áp dụng để thu được lớp ẩn h0 và lớp tế bào c0 Trong mỗi bước giải mã, từ đúng (trong quá trình huấn luyện) hoặc từ đã được tạo (trong quá trình đánh giá hoặc tạo chú thích) sẽ được kết hợp với vector chú ý, được lấy từ việc nhúng từ và các vector đặc trưng đầu ra của CNN Cuối cùng, các vector này được truyền vào LSTM cùng với lớp ẩn và lớp tế bào trước đó để dự đoán xác suất của từ tiếp theo và cập nhật lớp ẩn cũng như lớp tế bào.

Quá trình này sẽ hoàn tất trước khi tạo ra dự đoán từ trong giai đoạn huấn luyện hoặc khi xuất hiện từ trong quá trình tạo chú thích và đánh giá.

*Ghi chú: nhóm không áp dụng mô hình này vào project

Nhóm ban đầu dự định phát triển dự án trợ lý ảo nhưng đã nhận phản hồi không tích cực từ giảng viên phản biện Do gặp khó khăn trong việc phát triển thêm tính năng, nhóm quyết định chuyển hướng sang chủ đề chú thích hình ảnh Vì vậy, nhóm đã chọn nhiệm vụ chú thích hình ảnh và áp dụng cấu trúc biến áp (transformer structure) cho dự án này.

Sự chú ý đóng vai trò quan trọng trong máy biến áp, vì nhiều lớp hoạt động dựa trên cơ chế này để tạo ra đầu ra hiệu quả Nhóm nghiên cứu đã giới thiệu hai phương pháp chú ý trong nhiệm vụ của họ.

Kích thước đầu ra của các đặc trưng hình ảnh được trích xuất bởi bộ mã hóa CNN là

Tensor đầu ra có kích thước (14, 14, 2048) sẽ được chia thành các đoạn 14x14, mỗi đoạn tương ứng với một vector 2048 chiều Tổng cộng có 196 vector sẽ được đưa vào bộ mã hóa transformer để trích xuất thêm đặc trưng Tuy nhiên, trước khi thực hiện, các vector này cần được mã hóa vị trí, do bộ mã hóa transformer không có khả năng nhận biết thứ tự đầu vào.

Khác với chuỗi, mỗi đặc trưng hình ảnh có hai chiều, do đó phương pháp mã hóa vị trí của chúng tôi là mã hóa không gian Nhóm cần mã hóa 14x14 điểm ảnh, với mỗi điểm ảnh yêu cầu tạo một vector 1024 chiều để biểu thị đặc trưng vị trí dọc x và một vector 1024 chiều khác cho vị trí ngang y Hai vector này được ghép nối để tạo thành vector đặc trưng vị trí cuối cùng có 2048 chiều Tương tự, đầu vào của bộ giải mã transformer cũng cần được mã hóa vị trí, sử dụng phương pháp mã hóa vị trí vector thông thường.

Mã hóa vị trí của bộ mã hóa:

PHƯƠNG PHÁP ĐÁNH GIÁ

Đánh giá thủ công

Đánh giá chất lượng câu văn được coi là tiêu chuẩn vàng, nhưng việc đánh giá bằng con người thường không hiệu quả do tính chủ quan cao.

Mỗi người có phản ứng khác nhau đối với các câu văn, và chất lượng câu văn phụ thuộc vào nhiều yếu tố cơ bản Việc áp dụng một quy tắc đồng nhất để đánh giá là khó khăn Dưới đây là những yếu tố quan trọng nhất trong việc đánh giá câu văn và chấm điểm từ 1 đến 5.

• Đúng ngữ pháp (Sai – Đúng);

• Đầy đủ thông tin (Không chi tiết – Chi tiết);

• Dễ đọc (Không trôi chảy – Trôi chảy);

• Logic (Vô nghĩa – Hợp lý);

• Độ giống con người (Khả năng sử dụng câu văn trong ngữ cảnh thực tế)

XÂY DỰNG MÔ HÌNH – THỰC NGHIỆM CHƯƠNG TRÌNH

Dataset

Bộ dữ liệu MSCOCO 2014 (Lin et al 2014) được sử dụng để xây dựng mô hình, bao gồm 123287 hình ảnh, trong đó có 82783 hình ảnh dành cho đào tạo và 40504 hình ảnh cho xác thực Mỗi hình ảnh trong bộ dữ liệu này được chú thích với 5 chú thích tham chiếu, giúp nâng cao độ chính xác trong quá trình huấn luyện mô hình.

Để thử nghiệm trực tuyến, mã số 40775 được sử dụng Trong quá trình đào tạo, chúng ta chuyển đổi tất cả các chú thích thành chữ thường và loại bỏ những từ xuất hiện ít hơn 6 lần.

Cụ thể dataset mà chương trình sử dụng bao gồm:

• Hình ảnh: nhóm sử dụng bộ dữ liệu MSCOCO 2014: Training (13GB) và Validation (6GB)

• Chú thích: nhóm sẽ sử dụng phân tách (splits) đào tạo (training), xác nhận(validate) và kiểm tra (test) của Andrej Karpathy

• Nhúng đã được huấn luyện trước: Glove.6B.300d.txt.

Xử lý dữ liệu

Có các đầu vào cho mô hình như sau:

Để sử dụng mô hình mã hóa CNN ResNet101, chúng ta cần xử lý hình ảnh theo định dạng mà mô hình này đã quen thuộc ResNet101 đã được huấn luyện trước và cung cấp bởi PyTorch Cụ thể, việc chuẩn hóa hình ảnh là cần thiết để đảm bảo giá trị điểm ảnh nằm trong khoảng [0, 1].

Theo quy ước NCHW, PyTorch yêu cầu kích thước các kênh (C) phải đứng trước kích thước các chiều Chúng ta đã thay đổi kích thước tất cả các hình ảnh MSCOCO thành 256x256 để đảm bảo tính đồng nhất Cuối cùng, mô hình sẽ nhận một tensor kiểu Float với kích thước (N, 3, 256, 256).

Chú thích không chỉ là mục tiêu mà còn là đầu vào cho bộ giải mã, vì mỗi từ được sử dụng để tạo ra từ tiếp theo Để bắt đầu quá trình, chúng ta cần một từ thứ 0, hay còn gọi là token Cuối câu, việc tạo ra token cũng rất quan trọng để bộ giải mã biết khi nào dừng lại trong quá trình tạo câu Ví dụ minh họa: một người đang cầm một quả bóng .

Để đảm bảo các chú thích có kích thước đồng nhất, chúng ta cần đệm chúng bằng các token, ví dụ: một người đang cầm một quả bóng Đồng thời, chúng ta tạo ra một bản đồ từ (word_map) để ánh xạ chỉ mục cho từng từ trong tập từ vựng, bao gồm cả các token Việc mã hóa từ thành chỉ mục là cần thiết để thực hiện các tác vụ xử lý ngôn ngữ tự nhiên hiệu quả.

Chúng tôi sẽ tìm kiếm các nhúng và xác định vị trí của chúng dựa trên các điểm số được dự đoán Sau đó, chúng tôi sẽ đưa vào mô hình một tensor kiểu Int với kích thước (N, L), trong đó L là độ dài đã được đệm.

• Độ dài chú thích (caption length)

Để theo dõi độ dài của mỗi chú thích đã được đệm, chúng ta cần tính toán độ dài thực tế cộng thêm hai cho các token và Mục tiêu là tiết kiệm tính toán từ các token và chỉ xử lý một chuỗi đến độ dài của nó Do đó, độ dài chú thích được cung cấp cho mô hình phải là một tensor kiểu Int với kích thước (N, L), trong đó L đại diện cho độ dài của chú thích.

• Các tệp sử dụng trong quá trình huấn luyện mô hình

TRAIN_IMAGES_coco_5_cap_per_img_5_min_word_freq.hdf5,

VAL_IMAGES_coco_5_cap_per_img_5_min_word_freq.hdf5,

Tệp HDF5 TEST_IMAGES_coco_5_cap_per_img_5_min_word_freq.hdf5 chứa hình ảnh được lưu trữ dưới dạng mảng giá trị pixel, phục vụ cho quá trình huấn luyện và kiểm tra mô hình.

TRAIN_CAPTIONS_coco_5_cap_per_img_5_min_word_freq.json,

VAL_CAPTIONS_coco_5_cap_per_img_5_min_word_freq.json,

Tệp JSON TEST_CAPTIONS_coco_5_cap_per_img_5_min_word_freq.json chứa các mô tả mã hóa cho từng hình ảnh, với các mô tả được trình bày dưới dạng danh sách từ trong từ điển (word_map) Những tệp này cung cấp dữ liệu đầu vào quan trọng cho mô hình tạo chú thích hình ảnh.

TRAIN_CAPLENS_coco_5_cap_per_img_5_min_word_freq.json,

VAL_CAPLENS_coco_5_cap_per_img_5_min_word_freq.json,

Tệp JSON TEST_CAPLENS_coco_5_cap_per_img_5_min_word_freq.json chứa thông tin về độ dài của các mô tả liên quan đến từng hình ảnh Độ dài này được sử dụng trong mô hình để xác định chiều dài tối đa của chuỗi đầu ra.

Tệp JSON WORDMAP_coco_5_cap_per_img_5_min_word_freq.json chứa từ điển (word_map) được tạo ra từ các từ trong tập dữ liệu Tệp này ánh xạ mỗi từ với một số nguyên duy nhất, phục vụ cho việc mã hóa và giải mã các mô tả trong quá trình huấn luyện và kiểm tra.

Model

Trong phần này, chúng ta sẽ xây dựng hai thành phần chính của mô hình: CNN Encoder và Transformer Decoder

Mô hình CNN Encoder đóng vai trò quan trọng trong việc xử lý hình ảnh và trích xuất đặc trưng Bằng cách mã hóa hình ảnh thành biểu diễn số lượng thấp hơn, CNN Encoder giúp giảm chiều dữ liệu và tạo ra các đặc trưng quan trọng cho các bài toán xử lý hình ảnh.

Lớp CNN_Encoder là một mô-đun quan trọng trong mô hình CNN Encoder, có chức năng nhận đầu vào là hình ảnh và trả về đầu ra dưới dạng biểu diễn đã được mã hóa Các thông số chính trong lớp này đóng vai trò quyết định trong quá trình xử lý và truyền tải thông tin.

• encoded_image_size: Kích thước ảnh đã được mã hóa (mặc định là 14)

• attention_method: Phương pháp chú ý được sử dụng (mặc định là "ByPixel")

3.1.2.2 Khởi tạo lớp CNN_Encoder

Trong quá trình khởi tạo lớp CNN_Encoder, các hoạt động sau được thực hiện:

• Tạo một mô hình ResNet-101 đã được pretrained bằng cách sử dụng torchvision.models.resnet101(pretrained=True)

• Lấy danh sách các module trong mô hình ResNet, loại bỏ hai module cuối cùng

111 và gán cho self.resnet

Nếu phương thức attention_method được thiết lập là "ByChannel", các bước sau sẽ được thực hiện: Tạo một lớp nn.Conv2d với số kênh đầu vào là 2048 và số kênh đầu ra là

512, kích thước kernel là (1, 1), bước nhảy là (1, 1), và không có bias o Tạo một lớp nn.BatchNorm2d với 512 kênh đầu vào o Tạo một lớp nn.ReLU

• Tạo một lớp nn.AdaptiveAvgPool2d với kích thước đầu ra là (encoded_image_size, encoded_image_size)

• Gọi phương thức fine_tune() để điều chỉnh các thông số trong mô hình

Phương thức forward của lớp CNN_Encoder thực hiện quá trình chuyển tiếp dữ liệu qua mô hình Các bước trong phương thức này bao gồm việc tiếp nhận đầu vào, xử lý thông tin qua các lớp tích chập, và cuối cùng trả về kết quả đầu ra.

• Đưa dữ liệu qua mô hình ResNet để trích xuất đặc trưng

• Nếu attention_method được đặt là "ByChannel", dữ liệu sẽ được đi qua lớp cnn1, bn1, và relu

• Đưa dữ liệu qua lớp adaptive_pool để thực hiện pooling theo kích thước đã cho

• Chuyển vị các chiều của dữ liệu để chuẩn bị cho việc đưa vào lớp tiếp theo

• Trả về kết quả cuối cùng

Phương thức fine_tune cho phép điều chỉnh các thông số trong mô hình ResNet Khi fine_tune được kích hoạt (True), các thông số từ layer thứ 6 trở đi sẽ được cập nhật (requires_grad=True) Ngược lại, nếu fine_tune không được kích hoạt, các thông số này sẽ không được cập nhật (requires_grad=False).

Lớp này thực hiện việc tính toán các điểm attention bằng cách nhân chập ma trận của các vector truy vấn (Q) và vector khóa (K), sau đó chia cho căn bậc hai của kích thước vector truy vấn (QKVdim).

Các tham số trong mô hình bao gồm Q, K, V, đại diện cho vector truy vấn, vector khóa và vector giá trị, tương ứng Bên cạnh đó, attn_mask là ma trận được sử dụng để ẩn các vị trí không cần thiết trong các điểm số attention.

The class functions include forward(Q, K, V, attn_mask), which computes attention scores and applies softmax to obtain attention weights Subsequently, it calculates the context vector by multiplying the attention weights matrix with the value vector (V).

Lớp này thực hiện multi-head attention bằng cách kết hợp nhiều lớp ScaledDotProductAttention Đầu vào được chia thành nhiều phần, và mỗi phần được ánh xạ qua một lớp ScaledDotProductAttention riêng biệt.

Các tham số trong mô hình attention có ý nghĩa quan trọng: Q_dim và K_dim đại diện cho kích thước của vector truy vấn (Q) và vector khóa (K) QKVdim là kích thước của vector truy vấn, khóa và giá trị sau khi được ánh xạ đến không gian multi-head Số lượng head của multi-head attention được xác định bởi tham số n_heads Cuối cùng, dropout là tỷ lệ dropout được áp dụng sau khi tính toán các head để giảm thiểu hiện tượng overfitting.

Hàm forward(Q, K, V, attn_mask) thực hiện cơ chế multi-head attention bằng cách chia đầu vào thành nhiều phần Mỗi phần sau đó được ánh xạ qua lớp ScaledDotProductAttention Kết quả từ từng head được kết hợp lại và đi qua một lớp tuyến tính để tạo ra đầu ra cuối cùng.

• Chức năng: Lớp này thực hiện một mạng feed-forward trên từng vị trí của đầu vào

Các tham số quan trọng trong mô hình bao gồm: embed_dim, đại diện cho kích thước của đầu vào và đầu ra của lớp; d_ff, kích thước của lớp tuyến tính trong mạng feed-forward; và dropout, tỷ lệ dropout được áp dụng sau khi tính toán trong mạng feed-forward.

Hàm forward(x) trong lớp thực hiện mạng feed-forward cho từng vị trí đầu vào x Đầu vào được xử lý qua một lớp tuyến tính với hàm kích hoạt ReLU, tiếp theo là áp dụng dropout, và sau đó đi qua một lớp tuyến tính khác để tạo ra đầu ra cuối cùng.

• Chức năng: Lớp này định nghĩa một lớp encoder trong mô hình Transformer Nó bao gồm một lớp Multi_Head_Attention và một lớp PoswiseFeedForwardNet

The parameters in a neural network model play a crucial role in its functionality The parameter 'd_model' represents the size of the input and output vectors in the encoder layer 'n_heads' indicates the number of attention heads in the Multi-Head Attention layer, which enhances the model's ability to focus on different parts of the input Lastly, 'd_ff' refers to the size of the linear layer within the Position-wise Feed-Forward Network, contributing to the model's overall processing capacity.

114 o dropout: Tỷ lệ dropout được áp dụng trong lớp Multi_Head_Attention và PoswiseFeedForwardNet

Trong lớp, hàm forward(x, attn_mask) thực hiện quá trình encoding đầu vào x Đầu vào được xử lý qua lớp Multi_Head_Attention với attention mask, sau đó đi qua một lớp tuyến tính và một lớp normalization Kết quả tiếp theo được đưa vào lớp PoswiseFeedForwardNet và một lớp normalization để tạo ra đầu ra cuối cùng.

• Chức năng: Lớp này gồm một chuỗi các lớp EncoderLayer và thực hiện quá trình mã hóa của mô hình Transformer

Training: train.py

Trong hàm train, chúng ta thực hiện quá trình huấn luyện trên một epoch dữ liệu Dưới đây là mô tả chi tiết về từng bước trong hàm train:

• decoder.train() và encoder.train() được sử dụng để đặt chế độ huấn luyện cho decoder và encoder, mở khóa dropout và batch normalization

• batch_time, data_time, losses và top5accs là các biến để theo dõi thời gian xử lý, thời gian tải dữ liệu, loss và độ chính xác top-5

• Bắt đầu tính thời gian cho mỗi batch

Trong quá trình huấn luyện mô hình, chúng ta sẽ duyệt qua các batch trong train_loader, là DataLoader dành cho dữ liệu huấn luyện Điều này bao gồm việc cập nhật thời gian tải dữ liệu, chuyển dữ liệu vào GPU nếu có sẵn, và thực hiện forward propagation để thu được kết quả.

▪ Encoder nhận đầu vào imgs và trả về đặc trưng imgs

The decoder receives input images, captions, and caption lengths, returning predicted scores, sorted captions (caps_sorted), decoded lengths, attention weights (alphas), and sorting indices (sort_ind) Targets are prepared by extracting words from the caption following the token, while unnecessary timesteps and tokens are removed Loss is calculated using the criterion function, and pure elements are added for attention adjustment as outlined in the "Show, Attend and Tell: Neural Image Caption Generation with Visual Attention" paper Gradients are cleared before backward propagation, and clipping is applied if specified Weight updates for both the decoder and encoder are performed when indicated, along with updates to metrics such as top-5 accuracy, loss, and processing time Training progress information is printed at intervals defined by args.print_freq.

• Trả về kết quả của mỗi epoch sau khi đã huấn luyện xong

Trong hàm validate, chúng ta thực hiện quá trình validation trên một epoch dữ liệu Dưới đây là mô tả chi tiết về từng bước trong hàm validate:

Hàm decoder.eval() và encoder.eval() được sử dụng để chuyển encoder và decoder sang chế độ đánh giá, tắt dropout và batch normalization nhằm đảm bảo tính nhất quán trong quá trình đánh giá.

• batch_time, data_time, losses và top5accs là các biến để theo dõi thời gian xử lý, thời gian tải dữ liệu, loss và độ chính xác top-5

• Bắt đầu tính thời gian cho mỗi batch

Trong quá trình duyệt qua các batch trong val_loader, chúng ta cần cập nhật thời gian tải dữ liệu và chuyển dữ liệu vào GPU nếu có sẵn Sau đó, thực hiện forward propagation để xử lý dữ liệu.

▪ Encoder nhận đầu vào imgs và trả về đặc trưng imgs

The decoder processes input images, captions, and caption lengths to output prediction scores, sorted captions (caps_sorted), decoded caption lengths (decode_lengths), attention weights (alphas), and sorting indices (sort_ind) It prepares targets by extracting words from captions following the token, removes unnecessary time steps or tokens, and calculates loss using the criterion function Additionally, it incorporates a pure element for adjusting attention as outlined in the paper "Show, Attend and Tell: Neural Image Caption Generation with Visual Attention." The model updates metrics such as top-5 accuracy, loss, and processing time, and prints evaluation information at specified intervals based on the print frequency.

• Trả về kết quả của mỗi epoch sau quá trình validation

Trong hàm main, chúng ta tiến hành huấn luyện và đánh giá mô hình qua nhiều epoch dữ liệu Bài viết này sẽ cung cấp mô tả chi tiết về từng bước thực hiện trong hàm main.

• Tạo thư mục để lưu trữ checkpoint và kết quả đánh giá

• Tạo các DataLoader cho dữ liệu huấn luyện và dữ liệu validation

• Khởi tạo encoder (CNN) và decoder (Transformer) o Encoder:

▪ Encoder được khởi tạo bằng một mạng Convolutional Neural Network (CNN) thông qua lớp CNN_Encoder

▪ Nhiệm vụ của encoder là xử lý thông tin hình ảnh và trích xuất các đặc trưng quan trọng từ hình ảnh đầu vào

▪ Mạng CNN sẽ biến đổi hình ảnh đầu vào thành một vector đặc trưng có kích thước nhỏ hơn, gọi là "bản mã hình ảnh" o Decoder:

▪ Decoder được khởi tạo bằng một mô-đun gọi là Transformer

▪ Decoder có nhiệm vụ nhận đầu vào là bản mã hình ảnh từ encoder và dự đoán chuỗi đầu ra (văn bản) tương ứng

▪ Mô-đun Transformer sử dụng các lớp self-attention và multi-head attention để hiểu và kết hợp thông tin từ bản mã hình ảnh

Nó tạo ra các vector đại diện cho những từ đã được dự đoán trước đó và từ đó đưa ra dự đoán cho từ tiếp theo trong chuỗi đầu ra.

▪ Decoder sẽ tiếp tục dự đoán cho đến khi gặp ký tự kết thúc hoặc đạt đến giới hạn số từ tối đa

• Nếu đã chỉ định checkpoint, tải trọng số đã lưu trước đó cho decoder và encoder

• Định nghĩa hàm loss bằng cách sử dụng hàm nn.CrossEntropyLoss()

• Định nghĩa thuật toán tối ưu hóa (optimizer) cho decoder và encoder, ví dụ như torch.optim.Adam

• Định nghĩa scheduler để điều chỉnh learning rate theo một phương pháp cụ thể, ví dụ như torch.optim.lr_scheduler.StepLR

• Sử dụng GPU nếu có sẵn

Trong quá trình lặp qua từng epoch (100 epochs), mô hình được huấn luyện bằng hàm train với dữ liệu huấn luyện, decoder, encoder, optimizer, scheduler, loss, epoch hiện tại và các thông số khác Sau đó, mô hình được đánh giá bằng hàm validate với dữ liệu validation, decoder, encoder, loss và các thông số liên quan Nếu có sự cải thiện trong độ chính xác validation, checkpoint cho mô hình sẽ được lưu lại.

• In thông báo khi quá trình huấn luyện kết thúc.

Result

5.1 Kết quả sau khi training

Beam Search là một thuật toán quan trọng trong xử lý ngôn ngữ tự nhiên và dịch máy, giúp tìm kiếm câu trả lời tốt nhất trong không gian ngôn ngữ rộng lớn Thuật toán này được áp dụng cho nhiều nhiệm vụ như dịch máy, tạo tiêu đề và sinh văn bản tự động, cho phép tìm kiếm chuỗi từ hoặc câu trả lời tối ưu từ tập hợp ứng viên.

Beam Search hoạt động bằng cách duyệt qua các câu trả lời có thể có trong một

Model BLEU1 BLEU2 BLEU3 BLEU4 METEOR ROUGE_L CIDEr

Thuật toán tạo ra một tập hợp các câu trả lời ban đầu, được gọi là "beam", với kích thước cố định gọi là "beam size" Beam size xác định số lượng câu trả lời tiềm năng được xem xét tại mỗi bước trong quá trình xử lý.

Beam Search là một thuật toán tạo ra câu trả lời mới bằng cách mở rộng beam hiện tại, xác định các từ tiếp theo có thể thêm vào để tạo thành câu trả lời tiềm năng Các câu trả lời này được xếp hạng dựa trên một hàm mục tiêu, như xác suất xảy ra hoặc điểm số của mô hình dự đoán.

Beam Search là phương pháp tiếp tục tìm kiếm các câu trả lời tiềm năng, giữ lại những câu trả lời tốt nhất dựa trên hàm mục tiêu và loại bỏ các câu trả lời kém hơn Quá trình này được lặp lại cho đến khi xác định được câu trả lời tối ưu hoặc đạt đến một tiêu chí dừng khác như chiều dài tối đa.

Kích thước beam đóng vai trò quan trọng trong thuật toán Beam Search, ảnh hưởng đến số lượng câu trả lời được xem xét và khả năng tìm ra câu trả lời tốt nhất Khi kích thước beam lớn, thuật toán có thể duyệt qua nhiều câu trả lời tiềm năng hơn, từ đó tăng khả năng tìm kiếm câu trả lời tối ưu Tuy nhiên, việc tăng kích thước beam cũng đồng nghĩa với việc yêu cầu thời gian và không gian tính toán cao hơn.

Beam Search là một phương pháp phổ biến trong xử lý ngôn ngữ tự nhiên và dịch máy, nhờ vào khả năng nhanh chóng tìm kiếm các câu trả lời tiềm năng tốt nhất từ không gian lời nói lớn Việc điều chỉnh kích thước beam là yếu tố quan trọng giúp cân bằng giữa hiệu suất và chất lượng kết quả của thuật toán.

Bảng thống kê kết quả mức độ đoán chính xác caption của 1000 ảnh: Đoán chính xác

(tỉ lệ) Đoán không chính xác Đoán sai một chi tiết trong ảnh (tỉ lệ)

Chỉ đoán đúng một số chi tiết trong ảnh (tỉ lệ) Đoán thừa thông tin (tỉ lệ)

Trong đó: quá trình dự đoán caption của một ảnh

6 Thực nghiệm Để tạo giao diện tiện cho mục đích sử dụng nhóm sử dụng Angular để tạo một website gồm 2 chức tính năng:

Hệ thống cho phép người dùng tải lên hình ảnh từ nguồn bên ngoài và tự động tạo chú thích cho ảnh Khi ảnh được tải lên, một cửa sổ pop-up sẽ hiển thị thông báo "Please wait!!", và chú thích sẽ được hiển thị ngay khi quá trình tạo hoàn tất.

Hệ thống cung cấp hơn 5000 caption được tạo ra từ hơn 5000 ảnh, sử dụng cùng một mô hình phát triển Các caption và ảnh được mã hóa thành URL và lưu trữ trong cơ sở dữ liệu MongoDB Giao diện người dùng có ô tìm kiếm cho phép người dùng nhập từ khóa, từ đó hệ thống sẽ tính toán độ tương đồng giữa từ khóa và nội dung.

Thực nghiệm

Người dùng nhập các giá trị và chú thích của ảnh, hệ thống sẽ sắp xếp các ảnh theo độ tương đồng và hiển thị kết quả trên màn hình Tính năng này tương tự như chức năng tìm kiếm bằng truy vấn văn bản.

6.1 Một số ảnh giao dện website

#Feature: giới thiệu chức năng của website

#TryIt: nơi người dùng thực hiện chức năng của website

• Chờ hệ thống generate ra caption

• Search với từ khóa không có trong database

• Search với từ khóa có trong database

#Feedback: gửi mail phản hồi nếu gặp sự cố

6.2 Một số phần khác của website

Ngày đăng: 05/12/2023, 10:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w