Minh họa việc lấy mẫu con

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân lớp ngữ nghĩa hình ảnh dựa trên mạng nơ ron tích chập (Trang 42)

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

Lớp cuối cùng trong mơ hình CNN là lớp kết nối đầy đủ (fully connected layer), được thiết kế tương tự như trong mạng nơ-ron truyền thống, tất cả các điểm ảnh được kết nối đầy đủ với node trong lớp tiếp theo. Fully connected là cách kết nối các nơ-ron ở hai lớp với nhau trong đó lớp sau kết nối đẩy đủ với các nơ-ron ở lớp trước nó. Đây cũng là dạng kết nối thường thấy ở ANN, trong CNN lớp này thường được sử dụng ở các lớp phía cuối của kiến trúc mạng.

Hãy nhớ rằng đầu ra của cả hai lớp tích chập và lấy mẫu đều là khối lượng 3D, nhưng một lớp được kết nối đầy đủ sẽ mong đợi một vectơ 1D là các số. Vì vậy, san phẳng đầu ra của lớp lấy mẫu cuối cùng thành một vector và đó trở thành đầu vào cho lớp được kết nối đầy đủ.

Làm phẳng chỉ đơn giản là sắp xếp khối lượng 3D của các con số thành một vector 1D chứa xác suất của các đối tượng cần được dự đoán.

Hàm truyền đặt ở lớp cuối cùng trong mạng được sử dụng để phân lớp, ta có thể sử dụng hàm sigmoid để có đầu ra trong miền giá trị (0, 1) tương ứng với các giá trị phân bố xác xuất là 0% và 100%. Tuy nhiên, để có tổng xác xuất của các đầu ra là 100% thì cần phải được thực hiện chuẩn hóa các đầu ra bằng cách sử dụng hàm SoftMax với miền giá trị (0, 1).

Hàm truyền SoftMax sẽ so sánh kết quả dự đoán của mạng với nhãn thực sự đã có. Hàm có giá trị bé nếu kết quả dự đoán trùng với nhãn và ngược lại.

Trong đó, y là véc-tơ đầu ra, C là số lượng nhãn, c là nhãn đã biết.

Quá trình huấn luyện nhằm cập nhật các trọng số để tối thiểu hóa tổn hao, kỹ thuật lan truyền ngược được sử dụng cho quá trình huấn luyện.

* Phân lớp dữ liệu

Trong phần phân lớp, ta sử dụng một vài lớp với kết nối đầy đủ để xử lí kết quả của phần tích chập. Vì đầu vào của mạng liên kết đầy đủ là 1 chiều, ta cần làm phẳng đầu vào trước khi phân lớp. Lớp cuối cùng trong mạng CNN là một lớp liên kết đầy đủ, phần này hoạt động tương tự như mạng nơ-ron thông thường. Kết quả thu được cuối cùng cũng sẽ là một véc-tơ với các giá trị xác suất cho việc dự đoán như mạng nơ-ron thơng thường.

Hình 2.12 mơ tả một ví dụ về mạng nơ-ron tích chập. Mạng gồm hai phần: phần tích chập và kết nối đầy đủ.

Phần tích chập rút trích tự động đặc trưng của dữ liệu đầu vào, lớp càng nhỏ thì học các đặc trưng thơ (mức thấp), lớp càng sâu thì học đặc trưng càng chi tiết (mức cao) của khái niệm cần học. Ví dụ trong hình cho thấy lớp đầu học các đặc trưng cạnh

(edge), các lớp kế tiếp học được đặc trưng các thành phần, rồi đến đặc trưng chi tiết của đối tượng học.

Hình 2.12: Một ví dụ về mô hình học sâu dựa trên mạng nơ-ron tích chập

Các vùng sáng trong Hình 2.12 là vùng được “kích hoạt”, nghĩa là bộ lọc đã phát hiện ra mẫu mà nó đang tìm kiếm. Bộ lọc này dường như mã hóa một máy dò mắt và mũi. Khi đi sâu hơn vào mạng, các bản đồ đặc trưng trơng ít giống với hình ảnh gốc hơn và giống như một bản trình bày trừu tượng của nó. Lúc đầu có thể nhìn thấy được, nhưng sau đó nó trở nên không thể nhận ra. Lý do là bản đồ đặc trưng sâu hơn mã hóa các khái niệm cấp cao như “mũi” hoặc “tai” trong khi bản đồ đặc trưng cấp thấp hơn phát hiện các cạnh và hình dạng đơn giản. Đó là lý do tại sao bản đồ đặc trưng sâu hơn chứa ít thơng tin hơn về hình ảnh và nhiều thơng tin hơn về loại hình ảnh.

2.4. Kỹ thuật tối ưu mạng

Một trong những giải pháp nhằm tối ưu quá trình huấn luyện mạng được đề xuất là giảm số lượng các trọng số (weight) để tăng tốc độ tính tốn, giảm thời gian huấn luyện, tránh hiện tượng quá khớp khi mà lượng dữ liệu đầu vào là rất lớn như các bức ảnh màu, video…

Khi xây dựng được mạng CNN, ngoài kỹ thuật regularization và pooling ở lớp lấy mẫu để giảm kích thức ảnh sau khi tính tích chập để lấy các pixel đặc tính đặc trưng nhất, có thể thêm vào kỹ thuật dropout để tối ưu thời gian huấn luyện và tránh hiện tượng quá khớp (overfitting). Dropout cắt bớt số nơ-ron khi thực hiện thuật toán lan truyền ngược nhằm tăng tốc độ huấn luyện mạng. Dropout loại bỏ một cách ngẫu nhiên một số nơ-ron trong mạng bằng cách cho nó bằng 0 (bỏ kết nối). Có nghĩa là hệ thống sẽ quyết định ngõ ra trong khi thiếu thông tin [20].

Quá trình loại bỏ ngẫu nhiên các node được minh họa trong Hình 2.13. Ta sẽ xem xét ảnh hưởng của tỉ lệ này đến kết quả nhận dạng và phân loại ảnh trong phần thực nghiệm.

Hình 2.13: Mạng nơ-ron trước và sau q trình Dropout

2.5. Một sớ Kiến trúc mạng CNN phổ biến

Có một số kiến trúc mạng nơ-ron tích chập nổi tiếng và thơng dụng hiện nay. Một số thử nghiệm cho thấy chúng có hiệu śt tốt hơn. Vì vậy, đơi khi nhiều người sử dụng mạng được thiết kế sẵn thay vì tự thiết kế mạng. Hầu hết các mạng CNN đều được thiết kế theo ngun tắc chung:

• Giảm dần kích thước output mỗi lớp

• Tăng dần số lượng feature map

Trong khi các mạng CNN trước đây hầu hết theo dạng chỉ đơn giản thiết kế theo lối nhiều lớp Convolution xếp chồng lên nhau thì nhiều mạng mới đây đã thiết kế sáng tạo hơn và cho kết quả hiệu quả hơn. Các kiến trúc mạng này đóng vai trò rất quan trọng và áp dụng cho những nhiệm vụ cụ thể trong Computer Vision. Các mạng này được dùng nhiều trong việc trích xuất các feature để phục vụ cho các nhiệm vụ chuyên biệt.

2.5. 1. Kiến trúc LeNet-5

Kiến trúc LeNet-5 [21] được tạo ra bởi Yann Lecun năm 1998, để nhận diện chữ viết tay. Mơ hình này là cơ sở thiết kế cho các mạng sau này. Model ban đầu khá đơn giản và chỉ bao gồm 2 convolutional layers + 3 fully-connected layers. Mặc dù đơn giản nhưng nó đã cho thấy ưu thế vượt trội so với các thuật toán machine learning trong phân loại chữ số viết tay.

Trong kiến trúc mạng nơ-ron đầu tiên, để giảm chiều dữ liệu, Yan Lecun sử dụng Sub-Sampling Layer là một Average-Pooling Layer (các layer nhằm mục đích giảm chiều dữ liệu mà khơng thay đổi đặc trưng chúng ta cịn gọi là Sub-Sampling Layer). Kiến trúc này khá khó huấn luyện trọng số nên ngày nay rất hạn chế được sử dụng trong các mạng CNN. Thay vào đó là các layer Max-Pooling.

Đầu vào của mạng LeNet có kích thước 32x32 và ít layers nên số lượng tham số của nó chỉ khoảng 60 nghìn.

Cấu trúc như hình vẽ

Hình 2.14: Mơ hình Kiến trúc LeNet-5

2.5. 2. Kiến trúc AlexNet

Được phát triển bởi Alex Krizhevsky năm 2012 trong cuộc thi ImageNet 2012. Phá vỡ lối mòn sử dụng các đặc trưng thủ cơng từ các thuật tốn truyền thống như HOG, SIFT, SURF thay cho các đặc trưng được huấn luyện trong các tác vụ học có giám sát của thị giác máy tính. Với những cải tiến so với mơ hình mơ hình kiến trúc LeNet-5:

+ Tăng cường kích thước mạng sâu hơn. + Đầu vào có độ phân giải lớn hơn.

+ Sử dụng local normalization để chuẩn hóa các layer giúp cho quá trình hội tụ nhanh hơn.

Ngoài ra mạng cịn cải tiến trong quá trình optimizer như: + Sử dụng hàm kích hoạt ReLU (Rectified Linear Unit).

+ Sử dụng dropout layer giúp giảm số lượng liên kết nơ-ron và kiểm soát overfitting.

+ Qua các layers, kích thước output giảm dần nhưng độ sâu tăng dần qua từng kernel.

Cho tới thời điểm hiện tại, kiến trúc mạng AlexNet [22] vẫn còn đang được sử dụng phổ biến và rộng rãi. Mạng AlexNet có năm lớp chập và ba lớp kết nối đầy đủ. Cấu trúc trong AlexNet được chia thành hai khối. Nguyên nhân vì tác giả đã sử dụng hai GPU để huấn luyện dữ liệu song song. Mạng này được sử dụng trong phân loại đối tượng quy mơ lớn. Lớp đầu ra có một nghìn nơ-ron. Đó là bởi vì kiến trúc ban đầu được thiết kế để phân loại một nghìn nhãn. Thơng thường, những người áp dụng kiến trúc mạng nơ-ron AlexNet sẽ thay thế lớp cuối cùng, phụ thuộc vào mục đích của họ.

Tác giả của mạng này đã làm nhiều thử nghiệm để có thể ra được mơ hình này có kết quả tốt nhất. Vì vậy, hiệu suất của cấu trúc này rất ổn định và mạng này được sử dụng rộng rãi trong nhiều ứng dụng.

Kiến trúc tương đối giống với LeNet-5. Khác biệt ở điểm mạng này được thiết kế lớn hơn, rộng hơn lượng tham số: 60.000.000 (gấp 1000 lần LeNet-5 ) Kiến trúc như hình dưới đây:

Hình 2.15: Mơ hình Kiến trúc AlexNet

2.5. 3. Kiến trúc VGG-16

Được phát triển năm 2014, là một biến thể sâu hơn nhưng lại đơn giản hơn so với kiến trúc convolution (từ gốc: convolutional structure) thường thấy ở CNN Kiến trúc như hình dưới, có thể thấy số mặc dù các lớp cao hơn được đơn giản hóa so với LeNet, AlexNet … thu gọn về kích thước nhưng số lượng lại lớn hơn, sâu hơn.

Bởi vì một cách dễ dàng nhất để cải thiện độ chính xác của mạng đó là gia tăng kích thước của mạng thơng qua độ sâu của chúng. Từ kiến trúc mạng VGG-16 [23] ta có thể thấy những cải tiến so với AlexNet:

+ 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 ta xuất hiện khái niệm về khối (block) là những kiến trúc giống nhau lặp lại. 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 trở về sau.

+ 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ẽ một layer CNN + max pooling. Các layers CNN sâu hơn có thể trích xuất đặ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 mà mang lại hiệu quả tính toá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ì ta 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ố. Vì 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ố. Ngoà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.

2.5.4. Kiến trúc Inception (GoogleLeNet)

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

Kiến trúc này đã giải quyết một câu hỏi lớn trong mạng CNN đó là sử dụng kernel_size với kích thước bao nhiêu thì hợp lý. Các kiến trúc mạng nơ-ron trước đó đều sử dụng các bộ lọc với đa dạng các kích thước 11x11, 5x5, 3x3 cho tới nhỏ nhất là 1x1. Mơ hình này khá đặc biệt, khơng hoàn toàn là các lớp 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” - 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. Việc cùng kết hợp đồng thời các kernel này vào cùng một module có thể mang lại hiệu quả đó chính là kiến trúc khối Inception.

Để tiết kiệm tính toán, các convolution kích thước 1x1 được sử dụng để giảm chiều sâu chanel của input. 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.

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 trích xuất các đặc trưng, tuy nhiên đánh đổi lại là thời gian tính toán lâu hơn rất nhiều. Người ta 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 toá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.

Hình 2.18: Mơ hình Kiến trúc Inception

Inception có một đặc điểm khá hay là có thêm 2 output phụ. Người ta 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, do đó 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 toá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.

Ngoài ra cịn có những kiến trúc ResNet-50 (2015), sử dụng kết nối tắt để ánh xạ các đầu vào từ những layer trước đó tới những layer sau. Là kiến trúc mạng rất sâu nhưng có số tham số nhỏ hơn nhờ kế thừa những kỹ thuật từ GoogleNet; Kiến trúc DenseNet (2016), là bước phát triển tiếp theo cua ResNet khi kế thừa kiến trúc khối và phát triển kết nối tắt theo một mạng lưới dày đặc.

Trên đây là điểm qua một số mạng CNN phổ biến dược sử dụng trong bài toán Image Classification. Trong thực tế, việc sử dụng kết hợp nhiều phương pháp khác nhau thường sẽ cho hiệu quả tốt hơn.

2.6. Kết luận

Hiện nay, mạng nơ-ron tích chập CNN ngày càng trở nên phổ biến và thường được dùng trong các kiến trúc học sâu (deep learning), mang lại nhiều thành công trong các bài toán trí tuệ nhân tạo: thị giác máy tính, xử lý ngơn ngữ tự nhiên. Cơ sở lý thuyết mạng nơ-ron tích chấp CNN trong chương này được áp dụng đề x́t mơ hình hệ thống hiệu quả trong việc trích xuất các đặc trưng dữ liệu đầu vào một cách tự động, để phân loại ảnh và kết hợp với domain ontology để hỗ trợ tìm kiếm theo ngữ nghĩa sẽ được trình bày trong các chương tiếp theo.

Xây dựng Domain ontology MƠ HÌNH PHÂN LỚP HÌNH ẢNH CNN Dữ liệu ảnh huấn luyện Xây dựng mơ hình phân lớp ảnh CNN Mơ hình CNN Phân lớp và tạo chỉ mục ảnh Chỉ mục ảnh theo chủ đề: Animals, flowers, vehicles,..

Truy vấn ảnh theo “Từ khóa”/”ảnh”

Câu truy vấn

SPARQL (ngữ nghĩa) Tìm kiếm Kết quả truy vấn ảnh CSDL ảnh MƠ HÌNH TRUY VẤN ẢNH

Pha huấn luyện

Domain ontology

CHƯƠNG 3

ĐỀ XUẤT MƠ HÌNH PHÂN LOẠI ẢNH VÀ KẾT HỢP TÌM KIẾM THEO NGỮ NGHĨA

3.1. Kiến trúc của hệ thống

Trong nghiên cứu này, hệ thống tìm kiếm ảnh sẽ khơng hỗ trợ tìm kiếm theo dạng ngơn ngữ tự nhiên mà chỉ hỗ trợ người dùng tìm theo từ khóa hoặc nội dung ảnh truy vấn theo những chủ đề ảnh đã định trước. Tìm theo nội dung ở đây có nghĩa là nhãn của mỗi ảnh sẽ được gán dựa trên nội dung của ảnh thơng qua mơ hình phân lớp CNN.

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân lớp ngữ nghĩa hình ảnh dựa trên mạng nơ ron tích chập (Trang 42)

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

(85 trang)