5. Ý nghĩa khoa học và thực tiễn của đề tài
2.2. Nhận dạng khuôn mặt dựa trên mạng CNN
Mạng nơ-ron tích chập (CNN) là một trong những mô hình mạng học sâu phổ biến nhất hiện nay [11-13], có khả năng nhận dạng và phân loại hình ảnh với độ chính xác rất cao, thậm chí còn tốt hơn con ngƣời trong nhiều trƣờng hợp. Mô hình này đã và đang đƣợc phát triển, ứng dụng vào các hệ thống xử lý ảnh lớn của Facebook, Google hay Amazon…cho các mục đích khác nhau, nhƣ các thuật toán gắn thẻ tự động, tìm kiếm ảnh hoặc gợi ý sản phẩm cho ngƣời tiêu dùng.
Sự ra đời của mạng CNN là dựa trên ý tƣởng cải tiến cách thức các mạng nơ-ron nhân tạo truyền thống [14] học thông tin trong ảnh.Do sử dụng các liên kết đầy đủ giữa các điểm ảnh vào node, các mạng nơ ron nhân tạo truyền thẳng (Feed forward Neural Network)[15-17] bị hạn chế rất nhiều bởi kích thƣớc của ảnh, ảnh càng lớn thìsố lƣợng liên kết càng tăng nhanh, kéo theo sự bùng nổ khối lƣợng tính toán. Ngoài ra, sự liên kết đầy đủ này cũng là sự dƣ thừa với mỗi bức ảnh, các thông tin chủ yếu thể hiện qua sự phụ thuộc giữa các điểm ảnh với những điểm xung quanh nó mà không quan tâm nhiều đến các điểm ảnh ở cách xa nhau. Mạng CNN với kiến trúc thay đổi, có khả năng xây dựng liên kết chỉ sử dụng một phần cục bộ trong ảnh kết nối đến
41
node trong lớp tiếp theo thay vì toàn bộ ảnh nhƣ trong mạng nơ-ron truyền thẳng.
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation nhƣ ReLU và tanh để kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tƣợng hơn cho các lớp tiếp theo. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tƣợng hơn cho các lớp tiếp theo. Trong mô hình mạng truyền ngƣợc (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp theo. Mô hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer). Còn trong mô hình CNNs thì ngƣợc lại. Các layer liên kết đƣợc với nhau thông qua cơ chế convolution. Layer tiếp theo là kết quả convolution từ layer trƣớc đó, nhờ vậy mà ta có đƣợc các kết nối cục bộ. Nhƣ vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trƣớc đó.
Mỗi một lớp đƣợc sử dụng các filter khác nhau thông thƣờng có hàng trăm hàng nghìn filter nhƣ vậy và kết hợp kết quả của chúng lại. Ngoài ra có một số layer khác nhƣ pooling/subsampling layer dùng để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu). Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực hiện. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối ƣu cho các filter tƣơng ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features. Layer cuối cùng đƣợc dùng để phân lớp ảnh.
Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính bất
biến (Location Invariance) và tính kết hợp (Compositionality). Với cùng một
42
(translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hƣởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tƣợng hơn thông qua convolution từ các filter. Đó là lý do tại sao CNNs cho ra mô hình với độ chính xác rất cao. Cũng giống nhƣ cách con ngƣời nhận biết các vật thể trong tự nhiên.
Hình 2.6 dƣới đây trình bày một kiến trúc mạng CNN, các lớp cơ bản trong một mạng CNN bao gồm: lớp tích chập (Convolutional); lớp kích hoạt phi tuyến ReLU (Rectified Linear Unit); lớp lấy mẫu (Pooling); 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.
Các lớp tích chập (Convolutional), kích hoạt phi tuyến ReLU và lấy mẫu
(Pooling).
Các lớp kết nối đầy đủ (Fully connected)
Phân loại
Hình 2. 6. Kiến trúc mạng CNN
-Lớp tích chập: đây là thành phần quan trọng nhất trong mạng CNN, thể
hiện 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ộ đƣợ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ỏ.
43
Hình 2. 7. Bộ lọc tích chập đƣợc sử dụng trong ma trận điểm ảnh
Trong hình 2.7, bộ lọc đƣợc sử dụng là một ma trận có kích thƣớc 3x3, bộ lọc này dịch chuyển lần lƣợt qua từng vùng ảnh đến khi hoàn thành quét toàn bộ bức ảnh, tạo ra một bức ảnh mới có kích thƣớc nhỏ hơn hoặc bằng với kích thƣớc ảnh đầu vào. Kích thƣớc này đƣợc quyết định tùy theo kích thƣớc các khoảng trắng đƣợc thêm ở viền bức ảnh gốc và đƣợc tính theo công thức sau:
(2.1)
Trong đó: : kích thƣớc ảnh đầu ra; : kích thƣớc ảnh đầu vào; : kích
thƣớc khoảng trắng phía ngoài viền của ảnh gốc; : kích thƣớc bộ lọc; : bƣớc
trƣợt của bộ lọc.
Nhƣ vậy, sau khi đƣa một bức ảnh đầu vào cho lớp tích chập 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ácbộ lọc này đƣợc khởi tạo ngẫu nhiên trong lần đầu tiên và sẽ đƣợc cập nhật trong quá trình huấn luyện.
-Lớp kích hoạt phi tuyến ReLU: đƣợc xây dựng để đảm bảo tính phi
tuyến của mô hình huấn luyện sau khi đã thực hiện một loạt các phép tính toán tuyến tính qua các lớp tích chập. Lớp kích hoạt phi tuyến sử dụng các hàm kích hoạt phi tuyến nhƣ ReLU hoặc sigmoid, tanh v.v để giới hạn phạm vi
44
biên độ cho phép của giá trị đầu ra. Trong số các hàm kích hoạt này, hàm ReLU đƣợc chọn do cài đặt đơn giản, tốc độ xử lý nhanh mà vẫn đảm bảo đƣợc tính toán hiệu quả. Phép tính toán của hàm ReLU chỉ đơn giản là chuyển tất cả các giá trị âm thành giá trị 0.
Lớp ReLU đƣợc áp dụng ngay phía sau lớp tích chập, với đầu ra là ảnh mới có kích thƣớc giống với ảnh đầu vào, các giá trị điểm ảnh cũng hoàn toàn tƣơng tự, trừ các giá trị âm đã bị loại bỏ.
( ) ( ) (
2.2)
-Lớp lấy mẫu: Đƣợc đặt sau lớp tích chập và lớp ReLU để 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 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, 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 đó.
Hình 2. 8. Phƣơng thức Avarage Pooling và Max Pooling
Nhƣ vậy, với mỗi ảnh đầu vào đƣợc đƣa qua lấy mẫu sẽ 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 và nhận dạng.
45
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.
So với mạng nơ ron truyền thống [14], các ảnh đầu vào của lớp này đã có kích thƣớc đƣợc giảm bớt rất nhiều, đồng thời vẫn đảm bảo các thông tin quan trọng của ảnh cho việc nhận dạng. Do vậy, việc tính toán nhận dạng sử dụng mô hình truyền thẳng đã không còn phức tạp và tốn nhiều thời gian nhƣ trong mạng nơ ron truyền thống.
Cách chọn tham số cho CNN
1. Số các convolution layer: càng nhiều các convolution layer thì
performance càng đƣợc cải thiện. Sau khoảng 3 hoặc 4 layer, các tác động đƣợc giảm một cách đáng kể
2. Filter size: thƣờng filter theo size 5×5 hoặc 3×3
3. Pooling size: thƣờng là 2×2 hoặc 4×4 cho ảnh đầu vào lớn
4. Cách cuối cùng là thực hiện nhiều lần việc train test để chọn ra đƣợc
param tốt nhất.
Học chuyển giao và tinh chỉnh mô hình huấn luyện
Là quá trình khai thác, tái sử dụng các tri thức đã đƣợc học tập bởi một mô hình huấn luyện trƣớc đó vào giải quyết một bài toán mới mà không phải xây dựng mô hình huấn luyện khác từ đầu.Hiện nay, phƣơng pháp phổ biến thƣờng đƣợc áp dụng khi huấn luyện mô hình với một bộ CSDL tƣơng đối nhỏ là sử dụng Học chuyển giao để tận dụng một mạng đã đƣợc huấn luyện trƣớc.
CNN đã đƣợc huấn luyện trƣớc đó với bộ dữ liệu rất lớn nhƣ ImageNet (1,2 triệu ảnh với 1.000 nhãn đánh dấu). Phƣơng pháp này sử dụng mạng CNN theo hai cách chính nhƣ sau:
Mạng CNN này chỉ đƣợc sử dụng nhƣ một bộ trích chọn đặc trƣng cho bộ CSDL huấn luyện mới, bằng cách thay thế các lớp kết nối đầy đủ ở cuối
46
mô hình mạng và giữ cố định các tham số cho toàn bộ các lớp còn lại của mô hình. Thực hiện tối ƣu, tinh chỉnh (Fine-tune) một vài hoặc tất cả các lớp trong mô hình mạng.
Việc tái sử dụng mạng CNN là dựa trên các đặc trƣng đƣợc học trong các lớp đầu của mạng là các đặc trƣng chung nhất với phần lớn bài toán (ví dụ đặc trƣng về cạnh, hình khối hay các khối màu…). Các lớp sau đó của mạng CNN sẽ nâng dần độ cụ thể, riêng biệt của các chi tiết phục vụ cho bài toán nhận dạng cần giải quyết. Do đó, hoàn toàn có thể tái sử dụng lại các lớp đầu của mạng CNN mà không phải mất nhiều thời gian và công sức huấn luyện từ đầu.
Có 2 loại học chuyển giao:
-Feature Extractor: sau khi lấy ra các đặc điểm (tai, mũi, tóc…)của ảnh
bằng việc sử dụng ConvNet của mô hình đƣợc huấn luyện trƣớc, sẽ dùng phân loại tuyến tính (LinearSVM, SoftmaxClassifier...) để phân loại ảnh.
-Fine-tuning: sau khi lấy ra các đặc điểm của ảnh bằng việc sử dụng
CNN của mô hình đƣợc huấn luyện trƣớc, thì sẽ coi đây là đầu vào của CNN mới bằng cách thêm các lớp tích chập và lớp kết nối đầy đủ.