Kiến trúc mô hình Mô hình s g m 3 thành ph n chính: ẽ ồ ầ- Encoder: mô hình Pretrained CNN ResNet hỗ trợ trích rút đặc trưng củ ảnh đầa u vào - Decoder: mạng RNN LSTM đưa ra caption dự đ
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Nhóm sinh viên thực hiện: Trần Anh Vũ 20183674
Nguyễn Xuân Huy 20183555
Bùi Minh Tuấn 20183654
Trịnh Xuân Tùng 20183663
Giáo viên hướng dẫn: PGS.TS Lê Thanh Hương
HÀ N I, 02/2023 Ộ
Trang 2Mục l c ụ
MỤC L C 2Ụ
DANH M C HÌNH Ụ ẢNH 3
CHƯƠNG 1 GIỚI THIỆU BÀI TOÁN 4
CHƯƠNG 2 MÔ HÌNH ĐỀXUẤ T 5
2.1 Mô hình Pretrained CNN LSTM– 5
2.2 Mô hình ViT – GPT 7
CHƯƠNG 3 MÔ TẢ TẬP DỮ LIỆU 15
3.1 Mô tả bộ dữ u raw liệ 15
3.2 Tiền xử lý dữ u chung liệ 15
3.3 Tiền xử lý dữ u cho các mô hình liệ 17
CHƯƠNG 4 THỰC NGHIỆM 17
4.1 Mô tả mô hình thử nghiệm 17
4.2 Độ đo đánh giá 19
4.3 Đánh giá kết quả 21
CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRI N 24Ể CHƯƠNG 6 TÀI LIỆU THAM KHẢO 24
Trang 3Danh m c hình ụ ảnh
Hình 1: Ví d Image Captioning 4ụ Hình 2: Ki n trúc mô hình Pretrained CNN - LSTM 5ế Hình 3: Ki n trúc Encoder - ResNet101 6ế Hình 4: Ki n trúc Decoder - LSTM 6ế
Hình 5: Decoder khi thêm dữ liệu Attention 7
Hình 6: Ki n trúc Attention 7ế Hình 7: Ki n trúc mô hình ViT - GPT 2 8ế Hình 8: Ki n trúc mô hình ViT 9ế Hình 9: Ki n trúc GPT 2 11ế Hình 11: Token Embedding và Positional Encoding 11
Hình 12: Self Attention 13
Hình 13: Masked Self Attention 14
Hình 14: Visualize Cross Attention 15
Hình 15: Phần trăm độ dài caption trong tập dữ liệu 16
Hình 16: Phần trăm độ dài caption sau khi lo i b outliner 16ạ ỏ Hình 17: Khai báo mô hình ViT - GPT 2 18
Hình 18: ROUGE-N Precision 19
Hình 19: ROUGE-N Recall 19
Hình 20: ROUGE-N F1 20
Hình 21: Longest Common Sequence 20
Hình 22: ROUGE-L Precision, Recall và F1 21 Hình 23: Thu t toán Beam Search 22ậ
Trang 4Chương 1 Giới thiệu bài toán Image Captioning (chú thích ảnh/thêm mô tả cho nh) là mả ột ứng dụng thú vị và phát triển nhanh chóng của công nghệ học sâu trong những năm gần đây Dựa trên một hình ảnh làm
dữ liệu đầu vào, chú thích ảnh tạo ra văn bản ngắn gọn mô tả nội dung của bức ảnh đó Kỹ thuật này càng tr ở nên đặc biệt hơn, khi nó kết hợp cả Computer Vision (thị giác máy tính) và NLP (Xử lý ngôn ngữ tự nhiên)
Hình 1: Ví d Image Captioning ụ
Trang 5Chương 2 Mô hình đề xuất
Báo cáo này s t p trung vào hai ẽ ậ hướng chính:
- Decoder: mạng RNN (LSTM) đưa ra caption dự đoán
- Attention: m ng linear h ạ ỗ trợ tìm ra các vùng quan trọng trong đặc trưng ảnh nhằm phục vụ tốt hơn trong quá trình dự đoán của Decoder
Hình 2: Kiến trúc mô hình Pretrained CNN - LSTM
2.1.2 Encoder
Mô hình pretrain ResNet được sử dụng làm Encoder cho mô hình, mô hình có dạng như hình vẽ dưới:
Trang 6Hình 3: Kiến trúc Encoder - ResNet101
Đầu vào c a mô hình s là m t ảnh kích thước (256x256x3) Ảnh s đi qua đến h t ủ ẽ ộ ẽ ếtầng gần cuối mà không xuống 2 tầng cuối cùng nhằm giữ lại các đặc trưng cần thiết mà không làm m t mát nhiấ ều thông tin, đầu ra c a encoder là m t ma trủ ộ ận đặc trưng kích thước (14x14x1024)
2.1.4 Attention
Attention s dử ụng trong mô hình như là một mạng để tìm ra vùng nh quan tr ng, kả ọ ết hợp v i tớ ừ đầu vào h ỗ trợ cho quá trình d ự đoán cho Decoder
Trang 7Hình 5: Decoder khi thêm d ữ liệu Attention
Về cơ bản, Attention là m t m ng Linear, vộ ạ ới đầu vào là ma trận đặc trưng của ảnh
và state được sinh ra từ Decoder, cấu trúc mạng Attention sẽ như hình dưới
Hình 6: Kiến trúc Attention
2.2 Mô hình ViT GPT –
Với s phát tri n m nh c a Transformers trên cự ể ạ ủ ả hai lĩnh vực CV và NLP, mô hình ViT GPT là s c i ti– ự ả ến c a mô hình pretrained CNN LSTM truy n th ng Encoder s ủ – ề ố ửdụng Vision Transformer, trong khi đó Decoder sử dụng GPT 2 giúp c i thi n v hi u suả ệ ề ệ ất
và chất lượng c a mô hình Image captioning nh khủ ờ ả năng ử x lý song song và hi u ng ể ữcảnh tốt hơn
Trang 8Hình 7: Kiến trúc mô hình ViT - GPT 2
Trang 9Hình 8: Kiến trúc mô hình ViT
Vision Image Transformer là s k t h p c a 1 phự ế ợ ủ ần ki n trúc c a Transformer và các ế ủkhối MLP (Multilayer Perceptron) Lớp Multi-Layer Perceptrons (MLP) mlà ột lớp ch a ứmột hàm Gaussian Error Linear Unit hai lớp
Với đầu vào là một hình ảnh, đầu ra sẽ được mã hoá theo kiến trúc tổng thể của mô hình ViT được đưa ra như sau theo cách thức từng bước:
- Chia hình ảnh thành các mảng (patch) với kích thước từng mảng cố định 16 x 16
- Làm phẳng các mảng hình ảnh
- Tạo các feature embedding có chiều thấp hơn từ các mảng hình ảnh phẳng này bao gồm thứ tự các mảng Đưa các patches này về d ng vector b ng cách flattend các patches ạ ằnày ra Thực ch t Linear Projection là m t l p Dense vấ ộ ớ ới đầu vào là flattend vector của các patches, đầu ra s ẽ là embeeding vector tương ứng với t ng patch.ừ
𝑧𝑖= 𝑊 ∗ 𝑥𝑖+ 𝑏 Trong đó:
Trang 10o 𝑥𝑖: flattend vector của patch thứ i
o 𝑧𝑖: output tương ứng của 𝑥𝑖 khi qua Linear Projection
2.2.2 Decoder
GPT-2 là một mô hình tổng quát, được tạo bởi OpenAI, được đào tạo trên 40GB Internet để dự đoán từ tiếp theo
GPT-2 s d ng ki n trúc transformer chử ụ ế ỉ dành cho b gi i mã (ộ ả Decoder) M i l p cỗ ớ ủa
bộ gi i mã ch bao g m m t l p ả ỉ ồ ộ ớ Masked Self-Attention, theo sau là m ng th n kinh chuyạ ầ ển
tiếp ngu n c p d ệồ ấ ữli u X p ch ng nhi u lớp như vậy lên nhau tạo thành một kiến trúc ế ồ ềtransformer sâu, ch dành cho b gi i mã ỉ ộ ả
Trang 11Hình 9: Kiến trúc GPT 2
Chi tiết kh i Decoder: ố
- Mã hoá đầu vào: Bắt đầu bằng từ đầu vào, mô hình tìm kiếm cách embedding từ đầu vào trong ma tr n embedding c a nó ậ ủ
Do mô hình GPT x lý song song, vì vử ậy ngoài mã hoá t , mô hình c n k t h p ừ ầ ế ợthêm mã hóa v trí ị – ộ m t tín hiệu cho bi t th tế ứ ự ủ c a các t trong chuừ ỗi đối v i các ớtransformer blocks Một ph n cầ ủa mô hình được đào tạo là một ma tr n ch a mậ ứ ột vectơ mã hóa vị trí cho m i trong s 1024 v ỗ ố ị trí trong đầu vào
Hình 10: Token Embedding và Positional Encoding
Trang 12- Sau khi mã hoá, các vector t s ừ ẽ đi qua self attention Có th ể hiểu self attention là một mô hình giúp học được mối tương quan ữ gi a các t trong m t câu v i nhau ừ ộ ớSelf Attention s t o 3 ma tr n Query, Key và Value, c ẽ ạ ậ ụ thể
từ khác (sử dụng key)
• Key: đại diện cho các từ sẽ xét tương quan với từ đang xét (Query)
• Bước 2: Tính attention weights Nhân 2 ma trận key, query vừa được tính ở trên với nhau để với ý nghĩa là so sánh giữa câu query và key để học mối tương quan Sau đó thì chuẩn hóa về đoạn [0 1] bằng hàm softmax 1 có nghĩa -
là câu query giống với key, 0 có nghĩa là không giống
• Bước 3: Tính output Nhân attention weights với ma trận value Điều này có nghĩa là chúng ta biểu diễn một từ bằng trung bình có trọng số (attention weights) của ma trận value
Trang 13Hình 11: Self Attention
Masked Self-Attention: Do GPT là mô hình sinh chuỗi, vì vậy không thể xét quan
hệ của từ đang xét với các từ trong tương lai, do đó Masked Self Attention được
sử dụng Về cơ bản, nó luôn cho điểm các mã thông báo trong tương lai là 0 để mô hình không th ể đạt đến các từ trong tương lai
Trang 14Hình 12: Masked Self Attention
- Feed Forward Network: Xử lý vector từ sau khi đã học xong mối tương quan với các từ còn lại trong câu Kết quả cuối cùng của tầng này là ma trận vector từ kích thước (độ dài chuỗi x size) (size tuỳ thuộc vào mô hình, cụ thể GPT 2 small sẽ có size = 768)
2.2.3 Cross Attention Layers
Mạng này được xây dựng với mục đích học ra được mối tương quan của các thành phần trong nh tả ới từ sinh ra ti p theo Kiế ến trúc c a m ng này khá giủ ạ ống với Self attention
mô t phía trên, v i key và query là các vector ả ở ớ đặc trưng của từng thành phần trong ảnh,
và value là các vector đặc trưng của các từ trong caption:
Trang 15Hình 13 Visualize Cross Attention:
Chương 3 Mô t t p d u ả ậ ữ liệ3.1 Mô tả bộ dữ liệu raw
Dữ liệu được sử dụng trong project là kết hợp của 2 bộ dữ liệu:
- UIT-ViIC1
- Vietnamese Image Captioning Dataset 2
C hai b d u ả ộ ữ liệ đã được chú thích th công b ng ti ng Vi t v i các hình nh t b ủ ằ ế ệ ớ ả ừ ộ
dữ liệu MS-COCO
3.2 Tiền xử lý d ữ liệu chung
Do c hai b dả ộ ữ liệu đều cùng một bộ ữ liệ d u là MS-COCO, cho nên c n phầ ải hợp nhất hai bộ dữ liệu l i v i nhau, tìm nh ng nh trùng và h p nh t các captions cạ ớ ữ ả ợ ấ ủa ảnh đó,
đầu ra c a pha này s là Metadata củ ẽ ủa ảnh và caption, c ụ thể:
- Images: List các thông tin của ảnh, bao gồm ảid nh và tên file
- Annotations: List các thông tin caption, bao gồm id c a caption, image id và ủcaption
Sau đó, do dữ liệu vẫn còn khá nhi u lề ỗi sai chính tả trong quá trình nh p li u, vì vậ ệ ậy cần phải xem xét và x lý t ng captions m t Nhóm s d ng tokenizer c a VNCoreNLP ử ừ ộ ử ụ ủ
1
https://sites.google.com/uit.edu.vn/uit-nlp/datasets-projects#h.p_Uj6Wqs5dCpc4
2 https://drive.google.com/drive/folders/1uWgMETh2TjD9skVLEoJ6XwoDnJMvcP_9
Trang 16và thu được m t t p tộ ậ ừ điển, sau đó từ ậ ừ điển đó nhóm tiến hành xem xét xem các từ t p tkhông h p l và tiợ ệ ến hành s a các t đó trong danh sách các captions ử ừ
Khảo sát phần trăm độ dài caption khi s d ng tokenizer c a VNCoreNLP: ử ụ ủ
Hình 14: Phần trăm độ dài caption trong t p d ậ ữ liệu
Nhóm ti n hành lo i b các caption có s t > 30 tế ạ ỏ ố ừ ừ, để tránh các dữ liệu outlier có thể ảnh hướng đế ế k t qu c a mô hình ả ủ
Tỷ l phệ ần trăm số từ trong 1 caption sau khi đã loại bỏ các dữ liệu outlier
Hình 15: Phần trăm độ dài caption sau khi lo i b outliner ạ ỏ
Cuối cùng nhóm th c hi n chia t p d ự ệ ậ ữ liệu thành 3 t p train, validation và test, trong ậ
đó
Trang 17- Tập Validation: 10% dữ liệu: 786 nh, 3980 captions ả
- Tập test: 10% d ữ liệu: 786 nh, 3987 captions ả
3.3 Tiền xử lý d ữ liệu cho các mô hình
3.3.1 Mô hình Pretrained CNN LSTM –
Ảnh sẽ được resize lại về kích thước 256 x 256 Nếu ảnh chỉ có 1 channel màu, ta tiến hành chuyển v d ng 3 channel màu b ng cách hợp nh t 3 channel màu gi ng nhau ề ạ ằ ấ ốCaption sẽ được tokenize bằng thư viện VNCoreNLP, sau đó từ tokenize captions, nhóm s xây d ng b tẽ ự ộ ừ điển mà nh ng t xuất hi n trong từ ữ ừ ệ điển xu t hi n ít nh t 5 lấ ệ ấ ần, những từ nào xuất hiện ít hơn sẽ coi là unknown Cuối cùng các caption được tokenize s ẽđược encoded để phục vụ cho quá trình huấn luyện về sau, những caption có độ dài ngắn hơn 30 sẽ được thêm padding ở cuối
3.3.2 Mô hình ViT – GPT 2
Về nh ta x ả ử lý tương tự như mô hình Pretrained CNN – LSTM
Caption sẽ được tokenize và encode theo pretrained “NlpHUST/gpt2-vietnamese” của HuggingFace B t ộ ừ điển của mô hình cũng từ pretrained “NlpHUST/gpt2-vietnamese” của HuggingFace Cũng tương tự như mô hình Pretrained CNN – LSTM, những caption
có độ dài ngắn hơn 30 sẽ được thêm padding ở cuối
Trang 18Decoder mô hình s d ng Pretrained Embedding Word2Vec v i embedding ử ụ ớsize=300
Cài đặt hyperparameter:
- Batch size: 32
- Encoder learning rate: 1e-4
- Decoder learning rate: 4e-4
- Optimizer: Adam
- Loss function: Cross Entropy Loss
Chiến lược huấn luyện:
- Pha 1: Đóng băng Encoder, chỉ huấn luy n Decoder ệ
- Pha 2: Huấn luyện toàn b mô hình ộ
4.1.2 Mô hình ViT – GPT2
Encoder và Decoder c a mô hình s d ng lủ ử ụ ần lượt hai mô hình pretrained pretrained
“google/vit-base-patch16-224-in21k” và “NlpHUST/gpt2-vietnamese” c a HuggingFace ủ
Cả hai mô hình được kết hợp với nhau qua class VisionEncoderDecoderModel của HuggingFace:
Hình 16: Khai báo mô hình ViT - GPT 2
Hyperparameter của mô hình được set mặc định theo Trainer Argument HuggingFace, c ụ thể ộ ố m t s hyperparameter:
Trang 19- Learning rate: 5e-5
- Optimizer: Adam
- Batch size: thay đổi giá tr batch size mị ặc định thành 32
Mô hình hu n luy n sấ ệ ử ụ d ng API c a HuggingFace ủ
4.2 Độ đo đánh giá
ROUGE (Recall-Oriented Understudy for Gisting Evaluation) là một độ đo đánh giá chất lượng cho các mô hình tóm tắt văn bản và d ch máy, b ng cách tính tị ằ ỉ l n-Gram ệtrùng nhau giữa d ữ liệu d đoán với t p d liệự ậ ữ u g c (ROUGE- ố N)
ROUGE-N có công th c tính Precision, Recall và F1 ứ như ở dưới:
Trang 20Hình 20: Longest Common Sequence
ROUGE-L có công thức tính Precision, Recall và F1như ở hình dưới:
Trang 21Hình 21: ROUGE-L Precision, Recall và F1
Trong báo cáo này, nhóm sử d ng F1 c a ROUGE-1, ROUGE-2 và ROUGE-ụ ủ L đểlàm độ đo đánh giá mô hình
4.3 Đánh giá kết quả
4.3.1 Beam Search
Beam Search là thu t toán ph bi n trong nhi u bài toán sinh chuậ ổ ế ề ỗi văn bản như dịch máy ho c tóm tặ ắt văn bản, là m t thu t toán tìm kiộ ậ ếm giúp gia tăng độ chính xác c a quá ủtrình sinh chu ỗi
Ý tưởng của Beam Search là tại mỗi bước dự đoán, thay vì chỉ chọn ra 1 k t qu có ế ảxác su t l n nh t và ch phát triấ ớ ấ ỉ ển trên k t quế ả đó như thuật toán Greedy Search, ta s ẽ chọn
Trang 22ra k t qu có xác su t cao nh t và phát tri n vik ế ả ấ ấ ể ệc tìm ki m t ế ừ k k t qu ế ả đó Trong đó k là
tham số tương ứng với s lượng ng viên ố ứ
Giá trị k càng l n, khớ ả năng sinh chu i tỗ ốt là cao hơn nhưng nó cũng tốn nhi u b ề ộnhớ và năng lực tính toán hơn
Hình 22: Thu t toán Beam Search ậ
Ở ví dụ trên, v i k = 2, thay vì xét m t k t quớ ộ ế ả là nice, Beam Search xét 2 k t qu là ế ảnice và dog, và từđó mở ng thêm ph m vi tìm ki rộ ạ ếm
4.3.2 Kết quả huấn luyện
4.3.2.1 Mô hình Pretrained CNN LSTM –
Kết qu hu n luy n: ả ấ ệ
- Pha 1: Huấn luyện trong 20 epoch, mô hình h i t epoch 11 ộ ụ ở
Trang 23- Pha 2: Bắt đầu t mô hình t t nhừ ố ất trong pha 1, hu n luy n thêm 20 epoch, mô hình ấ ệhội tụ sau 7 epoch (epoch 18)
Đánh giá trên tập test với beam search khác nhau:
Beam size ROUGE-1 ROUGE-2 ROUGE-L Inference time
Đánh giá trên tập test:
Beam size ROUGE-1 ROUGE-2 ROUGE-L Inference time
là tốt hơn so với mô hình LSTM thu n Tuy nhiên, mô hình Pretrained CNN ầ – LSTM lại
có ưu điểm khi th i gian x ờ ử lý nhanh hơn nhiều so v i mô hình ViT GPT 2 ớ –
Trang 24Chương 5 Kết lu ận và hướ ng phát tri n ể
Nhóm đã tìm hi u và xây dể ựng được 2 mô hình Image Captioning theo hai hướng s ửdụng mạng hồi quy và sử dụng Transformer Đồng thời nhóm cũng đã thực nghiệm mô hình trên t p d u ti ng viậ ữ liệ ế ệt
Kết qu ả thu được chưa đạt k t qu cao do giế ả ới hạn v bề ộ d ữ liệu và tài nguyên GPU,
và các tham s ố chưa được hiệ chỉu nh nhiều để ối ưu kết quả t
Hướng phát triển:
- Xây dựng bộ dữ liệu l n ớ hơn
- Tối ưu tham số cho mô hình
Chương 6 Tài liệu tham khảo
[1] Kelvin Xu, et al Show, Attend and Tell: Neural Image Caption Generation with Visual Attention arXiv:1502.03044v3 [cs.LG] 19 Apr 2016
[2] Dosovitskiy, Alexey, et al "An image is worth 16x16 words: Transformers for image recognition at scale." arXiv preprint arXiv:2010.11929 (2020)
[3] Radford, Alec, et al "Language models are unsupervised multitask learners." OpenAI blog 1.8 (2019): 9
Tài liệu Internet:
https://medium.com/@kalpeshmulye/image-captioning-using-hugging-face vision-encoder-decoder-step-2-step-guide-part-2-95f64f6b73b9
https://medium.com/@kalpeshmulye/image-captioning-using-hugging-face transformers/
Trang 25https://ankur3107.github.io/blogs/the-illustrated-image-captioning-using https://huggingface.co/blog/how- -generateto
- https://towardsdatascience.com/the-ultimate-performance-metric- -nlp-in111df6c64460