Các tiêu chuẩn đánh giá

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân lớp đồng phục sinh viên dùng mô hình học sâu (Trang 33)

Mục tiêu cuối cùng của các kỹ thuật phân lớp hình ảnh từ tập ảnh đầu mới đầu vào thông qua mô hình đã được huấn luyện trước sẽ được phân vào các lớp đối tượng thích hợp. Để có thể đánh giá được liệu kỹ thuật phân lớp đó hiệu quả hay không, các nhà nghiên cứu cần sử dụng một số tiêu chuẩn đánh giá toàn bộ quá trình kỹ thuật đó, có thực hiện. Tùy theo yêu cầu của người đánh giá, có thể nhiều tiêu chuẩn khác nhau, tuy nhiên một số tiêu chuẩn không thể thiếu như : số lượng dữ liệu đưa vào huấn luyện, độ chính xác, thời gian huấn luyện, giá trị lỗi (error- rate) …

Kỹ thuật phân lớp ảnh dùng Convolutional Neural Network

Với sự phát triển hiện tại của ngành khoa học máy tính, cụ thể trí thông minh nhân tạo thì mô hình học sâu (deep learning) đang là phương pháp mới nhất và được nghiên cứu ứng dụng ngày càng phổ biến. Đối với bài toán phân lớp hình ảnh thì cấu trúc mạng nơ-ron tích chập - Convolutional Neural Network (CNN) là tiêu biểu nhất. Ngoài xử lý các bài toán về hình ảnh trong lĩnh vực thị giác máy tính, CNN còn được sử dụng trong các hệ thống xử lý ngôn ngữ tự nhiên, các hệ hỗ trợ ra quyết định…do khả năng linh hoạt và khả năng xử lý vấn đề sâu của nó.

Điểm đặc biệt khiến CNN được ưu tiên trong bài toán phân lớp ảnh bằng phương pháp deep learning là khả năng xử lý độ lớn của tập dữ liệu [5]. Ý tưởng của chúng ta trong deep learning là nếu cho máy tính học càng nhiều thì nó sẽ cho kết quả phân lớp càng chính xác. Xét ví dụ trong tập dữ liệu hình ảnh chữ ký số MNIST [10], một hình ảnh trong tập MNIST có kích thước 28x28 pixel. Tổng số nơ-ron trong lớp đầu vào sẽ là 28 x 28 = 784, con số này có thể dễ dàng xử lý với khả năng của máy tính hiện tại. Nhưng nếu với một ảnh có kích thước 1000x1000 pixel nghĩa là ta cần phải xử lý 106 nơ-ron và với một tập dữ liệu có từ vài trăm đến vài nghìn dữ liệu thì số lượng phép tính cần xử lý để huấn luyện một tầng ẩn cũng là một vấn đề lớn. CNN giải quyết được điều này, nó trích xuất các đặc trưng của hình ảnh và chuyển đổi, giảm số chiều mà không mất đi các đặc trưng của ảnh đó.

Ý tưởng về mô hình CNN đầu tiên hình thành từ những năm thập niên 80 của thế kỷ XX, sau đó được Yann LeCun nghiên cứu phát triển và đề xuất mô hình cho bài toán nhận diện chữ ký số. Mô hình đầu tiên được đề xuất là LeNet-1, qua nhiều lần cải tiến thành các mô hình LeNet-4 và LeNet-5. LeNet-5 được xem là mô hình khá đầy đủ và có một cấu trúc ổn định. Nó đã chứng minh được tính ổn định, mạnh mẽ, hiệu quả và là một mô hình đặt tiền đề cho các mô hình CNN sau này. Từ việc giải quyết bài toán nhận diện chữ ký số với bộ dữ liệu MNIST, mô hình cũng có thể ứng dụng giải quyết bài toán phân loại hình ảnh với bộ dữ liệu CIFAR-10. Các nghiên cứu hiện nay cho thấy CNN có khả năng làm việc hiệu quả trên hầu hết các bộ dữ liệu mẫu với việc thiết kế một mô hình với số tầng, các thông số, phương pháp huấn luyện hợp lý.

Hình 2.9. Bộ dữ liệu chữ ký số MNIST

2.2.1. Kiến trúc cơ bản của mô hình CNN

Hình 2.11. Một mô hình CNN với các thành phần cơ bản

Phát biểu một cách tổng quan đơn giản nhất khi quan sát hình trên, ta có thể thấy bài toán nhận dạng hình ảnh với mô hình CNN [5] thực hiện một số bước như sau :

- Phân giải hình ảnh thành một ma trận. - Rút trích các đặc trưng trong ảnh.

- Tìm các đặc trưng tổng quát giữ lại, giảm mẫu, thu nhỏ số chiều. - Đưa kết quả sau khi giảm mẫu vào một mạng nơ-ron để dự đoán.

- Ba bước trên có thể thực hiện nhiều lần tùy theo độ phức tạp của mô hình. - Trả về kết quả phân lớp của ảnh theo thứ tự độ thuộc với từng phân lớp (Tức là phân lớp có trọng số càng cao thì khả năng hình ảnh sẽ thuộc về phân lớp đó và ngược lại với các phân lớp có trọng số nhỏ dần).

Ở hình ta thấy từ hình ảnh đầu vào qua nhiều tầng xử lý khác nhau sẽ cho kết quả xử lý cuối cùng là các bản đồ đặc trưng và phân lớp ảnh. Hình 17 thể hiện 02 giai đoạn có trong một mô hình CNN là học đặc trưng (feature learning) và phân lớp dữ liệu (classification). Công việc trích xuất các đặc trưng của hình ảnh với mô hình CNN là hoàn toàn tự động, việc trích xuất sẽ có nhiều kết quả khác nhau dựa vào cấu hình và số lượng của các tầng xử lý trong giai đoạn huấn luyện đặc trưng. Sau đó các đặc trưng tổng quát cuối cùng sẽ được liên kết với nhau và đưa về những phân lớp kết quả đầu ra. Không như các kỹ thuật phân lớp truyền thống tiến hành

việc phân lớp dựa trên các đặc trưng ảnh được rút trích thủ công, mô hình CNN thực hiện việc rút trích đặc trưng ảnh này một cách tự động [5]. Đầu vào đơn giản là hình ảnh mà bạn cần phân lớp, mô hình CNN sẽ thực hiện mọi thứ cho bạn và trả về kết quả phân lớp mà bạn mong muốn. Việc này tiết kiệm được khá nhiều thời gian, công sức cho người sử dụng, nhưng tất nhiên đổi lại cần phải có máy tính có cấu hình tốt để giải quyết công việc xử lý, tính toán.

Cũng trên hình ta thấy những khái niệm ta cần quan tâm đối với một mô hình CNN có thể kế đến là Convolution, ReLu, Pooling, Flatten, Fully Connected, Softmax. Trong đó Convolution, Pooling, Fully Connected có thể nói là các tầng xử lý chính còn ReLu, Flatten, Softmax là các kỹ thuật để hỗ trợ quá trình xử lý.

Tầng Convolution

Convolution có nghĩa là tích chập. Trong toán học, tích chập là một phép toán thực hiện với hai hàm số f và g, kết quả cho ra một hàm số thứ 3. Trong lĩnh vực xử lý ảnh, tích chập được sử dụng khá rộng rãi và hết sức quan trọng. Ví dụ : đối với yêu cầu làm mờ ảnh, phép tích chập giữa ma trận lọc và ảnh gốc sẽ cho ra kết quả ảnh đã được làm mờ (xóa nhiễu).

Công thức tích chập giữa hàm ảnh f (x, y) và bộ lọc k (x, y) (k là ma trận có kích thước mxn) như sau :

𝑓(𝑥, 𝑦) ∗ 𝑘(𝑥, 𝑦) = ∑ ∑ 𝑘(𝑢, 𝑣)𝑓(𝑥 − 𝑢, 𝑦 − 𝑣) 𝑛 2 𝑣=−𝑛2 𝑚 2 𝑢=−𝑚2 (2.11)

Tầng tích chập là một tầng ẩn trong mô hình CNN được dùng để phát hiện và trích xuất đặc trưng của hình ảnh. Giống như các tầng ẩn khác, tầng tích chập nhận dữ liệu của tầng đầu vào (ở đây là ma trận biểu diễn ảnh cần phân lớp), tiến hành các phép biến đổi (tích chập) để tạo ra dữ liệu đầu vào cho tầng tích chập ẩn kế tiếp. Số lượng tầng tích chập là do nhà thiết kế mô hình xây dựng. Phép biến đổi được sử dụng là phép tính tích chập. Mỗi tầng tích chập chứa một hoặc nhiều bộ lọc hay bộ phát hiện đặc trưng (filter - feature detector) tùy theo người thiết kế mô hình cho phép phát hiện và trích xuất các đặc trưng của hình ảnh.

Đặc trưng ảnh là những chi tiết xuất hiện trong ảnh, từ đơn giản như góc, cạnh, hình dạng, chữ viết, chữ số tới đối tượng phức tạp hơn như đôi mắt, khuôn mặt, hoặc đối tượng cụ thể như con chó, mèo, chiếc xe, đèn giao thông, …

Bộ lọc hay bộ phát hiện đặc trưng là các Kernel được biểu diễn dưới dạng ma trận vuông (phổ biến nhất là ma trận 3x3 hay 5x5). Khái niệm Kernel là một thường xuất hiện trong lĩnh vực thị giác máy tính thường dùng để biến đổi hình ảnh với một mục đích nào đó. Mục đích của chúng trong mô hình CNN là giúp tăng cường, phát hiện và trích xuất các loại đặc trưng của ảnh, có thể là bộ lọc góc, cạnh, đường chéo, hình tròn, hình vuông...

Ảnh gốc

Áp dụng Kernel để phát hiện cạnh

Áp dụng Kernel làm sắc nét ảnh

Hình 2.12. Một số bộ lọc Kernel trong xử lý ảnh

Như đã thảo luận về việc CNN giải quyết được vấn đề hình ảnh có kích thước lớn trong deep learning thì tầng tích chập này là bước để thực hiện điều đó. Ngay tại tầng này, các bộ lọc sẽ áp vào từng điểm ảnh, vùng ảnh và trượt đến toàn bộ hình ảnh theo thứ tự từ trái qua phải, từ trên xuống dưới. Mỗi lần áp một bộ lọc vào một vùng trong ảnh, phép tính tích chập giữa bộ lọc và giá trị điểm ảnh trong vùng ảnh đó sẽ được thực hiện. Sau phép tích chập này, kích thước ảnh sẽ bị giảm nhỏ lại.

Hình 2.13. Tích chập bộ lọc vào ảnh với stride = 1

Để xác định bộ lọc sẽ trượt qua các vùng ảnh như thế nào, ta có thêm tham số bước trượt (Stride). Bước trượt là khoảng cách giữa 2 bộ lọc khi nó quét qua toàn ảnh. Với stride = 1, bộ lọc sẽ quét 2 điểm ảnh ngay cạnh nhau, nhưng với stride = 2, bộ lọc sẽ quét điểm số 1 và số 3, bỏ qua điểm số 2 ở giữa. Có thể thấy ở hình trên với một ảnh có kích thước 5x5, sau khi áp dụng bộ lọc 3x3 với bước trượt là 1 thì

ảnh trích xuất ra sẽ giảm kích thước còn 3x3. Ta chọn bước trượt và bộ lọc càng lớn thì ảnh đầu ra của ảnh sẽ càng giảm nhỏ. Nếu muốn giữ nguyên kích thước của ảnh sau khi áp dụng bộ lọc thì ta có thể thêm vùng đệm (Padding). Bộ đệm này sẽ tạo thêm một vùng ảnh trống bao quanh ảnh gốc, các điểm ảnh trống này có giá trị là 0, do đó nó không làm ảnh hưởng đến kết quả tích chập ảnh với bộ lọc mà chỉ giúp giữ nguyên kích thước của ảnh sau khi chập.

Hình 2.14. Tích chập bộ lọc vào ảnh với stride = 1 có thêm padding

Nếu chú ý ta có thể thấy một số bộ lọc mang giá trị âm, việc tích chập các bộ lọc này với ảnh gốc sẽ tạo nên một số điểm có giá trị âm. Trên thực tế ảnh màu thường được thể hiện và lưu trữ theo chuẩn RGB. Chuẩn màu RGB với 3 kênh màu, mỗi kênh màu nhận giá trị dương từ 0 đến 255 (màu đen sẽ có dạng {0,0,0}, màu trắng {255,255,255}, màu đỏ {255,0,0}, …) Để giải quyết các giá trị âm sau khi tích chập, người ta sử dụng thêm các hàm kích hoạt (activation function) như sigmoid, relu, elu… Một hàm kích hoạt điển hình là relu được sử dụng khá phổ biến với nhiệm vụ chuyển tất cả các điểm ảnh giá trị âm về 0, lúc này đây các điểm ảnh này sẽ có màu đen và những điểm ảnh khác được chạy qua bộ lọc sẽ được hiện rõ hơn. Trong toán học, ReLu được gọi là một hàm phi tuyến tính.

Cuối cùng sau tất cả các tính toán, kết quả đầu ra của các tầng tích chập là một biểu đồ đặc trưng (feature map) và tập đặc trưng này là một bản scan của đầu vào ban đầu, nhưng được trích xuất ra các đặc trưng trừu tượng hơn.

Tầng Pooling

Tầng này có chức năng gần giống như một phần của tầng tích chập đó là làm giảm kích thước của hình ảnh đầu vào. Ở đây toàn bộ các điểm ảnh đều được quét qua với bước trượt tương tự định nghĩa ở hàm tích chập. Nhưng ở đây phép biến đổi chỉ là so sánh và chọn điểm ảnh tiêu biểu để đại diện cho một vùng chọn chứ không phải áp dụng một bộ lọc để làm thay đổi giá trị của từng điểm ảnh đó. Đôi khi trong các nghiên cứu khác người ta đặt tên cho tầng này là subsampling (lấy mẫu nhỏ) hay downsampling (giảm mẫu) với cùng một tính năng.

Ở tầng tích chập, mặc dù các bộ lọc làm giảm kích thước của hình ảnh nhưng mỗi liên kết giữa những điểm ảnh cạnh nhau dường như vẫn được giữ lại. Nhưng ở tầng pooling, việc giảm kích thước của hình ảnh dựa vào đặc trưng cục bộ vùng đang xét duyệt, nó sẽ quyết định chọn một giá trị đại diện và loại bỏ các giá trị khác trong phạm vi vùng đó. Tùy vào mục đích, yêu cầu của bài toán người ta sẽ sử dụng tiêu chí để chọn giá trị đại diện bằng các hàm min pooling (lấy giá trị nhỏ nhất đại diện), max pooling (lấy giá trị nhỏ nhất đại diện), average pooling (trung bình cộng các giá trị làm đại diện),… Thông thường với mục tiêu tăng cường đặc trưng cho ảnh để tiếp tục đưa vào huấn luyện ở các tầng kế tiếp, người ta thường sử dụng hàm max pooling.

Hình 2.15. Minh họa tầng Pooling với pooling window = 2 và stide = 2 Thông thường trong một mô hình mạng CNN, tầng Pooling được nối trực tiếp ngay sau tầng tích chập. Mục đích giúp hạn chế tham số mà ta cần phải tính toán, từ đó giảm thời gian tính toán, tránh việc so sánh quá khớp (overfitting).

Tầng Fully Connected

Tầng FC là tầng cuối cùng của mô hình CNN, ở tầng này ta sẽ biết được cơ sở để đưa ra quyết định về phân lớp của hình ảnh. Tầng FC sẽ sử dụng kết quả của các tầng tích chập và pooling và chuyển thành một vector giá trị có độ dài là N, với

N tương ứng với số lớp cần phân lớp hay nhận diện. Ví dụ với bộ dữ liệu MNIST có 10 loại ký tự từ 0-9 nên tại tầng FC sẽ xuất ra một vector có chiều dài N = 10 với giá trị đầu tiên của vector thể hiện cho phân lớp ký tự “0”, giá trị cuối cùng của vector thể hiện cho phân lớp ký tự “9” và thứ tự này do chúng ta sắp xếp từ đầu trước khi đưa tập dữ liệu vào huấn luyện. Cụ thể hơn với ví dụ bên dưới, tầng FC trả về vector với 4 phân lớp theo thứ tự “dog”, “cat”, “boat”, “bird” với giá trị {0.01 ; 0.04 ; 0.94 ; 0.02}. Với kết quả này thì phân lớp thứ 3 “boat” có giá trị cao nhất 0.94, do đó kết quả hình ảnh đầu vào sẽ được dự đoán vào phân lớp “boat”.

Hình 2.16. Mô hình CNN với tầng FC cho kết quả dự đoán 4 phân lớp

Các đặc trưng đã được rút trích ở tầng tích chập và pooling được thực tế biểu diễn ở dạng các ma trận nhiều chiều. Để FC có thể dùng được các đặc trưng này phải thông qua một hàm đó là Flatten (làm phẳng), hàm này đã biến các ma trận đặc trưng thành một vector. Ta có thể nhận thấy tầng FC có cấu trúc như một mô hình NN đã được giới thiệu ở phần trước với nhiệm vụ lấy các thông tin đặc trưng đầu vào và trả về phân lớp của hình ảnh. Tùy theo mô hình, tầng FC có thể được thực hiện nhiều lần, mỗi lần như thế các đặc trưng của ảnh lại càng được trừu tượng hơn, giống như một đặc trưng tổng quát mang tính đại diện cho từng phân lớp. Ví dụ với hình ảnh con chó thì, từng điểm ảnh trong đó là những đặc trưng cấp thấp, sau khi tổng hợp tạo thành những đặc trưng cấp cao hơn như lỗ tai, mũi, miệng, … Chính những đặc trưng cấp cao này cho ta biết đây là hình ảnh của một con chó.

Nhưng thực tế lúc này đây, đầu ra của các tầng FC vẫn là một vector giá trị, và thường nhiều hơn số lượng phân lớp ta cần phân chia. Ngay sau tầng FC, vector giá trị sẽ được chuẩn hóa lần cuối bằng hàm Softmax (một hàm chuẩn hóa theo cơ số

etrong toán học) để trả về phân bố xác suất với N phân lớp.

2.2.2. Một số kiến trúc CNN thông dụng

Như đã bàn luận ở phần trên, việc xây dựng kiến trúc của mô hình CNN hoàn toàn tùy thuộc vào ý đồ của người thiết kế. Ở phần này, luận văn chỉ giới thiệu một số kiến trúc mà tác giả nhận thấy nó được sử dụng, nhắc đến trong nhiều công trình nghiên cứu khác, chứ không khẳng định mô hình nào là thông dụng nhất.

LeNet-5

LeNet [12] là một trong những kiến trúc CNN ra đời đầu tiên và nổi tiếng

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân lớp đồng phục sinh viên dùng mô hình học sâu (Trang 33)

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

(88 trang)