2.4.1 Multi-task
21
• Tạo một kim tự tháp hình ảnh:
Kích thước tỷ lệ được tính như sau: 𝑚𝑖𝑛𝐿 = 𝑜𝑟𝑔𝐿∗ 12
𝑚𝑖𝑛𝑠𝑖𝑧𝑒∗ (𝑓𝑎𝑐𝑡𝑜𝑟)𝑛, 𝑛 = {0, 1, 2, … , 𝑁} (2.5)
Kích thước tối thiểu không thể nhỏ hơn 12 – nghĩa là thu nhỏ hình ảnh đến 12. Số n là số lượng hình ảnh có thể thu nhỏ.
• Phân loại khuôn mặt: Mục tiêu học tập được xâu dựng như một vấn đề phân
loại hai lớp. Đối với mỗi mẫu 𝑥𝑖 chúng ta sử dụng hàm mất mát là entropy chéo: [6]
𝐿𝑑𝑒𝑡𝑖 = −(𝑦𝑖𝑑𝑒𝑡log(𝑝𝑖) + (1 − 𝑦𝑖𝑑𝑒𝑡)(1 − log(𝑝𝑖))) (2.6)
Trong đó 𝑝𝑖 là xác suất được tạo bởi mạng chỉ ra mẫu 𝑥𝑖 là một khuôn mặt. Ký hiệu 𝑦𝑖𝑑𝑒𝑡 ∈ {0, 1} biểu thị nhãn thực sự.
• Hộp giới hạn: Đối với mỗi cửa sổ ứng viên, chúng ta sự đoán độ lệch giữa nó
và hộp giớ hạn thực sự. Mục tiêu học tập được xây dựng như một vấn đề hồi quy và chúng ta sử dụng hàm mất mát Euclidean cho mỗi mẫu 𝑥𝑖: [7]
𝐿𝑏𝑜𝑥𝑖 = ‖𝑦̂𝑖𝑏𝑜𝑥 − 𝑦𝑖𝑏𝑜𝑥‖
2 2
(2.7)
Trong đó 𝑦̂𝑖𝑏𝑜𝑥 là mục tiêu hồi quy thu được từ mạng và 𝑦𝑖𝑏𝑜𝑥 là tọa độ thực sự. Có bốn tọa độ, bao gồm đỉnh trái, chiều cao và chiều rộng, do đó 𝑦𝑖𝑏𝑜𝑥 = 𝑅4
• Định vị mốc mặt: Tương tự như nhiệm vụ hồi quy hộp giới hạn, phát hiện
mốc mặt được coi là một vấn đề hồi quy và chúng ta sử dụng hàm mất mát Euclidean: [7]
𝐿𝑙𝑎𝑛𝑑𝑚𝑎𝑟𝑘𝑖 = ‖𝑦̂𝑖𝑙𝑎𝑛𝑑𝑚𝑎𝑟𝑘− 𝑦𝑖𝑙𝑎𝑛𝑑𝑚𝑎𝑟𝑘‖
2 2
(2.8)
Trong đó 𝑦̂𝑖𝑙𝑎𝑛𝑑𝑚𝑎𝑟𝑘 là tọa độ mốc mặt thu được từ mạng và 𝑦𝑖𝑙𝑎𝑛𝑑𝑚𝑎𝑟𝑘 là tọa độ thực sự cho mẫu thứ 𝑖. Có năm mốc mặt, bao gồm mắt trái, mắt phải, mũi, góc miệng trái và goc miệng phải, do đó 𝑦𝑖𝑙𝑎𝑛𝑑𝑚𝑎𝑟𝑘 ∈ 𝑅10
2.4.2 Cấu trúc mạng MTCNN cho nhận diện
MTCNN hoạt động theo ba bước [5], mỗi bước dung một mạng nơ-ron riêng lần lượt là: mạng đề xuất P-Net (Proposal Network) nhằm dự đoán các vùng trong ảnh ví dụ là hình chứa khuôn mặt (Hình 2.22), mạng tinh chế R-Net (Refine Network) sử dụng đầu ra của P-Net để loại bỏ các vùng không phải khuôn mặt (Hình 2.23), và mạng đầu ra O-Net (Output Network): sử dụng đầu ra R-Net để đưa ra kết quả cuối
22 cùng với 5 điểm đánh dấu khuôn mặt: 2 điểm mắt, 1 điểm mũi và 2 điểm khóe miệng (Hình 2.24)
2.4.2.1. Mạng P-Net
Hình 2.22 Mạng P-Net
Mạng P-Net sử dụng kiến trúc CNN gồm 3 lớp tích chập và 1 lớp co.
Đầu vào cửa sổ trượt với kích thước 12x12x3 (3 tương ứng với 3 màu: đỏ, xanh lục, xanh lam trong hệ màu RGB thông thường).
Lớp tích chập 1: Lớp tích chập với số bộ lọc:10, stride = 1, padding = 0, hàm kích hoạt = PReLU, kích thước bộ lọc: 3 x 3 x 10, số lượng tham số: (3 x 3 x 3 + 1) x 10 =280, đầu ra 10x10x10
Lớp co: Maxpooling kích thước 2x2, stride = 2, padding = 0. Khi đó kích thước đầu ra của dữ liệu giảm đi 1/2, với chiều sâu được giữ nguyên còn 5x5x10.
Lớp tích chập 2: Kích thước đầu vào 5x5x10, số bộ lọc: 16, stride = 1, padding = 0, hàm kích hoạt = PReLU, kích thước bộ lọc: 3 x 3 x 16, số tham số: (3x3x10+1) x 16=1456, đầu ra: 3x3x16.
Lớp tích chập 3: Kích thước đầu vào 3x3x16, số bộ lọc: 32, stride = 1, padding = 0, hàm kích hoạt Softmax, kích thước bộ lọc: 3x3x32, số lượng tham số: (3 x 3 x 16 + 1) x 32 = 4640, đầu ra: 1x1x32.
Kết quả của P-Net: mạng phân được 3 cụm gồm cụm thứ nhất có 2 bộ lọc kích thước 1x1 nhận dạng khuôn mặt, cụm thứ hai có 4 bộ lọc kích thước 1x1 đóng khung 4 vị trí hộp giới hạn và cụm còn lại có 10 bộ lọc kích thước 1x1 đóng khung 10 vị trí khuôn mặt.
23
2.4.2.2. Mạng R-Net
Hình 2.23 Mạng R-Net
Trong bước R-Net sử dụng kiến trúc CNN gồm 3 lớp chập, 2 lớp co và một lớp kết nối đầy đủ. Đầu vào cửa sổ trượt với kích thước 24x24x3 (3 tương ứng với 3 màu: đỏ, xanh lục, xanh lam trong hệ màu RGB thông thường).
Lớp tích chập 1: Kích thước đầu vào 24x24x3, số bộ lọc: 28, stride = 1, padding = 0, hàm kích hoạt = PReLU, kích thước bộ lọc: 3x3x28, số tham số: (3x3x3+1) x 28 = 812, kích thước đầu ra 22x22x28.
Lớp co: sử dụng kỹ thuật MP kích thước 3x3, stride = 2, padding = 1, kích thước đầu ra của dữ liệu giảm 1/2, chiều sâu dữ liệu giữ nguyên là 11x11x28.
Lớp tích chập 2: Kích thước đầu vào 11x11x28, số bộ lọc: 48, stride = 1, padding = 0, hàm kích hoạt = PReLU, kích hoạt bộ lọc: 3x3x28, số tham số: (3x3x28 + 1) x 48 = 12144, kích thước đầu ra: 9x9x48.
Lớp co: sử dụng kỹ thuật MP kích thước 3x3, stride = 2, padding = 0, kích hoạt = PReLU, kích thước bộ lọc: 2x2x64, số lượng tham số: (2x2x48+1) x 64 =12352, kích thước đầu ra: 3x3x64.
Lớp kết nối đầy đủ: Kích thước đầu vào 3x3x64, hàm kích hoạt = Softmax, số tham số: (3x3x64+1) x 128=73856, đầu ra 128.
Kết quả của R-Net phân được 3 cụm gồm cụm thứ nhất có 2 lớp nhận dạng khuôn mặt, cụm thứ hai có 4 lớp đánh dấu vị trí hộp giới hạn và cụm còn lại có 10 lớp vị trí khuôn mặt.
24
2.4.2.3 Mạng O-Net
Mạng O-Net sử dụng CNN gồm 4 lớp tích chập, 2 lớp co, 1 lớp kết nối đầy đủ. Đầu vào cửa sổ có kích thước 48x48x3 (3 tương ứng với 3 màu: đỏ, xanh lục, xanh lam trong hệ màu RGB).
Lớp tích chập 1: kích thước đầu vào 48x48x3, số bộ lọc: 32, stride = 1, padding = 2, hàm kích hoạt = PReLU, kích thước bộ lọc: 3x3x32, số lượng tham số: (3x3x3+1) x 32=896, đầu ra: 46x46x32.
Hình 2.24 Mạng O-Net
Lớp co: sử dụng kỹ thuật MP kích thước 3x3, stride = 2, padding = 1. Khi đó kích thước đầu ra của dữ liệu giảm đi với chiều sâu được giữ nguyên còn 23x23x32.
Lớp tích chập 2: Kích thước đàu vào: 23x23x32, số bộ lọc: 64, stride=2, padding = 1, hàm kích hoạt = PReLu, kích thước bộ lọc: 3x3x28, số lượng tham số: (3x3x32+1) x 64 = 18496, đầu ra:12x12x64.
Lớp co: sử dụng kỹ thuật MP kích thước 2x2, stride = 2, padding = 0, khi đó kích thước đầu ra của dữ liệu giảm với chiều sâu được giữ nguyên còn 10x10x64.
Lớp tích chập 3: Kích thước đầu vào: 10x10x64, số bộ lọc: 64, stride = 1, padding = 0, hàm kích hoạt = PReLU, kích thước bộ lọc: 3x3x32, số lượng tham số: (3x3x64+1) x 64=36928, đầu ra: 8x8x64.
Lớp co: Sử dụng kỹ thuật MP kích thước 2x2, stride = 2, padding = 0, khi đó kích thước đầu ra của dữ liệu giảm 1/2 với chiều sâu được giữ nguyên tức là: 4x4x64.
Lớp tích chập 4: Kích thước đầu vào 4x4x64, số bộ lọc: 128, stride = 1, padding = 0, hàm kích hoạt = PReLu, kích thước bộ lọc: 2x2x128, số lượng tham số: (2x2x64+1) x 124=32896, kích thước đầu ra: 3x3x128.
25
Lớp kết nối đầy đủ với kích thước đầu vào 3x3x128, hàm kích hoạt Softmax, số lượng tham số: (3x3x128+1) x 256=295168, kích thước đầu ra lớp kết nối đầy đủ: 256.
Kết quả của O-Net phân được 3 cụm gồm cụm thứ nhất có 2 lớp nhận dạng khuôn mặt, cụm thứ hai có 4 lớp đánh dấu vị trí hộp giới hạn và cụm còn lại có 10 vị trí khuôn mặt.
2.5 Mạng ResNet
2.5.1 Khái niệm về mạng ResNet
ResNet (residual network), là mạng học sâu được quan tâm từ những năm 2012 sau cuộc thi LSVRC2012 và trở nên phổ biến trong lĩnh vực computer vision. ResNet khiến cho việc huấn luyện hàng trăm thậm chí hàng nghìn lớp của mạng nơron trở nên khả thi và hiệu quả. Nhờ khả năng biểu diễn mạnh mẽ của ResNet, hiệu suất của những ứng dụng computer vision, không chỉ ứng các dụng phân loại hình ảnh được tăng cường. Một số ví dụ cụ thể kể đến là các ứng dụng phát hiện đồ vật và nhận dạng khuôn mặt.
Theo định lý gần đúng phổ quát, về mặt kiến trúc, một mạng nơron truyền thẳng có khả năng xấp xỉ mọi hàm với dữ liệu huấn luyện được cung cấp, miễn là không vượt quá sức chứa của nó. Tuy nhiên, xấp xỉ tốt dữ liệu không phải là mục tiêu duy nhất, chúng ta cần một mô hình có khả năng tổng quát hóa dữ liệu. Đó là lý do các kiến trúc sâu trở thành xu hướng của cộng đồng nghiên cứu.
Kể từ AlexNet, các kiến trúc CNN ngày càng sâu hơn. Trong khi AlexNet chỉ có 5 lớp tích chập, mạng VGG và GoogleNet (còn gọi là Inception_v1) có đến 19 và 22 lớp tương ứng. Tuy nhiên, tăng độ sâu mạng không chỉ đơn giản là xếp chồng các lớp lại với nhau. Mạng rất khó huấn luyện vì vấn đề vanishing gradient – vì gradient được truyền ngược tở lại các lớp trước đó, phép nhân lặp đi lặp lại có thể làm cho gradient cực nhỏ. Kết quả là, hiệu suất của mạng bị bão hòa hoặc giảm hiệu suất nhanh chóng.
26 Ý tưởng chính của ResNet là sử dụng kết nối tắt đồng nhất để xuyên qua một hay nhiều lớp. Một khối như vậy được gọi là một mô-đun residual như trong hình 2.26
Hình 2.26. Mô-đun Residual
ResNet không phải là kiến trúc đầu tiên sử dụng các kết nối tắt, Highway Network sử dụng kiến trúc cổng với các kết nối tắt. Các cổng được tham số hóa có nhiệm vụ kiểm soát lượng thông tin được phép truyền qua kết nối tắt. Ý tưởng tương tự cũng được sử dụng trong LSTM, cổng được tham số hóa kiểm soát lượng thông tin sẽ truyền đến bước tiếp theo. Do đó, ResNet có thể được coi là một trường hợp đặc biệt của Highway Network. Tuy nhiên, các thử nghiệm cho thấy Highway Network hoạt động không tốt hơn ResNet, điều này có vẻ khó giải thích vì highway Network đưa ra một giải pháp tổng quát hơn ResNet.
Sau ResNet, hàng loạt những biến thể của kiến trúc này được giới thiệu. Thực nghiệm cho thấy những kiến trúc sau này có thể được huấn luyện mạng nơron với đồ sâu hàng nghìn lớp. ResNet nhanh chóng trở thành kiến trúc phổ biến trong computer vision.
Mô-đun Residual và Bottlenecks Residual
Mô-đun Residual được giới thiệu vào năm 2015 dựa vào ánh xạ định danh, quá trình lấy đầu vào ban đầu cho mô-đun và thêm nó vào đầu ra của một loạt các hoạt động. Hình 2.27a mô tả kiến trúc của module này. Ở đầu mô-đun chúng ta tiếp nhận đầu vào cho mô-đun (tức là lớp trước đó trong mạng). Nhánh bên phải là một nối tắt tuyến tính – nó kết nối đầu vào với một hoạt động bổ sung ở dưới cùng của mô-đun. Sau đó, ở nhánh bên trái của mô-đun còn lại, chúng ta áp dụng một loạt các lớp convolution (tất cả đều là 3x3), hàm tác động Relu và batch normalization. Đây là một mẫu chuẩn khi xây dựng CNN.
27
Hình 2.27 Mô-đun Residual và Bottlenecks Residual (a) Mô-đun Residual, (b) Mô-đun Bottlenecks Residual
Điều khiến ResNet thú vị là thêm đầu vào ban đầu vào đầu ra của lớp CONV, RELU và BN. Các mạng thần kinh truyền thống có thể được xem là một hàm 𝑦 = 𝑓(𝑥), mô-đun residual cố gắng xấp xỉ y qua 𝑓(𝑥) + 𝑖𝑑(𝑥) = 𝑓(𝑥) + 𝑥 trong đó 𝑖𝑑(𝑥)
là hàm nhận dạng. Các mô-đun residual bắt đầu tại hàm nhận dạng và khai triển để trở nên phức tạp hơn khi mạng học. Khung học tập Residual cho phép đào tạo các mạng sâu hơn đáng kể so với các kiến trúc mạng được đề xuất trước đây.
Hơn nữa, vì đầu vào được bao gồm trong mọi mô-đun còn lại, mạng có thể học nhanh hơn với tốc độ học lớn hơn. Rất phổ biến để thấy tỷ lệ học tập cơ bản cho việc triển khai ResNet bắt đầu từ 1𝑒−1. Đối với hầu hết các kiến trúc như AlexNet hoặc VGGNet, tỷ lệ học tập cao này gần như sẽ đảm bảo mạng sẽ không hội tụ.
Trong hình 2.27(b), một phần mở rộng cho mô-đun residual được gọi là bottlenecks. Mô-đun này có ánh xạ nhận dạng tương tự đang xảy ra, các lớp CONV ở nhánh bên trái của mô-đun residual đã được thay đổi:
• Sử dụng ba lớp CONV thay vì hai lớp.
• Các lớp CONV đầu tiên và cuối cùng có cấu trúc 1x1.
• Số lượng bộ lọc đã học trong hai lớp CONV đầu tiên là 1/4 số lượng bộ lọc đã học trong CONV cuối cùng.
28
Hình 2.28 mô tả một quá trình “bottleneck”, trong đó hai mô-đun residual xếp chồng lên nhau.
Hình 2.28 Hình ảnh 2 mô-đun residual xếp chồng lên nhau
Mô-đun residual đầu tiên nhận đầu vào có kích thước 𝑀 × 𝑁 × 64, ba lớp CONV trong mô-đun đầu tiên lần lượt học các bộ lọc 𝐾 = 32, 32 và 128. Sau khi áp dụng mô-đun residual đầu tiên, kích thước đầu ra là 𝑀 × 𝑁 × 128 , sau đó đưa vào mô- đun residual thứ hai.
Trong mô-đun residual thứ hai, số lượng bộ lọc được giữ nguyên 𝐾 = 32, 32 và 128. Tuy nhiên 32 < 128 tương ứng giảm kích thước số chiều trong các lớp CONV
1 × 1 và 3 × 3 – để lại nút cổ chai 3 × 3 với kích thước đầu vào nhỏ hơn kích thước đầu ra. Sau đó, CONV 1 × 1 cuối cùng áp dụng số lượng bộ lọc gấp 4 lần so với hai lớp CONV đầu tiên, do đó tăng kích thước một lần nữa – đó là lý do mô-đun residual này được gọi là “bottleneck”.
Khi đào tạo mạng ResNet, các biến thể bottleneck của mô-đun residual thường được sử dụng nhiều hơn phiên bản gốc, đặc biệt là triển khai ResNet có số lớp lớn hơn 50.
Xem xét lại mô-đun Residual
Năm 2016, He et al. đã xuất bản bài báo thứ hai về mô-đun residual có tên Identity Mappings in Deep Residual Networks [33]. Ấn phẩm này mô tả một nghiên cứu toàn diện, cả lý thuyết và thực nghiệm, về thứ tự các lớp tích chập (convolutional), kích hoạt (activation) và batch normalization (BN) trong mô-đun residual (với bottleneck) như hình 2.29 a.
29
Hình 2.29 Mô-đun residual mới (a) Mô-đun residual với bottleneck
(b) Điều chỉnh mô-đun bottleneck để sử dụng tiền kích hoạt
Mô đun residual với bottleneck nhận đầu vào (hàm kích hoạt ReLU) và sau đó áp dụng một loạt (CONV => BN => RELU) => (CONV => BN => ReLU) => CONV => BN trước khi thêm đầu ra này vào đầu vào ban đầu và áp dụng hàm kích hoạt ReLU cuối cùng ( sau đó được đưa vào mô-đun residual tiếp theo trong mạng). Tuy nhiên, He at al. đã tìm thấy một thứ tự lớp tối ưu hơn có khả năng đạt được độ chính xác cao hơn – phương pháp này được gọi là tiền kích hoạt.
Phiên bản tiền kích hoạt của mô-đun residual loại bỏ ReLU ở dưới cùng của mô- đun và sắp xếp lại batch normalization (BN) và kích hoạt (activation) xuất hiện trước khi tích chập (convolutional) (Hình 2.29 b)
Thay vì bắt đầu tích chập, áp dụng một loạt (BN => RELU => CONV) * 3 (bottleneck đang được sử dụng). Đầu ra của mô-đun này được thêm vào đầu vào, sau đó được đưa vào mô-đun residual tiếp theo trong mạng.
2.5.2 ResNet34
ResNet34 có ba tư lớp (CONV hoặc FC) bên trong kiến trúc mạng (Hình 2.30), trong mỗi mô-đun residual có chứa ba lớp CONV, tổng số lớp CON trong mạng có thể tính thông qua:
30 Mạng có một lớp CONV trước các mô-đun residual và sau đó là lớp FC trước trình phân loại softmax, do đó mạng có tổng cộng 34 lớp – ResNet34.
Hình 2.30 Các kiến trúc mạng ResNet cơ bản
Convolution 1
Bước đầu tiên trong ResNet được gọi là Conv1 – bao gồm một phép convolution + batch normalization (BN) + max pooling
Hình 2.31 Convolution của bước Conv1 [23]
Trong hình 2.31, hình ảnh đầu vào tích chập qua các kernel có kích thước là 7×7 (padding 1). Kích thước đầu ra là 112×112
Bước tiếp theo là BN, sau đó max pooling (3×3) với stride 2 được sử dụng làm giảm kích thước đầu ra xuống 56×56 như trong Hình 2.32
31
Hình 2.32 Max pooling của bước Conv1 [23]
Lớp ResNet
Mỗi lớp ResNet bao gồm một số khối, điều này làm cho ResNet đi sâu hơn
Khối 1
Convolution đầu tiên:
32 Trong ResNet34 kích thước không gian (dimension) sẽ không thay đổi trong một khối. Xét toàn bộ khối, bao gồm 2×[3× 3,64] như hình dưới.
Hình 2.34 Hoạt động của khối 1 trong lớp ResNet 1 [23]
Quy trình tương tự được mở rộng cho toàn bộ lớp sau đó như Hình 2.35 (quy trình thực hiện cho lớp Conv2_x)
Hình 2.35 Hoạt động của lớp ResNet 1 [23]
Giảm kích thước
Sau mỗi lớp ResNet có một Conv với stride 2 làm giảm kích thước
33
Hình 2.36 mô tả việc giảm kích thước bằng cách tăng stride lên 2, số bộ lọc được nhân đôi duy trì độ phức tạp của mạng (56 × 2 = 28 × 128). Ngoài ra, trong lối tắt