Cấu trúc mạng neural tích chập

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu kỹ thuật deep learning và ứng dụng trong phân loại ảnh (Trang 44 - 53)

5. Cấu trúc của luận văn:

2.3. Cấu trúc mạng neural tích chập

Các lớp cơ bản trong một mạng CNN bao gồm: Lớp tích chập (Convolutional),

Hình 2. 1. Sơ đồ tổng tổng quát cấu trúc mạng CNN

Lớp lấy mẫu (Pooling) và Lớp kết nối đầy đủ (Fully-connected), đƣợc thay đổi về số lƣợng và cách sắp xếp để tạo ra các mô hình huấn luyện phù hợp cho từng bài toán khác nhau.

Input đầu vào là một bức ảnh đƣợc biểu diển bởi ma trận pixel với kích thƣớc: [w x h x d]

W (Width) : chiều rộng H (height) : chiều cao

D (depth) : Là độ sâu, hay dễ hiểu là số lớp màu của ảnh.

- Lớp tích chập (Convolutional) đầu tiền

Đây là thành phần quan tr ng nhất trong mạng CNN, cũng là nơi thể hiện tƣ tƣởng xây dựng sự liên kết cục bộ thay vì kết nối toàn bộ các điểm ảnh. Các liên kết cục bộ này đƣợc tính toán bằng phép tích chập giữa các giá trị điểm ảnh trong một vùng ảnh cục bộ với các bộ l c – filters – có kích thƣớc nhỏ. Chỉ nối một số nút lớp này với 1 nút lớp sau, thể hiện cho tích chập, kết nối vùng K x K noron với nút kết quả cho phép nhân trong tích chập. Vùng K x K là vùng cục bộ của bức ảnh - vùng tiếp nhận cục bộ.

Để cho dễ hình dung tôi sẽ lấy ví dụ trên ảnh xám, tức là ảnh đƣợc biểu diễn dƣới dạng ma trận A kích thƣớc m*n.

Hình 2. 3. Ma trận đầu vào

Kernel là một ma trận vuông kích thƣớc k*k trong đó k là số lẻ. k có thể bằng 1, 3, 5, 7,. . .

Hình 2. 4. ma trận bộ lọc

Ví dụ: Lấy từng vùng X trên ảnh có kích thƣớc k*k nhân với W. Phép nhân này quy ƣớc bằng cách nhân các phần tử ở vị trí tƣơng ứng trên 2 ma trận, sau đó cộng tất cả chúng lại. Phép nhân nhƣ vậy g i là tích chập của X và W.

Hình 2. 5. Các bƣớc thực hiện phép tính tích chập cho ma trận X với bộ lọc K

Vậy khi tính tại x22 (ô khoanh đỏ trong hình), ma trận A cùng kích thƣớc

với W, có x22 làm trung tâm có màu nền da cam như trong hình. Sau đó tính

y11 = sum(A W ) = x11 w11 + x12 w12 + x13 w13 + x21w21 + x22w22 + x23w23 + x31w31 + x32w32 + x33w33 = 4.

Kết quả bằng 4 bỏ vào ô Y[1,1] tƣơng ứng vị trí [2,2] của ảnh. Do chập W lên từng phần của ảnh nên Y thu đƣợc có kích thƣớc nhỏ hơn ảnh, do các ô nằm sát biên của ảnh không tính tƣơng ứng vị trí qua đƣợc vì chập W lên sẽ tràn ngoài ảnh.

Kích thƣớc của ma trận Y nhỏ hơn ma trận X. Kích thƣớc ma trận Y là (m-k+1) * (n-k+1) nếu kích thƣớc ảnh là m * n.

Hình 2. 6. kết quả phép tính tích chập

Điểm ảnh ở khoảng trung tâm của ma trận đầu vào đƣợc bao phủ bởi rất nhiều vùng 3×3 nghĩa là đƣợc sử dụng để tính nhiều giá trị đầu ra, trong khi những điểm ảnh ở góc ho c cạnh chỉ đƣợc sử dụng 1 ho c 2 lần vì chỉ bị bao phủ bởi 1 ho c 2 vùng 3×3. Vì thế chúng ta đánh mất rất nhiều thông tin (có thể quan tr ng) tại các vùng gần cạnh của ảnh.

thêm vào xung quanh ma trận đầu. Việc thêm đƣờng viền phụ làm tăng kích thƣớc của ma trận đầu vào, dẫn tới tăng kích thƣớc ma trận đầu ra. Từ đó độ chênh lệch giữa ma trận đầu ra với ma trận đầu vào gốc giảm. Những ô nằm trên cạnh/ góc của ma trận đầu vào gốc cũng lùi sâu vào bên trong hơn, dẫn tới đƣợc sử dụng nhiều hơn trong việc tính toán ma trận đầu ra, tránh đƣợc việc mất mát thông tin.

Hình 2. 7. Ma trận X (lớp vào) khi thêm viền 0 bên ngoài

Trong hình, ma trận đầu vào kích thƣớc 5×5 đƣợc thêm vào đƣờng viền phụ kích thƣớc 1 (p=1), trở thành ma trận 7×7. Theo quy ƣớc, các ô trên đƣờng viền phụ có giá trị bằng không, p là kích thƣớc của đƣờng viền phụ. Trong hầu hết các trƣờng hợp, đƣờng viền phụ đổi xứng trái-phải, trên-dƣới so với ma trận gốc, vì thế kích thƣớc của ma trận đầu vào đƣợc tăng lên 2p mỗi chiều. Ma trận đầu ra do đó có kích thƣớc (n+2p−k+1)×(n+2p−k+1).

Trong phép nhân chập ở trên, bộ l c trƣợt trên ma trận đầu vào 1 hàng/ cột trong mỗi bƣớc di chuyển. Tuy nhiên, để bỏ qua một số điểm trên ảnh khi tích chập nhằm giảm kích thƣớc của ma trận Y, giá trị này có thể bằng 2, 3 ho c lớn hơn. Số hàng/ cột mà bộ l c trƣợt qua trong một bƣớc di chuyển ký hiện là s(stride). Ví dụ S=2

Nếu stride = s, padding=1, Kernel = k thì ảnh m x n sau khi convolution có kích thƣớc

( ) ( ) (2. 1)

Vậy tích chập là xác định đ c trƣng ảnh nhƣ: cạnh, đƣờng; làm mờ, làm nét ảnh,. . . tùy vào kernel đƣợc ch n.

Trƣờng hợp tổng quát đầu ra của lớp convolution layer đƣợc g i là Feature map đƣợc xác định theo các tham số:

Với input đầu vào có giá trị W1 x H1 x D1, trong đó: W1: là chiều rộng của ma trận input.

H1: là chiều cao của ma trận input.

D1: là chiều sâu của ma trận input (với ảnh rgb chúng ta có giá trị là 3, đại diện cho 3 màu Red, Green, Blue).

Các tham số của lớp convolution: K: số lƣợng filter định nghĩa. F: Kích thƣớc ma trận filter.

S: Khoảng cách trƣợt của ma trạn filter.

P: Padding, là viền ngoài đƣợc thêm vào input.

Chiều của ma trận filter đúng bằng chiều input đầu vào là D1 . Kích thƣớc của feature W2 x H2 x D2 đƣợc xác định bởi:

(2. 2)

(2. 3)

(2. 4)

tuyến tính, nó là một vấn đề cần thiết đối với mạng CNNs. Một số hàm activation khử tuyến tính nhƣ Tanh, Sigmoid, Relu, nhƣng đƣợc xử dụng nhiều nhất là hàm Relu đã đƣợc trình bày ở trên. Hàm Relu sẽ sửa những giá trị âm ở feature map thành 0. Ta có thể dùng nhiều filter để có thể phát hiện nhiều đ c trƣng của ảnh.

Nhƣ vậy, sau khi đƣa một bức ảnh đầu vào cho lớp Tích chập ta nhận đƣợc kết quả đầu ra là một loạt ảnh tƣơng ứng với các bộ l c đã đƣợc sử dụng để thực hiện phép tích chập. Các tr ng số của các bộ l c này đƣợc khởi tạo ngẫu nhiên trong lần đầu tiên và sẽ đƣợc cải thiện dần xuyên suốt quá trình huấn luyện.

- Lớp lấy mẫu (Pooling layer)

Một thành phần tính toán chính khác trong mạng CNN là lấy mẫu (Pooling), lớp này thƣờng đƣợc đ t sau lớp Tích chập để làm giảm kích thƣớc ảnh đầu ra trong khi vẫn giữ đƣợc các thông tin quan tr ng của ảnh đầu vào. Việc giảm kích thƣớc dữ liệu có tác dụng làm giảm đƣợc số lƣợng tham số cũng nhƣ tăng hiệu quả tính toán. Lớp lấy mẫu cũng sử dụng một cửa sổ trƣợt để quét toàn bộ các vùng trong ảnh tƣơng tự nhƣ lớp Tích chập, và thực hiện phép lấy mẫu thay vì phép tích chập – tức là ta sẽ ch n lƣu lại một giá trị duy nhất đại diện cho toàn bộ thông tin của vùng ảnh đó.

Cách làm rất đơn giản, ta quy định trƣớc kích thƣớc pooling là K*K. Ta trƣợt khung K*K này lên ma trận ảnh sau khi convolution lấy max ho c average các giá trị trong khung đó.

Ví dụ

Thƣờng dùng pooling với size =2 x 2, stride=2, padding=0. Khi đó kích thƣớc dữ liệu giảm đi một nửa. Depth thì giữ nguyên do pooling xử lý riêng trên từng mảng 2 chiều.

Hình 2. 9. Mô hình lớp lấy mẫu 6

Ảnh 224x224 còn lại 112x112 Có nhiều kiểu pool:

Max pooling: Lấy giá trị lớn nhất của ma trận pool.

Average pooling: Lấy giá trị trung bình của ma trận pool. Sum pooling: Lấy tổng giá trị của ma trận pool.

Phổ biến là lấy max và lấy average

Hình 2. 10. Ví dụ về lớp lấy mẫu7

Nhƣ vậy, với mỗi ảnh đầu vào đƣợc đƣa qua lấy mẫu ta thu đƣợc một ảnh đầu ra tƣơng ứng, có kích thƣớc giảm xuống đáng kể nhƣng vẫn giữ đƣợc các đ c trƣng cần thiết cho quá trình tính toán sau này.

Với feature input đầu vào có giá trị W1 x H1 x D1, trong đó: W1: là chiều rộng của feature.

H1: là chiều cao của feature.

D1: là chiều sâu của ma trận feature. Các tham số của lớp convolution:

S: Khoảng cách trƣợt của ma trận filter. F: Kích thƣớc vùng giảm.

Kích thƣớc của feature W2 x H2 x D2 đƣợc xác định bởi:

(2. 5)

(2. 6)

(2. 7)

Thông thƣờng, giá trị F và S trong lớp pooling thƣờng đƣợc ch n là F = 2 và S =2. Việc ch n F lớn có thể dễ dàng làm mất đi các đ c trƣng của feature khi kích thƣớc vùng bị thu giảm quá lớn.

Với 3 layer đã trình bày trong lớp convolution layer là Convolution, Relu, Pooling sẽ đƣợc kết hợp với nhau để tạo thành một khối g i là convolutional block. Tuỳ theo yêu cầu bài toán, tài nguyên cơ sở mà số lƣợng convolution block này có thể khác nhau.

Lớp kết nối đầy đủ

Lớp kết nối đầy đủ này đƣợc thiết kế hoàn toàn tƣơng tự nhƣ trong mạng neural truyền thống, tức là tất cả các điểm ảnh đƣợc kết nối đầy đủ với node

trong lớp tiếp theo.

Sau khi qua lớp Convolution layer, ta đã có đƣợc một output là cái feature đƣợc trích xuất từ ảnh đầu vào, công việc tiếp theo là nó sẽ đƣợc đƣa qua lớp fully-connected layer để h c. Cấu tạo và hoạt động của lớp Fully- connected giống hoàn toàn mới mạng MLP.

Các feature sẽ đƣợc flatten thành mảng 1 chiều, đƣợc đƣa qua h c từng lớp trong FC. Cuối cùng sẽ đƣa qua một lớp classifer để dự đoán xác xuất vào mỗi lớp. Hiện nay, hàm Softmax function đƣợc sử dụng chủ yếu trong lớp này.

Lớp cuối cùng của Fully-connected layer, chúng ta cần phân loại xác suất với mỗi đầu vào input rơi vào class đƣợc phân loại trƣớc. Để tích đƣợc xác suất này, chúng ta sử dụng hàm softmax. Với mỗi input x, ai là xác xuất để input đó rơi vào class i. Điều kiện của ai là lớn hơn 0 và có tổng bằng 1, chúng ta có thêm điều kiện là với zi = wiT

x càng lớn thì xác suất rơi vào class i càng lớn. Công thức tổng quát của hàm softmax là:

)

∑ ) (2. 8) C là số lƣợng các lớp phân loại

Ta dễ dàng thấy đƣợc: Với zi bằng nhau thì ai cũng bằng nhau. Các giá trị zi âm thì giá trị ai vẫn dƣơng và vẫn đảm bảo đúng thứ tự.

Khi làm việc với các giá trị zi lớn thì thì việc tính toán các giá trị exp() có thể gây hiện tƣợng tràn số. Để khắc phục việc này, ta có thể trừ đi tất cả các giá trị zi cho một đại lƣợng đủ lớn.

Công thức softmax sẽ đƣợc viết thành:

)

∑ ( ) ) ∑ ) ( ) )

∑ ( ) )

(2. 9) Với C=max(zi).

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu kỹ thuật deep learning và ứng dụng trong phân loại ảnh (Trang 44 - 53)

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

(79 trang)