Mạng nơ-ron tích chập (Convolutional neural network)

Một phần của tài liệu Tìm hiểu bài toán tạo câu mô tả cho ảnh thời trang dùng học sâu (Trang 28 - 32)

Thị giác máy tính là một lĩnh vực nghiên cứu đang phát triển rất mạnh trong Học sâu. Nó giúp con người thực hiện các công việc như phân loại hình ảnh, phát hiện vật thể, áp dụng cho xe tự động lái, hệ thông nhận diện khuôn mặt trong bảo mật, chẩn đoán bệnh bằng hình ảnh trong y tế. Tuy nhiên để máy tính có thể hiểu và học được từ các hình ảnh không phải là điều dễ dàng. Máy tính hiểu hình ảnh là một ma trận

𝑚 × 𝑛 đối với ảnh đơn sắc hoặc một ten-xơ (tensor) 𝑚 × 𝑛 × 3 đối với ảnh hệ màu

RGB mỗi điểm ảnh (pixel) mang giá trị trong khoảng [0, 255]. Nếu chúng ta áp dụng mạng nơ-ron multilayer perceptron thì số lượng các liên kết và có rất nhiều các tham số. Ví dụ đối với một bức ảnh có kích thước 64 × 64 × 3 làm dữ liệu đầu vào thì số lượng nút ở lớp đầu vào (input layer) là 12288 nút và lớp ẩn (hidden layer) sẽ phải kết nối đầy đủ (fully connected) với lớp dữ liệu đầu vào này, giả sử lớp ẩn kế tiếp có 1000 nút thì số lượng liên kết là 12288000, số lượng bias là 1000 vậy tổng số lượng tham số là 12289000 và đây mới chỉ là liên kết giữa hai lớp đầu tiên, điều đó tạo nên một mạng nơ-ron với số lượng liên kết rất lớn, tạo cản trở lớn trong quá trình huấn luyện mô hình. Mặt khác dữ liệu hình ảnh mang một lượng lớn thông tin về mặt cấu trúc không gian trong bức ảnh, nhưng một mạng nơ-ron kết nối đầy đủ thì không thể mang được loại thông tin này.

Mạng nơ-ron tích chập (Convolutional neural network-CNN) [11] được sinh ra để giải quyết vấn đề trên. Mạng nơ-ron tích chập được áp dụng nhiều trong các tác vụ như phân loại hình ảnh, nhận diện, khoanh vùng đối tượng. CNN có thể nắm bắt được các thông tin về cấu trúc không gian của bức ảnh, ngoài ra còn có các tính chất như chia sẻ các tham số (Parameter sharing), liên kết không toàn bộ giữa các lớp (Sparsity of connections) giúp cho số lượng kết nối và tham số được giảm đi đáng kể, từ đó tăng hiệu suất của hệ thống mạng nơ-ron.

Mạng nơ-ron tích chập đưa ra các khái niệm chính sau đây:

Vùng tiếp nhận cục bộ (Local recceptive fields): Trong mạng nơ-ron kết nối

Chương 3: Học sâu

16

Tuy nhiên trong kiến trúc CNN, mỗi nơ-ron chỉ liên kết với một vùng nhất định ở lớp trước đó, vùng này được gọi là vùng tiếp nhận cục bộ (Recceptive fields), thông thường vùng tiếp nhận này sẽ có dạng hình vuông.

Recceptive fields giúp giảm đáng kể số lượng liên kết nơ-ron giữa các lớp và giúp hệ thống mạng nơ-ron mang được các thông tin về mặt cấu trúc không gian, giúp phân tách dữ liệu ảnh, chọn ra được những vùng dữ liệu mang giá trị cao.

Hình 3.8: Recceptive field trong CNN.

Chia sẻ trọng số (Shared-weight): Mỗi nơ-ron trong mạng tính toán một giá trị

đầu ra bằng cách áp dụng một số hàm cho các giá trị đầu vào đến từ một vùng tiếp nhận (receptive field) trong lớp trước đó. Hàm được áp dụng cho các giá trị đầu vào được chỉ định bởi một véc-tơ chứa các tham số được huấn luyện. Quá trình học của mạng chính là việc thực hiện các điều chỉnh tăng hoặc giảm các tham số này sao cho độ chính xác trong kết quả dự đoán của mạng được gia tăng. Véc-tơ chứa các tham số này được gọi là các bộ lọc (filter), các véc-tơ học được từ quá trình huấn luyện có khả năng phát hiện các đặc điểm của bức ảnh (feature detector) (Ví dụ: Ở mức độ thấp có thể nhận diện các góc cạnh, ở mức độ cao hơn có thể nhận diện các đối tượng cụ thể nào đó trong bức ảnh). Một đặc điểm khác biệt của CNN là nhiều nơ-ron chia sẻ cùng một bộ lọc. Điều này làm giảm đáng kể số lượng các tham số vì ta chỉ cần sử dụng một véc-tơ tham số được sử dụng trên tất cả các vùng tiếp nhận, thay vì mỗi vùng tiếp nhận cần một véc-tơ tham số riêng.

Tích chập (Convolutional): Là các lớp sử dụng phép toán tích chập lên dữ liệu

đầu vào và chuyển kết quả sang lớp tiếp theo, các dữ liệu này là các dữ liệu hai chiều hoặc ba chiều được biểu diễn bằng các ma trận hoặc các ten-xơ.

Chương 3: Học sâu

17 Hình 3.9: Phép tích chập.

Để hiểu rõ hơn, ta xét ví dụ trong hình trên. Trong đó ma trận 𝐼 là ma trận chứa dữ liệu đầu vào với số chiều 7 x 7, ma trận 𝐾 là ma trận các tham số cần huấn luyện của mạng với số chiều 3 x 3 và ma trận chứa kết quả của phép toán tích chập giữa ma trận 𝐼 và 𝐾 với số chiều thu được là 5 x 5. Ta có công thức tính như sau:

(𝐼 ∗ 𝐾)𝑚,𝑛 = ∑ ∑ 𝐼𝑚×𝑠+𝑖−1,𝑛×𝑠+𝑗−1× 𝐾𝑖,𝑗

3

𝑗=1 3

𝑖=1

Ma trận thu được có số chiều được tính như sau:

𝑚 = 𝑚𝐼 − 𝑚𝐾+ 1, 𝑛 = 𝑛𝐼 − 𝑛𝐾+ 1

Ma trận K sẽ được quét qua ma trận dữ liệu đầu vào I từ trái sang phải, từ trên xuống dưới với một bước nhảy nhất định, mỗi lần quét ta thực hiện phép toán tích chập cho vùng dữ liệu tương ứng, kết quả nhận được là ma trận 𝐼 ∗ 𝐾. Ma trận 𝐾

chính là được gọi là bộ lọc (filter/kernel), ma trận kết quả 𝐼 ∗ 𝐾 được gọi là ma trận đặc tính (features map).

Mỗi nơ-ron trong lớp tích chập chỉ xử lý dữ liệu trong từng vùng tiếp nhận cục bộ tương ứng của nó. Mỗi bộ lọc có nhiệm vụ nhận diện một đặc điểm riêng của dữ liệu đầu vào nên trong một lớp tích chập sẽ bao gồm nhiều bộ lọc khác nhau để có thể nắm bắt được càng nhiều đặc tính của dữ liệu, các kết quả đầu ra sẽ được xếp chồng lên nhau theo thứ tự. Mặc dù có thể sử dụng các mạng nơ-ron truyền thống với kết nối đầy đủ giữa các nơ-ron để học các đặc tính cũng như phân loại dữ liệu, tuy việc áp dụng kiến trúc này vào dữ liệu hình ảnh là không khả thi. Các mạng này yêu cầu một số lượng lớn nơ-ron, ngay cả đối với các mạng đơn giản để xử lý dữ liệu, do kích thước đầu vào của hình ảnh thường rất lớn, trong đó mỗi pixel đều là một tham số có liên quan. Phép toán tích mang lại một giải pháp cho vấn đề này vì nó làm giảm

Chương 3: Học sâu

18

số lượng các tham số cần thiết, cho phép mạng có thể có nhiều lớp hơn với ít tham số hơn. Ví dụ cụ thể như, với bất kể hình ảnh có kích thước nào, các vùng tiếp nhận có kích thước 3 x 3 đều có cùng tham số được chia sẻ nên chỉ yêu cầu 9 tham số.

Padding và stride:

Khi chúng ta quét bộ lọc lần lượt để thực hiện phép tính tích chập, sau nhiều lớp tích chập thì kích thước của ma trận đặc điểm sẽ giảm đi đáng kể, mặt khác khi chúng ta trượt thì các điểm ảnh ở các cạnh của ma trận sẽ không được quét qua nhiều lần như các điểm ảnh ở khu vực trung tâm, điều đó dẫn đến việc bỏ sót nhiều dữ liệu ở các khu vực rìa của bức ảnh. Để giải quyết hai vấn đề trên ta sẽ thêm padding cho dữ liệu.

Stride là bước trượt của bộ lọc khi quét. Với stride càng lớn thì ma trận đặc tính nhận được có kích thước càng nhỏ

Hình 3.10: Padding và Stride.

Sau khi áp dụng padding và stride ta thu được ma trận có kích thước

𝑚 =𝑚𝐼 − 𝑚𝐾+ 2𝑝

𝑠 + 1, 𝑛 =

𝑛𝐼 − 𝑛𝐾+ 2𝑝

𝑠 + 1

Lớp tổng hợp (Pooling layer): Thường được sử dụng giữa các lớp tích chập.

Lớp tổng hợp có nhiệm vụ đơn giản hóa thông tin đầu ra, giảm số lượng các nơ-ron từ đó giảm thời gian tính toán.

Chương 3: Học sâu

19

Các phương pháp pooling phổ biến là Max pooling và Average pooling, max pooling lấy giá trị lớn nhất của vùng làm kết quả, còn average pooling lấy giá trị trung bình của vùng. Lớp tổng hợp giúp giảm kích thước giá trị đầu ra nhưng vẫn giữ lại được các thông tin đặc trưng, và càng làm nổi bật các vùng dữ liệu này hơn.

Lớp kết nối đầy đủ (Fully connected layer):

Kiến trúc một mạng CNN cơ bản bao gồm một chuỗi các lớp tích chập – tổng

hợp (conv-pool) liên tiếp nhau càng về phía sau mô hình học được càng nhiều các đặc tính cao cấp của dữ liệu, cụm conv-pool cuối cùng sẽ được chuyển từ ten-xơ thành véc-tơ và được kết nối đầy đủ sau đó xử lí để đưa ra kết quả dự đoán mong muốn. Số lượng nơ-ron ở lớp kết quả đầu ra này sẽ phụ thuộc vào số lượng kết quả mà ta mong muốn.

Hình 3.12: Kiến trúc một mạng CNN cơ bản.

Một phần của tài liệu Tìm hiểu bài toán tạo câu mô tả cho ảnh thời trang dùng học sâu (Trang 28 - 32)

Tải bản đầy đủ (PDF)

(58 trang)