Các loại mạng CNN

Một phần của tài liệu LUẬN văn THẠC sĩ tìm HIỂU MẠNG TÍCH CHẬP và xây DỰNG ỨNG DỤNG đếm các vật THỂ THÔNG DỤNG (Trang 37 - 46)

CHƯƠNG 2 GIỚI THIỆU VỀ MẠNG CNN VÀ RETINANET

2.1. MẠNG NƠ-RON TÍCH CHẬP

2.1.3. Các loại mạng CNN

Mạng CNN là con của phương pháp học có giám sát, sau đây tơi xin trình bày về các loại mạng CNN thông dụng

a. Mạng LeNet

Mạng LeNet gồm hai phần  Một khối các tầng tích chập  Một khối các tầng kết nối đầy đủ

Hình 2.2. Minh họa mạng LeNet

Các đơn vị cơ bản trong khối tích chập là một tầng tích chập và một lớp gộp trung bình theo sau (lưu ý rằng gộp cực đại hoạt động tốt hơn, nhưng nó chưa được phát minh vào những năm 90). Tầng tích chập được sử dụng để nhận dạng các mẫu không gian trong ảnh, chẳng hạn như các đường cạnh và các bộ phận của vật thể, lớp gộp trung bình phía sau được dùng để giảm số chiều. Khối tầng tích chập tạo nên từ việc xếp chồng các khối nhỏ gồm hai đơn vị cơ bản này. Mỗi tầng tích chập sử dụng hạt nhân có kích thước 5×55×5 và xử lý mỗi đầu ra với một hàm kích hoạt sigmoid (nhấn mạnh rằng ReLU hiện được biết là hoạt động đáng tin cậy hơn, nhưng chưa được phát minh vào thời điểm đó). Tầng tích chập đầu tiên có 6 kênh đầu ra và tầng tích chập thứ hai tăng độ sâu kênh hơn nữa lên 16.

Tuy nhiên, cùng với sự gia tăng số lượng kênh này, chiều cao và chiều rộng lại giảm đáng kể. Do đó, việc tăng số lượng kênh đầu ra làm cho kích thước tham số của hai tầng tích chập tương tự nhau. Hai lớp gộp trung bình có kích thước 2×22×2 và sải bước bằng 2 (điều này có nghĩa là chúng khơng chồng chéo). Nói cách khác, lớp gộp giảm kích thước của các biểu diễn cịn một phần tư kích thước trước khi gộp.

Đầu ra của khối tích chập có kích thước được xác định bằng (kích thước batch, kênh, chiều cao, chiều rộng). Trước khi chuyển đầu ra của khối tích chập sang khối kết nối đầy đủ, Tơi phải trải phẳng từng mẫu trong minibatch. Nói cách khác, Tôi biến đổi đầu vào 4D thành đầu vào 2D tương thích với các tầng kết nối đầy đủ: nhắc lại, chiều thứ nhất là chỉ số các mẫu trong minibatch và chiều thứ hai là biểu diễn vector phẳng của mỗi mẫu. Khối tầng kết nối đầy đủ của LeNet có ba tầng kết nối đầy đủ, với số lượng đầu ra lần lượt là 120, 84 và 10. Bởi vì Tơi đang thực hiện bài tốn phân loại, tầng đầu ra 10 chiều tương ứng với số lượng các lớp đầu ra khả thi (10 chữ số từ 0 đến 9).

b. Mạng AlexNet

AlexNet, mạng quy mô lớn đầu tiên được triển khai để đánh bại các phương pháp thị giác máy tính truyền thống trong một thử thách quy mơ lớn; VGG, mạng tận dụng một số lượng các khối được lặp đi lặp lại; Mạng trong Mạng (Network in Network - NiN), một kiến trúc nhằm di chuyển toàn bộ mạng nơ-ron theo từng điểm ảnh ở đầu vào; GoogLeNet sử dụng các phép nối song song giữa các mạng; Mạng phần dư (residual networks - ResNet) là kiến trúc mạng được sử dụng phổ biến nhất hiện nay; và cuối cùng là Mạng tích chập kết nối dày đặc (densely connected network - DenseNet), dù u cầu khối lượng tính tốn lớn nhưng thường được sử dụng làm mốc chuẩn trong thời gian gần đây.

Mặc dù đã trở nên nổi tiếng trong cộng đồng thị giác máy tính và học máy sau khi LeNet được giới thiệu, mạng nơ-ron tích chập chưa lập tức thống trị lĩnh vực này. Dẫu LeNet đã đạt được kết quả tốt trên những tập dữ liệu nhỏ, chất lượng và tính khả thi của việc huấn luyện mạng tích chập trên một tập dữ liệu lớn và sát thực tế hơn vẫn là một câu hỏi. Trên thực tế, hầu hết trong khoảng thời gian từ đầu những năm 1990 cho tới năm 2012 với những thành tựu mang tính bước ngoặt, mạng nơ-ron tích chập thường khơng sánh bằng những phương pháp học máy khác, như Máy Vector hỗ trợ - SVM.

Với thị giác máy tính, phép so sánh này dường như không công bằng. Nguyên nhân là do giá trị đầu vào của mạng tích chập chỉ bao gồm giá trị điểm ảnh thô hoặc đã xử lý thô (như định tâm ảnh (centering)), và kinh nghiệm cho thấy những giá trị thô này không bao giờ nên dùng trực tiếp trong các mơ hình truyền thống. Thay vào đó, các hệ thống thị giác máy tính cổ điển dùng những pipeline trích xuất đặc trưng một cách thủ cơng. Thay vì được học, các đặc trưng được tạo thủ công. Hầu hết những tiến triển trong

ngành đều đến từ các ý tưởng thơng minh hơn trong tạo đặc trưng và ít để ý hơn tới thuật tốn học.

Mặc dù cũng đã có các thiết bị phần cứng tăng tốc độ thực thi mạng nơ- ron vào đầu những năm 1990, chúng vẫn chưa đủ mạnh để triển khai những mạng nơ-ron nhiều kênh, nhiều tầng với số lượng tham số lớn. Ngoài ra, những tập dữ liệu vẫn cịn tương đối nhỏ. Thêm vào đó, những thủ thuật chính để huấn luyện mạng nơ-ron bao gồm khởi tạo tham số dựa trên thực nghiệm, các biến thể tốt hơn của hạ gradient ngẫu nhiên, hàm kích hoạt khơng ép (non-squashing activation functions), và thiếu các kỹ thuật điều chuẩn hiệu quả.

Vì vậy, thay vì huấn luyện các hệ thống đầu-cuối (từ điểm ảnh đến phân loại), các pipeline cổ điển sẽ thực hiện các bước sau:

1. Thu thập tập dữ liệu đáng chú ý. Trong những ngày đầu, các tập dữ liệu này địi hỏi các cảm biến đắt tiền (ảnh có 1 triệu điểm ảnh đã được coi là tối tân nhất vào thời điểm đó).

2. Tiền xử lý tập dữ liệu với các đặc trưng được tạo thủ công dựa trên các kiến thức quang học, hình học, các cơng cụ phân tích khác và thi thoảng dựa trên các khám phá tình cờ của các nghiên cứu sinh.

3. Đưa dữ liệu qua một bộ trích chọn đặc trưng tiêu chuẩn như SIFT, hoặc SURF, hay bất kỳ pipeline được tinh chỉnh thủ công nào.

4. Dùng các kết quả biểu diễn để huấn luyện một bộ phân loại ưa thích, có thể là một mơ hình tuyến tính hoặc phương pháp hạt nhân.

Hình 2.3. Minh họa mạng AlexNet

b. Mạng VGG-16

Với VGG-16, quan điểm về một mạng nơ ron sâu hơn sẽ giúp ích cho cải thiện độ chính xác của mơ hình tốt hơn. Về kiến trúc thì VGG-16 vẫn dữ các đặc điểm của AlexNet nhưng có những cải tiến:

Kiến trúc VGG-16 sâu hơn, bao gồm 13 layers tích chập 2 chiều (thay vì 5 so với AlexNet) và 3 layers fully connected.

Lần đầu tiên trong VGG-16 chúng Tơi xuất hiện khái niệm về khối tích chập (block). Đây là những kiến trúc gồm một tập hợp các layers CNN được lặp lại giống nhau. Kiến trúc khối đã khởi nguồn cho một dạng kiến trúc hình mẫu rất thường gặp ở các mạng CNN kể từ đó.

VGG-16 cũng kế thừa lại hàm activation ReLU ở AlexNet.

VGG-16 cũng là kiến trúc đầu tiên thay đổi thứ tự của các block khi xếp nhiều layers CNN + max pooling thay vì xen kẽ chỉ một layer CNN + max pooling. Một bạn có câu hỏi tại Forum Machine Learning Cơ Bản về sự thay đổi này sẽ giúp cho VGG net cải thiện hơn như thế nào? Các layers CNN sâu hơn có thể trích lọc đặc trưng tốt hơn so với chỉ 1 layers CNN.

VGG-16 chỉ sử dụng các bộ lọc kích thước nhỏ 3x3 thay vì nhiều kích thước bộ lọc như AlexNet. Kích thước bộ lọc nhỏ sẽ giúp giảm số lượng tham số cho mơ hình và mang lại hiệu quả tính tốn hơn. VD: Nếu sử dụng 2 bộ lọc kích thước 3 x 3 trên một featurs map (là output của một layer CNN) có độ sâu là 3 thì Tơi sẽ cần n_filters x kernel_size x kernel_size x n_channels = 2 x 3 x 3 x 3 = 54 tham số. Nhưng nếu sử dụng 1 bộ lọc kích thước 5 x 5 sẽ cần 5 x 5 x 3 = 75 tham số. 2 bộ lọc 3 x 3 vẫn mang lại hiệu quả hơn so với 1 bộ lọc 5 x 5.

Mạng VGG-16 sâu hơn so với AlexNet và số lượng tham số của nó lên tới 138 triệu tham số. Đây là một trong những mạng mà có số lượng tham số

lớn nhất. Kết quả của nó hiện đang xếp thứ 2 trên bộ dữ liệu ImageNet validation ở thời điểm public. Ngồi ra cịn một phiên bản nữa của VGG-16 là VGG-19 tăng cường thêm 3 layers về độ sâu.

Bắt đầu từ VGG-16, một hình mẫu chung cho các mạng CNN trong các tác vụ học có giám sát trong xử lý ảnh đã bắt đầu hình thành đó là các mạng trở nên sâu hơn và sử dụng các block dạng [Conv2D*n + Max Pooling].

Hình 2.4. Minh họa mạng VGG-16

c. Mạng Inception (GoogleLeNet)

Vào năm 2014, các nhà nghiên cứu của google đã đưa ra mạng Inception -> tham dự cuộc thi ImageNet 2014.

Mơ hình này khá đặc biệt, khơng hoàn toàn là các tầng layer nối tiếp gối đầu lên nhau như các mạng trên. Mạng gồm các đơn vị gọi là “inception cell” (cái này mình nghĩ khơng nên dịch) - thực hiện convolution 1 input với nhiều filter khác nhau rồi tổng hợp lại, theo nhiều nhánh (branch).

Để tiết kiệm tính tốn, các convolution kích thước 1x1 được sử dụng để giảm chiều sâu chanel của input (reduce the input channel depth). Với mỗi 1 cell, sử dụng các 1x1, 3x3, 5x5 filter để extract các feature từ input. Dưới đây là dạng 1 cell.

Hình 2.5. Minh họa dạng 1 cell của GoogleLeNet

Các nhà nghiên cứu đã thử thay các filter 3x3, 5x5 bằng các filter lớn hơn như 7x7, 11x11 . Có hiệu quả hơn về việc extract các feature, tuy nhiên đánh đổi lại là thời gian tính tốn lâu hơn rất nhiều. Người Tơi cũng nhận ra rằng 1 filter 5x5 có thể thay bằng 2 filter 3x3 nối nhau, hiệu quả tương đương nhưng tiết kiệm được tính tốn rất lớn.

Dưới đây là kiến trúc mạng Inception

Mạng được xây dựng từ việc ghép các inception cell lại với nhau.

Inception có một đặc điểm khá hay là có thêm 2 output phụ. Người Tơi tin rằng hai output phụ này không quá ảnh hưởng tới chất lượng của mạng trong khi train những epoch đầu. Nó giúp cho việc train diễn ra nhanh hơn khi tối ưu những layer đầu dựa vào các output phụ ( trong những epoch đầu). Có thể nghĩ đơn giản rằng trong những epoch đầu, các layer càng gần cuối càng ít được tối ưu ngay => chưa cần thiết phải tối ưu ngay. Sau một thời gian tối ưu các layer đầu rồi mới tối ưu các layer tiếp theo dựa vào final input. Việc này cải thiện khả năng tính tốn và tốc độ train khá nhiều.

Hiện nay, Inception liên tục được cải tiến và đã cho ra nhiều phiên bản, Inception V1 (5 triệu tham số), Inception V3 (23 triệu tham sô), Inception V4.

d. Mạng ResNet – 50

ResNet là kiến trúc được sử dụng phổ biến nhất ở thời điểm hiện tại. ResNet cũng là kiến trúc sớm nhất áp dụng batch normalization. Mặc dù là một mạng rất sâu khi có số lượng layer lên tới 152 nhưng nhờ áp dụng những kỹ thuật đặc biệt mà Tơi sẽ tìm hiểu bên dưới nên kích thước của ResNet50 chỉ khoảng 26 triệu tham số. Kiến trúc với ít tham số nhưng hiệu quả của ResNet đã mang lại chiến thắng trong cuộc thi ImageNet năm 2015.

Những kiến trúc trước đây thường cải tiến độ chính xác nhờ gia tăng chiều sâu của mạng CNN. Nhưng thực nghiệm cho thấy đến một ngưỡng độ sâu nào đó thì độ chính xác của mơ hình sẽ bão hịa và thậm chí phản tác dụng và làm cho mơ hình kém chính xác hơn. Khi đi qua quá nhiều tầng độ sâu có thể làm thơng tin gốc bị mất đi thì các nhà nghiên cứu của Microsoft đã giải quyết vấn đề này trên ResNet bằng cách sử dụng kết nối tắt.

Các kết nối tắt (skip connection) giúp giữ thông tin không bị mất bằng cách kết nối từ layer sớm trước đó tới layer phía sau và bỏ qua một vài layers trung gian. Trong các kiến trúc base network CNN của các mạng YOLOv2, YOLOv3 và gần đây là YOLOv4 bạn sẽ thường xuyên thấy các kết nối tắt

được áp dụng.

ResNet có khối tích chập (Convolutional Bock, chính là Conv block trong hình) sử dụng bộ lọc kích thước 3 x 3 giống với của InceptionNet. Khối tích chập bao gồm 2 nhánh tích chập trong đó một nhánh áp dụng tích chập 1 x 1 trước khi cộng trực tiếp vào nhánh còn lại.

Khối xác định (Identity block) thì khơng áp dụng tích chập 1 x 1 mà cộng trực tiêp giá trị của nhánh đó vào nhánh cịn lại.

Hình 2.7. Cộng trực tiếp đầu vào của khối với nhánh cịn lại trong Identity Block

Gỉa sử chúng Tơi có x là đầu vào của khối xác định. Chúng Tôi cần ánh xạ đầu vào x thành hàm f(x). Để tìm ra ánh xạ chuẩn xác tương đương với hàm f(x) là một việc khá khó. Nhưng nếu cộng thêm ở đầu ra thành x+f(x) thì chúng Tơi sẽ qui về tham số hóa độ lệch, tức cần tham số hóa phần dư f(x). Tìm ánh xạ theo phần dư sẽ dễ hơn nhiều vì chỉ cần tìm giá trị f(x) sao cho nó gần bằng 0 là có thể thu được một ánh xạ chuẩn xác. Tại một khối xác định, chúng Tôi sẽ áp dụng một layer activation ReLU sau mỗi xen kẽ giữa những tầng trọng số.

Mặc dù có kiến trúc khối kế thừa lại từ GoogleNet nhưng ResNet lại dễ tóm tắt và triển khai hơn rất nhiều vì kiến trúc cơ sở của nó chỉ gồm các khối

tích chập và khối xác định. Có thể đơn giản hóa kiến trúc của ResNet-50 như hình sau:

Hình 2.8. Kiến trúc đơn giản hóa của mạng ResNet

e. Mạng RetinaNet

RetinaNet là một phương pháp tiếp cận one-stage, trong đó RetinaNet thực hiện tính tốn dựa trên các anchor boxes mặc định tại mỗi vị trí cần tính tốn thay vì sử dụng các vùng đề xuất đƣợc tạo ra từ một nghiên cứu khác. Dữ liệu đầu vào của RetinaNet được đưa qua mơ hình mạng có tên là FPN nhằm rút trích các ma trận đặc trưng với cùng một tỉ lệ nhưng theo nhiều kích thước khác nhau. Sau đó từ ma trận đặc trong mới bắt đầu tính tốn các vùng để xuất. Cuối cùng các vùng đề xuất được đưa qua hai mạng phụ để tính ra vị trí của các bounding box và lớp của đối tượng mà bounding box đó bao quanh.

Mục sau sẽ trình bày chi tiết hơn về mạng RetinaNet

Một phần của tài liệu LUẬN văn THẠC sĩ tìm HIỂU MẠNG TÍCH CHẬP và xây DỰNG ỨNG DỤNG đếm các vật THỂ THÔNG DỤNG (Trang 37 - 46)

w