Tìm hiểu các phương pháp cho bài toán phân vùng ngữ nghĩa trên ảnh (Semantic segmentation) và chương trình thử nghiệm giải pháp tiên tiến trên tập dữ liệu mẫu.Phân vùng ngữ nghĩa là miêu tả quá trình liên kết từng điểm ảnh với nhãnlớp hay là việc ta gán cho mỗi điểm ảnh của ảnh này một giá trị đặc trƣng cho nhãnlớp đối tƣợng mà điểm ở vị trí ấy thuộc về (ví dụ nhƣ mèo, bò, đƣờng, xe, cỏ,...)
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
TÌM HIỂU VÀ THỬ NGHIỆM GIẢI PHÁP TIÊN TIẾN CHO BÀI TOÁN PHÂN VÙNG
Trang 2Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 1
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1 Thông tin về sinh viên
Họ và tên sinh viên: Nguyễn Thị Phương Hằng
Điện thoại liên lạc: 01667701418
Email: phuonghangnt1407@gmail.com
Lớp: CNTT 2.01-K58 – Viện CNTT & TT
Hệ đào tạo: Kỹ sư
Đồ án tốt nghiệp được thực hiện tại: Bộ môn Hệ thống thông tin, Viện Công nghệ thông tin
và truyền thông, Đại học Bách Khoa Hà Nội
2 Mục đích, nội dung và nhiệm vụ của ĐATN
- Tìm hiểu bài toán phân vùng ngữ nghĩa cho ảnh, ý nghĩa và ứng dụng của bài toán này và
áp dụng bài toán cho một số bộ ảnh
- Tìm hiểu, nghiên cứu mạng Neural Network và các kiến thức liên quan như mô hình đồ thị tính toán, hàm mất mát (loss function), hàm kích hoạt, Batch Normalization, quá trình lan truyền ngược
- Tìm hiểu, nghiên cứu mạng Convolutional Neural Network, các lớp convolution, lớp pooling, lớp fully connected, và một số kiến trúc mạng CNN phổ biến
- Tìm hiểu về một số phương pháp cho bài toán phân vùng ngữ nghĩa như FCN, Segnet, PSPnet, Deeplab (v1, v2, v3, v3 plus) và các kỹ thuật nền tảng phục hồi ảnh như giải thuật atrous, modun ASPP, fully connected CRFs,…
- Lựa chọn mô hình và tiến hành thử nghiệm, nhận xét và hướng mở rộng
3 Lời cam đoan của sinh viên:
Tôi - Nguyễn Thị Phương Hằng - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS Nguyễn Thị Oanh
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ
biểu, - đều được ghi rõ ràng và đầy đủ nguồn gốc trong danh mục tài liệu tham khảo
Trang 3Hà nội ngày 28 tháng 5 năm 2018
Giảng viên hướng dẫn
TS Nguyễn Thị Oanh
Trang 4Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 3
LỜI CẢM ƠN
Đi qua những năm tháng Bách Khoa, tôi mới biết tuổi trẻ đáng trân trọng như thế nào Trân trọng, không hẳn là vì có những khó khăn, thách thức tưởng chừng như gục ngã, không hẳn là vì ta biết mình trưởng thành đến đâu mà đơn giản là vì ta đã làm tất cả điều đó cùng ai
Cảm ơn Bách Khoa! 5 năm, có lẽ so với cuộc đời thì là quãng thời gian không đáng
kể nhưng đó đã là một phần quan trọng trong tuổi thanh xuân của tôi Bản thân tôi cũng không muốn biết Bách Khoa cho mình bao nhiêu, và lấy đi những gì, chỉ biết rằng tuổi trẻ có Bách Khoa
Cảm ơn các bạn của tôi đã đồng hành cùng tôi trên suốt chặng đường 5 năm đại học, cho tôi niềm tin, giúp tôi vượt qua những khó khăn, cùng tôi chia sẻ buồn vui Cảm ơn bố mẹ đã vất vả kiếm từng đồng nuôi tôi ăn học, luôn động viên, dạy dỗ tôi trưởng thành, để tôi có cơ hội được viết ra những dòng này Và cảm ơn các thầy cô Bách Khoa thân thương, các thầy cô viện công nghệ thông tin và truyền thông, và
cô Nguyễn Thị Oanh, một người thầy tận tâm hướng dẫn, chỉ bảo, giảng dạy tôi hoàn thành đồ án tốt nghiệp của mình
Do kiến thức bản thân còn hạn chế, cùng với thời gian có hạn nên đồ án còn nhiều sai sót mong thầy cô thông cảm và góp ý!
Bách Khoa! Tháng 5 năm 2018
Xin chân thành cảm ơn!
Trang 5
Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 4
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Mục đích của đề tài là giúp hiểu sâu và áp dụng hiệu quả các kỹ thuật học máy nói chung và các kỹ thuật của thị giác máy, các kỹ thuật xử lý bài toán phân vùng ngữ nghĩa giúp ta giải bài toán phân vùng ảnh một cách hiệu quả và chính xác
Với mục đích nói trên, tôi xin trình bày bài toán của tôi với những nội dung sau:
- Chương 1: Giới thiệu về bài toán phân vùng ngữ nghĩa, các ứng dụng của bài toán trong các lĩnh vực đời sống
- Chương 2: Trình bày lý thuyết về mạng noron bao gồm cơ sở sinh học, mô hình toán học, kiến trúc của mạng noron, và lý thuyết mạng noron tích chập và tìm hiểu một số mạng phổ biến gồm VGG net, Google net, Resnet, Xcepion và một số kiến trúc mạng noron hiện nay như các loại hàm kích hoạt, hàm mất mát, Batch Normalization, quá trình huấn luyện,…
- Chương 3: Một số mô hình sử dụng cho bài toán phân vùng ngữ nghĩa như FCN, PSP net, deeplab (v1, v2, v3, v3 plus) và các kỹ thuật phục hồi ảnh như giải thuật atrous, mô dun ASPP, Fully-connected CRFs, nội suy song tuyến tính,
- Chương 4: Tiến hành thực nghiệm trên một số tập dữ liệu như Pascal voc 2012, ADE20K Challenge 2016, kết quả đạt được và đánh giá
- Chương 5: Kết luận và hướng phát triển
Trang 6Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 5
MỤC LỤC
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 1
LỜI CẢM ƠN……… 3
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 4
DANH MỤC TỪ VIẾT TẮT 7
DANH MỤC THUẬT NGỮ 8
DANH MỤC HÌNH ẢNH 9
DANH MỤC BẢNG BIỂU 12
GIỚI THIỆU BÀI TOÁN 13
CHƯƠNG 1: GIỚI THIỆU VỀ BÀI TOÁN PHÂN VÙNG NGỮ NGHĨA 13
1.1 MỘT SỐ ỨNG DỤNG CỦA BÀI TOÁN PHÂN VÙNG NGỮ NGHĨA 15
1.2 MẠNG NORON VÀ MẠNG NORON TÍCH CHẬP 16
CHƯƠNG 2: MẠNG NORON 16
2.1 Cơ sở mạng noron 16
2.1.1 Kiến trúc mạng noron 17
2.1.2 Một số kiến thức cơ sở 18
2.1.3. MẠNG NORON TÍCH CHẬP 24
2.2 Kiến trúc mạng CNN 25
2.2.1 Một số mạng CNNs phổ biến 27
2.2.2. GIẢI PHÁP PHÂN VÙNG NGỮ NGHĨA DỰA TRÊN MẠNG NEURON34 CHƯƠNG 3: MỘT SỐ KỸ THUẬT NỀN TẢNG PHỤC HỒI ẢNH 34
3.1 Các kỹ thuật upsampling 34
3.1.1 Giải thuật hole (atrous) 36
3.1.2 Atrous Spatial Pyramid Pooling (ASPP) 37
3.1.3 Nội suy song tuyến tính (Bilinear Interpolation) 38
3.1.4 Fully-connected CRFs 39
3.1.5. MỘT SỐ MÔ HÌNH MẠNG NORON CHO BÀI TOÁN PHÂN VÙNG NGỮ NGHĨA 40
3.2 FCN (Fully convolutional Network) 40
3.2.1 Segnet 41
3.2.2 PSPnet 41
3.2.3 Deeplab 42
3.2.4 Nhận xét 48
3.2.5. CÀI ĐẶT THỬ NGHIỆM 49
CHƯƠNG 4: MÔ HÌNH THỬ NGHIỆM 49
4.1 TẬP DỮ LIỆU THỬ NGHIỆM 51
4.2 CÀI ĐẶT 54
4.3 Môi trường thực nghiệm 54
4.3.1 Quá trình huấn luyện 55
4.3.2 Kết quả thử nghiệm 57
4.3.3. NHẬN XÉT 59
4.4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 61 CHƯƠNG 5:
Trang 7Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 6
KẾT LUẬN 61 5.1
HƯỚNG PHÁT TRIỂN 61 5.2
TÀI LIỆU THAM KHẢO 62
Trang 8Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 7
DANH MỤC TỪ VIẾT TẮT
1 Artificial neural network ANN
2 Convolutional Neural Network CNN
6 Deep Convolutional Neural Network DCNN
8 Atrous Spatial Pyramid Pooling ASPP
10 Conditional Random Fields CRF
13 Fully convolutional Network FCN
Trang 9Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 8
DANH MỤC THUẬT NGỮ
1 Semantic Segmentation Phân vùng ngữ nghĩa
4 Convolutional Neural Network Mạng noron tích chập
5 Convolution layer Tầng tích chập
7 Fully-Connected Layer Tầng kết nối hoàn toàn
9 Kernel, sliding window, filter Cửa sổ trượt, bộ lọc
10 Receptive field Trường tiếp nhận
11 Learning rate Tham số kiểm soát tốc độ học
12 Ground truth Ảnh đã được phân vùng chuẩn
13 Encoder-Decoder Mã hóa - Giải mã
Trang 10Mô hình toán học của một noron [15] 17Hình 2.2:
Kiến trúc mạng noron Bên phải là mạng 3 tầng ẩn, bên trái là mạng 2 Hình 2.3:
tầng ẩn [15]…… 17
Một số hàm kích hoạt phổ biến[30] 18Hình 2.4:
Minh họa hàm cross entropy [19] 19Hình 2.5:
Ví dụ minh họa hàm mất mát SVM [34] 20Hình 2.6:
Minh họa Softmax trong mạng neural network [31] 20Hình 2.7:
Mô phỏng kỹ thuật Dropout [14] 22Hình 2.8:
Minh họa quá trình huấn luyện trên mạng noron [32] 22Hình 2.9:
Gradient descent [33] 23Hình 2.10:
Cơ chế tích chập của mạng CNN [22] 24Hình 2.11:
Minh họa quá trình của mạng CNN [14] 25Hình 2.12:
Phép toán tích chập [23] 25Hình 2.13:
Max pooling với kernel 2x2 và stride = 2 [15] 26Hình 2.14:
Ví dụ minh họa mô hình CNN trong phân loại ảnh [15] 27Hình 2.15:
Mô hình mạng VGG16, VGG19 [38] 28Hình 2.16:
Modun Inception [5] 29Hình 2.17:
Mô hình mạng googlenet [24] 29Hình 2.18:
Hình ảnh mạng Resnet với residual block [38] 30Hình 2.19:
Depthwise convolution (trái) và pointwise convolution (phải)[43] 31Hình 2.20:
So sánh giữa convolution và depthwise separable convolution thấy Hình 2.21:
depwise separable convolution cần số lƣợng tham số ít hơn [37] 31
Modun Xception [4] 32Hình 2.22:
Mô hình mạng Xception [4] 32Hình 2.23:
Biểu đồ so sánh về độ chính xác và tham số của một số mạng CNN Hình 2.24:
[39]……… 32
Quá trình unpooling [40] 34Hình 3.1:
Trang 110 vào giữa các giá trị của kernel) [11] 36
Minh họa Atrous conv 2D [11] 37Hình 3.5:
Minh họa modun SPP [41] 37Hình 3.6:
Minh họa modun ASPP với conv sử dụng các rate = (6, 12, 18, 24) [11] 38Hình 3.7:
Minh họa nội suy tuyến tính, với điểm P(x, y) chƣa biết hàm f, và 4 điểm Hình 3.8:
Mô hình PSPnet [9] 42Hình 3.12:
Hình ảnh minh họa chuyển đổi mạng VGG-16 trong DCNN [17] 43Hình 3.13:
Minh họa sử dụng giải thuật hole chỉnh sửa bộ lọc, với rate = 4, stride = Hình 3.14:
Hình ảnh minh họa mô hình Deeplab V3+ [13] 47Hình 3.19:
Mô hình Aligned Xception [13] 50Hình 4.1:
Mô hình thử nghiệm DeeplabV3 plus [13] 51Hình 4.2:
Minh họa tập ảnh gốc trên pascal voc 2012 52Hình 4.3:
Minh họa tập ảnh groundtruth của pascal voc 2012 52Hình 4.4:
Minh họa tập ảnh groundtruth thô 52Hình 4.5:
Hình ảnh minh họa các lớp trên tập pascal voc 2012 52Hình 4.6:
Hình ảnh minh họa tập ảnh huấn luyện trong ADE20K dataset 54Hình 4.7:
Minh họa groundtruth trên tập training của ADE20K dataset 54Hình 4.8:
Hình ảnh minh họa khi hết bộ nhớ trên GPU Google Colab 55Hình 4.9:
Thƣ mục sau khi đƣợc chuyển sang tfrecord của 3 tập (train, trainval, Hình 4.10:
val) trong Pascal Voc 2012 55
Trang 13Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 12
DANH MỤC BẢNG BIỂU
Bảng 2.1 So sánh các mạng CNN phổ biến hiện nay về độ chính xác và số lượng tham số ……….33 Bảng 3.1 Kết quả của một số mô hình trên tập Pascal voc 2012 trong đó mô hình [20] ……… 48 Bảng 4.1: 20 lớp đối tượng trong tập dữ liệu Pascal Voc 2012 ……… 53 Bảng 4.2 Một số lớp đối tượng trong tập ADE20K Challenge 2016 ………54
Trang 14để tạo ra thông tin số Các lĩnh vực con của thị giác máy tính bao gồm tái cấu trúc cảnh, theo dõi video, nhận diện bố cục đối tượng, học, đánh chỉ mục, phục hồi ảnh,…
Trong phạm vi đồ án tôi sẽ khai thác khía cạnh phân vùng ngữ nghĩa ảnh Trước khi deep learning khám phá thị giác máy tính, người ta đã tiếp cận bài toán phân vùng ảnh bằng một số phương pháp như TextonForest và Random Forest dựa trên bài toán phân loại ảnh để phân vùng ngữ nghĩa, tuy nhiên kết quả phân vùng còn kém, chưa rõ nét Cũng giống với phân loại ảnh, mạng noron tích chập đã đạt được nhiều thành công lớn trong bài toán phân vùng ảnh Vậy nên, tôi sẽ tiếp cận theo phương pháp sử dụng mạng noron tích chập (CNN) được giới thiệu ở Chương 2 Trong Chương 3 tôi sẽ giới thiệu về một số mô hình sử dụng mạng noron tích chập để giải quyết bài toán phân vùng ngữ nghĩa sau đó tôi lựa chọn mô hình và tiến hành thử nghiệm tại chương 4, rồi đưa ra nhận xét, kết luận, và hướng phát triển ở chương 5 Trong chương này tôi giới thiệu về bài toán phân vùng ngữ nghĩa cũng như các ứng dụng thiết thực của bài toán trong cuộc sống hiện đại
Giới thiệu về bài toán phân vùng ngữ nghĩa
1.1
Phân vùng ngữ nghĩa là miêu tả quá trình liên kết từng điểm ảnh với nhãn lớp hay là việc ta gán cho mỗi điểm ảnh của ảnh này một giá trị đặc trưng cho nhãn lớp đối tượng mà điểm ở vị trí ấy thuộc về (ví dụ như mèo, bò, đường, xe, cỏ, )
Trang 15Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 14
Hình ảnh minh họa bài toán Semantic Segmentation [ 28 ]
Hình 1.1:
Ta có thể định nghĩa bài toán cụ thể như sau:
● Input: Ảnh đầu vào có kích thước bất kỳ
● Output: Cho ra một ảnh đã gán nhãn từng điểm ảnh tương ứng với ảnh đầu vào dựa trên mô hình học được từ tập dữ liệu cho trước
Sự khác nhau giữa một số bài toán xử lý ảnh với phân vùng ngữ nghĩa
Một số bài toán trong xử lý ảnh [ 21 ]
Trang 16 Trong Y tế: Phân vùng ảnh được áp dụng để phân biệt các bộ phận trong cơ thể như phát hiện khối u và phân tích theo dõi sự phát triển của khối u (to hay bé), mật độ hồng cầu trong máu,… hỗ trợ bác sĩ chẩn đoán và chữa trị chính xác hơn
Trong nhận dạng đối tượng: Như nhận ra các vật thể, con người,… giúp thị giác của robot tốt hơn trong việc quan sát thế giới xung quanh
Trong giao thông: Phát hiện ra các đối tượng trên đường: con người, xe cộ, cây cối, đèn tín hiệu và được ứng dụng trong xe tự lái – một chủ đề đang nóng của các ông lớn trong ngành ô tô
Trong giải quyết các vấn đề của thế giới như: Áp dụng với các bức ảnh vệ tinh chúng ta có thể xác định được mật độ rừng che phủ, sự xâm lấn của nước biển, phát hiện cháy rừng, xác định mật độ đô thị hóa,…
Trang 17Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 16
MẠNG NORON VÀ MẠNG NORON TÍCH CHẬP CHƯƠNG 2:
Mạng noron là một trong những phương pháp kinh điển trong học máy, được
áp dụng thành công trong rất nhiều bài toán Nó bao gồm một tập các noron xếp theo các tầng và các liên kết giữa các tầng hoặc các noron trong cùng một tầng Cũng giống như các mô hình học máy khác, nó được sử dụng để mô phỏng một hàm toán học phức tạp nào đó Nhờ quá trình lan truyền tiến và lan truyền ngược,
mà các tham số của mạng được tối ưu Trong phần này tôi giới thiệu về mạng noron
và mạng noron tích chập cùng với một số kiến trúc mạng CNN phổ biến hiện nay
Mô hình toán học của mạng noron
Dựa trên mạng noron sinh học, trong mô hình toán học [15] của một noron các tín hiệu đi dọc theo sợi trục (ví dụ x0) tương tác nhiều với các sợi nhánh của các noron khác dựa trên trọng số của khớp nối tại khớp thần kinh đó (ví dụ w0) Ý tưởng là các trọng số của khớp nối có thể học được và kiểm soát ảnh hưởng của một noron đối với một noron khác (thúc đẩy nếu trọng số dương và ức chế nếu trọng số âm)
Trang 18DNN (deep neural network) là khái niệm chỉ mạng noron có 2 tầng ẩn trở lên Mạng noron gồm có: mạng noron truyền thẳng (feed – forward neural network - FNN) và mạng noron hồi quy (recurrent neural network - RNN) Ở phạm vi bài toán này, tôi
sẽ tìm hiểu về mạng noron truyền thẳng
Kiến trúc mạng noron Bên phải là mạng 3 tầng ẩn, bên trái là mạng 2 tầng
Hình 2.3:
ẩn [15]
Chú ý: Khi nói mạng noron N tầng là không tính tầng đầu vào Do đó một mạng noron đơn nghĩa là mạng đó không có tầng ẩn (gồm đầu vào và đầu ra)
Trang 19Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 18
Tầng đầu ra (output): Không giống như tất cả các lớp trong mạng noron, tầng đầu ra thường không có hàm kích hoạt Là bởi vì tầng đầu ra cuối cùng được đại diện cho điểm số của lớp (trong phân loại) những con số có giá trị thực
Thước đo mạng noron: Hai thước đo mà mọi người thường sử dụng để đo kích thước của mạng noron là số noron hoặc số lượng tham số
Cross Entropy (Log Loss)
Trang 20Li= -∑ [ 19 ]
Trong đó M là số nhãn lớp, y là 1 nếu c là nhãn của mẫu dữ liệu o, 0 nếu ngƣợc lại,
p là xác suất mô hình dự đoán mẫu dữ liệu có nhãn là c
Loss = max(0, 5.1– 3.2 +1) + max(0, -1.7 - 3.2 + 1) = max(0, 2.9) + max(0, -3.9) = 2.9
Trang 21[31] Trong đó hàm exp(zi) = ezi , hàm trên tính tất cả ai dựa vào tất cả các zi thỏa mãn các điều kiện trên Hàm này là hàm softmax [31] Lúc này ta có thể giả sử rằng
Trang 22Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 21
2.1.3.4 Batch Normalization (BN)
Trong quá trình đào tạo, sự thay đổi thông số nội bộ (Internal Covariate Shif)
do phân phối đầu vào khiến cho sự thay đổi hoạt động mạng làm chậm quá trình đào tạo Để khắc phục vấn đề này người ta sử dụng phương pháp Batch Normalization [6] để ép giá trị đầu vào của mỗi noron tuân theo một phân phối nào
đó
Giải thuật 1: Batch Normalization Transform, được áp dụng với x trên một mini-batch[ 6 ]
Trong công thức y = BNγ,β(xi) 2 giá trị γ, β sẽ được học trong quá trình học của mạng Trong mạng CNN Batch Normalization thường đặt sau Conv và trước hàm kích hoạt
2.1.3.5 Dropout
Để tránh quá khớp, dropout là kỹ thuật được sử dụng phổ biến khi huấn luyện mạng noron, ý tưởng của nó là trong mỗi lần forward batch dữ liệu trên mạng, ta ngắt ngẫu nhiên kết nối giữa một vài noron bằng cách đặt ngẫu nhiên một số noron bằng 0 (giá trị activation tại noron đó bằng 0) với một xác suất nào đó (thông thường khoảng 0.2 đến 0.5)
Trang 23Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 22
Mô phỏng kỹ thuật Dropout [ 14 ]
Hình 2.8:
2.1.3.6 Quá trình huấn luyện
Quá trình huấn luyện gồm các bước sau:
Lan truyền tiến: Dữ liệu từ tầng nhận qua các tầng ẩn đến tầng đầu ra, khi có kết quả đầu ra, so sánh với đầu ra mong muốn, để tính toán lỗi
Lan truyền ngược: Giá trị lỗi sẽ được truyền ngược lại để tìm ra trọng số để giá trị lỗi nhỏ nhất
Giả sử sau khi tính toán từ đầu vào đã cho, ta có đầu ra là Y Giá trị mong muốn là
Z đã biết trước Sự chênh lệch giữa Y và kết quả mong muốn Z được biểu diễn bởi tham số delta (gọi là lỗi) = Z - Y Mục đích của việc học là làm sao cho delta càng nhỏ càng tốt (nếu delta = 0 là hoàn hảo nhất) bằng cách điều chỉnh trọng số (weights) của các dữ liệu vào [32]
Minh họa quá trình huấn luyện trên mạng noron [ 32 ]
Hình 2.9:
Như hình minh họa trên deltai = Zi - Yi
Trang 24Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 23
Hiệu chỉnh trọng số: Wi(final) = Wi(initial) + alpha*delta*Xi
Trong đó alpha là tham số kiểm soát tốc độ học gọi là learning rate Việc chọn tham
số learning rate phù hợp (làm tăng độ chính xác) là vấn đề rất quan trọng
2.1.3.7 Tối ưu tham số
Khi huấn luyện mô hình mạng noron, người ta thường sử dụng giải thuật Gradient Decent để tối ưu tham số Ý tưởng của giải thuật là dịch chuyển tham số ngược với hướng của đạo hàm, cho tới khi đạt được trạng thái hội tụ
Đầu tiên, ta cần tính đạo hàm riêng của hàm mất mát đối với tham số W, dựa trên
dữ liệu data, từ đó cập nhật tham số ngược theo hướng của đạo hàm này, step_size hay learning rate là kích thước của bước nhảy, đây là một tham số điều chỉnh quá trình học của mạng Quá trình lặp lại cho tới khi gặp một điều kiện dừng, có thể là
sự tăng của hàm mất mát đối với bộ tham số hiện tại, hay giới hạn số lần lặp
Do dữ liệu thường rất lớn, quá trình tính toán đạo hàm riêng trên toàn bộ tập dữ liệu huấn luyện đòi hỏi lượng tính toán lớn và thời gian thực hiện lâu Người ta phát triển giải pháp cập nhật tham số trên một batch dữ liệu nhỏ, thay vì toàn bộ tập dữ liệu, gọi là phương pháp Stochastic mini-batch GD, quá trình cập nhật tham số được thay đổi như sau:
Trang 25Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 24
while True: data_batch = sample_training_data(data, 256) #sample 256 examples weight_grad = evaluate_gradient(loss_func, data_batch, weights) weights += -step_size * weight_grad # perform parameter update [35 ]
Trong quá trình sample_training_data người ta thường lấy một batch dữ liệu liên
tiếp có kích thước định sẵn, mỗi lần lấy ra một batch thì trượt cửa sổ có kích thước bằng batch_size, sau batch cuối cùng thì người ta sẽ tiến hành shuffle lại dữ liệu (hết một epoch) Bằng cách sử dụng Stochastic Gradient Decent, quá trình huấn luyện được tăng tốc một cách đáng kể
Mạng noron tích chập
2.2
Mạng noron tích chập [15], để dễ hình dung, ta có thể xem tích chập như một cửa sổ trượt (sliding window) áp đặt lên một ma trận Bạn có thể theo dõi cơ chế của tích chập qua hình minh họa bên dưới
Cơ chế tích chập của mạng CNN [ 22 ]
Hình 2.11:
CNNs là một trong những kỹ thuật hiện đại nhất hiện nay cho bài toán phân loại ảnh nói riêng và lĩnh vực thị giác máy tính nói chung Đặc biệt, khác với mạng nơ-ron thông thường, các lớp của một CNN có norons sắp xếp theo 3 chiều: chiều rộng, chiều cao, chiều sâu (lưu ý rằng chiều sâu ở đây đề cập đến kích thước thứ ba của trọng số kích hoạt)
Trang 26đó Ta có thể hình dung tầng này sẽ dịch chuyển cửa sổ (kernel) trên ma trận đầu vào, trong đó mỗi lần dịch chuyển theo bước trượt (stride) tính bằng pixel sẽ được tính bằng tổng tích chập Người ta gọi vùng mà kernel áp lên ma trận đầu vào là trường tiếp nhận (receptive field) Trong một số trường hợp để cân bằng giữa số bước dịch chuyển và kích thước ảnh, ta có thể chèn thêm P pixel (padding) với một giá trị cho trước (thường là 0) xung quanh viền của ảnh
Phép toán tích chập [ 23 ]
Hình 2.13:
Với bao nhiêu bộ lọc trong lớp này thì ta sẽ có bấy nhiêu ảnh tương ứng mà lớp này trả ra và được truyền vào lớp tiếp theo Các trọng số của bộ lọc ban đầu sẽ được khởi tạo ngẫu nhiên và sẽ được học dần trong quá trình huấn luyện mô hình
Tầng RELU
Trang 27Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 26
Tầng RELU [15] này thường được cài đặt ngay sau tầng conv Tầng này sử dụng hàm kích hoạt f(x) = max(0, x) Nói một cách đơn giản, tầng này có nhiệm vụ chuyển toàn bộ giá trị âm trong kết quả lấy từ tầng conv thành giá trị 0 Ý nghĩa của cách cài đặt này chính là tạo nên tính phi tuyến cho mô hình Có rất nhiều cách để khiến mô hình trở nên phi tuyến như sử dụng các hàm kích hoạt sigmoid, tanh,… nhưng hàm f(x) = max(0,x) dễ cài đặt, tính toán nhanh mà vẫn hiệu quả
2.2.1.2 Pooling Layer
Tầng Pooling (subsampling hoặc downsample) [15] sử dụng một cửa sổ trượt quét qua toàn bộ ảnh dữ liệu, mỗi lần trượt theo một bước trượt (stride) cho trước Khác với tầng Convolutional, tầng Pooling không tính tích chập mà tiến hành lấy mẫu (subsampling) Các phương thức lấy phổ biến trong tầng Pooling là Max pooling (lấy giá trị lớn nhất), và Average pooling (lấy giá trị trung bình) Xét một ảnh có kích thước 4×4 và tầng Pooling sử dụng bộ lọc có kích thước 2×2 với bước trượt stride = 2, phương pháp sử dụng là Max Pooling Bộ lọc sẽ lần lượt duyệt qua ảnh, với mỗi lần duyệt chỉ có giá trị lớn nhất trong 4 giá trị nằm trong vùng cửa sổ 2×2 của bộ lọc được giữ lại và đưa ra đầu ra Như vậy sau khi qua tầng Pooling, ảnh
sẽ giảm kích thước xuống còn 2×2 (kích thước mỗi chiều giảm 2 lần)
Max pooling với kernel 2x2 và stride = 2 [ 15 ]
Hình 2.14:
Tầng Pooling có vai trò giảm kích thước dữ liệu Với một bức ảnh kích thước lớn qua nhiều tầng Pooling sẽ được thu nhỏ lại tuy nhiên vẫn giữ được những đặc trưng cần cho việc nhận dạng (thông qua cách lấy mẫu) Việc giảm kích thước dữ liệu sẽ làm giảm lượng tham số, tăng hiệu quả tính toán và góp phần kiểm soát hiện tượng quá khớp (overfitting)
2.2.1.3 Fully-Connected Layer
Tầng này tương tự với tầng trong mạng nơ-ron truyền thẳng, các giá trị ảnh được liên kết đầy đủ vào noron trong tầng tiếp theo Sau khi ảnh được xử lý và rút trích đặc trưng từ các tầng trước đó, dữ liệu ảnh sẽ không còn quá lớn so với mô
Trang 28Nguyễn Thị Phương Hằng – 20131345 – K58 - CNTT2.01 27
hình truyền thẳng nên ta có thể sử dụng mô hình truyền thẳng để tiến hành nhận dạng Tóm lại, tầng fully-connected đóng vai trò như một mô hình phân lớp và tiến hành dựa trên dữ liệu đã được xử lý ở các lớp trước đó
Cấu trúc mạng noron tích chập như thế nào?
Một mạng nơ-ron tích chập [15] được hình thành bằng cách ghép các lớp trên lại với nhau Mô hình bắt đầu với tầng Conv Tầng RELU thường luôn được cài đặt ngay sau tầng Conv hoặc thậm chí kết hợp cả hai tầng này thành một Các tầng tiếp theo có thể là Conv hay Pooling tùy theo kiến trúc mà ta muốn xây dựng Cuối cùng
sẽ là tầng fully-connected để tiến hành phân lớp
Ví dụ minh họa mô hình CNN trong phân loại ảnh [ 15 ]
Hình ảnh đầu vào là ảnh RGB với kích thước 224x224, bộ nhớ sử dụng cho mỗi ảnh khoảng 96Mb Hình ảnh được đi qua các tầng conv, ở đó sử dụng các bộ lọc với trường tiếp nhận nhỏ: 3x3 (kích thước nhỏ nhất có thể nắm bắt được thông tin trái/phải, trên/dưới, trung tâm), stride = 2, và padding =1 Pooling được thực hiện bởi 5 tầng max pooling theo sau một số tầng conv, max pooling với cửa sổ 2x2 và stride = 2 Cuối cùng là 3 tầng FC và hàm softmax để chuyển đầu ra của mạng về dạng phân phối xác xuất
Trang 30Residual block để mạng học một bản đồ nhận dạng (identity map) bằng các học giá trị dƣ của đầu vào và đầu ra Cụ thể, giá trị đầu vào là x, giá trị đầu ra là H(x) thì giá trị dƣ (residual) chính là F(x)= H(x)-x Vậy để xác định đúng giá trị đầu ra, ta có: H(x)= F(x) + x
Trang 31Depthwise convolution [7] đƣợc sử dụng để áp dụng bộ lọc đơn trên mỗi kênh đầu vào, sau đó pointwise convolution đƣợc sử dụng để tạo ra tổng hợp tuyến tính của đầu ra của tầng depthwise convolution
Trang 32separable convolution cần số lượng tham số ít hơn [ 37 ]
Xception đƣợc mở rộng từ modun Inception (đƣợc sử dụng trong Googlenet), nó thay thế modun Inception chuẩn bằng depthwise separable convolution Trong Xception có 36 tầng conv, 36 tầng này đƣợc kiến trúc trong 14 modun, tất cả đƣợc kết nối dƣ (residual connections) tuyến tính, ngoại trừ modun đầu và cuối