phần Mở đầu, việc sinh mô tả hình ảnh (Image Captioning) trong phạm vi luận văn này, là bài toán có đầu vào là 01 ảnh tĩnh, hai chiều, định dạng RGB, đầu ra là 01 câu trong ngôn ngữ tự nhiên, tóm tắt nội dung ảnh bằng tiếng Anh. Nó đề cập đến những đối tượng chính cũng như bối cảnh của bức ảnh. Ví dụ như sau: A cat sitting on top of a car near bushes. Three people are tasting and sampling wines together.1: Một số ví dụ về mô tả ảnh từ tập dữ liệu COCO [7] Luận văn tập trung nghiên cứu các phương pháp sinh mô tả ảnh dựa trên học sâu và tiếp cận theo hướng kiến trúc Mã hóa (Encode) - Giải mã (Decode).
Theo hướng 7 tiếp cận này, chúng ta xây dựng mô hình gồm hai phần chính: Hình 1.2: Mô hình sinh mô tả ảnh với kiến trúc mã hóa (Encoder) - giải mã (Decoder) • Mã hóa: ảnh đầu vào được chuẩn hóa và đưa qua mô hình học sâu để kết xuất vec-tơ ngữ cảnh (context vector). Các mô hình học sâu thường được sử dụng ở đây là các mô hình phân loại sử dụng mạng tích chập (CNN), Visual Transformer, hoặc sự kết hợp của mạng tích chập (CNN) và một mô hình phát hiện đối tượng (Object Detection). • Đầu ra của kiến trúc mã hóa nói trên có thể được đưa qua một mạng nơ-ron nhiều tầng (MLP) để tinh chỉnh dữ liệu và đưa về số chiều phù hợp. • Giải mã: là một mô hình xử lý ngôn ngữ như RNN, LSTM, Transformer.
– Ở khâu huấn luyện, phần giải mã nhận đầu vào là vec-tơ ngữ cảnh (context vector) của ảnh và nội dung câu mẫu đã được mã hóa để học các tham số của mô hình. – Ở khâu dự đoán, phần giải mã nhận đầu vào là vec-tơ ngữ cảnh của ảnh và dự đoán ra câu mô tả cho ảnh. Phần giải mã sẽ phải xử lý đầu vào và kết xuất đầu ra dạng ngôn ngữ (các câu mẫu và câu dự đoán). Tuy nhiên các mô hình chỉ làm việc với các vec-tơ số.
Do đó cần phương pháp chuyển đổi từ các thành tố của ngôn ngữ, thường là các từ trong câu, về dạng vec-tơ số. Đây gọi là các phương pháp mã hóa từ (tokenize) hoặc nói chung là quá trình "nhúng" các từ vào không gian số (word embedding). Phần tiếp theo chúng ta sẽ nghiên cứu một cách cụ thể các nội dung nói trên.2 Ảnh số Trước khi đi vào tìm hiểu sâu hơn về bài toán sinh mô tả ảnh, ta sẽ làm rõ thêm về đầu vào của bài toán, đó là ảnh số. Mỗi điểm ảnh biểu diễn bởi một bộ giá trị số đặc trưng cho màu sắc hoặc cường độ sáng (mức xám) I = Ii, j ∈ RH×W ×C với i = 1.W ; H,W là chiều cao và chiều rộng; C là số kênh màu của ảnh.3: Ảnh số dạng RGB.
Dựa trên số kênh màu, ta có thể chia thành một số loại ảnh • Ảnh nhị phân (black-white): Ii, j ∈ {0, 1};C = 1. • Ảnh đa mức xám (grey scale): Ii, j ∈ [0. • Ảnh màu: Ii, j ∈ [0.255]C , trong đó mỗi kênh màu trong số C > 1 kênh biểu thị 01 màu cơ bản, có thể khác nhau tùy theo hệ màu sử dụng. Trong toàn bộ luận văn này, chúng ta xét ảnh đầu vào là ảnh màu dạng RGB, tức các màu cơ bản là đỏ (red), lục (green) và xanh dương (blue).3 Trích xuất đặc trưng 1.1 Bài toán trích xuất đặc trưng Các mô hình mà chúng ta đề cập trong kiến trúc Mã hóa - Giải mã trong bài toán sinh mô tả ảnh đều làm việc với dữ liệu đầu vào dạng vector hoặc ma trận với một kích thước xác định nào đó.
Tuy nhiên, đầu vào và đầu ra thực tế của bài toán mô tả ảnh lại là dạng thô và cần đưa nó về dạng dữ liệu chuẩn để có thể đưa vào mô hình. Ví dụ với bài toán về ảnh, dữ liệu thô là các bức ảnh với kích thước, mức độ sáng tối khác nhau. Với bài toán về ngôn ngữ, dữ liệu thô là các câu độ dài khác nhau, được cấu thành bởi các từ khác nhau trong từ điển. Việc xử lý dữ liệu thô cần đạt được hai mục đích chính.
Một là phải giữ được thông tin quan trọng từ dữ liệu gốc. Hai là phải chuẩn hóa kích thước, thường là giảm chiều về kích thước xác định để việc tính toán trong các mô hình không quá lớn, khả thi để triển khai. Toàn bộ quá trình thực hiện đó gọi là trích xuất đặc trưng (feature extraction). Ví dụ với dữ liệu ảnh, người ta thường chuẩn hóa các ảnh về cùng kích thước, định dạng, sau đó áp dụng các kỹ thuật trích chọn đặc trưng như HOG, SIFT hoặc sử dụng các mạng học sâu để kết xuất các đặc trưng của ảnh.
Trong luận văn này chúng ta sẽ nghiên cứu kỹ các phương pháp sử dụng mạng học sâu để trích xuất đặc trưng ảnh.2 Trích xuất đặc trưng dữ liệu ngôn ngữ - Mã hóa từ Để xử lý bằng các mô hình sinh mô tả ảnh, ta cần cung cấp dữ liệu gồm các bộ ảnh - câu mô tả tương ứng. Các thành phần của câu mô tả được chuẩn hóa và mã hóa thành dạng vector. Thông thường các thành phần cơ bản nhất của câu sẽ là các từ, nên trước hết ta cần mã hóa các từ. Kỹ thuật này gọi là "Tokenizing".
Trước tiên các câu mô tả này cần được tiền xử lý: 10 • Làm sạch dữ liệu text để mô hình không phải học các trường hợp dị biệt như: loại bỏ dấu câu và các ký tự đặc biệt, chuyển tất cả chữ hoa sang chữ thường, loại bỏ các từ chứa chữ số. Ví dụ câu “A man riding on a three-wheeled wheelchair” sau khi làm sạch sẽ trở thành "man riding on three wheeled wheelchair”. Cuối cùng, các câu được thêm ký hiệu đánh dấu mở đầu và kết thúc, ví dụ quy ước là <start> và <end>. • Từ dữ liệu text đã làm sạch ở bước trên, tách từ và xây dựng từ điển.
Các từ trong câu mô tả sẽ được lấy từ đây. • Có thể tính toán độ dài tối đa của câu mô tả dựa trên tập câu mô tả mẫu, hoặc dùng một tham số độ dài tối đa mong muốn cho câu. Tiếp theo, các dữ liệu dạng "từ" phải được đưa về dạng "số". Vì vậy, mỗi từ trong từ điển đã xây dựng sẽ được ánh xạ với chỉ mục (index) duy nhất.
Sau đó, để phản ánh quan hệ ngữ nghĩa giữa các từ, nhiều phương pháp mã hóa khác nhau đã được sử dụng, ví dụ dựa trên việc đếm tần suất của từ trong câu và trong văn bản, vector hóa thông qua một mạng ANN đơn giản, hoặc vector hóa bằng các mô hình học.4 Một số dạng mô hình mạng nơ-ron nhân tạo 1.1 Mạng nơ-ron nhân tạo truyền thống Để giải quyết bài toán phân loại trong trường hợp dữ liệu không tách được tuyến tính, có một giải pháp là ghép các mô hình phân loại tuyến tính thành nhiều tầng (layer). Đây chính là ý tưởng của mạng nơ-ron nhân tạo (ANN) đơn giản, hay mạng nơ-ron nhiều tầng (multi layers perceptron - MLP). Mô hình phân loại tuyến tính có thể chia làm hai bước tổng hợp thông tin, tính z = WT x + b, và kích hoạt phân loại, tính đầu ra a = f (z); với W, b là các tham số, f là hàm kích hoạt. Khi ghép các mô hình này thành các tầng, thì đầu ra của tầng trước (l − 1) sẽ là đầu vào của tầng sau (l).
Tầng đầu vào (input layer) được coi là tầng 0, đầu ra là 11 output layer. Ở giữa đầu vào và đầu ra, có thể có một hoặc nhiều tầng trung gian, gọi là tầng ẩn (hidden layer). Lúc đó quá trình tính toán sẽ như trong hình 1.4: Kết nối giữa 02 tầng (layer) trong MLP (ANN). Hình minh họa từ Internet.
Mỗi hình tròn trong các tầng thể hiện một điểm tính toán nào đó, gọi là một nút (node) hoặc một unit, chỉ số tầng là l. Hàm kích hoạt thường được sử dụng cho MLP có nhiều loại như ReLU, sigmoid, tanh. Để tìm các tham số tối ưu của mô Hình 1.5: Các hàm kích hoạt thông dụng. Hình minh họa từ Internet.
hình, chúng ta cực tiểu hóa hàm mất mát J(W, b) −→ minW,b , trong đó W là trọng số;b là bias. Có một số dạng hàm mất mát khác nhau được sử dụng, như các hàm dựa trên tổng bình phương sai số (MSE) hoặc Cross Entropy. Để thực hiện việc cực tiểu hóa hàm mất mát J(W, b), người ta sử dụng các phương pháp dựa trên đạo hàm (gradient), và cần thực hiện tính đạo hàm của nó theo 12 từng tham số. Tuy nhiên do các mạng học sâu có nhiều tầng, chúng ta không thể tính toán trực tiếp các đạo hàm này.
Việc xác định đạo hàm cần tính toán qua hai quá trình là tính theo chiều tiến (feedforward) và tính kiểu truy hồi hay gọi là lan truyền ngược (backpropagation).2 Mạng nơ ron tích chập Trong mạng nơ-ron truyền thống MLP, tất cả các nút tại các tầng đều được liên kết bởi tham số, dẫn đến số tham số rất lớn. Ngoài ra do mỗi nút đều nhân với một tham số độc lập dẫn đến mạng không phản ánh được quan hệ giữa các thành phần dữ liệu và không phù hợp với một số dạng dữ liệu, ví dụ dữ liệu dạng lưới (grid) như ảnh số. Khắc phục này, người ta thay phép nhân ma trận - vec tơ trong MLP bằng phép nhân chập và tạo thành kiến trúc mạng nơ ron đặc biệt gọi là mạng nơ ron tích chập (Convolution Neural Network – CNN [24]). Về tổng thể, kiến trúc của CNN như trong hình 1.6: Kiến trúc CNN [24] Tầng nhân chập hai chiều (2D Convolution layers) Tầng này thực hiện phép nhân chập ma trận số hai chiều đầu vào IH×W với bộ lọc Fh×w H W ′ I [i, j] = I ∗ F = ∑ ∑ F [m, n] · I [i − m, j − n] i j với các chỉ số chạy trong giới hạn phù hợp để công thức có nghĩa.
13 Ví dụ như hình sau, ma trận dữ liệu kích thước 5 × 5, ma trận bộ lọc có kích thước 3 × 3. Để thu được nhiều đặc trưng khác nhau của ảnh, ta cần sử dụng nhiều bộ lọc khác Hình 1.7: Phép nhân chập [24] nhau về kích thước (size). Khoảng cách khi di chuyển bộ lọc trên dữ liệu gọi là bước nhảy (stride). Ví dụ, di chuyển sang một điểm dữ liệu liền kề, stride=1.
Để thu được kích thước đầu ra mong muốn, ta có thể phải thêm vùng đệm (padding) bên ngoài ảnh gốc. Giá trị bổ sung vào vùng đệm là 0.