Ứng dụng mô hình mạng noron tích chập trong phân loại xe hơi

75 0 0
Tài liệu đã được kiểm tra trùng lặp
Ứng dụng mô hình mạng noron tích chập trong phân loại xe hơi

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Phân tích lý thuyết mô hình (CNN – Darknet53 – YoLov3), làm cơ sở tạo ra các thông số mô hình YoLov3 để phù hợp với bài toán và khả năng xử lý của máy tính. • Thu thập dữ liệu cars_traindataset (8144 ảnh) dùng để huấn luyện, cars_testdataset (8044 ảnh) dùng để thử nghiệm, thực hiện xử lý gán nhãn theo hãng xe hơi chuyển đổi sang định dạng đầu vào của mô hình YoLov3. • Đã thực hiện cài đặt và huấn luyện trên Google Colab, dùng chỉ số mAP để xác định file weight tốt nhất của quá trình huấn luyện. • Ứng dụng mô hình đã huấn luyện cho việc xây dựng ứng dụng phân loại xe hơi, đã cài đặt giao diện tương tác. • Viết module test cho bộ dữ liệu cars_testdataset (8014 ảnh), qua đó xây dựng kịch bản thử nghiệm cho hai bộ dữ liệu cars_testdataset và bộ dữ liệu tự tạo. Đánh giá kết quả thử nghiệm và đưa ra nhận xét

Trang 1

Ứng dụng mô hình mạng noron tích chập trong phân loại xe hơi

Trang 2

1.4 Định hướng giải pháp và công nghệ 4

CHƯƠNG 2 TỔNG QUAN VỀ MẠNG NƠ-RON TÍCH CHẬP 5

2.1 Mạng nơ-ron nhân tạo 5

2.1.1 Mô hình hoạt động của nơ-ron .5

3.2 Kiến trúc mô hình YoLov3 29

3.2.1 Khái quát thuật toán YoLov3 29

3.2.2 Tìm anchor box 31

3.2.3 Kiến trúc của mô hình YoLov3 33

3.2.4 Thuật toán Non-max suppression 34

3.3 Các thông số của mô hình YoLov3 36

3.3.1 Định dạng dữ liệu đầu vào cho quá trình huấn luyện 36

3.3.2 Phân tích các tham số cho quá trình huấn luyện 36

3.3.3 Thời điểm dừng pha huấn luyện 39

3.3.4 Kiểm tra lại mô đồ mới sinh (testing) 40

CHƯƠNG 4 XÂY DỰNG ỨNG DỤNG PHÂN LỚP ẢNH XE HƠI VÀ THỬ NGHIỆM 41

4.1 Xác định yêu cầu ứng dụng 41

Trang 3

4.2 Phân tích chức năng của ứng dụng 42

4.2.1 Phân tích qua biểu đồ use case 42

4.2.2 Phân tích qua biểu đồ hoạt động 43

4.4.1 Kịch bản thử nghiệm trên bộ dữ liệu cars_testdataset 57

4.4.2 Kịch bản thử nghiệm trên bộ dữ liệu tự tạo 63

4.4.3 Độ đo, độ chính xác, kết quả thử nghiệm 63

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 65

TÀI LIỆU THAM KHẢO 67

Trang 4

DANH MỤC HÌNH VẼ

Hình 1.1 Ví dụ về tính khoảng cách giữa hai ảnh [1] 2

Hình 1.2 Ví dụ sự khác nhau giữa hai NN với 5-NN classifier [1] 3

Hình 1.3 Ví dụ về linear classification [1] 3

Hình 2.1 Cấu tạo nơ-ron thần kinh và nơ-ron nhân tạo [1] 5

Hình 2.2 Đồ thị toán học của hàm sigmoid 6

Hình 2.3 Đồ thị toán học của hàm Tanh 7

Hình 2.4 Đồ thị toán học của hàm ReLu 8

Hình 2.5 Đồ thị toán học của hàm Leaky ReLU 9

Hình 2.15 Bước nhảy cho kernel 17

Hình 2.16 Thêm lề cho ma trận đầu vào 18

Hình 2.17 Minh họa cách tính max pooling [7] 18

Hình 2.18 Minh họa cách tính average pooling [7] 19

Hình 2.19 Minh họa lớp liên kết đầy đủ [1] 20

Hình 3.2 Khối residual thứ 1 của Darknet53 28

Hình 3.3 Khối residual 2 của Darknet53 28

Hình 3.4 Code mẫu cho khối residual 29

Hình 3.5 Biểu diễn quan hệ cell với feature map [13] 30

Hình 3.6 Biểu diễn của 1 cell [13] 30

Hình 3.7 Tính độ tin cậy cho các classes [13] 31

Hình 3.8 Mô phỏng tính anchor box [13] 32

Hình 3.9 Kiến trúc của YoLov3 [13] 33

Hình 3.10 Mối liên hệ kiến trúc Darknet53 và YoLov3 [14] 34

Hình 3.11 Sau khi dùng thuật toán NMS [13] 35

Trang 5

Hình 4.1 Một ví dụ về hình ảnh đã được phân lớp 41

Hình 4.2 Biểu đồ use case của ứng dụng 42

Hình 4.3 Biểu đồ hoạt động của ứng dụng 43

Hình 4.4 File thông tin cars_train_annos.mat 45

Hình 4.5 Phần mềm gán nhán dữ liệu labelImg 46

Hình 4.6 Thuật toán gộp classes 47

Hình 4.7 Hình ảnh cài đặt trên Google Colab 50

Hình 4.8 Một số kết quả các file Weights sinh ra 50

Hình 4.9 Kết quả tính mAP mẫu 51

Hình 4.10 Kết quả mAP của file Weight thứ 46 52

Hình 4.11 Biểu đồ thành phần của ứng dụng 54

Hình 4.12 Biểu đồ thành phần của phần test 55

Hình 4.13 Giao diện khi mới vào ứng dụng 56

Hình 4.14 Một ví dụ về hình ảnh đã phân loại của ứng dụng 57

Trang 6

DANH MỤC BẢNG BIỂU

Bảng 4.1 Cài đặt trên môi trường window 44

Bảng 4.2 Cài đặt trên môi trường Google Colab 45

Bảng 4.3 Biểu đồ mAP của quá trình huấn luyện 52

Bảng 4.4 Thống kê chỉ số AP của các hãng theo Weight-46 53

Bảng 4.5 Biểu đồ thống kê kết quả phân loại 1 của cars_testdataset 58

Bảng 4.6 Biểu đồ thống kê kết quả phân loại 2 của cars_testdataset 58

Bảng 4.7 Biểu đồ thống kê kết quả phân loại 3 của cars_testdataset 58

Bảng 4.8 Biểu đồ thống kê kết quả phân loại 4 của cars_testdataset 59

Bảng 4.9 Biểu đồ thống kê kết quả phân loại 5 của cars_testdataset 59

Bảng 4.10 Biểu đồ thống kê kết quả phân loại 6 của cars_testdataset 59

Bảng 4.11 Biểu đồ thống kê kết quả phân loại 7 của cars_testdataset 60

Bảng 4.12 Biểu đồ thống kê kết quả phân loại 7 của cars_testdataset 60

Bảng 4.13 Biểu đồ thống kê kết quả phân loại 7 của cars_testdataset 60

Bảng 4.14 Biểu đồ thống kê kết quả phân loại 8 của cars_testdataset 61

Bảng 4.15 Biểu đồ thống kê kết quả phân loại 9 của cars_testdataset 61

Bảng 4.16 Biểu đồ thống kê kết quả phân loại 10 của cars_testdataset 61

Bảng 4.17 Biểu đồ thống kê kết quả phân loại 11 của cars_testdataset 62

Bảng 4.18 Biểu đồ thống kê của cars_testdataset 62

Bảng 4.19 Biểu đồ thống kê kết quả phân loại của bộ dữ liệu tự tạo 63

Bảng 4.20 Biểu đồ so sánh giữa 2 bộ test 64

Trang 7

DANH MỤC TỪ VIẾT TẮT

ConvNet Convolution Neural Network

CUDA Compute Unified Device Architecture ANN Artificial Neural Network

Trang 8

CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI

1.1 Đặt vấn đề

Ngày nay, chúng ta đang trong giai đoạn bùng nổ công nghệ thông tin, thời kỳ 4.0 Internet phát triển bùng nổ, mạng viễn thông 5G đã đang triển khai rầm rộ, thế giới ngày càng phẳng, thế giới xích lại gần nhau hơn Vì thế lượng thông tin truyền tải trên internet tăng chóng mặt, các thuật ngữ công nghệ mới ra đời như là data science, big data, SDN, IoT, … Việt Nam đang hội nhập và phát triển, rất cần ứng dụng các công nghệ tiên tiến đặc biệt về công nghệ thông tin

Cùng với sự phát triển các loại máy tính mạnh mẽ sở hữu các loại chip CPU khủng, ổ cứng SSD dung lượng lớn, màn hình phân giải cao sử dụng nhiều GPU Đặc biệt, các hãng sản xuất GPU đã cho phép lập trình viên sử dụng để tính toán Khả năng của GPU tính toán cực mạnh, nó đã được áp dụng có các bài toán deep learning, tạo ra cuộc cách mạng AI

Các phần mềm ứng dụng mọc lên như nấm, được các ông lớn của các hãng như Google, Facebook, Apple, Samsung, Microsoft đặc biệt quan tâm tạo ra các chợ phần mềm nổi tiếng Không những thế, các công ty trên thế giới đều tự thiết kế các phần mềm ứng dụng cho riêng mình, và nó là một miếng bánh lớn, nhưng nó chỉ thực sự ngọt khi đưa các công nghệ mới được đưa vào như đã nêu trên

Không chỉ riêng công nghệ thông tin phát triển mạnh mẽ, mà các ngành công nghiệp cũng rất cực thịnh, thậm chí còn ứng dụng công nghệ thông tin để có được những sản phẩm chất lượng cao Đặc là trong lĩnh vực sản xuất xe hơi, nó không chỉ là phương tiện tiện đi lại mà còn thể hiện phong cách thượng lưu Vì vậy, nó chiếm trọng số rất lớn trong lĩnh vực sản xuất xe Ngay tại Việt Nam, cũng đã tự sản xuất xe hơi, chạy đua với thị trường quốc tế

Xu hướng thị trường là như vậy, em cũng mong mỏi tìm hiểu, học tập để có thể tạo ra một phần mềm “Phân loại xe hơi” (theo hãng) dựa trên mô hình YoLov3 (cốt lõi của mô hình là mạng nơ-ron tích chập)

Ứng dụng “Phân loại xe hơi” (theo hãng), dựa trên bài toán phân lớp hình ảnh, thuộc bài toán kinh điển trong thị giác máy tính và cũng thuộc bài toán nhỏ trong data science

Ứng dụng có thể giúp đỡ phục vụ cho mọi người trong vấn đề tìm hiểu xe hơi Chẳng hạn như giúp những người chưa có hiểu biết về xe hơi biết nó thuộc về hãng nào, từ đó giúp họ có thể nghiên cứu thông tin chi tiết hơn qua internet

Trang 9

1.2 Mục tiêu và nhiệm vụ

❖ Mục tiêu đồ án

➢ Tìm hiểu mô hình mạng Nơ-ron tích chập áp dụng cho phân lớp ảnh ➢ Xây dựng ứng dụng phân lớp xe hơi dùng mạng nơ-ron tích chập ❖ Nhiệm vụ đồ án

➢ Tìm hiểu mạng nơ-ron nhân tạo (ANN) và mô hình mạng nơ-ron nhân tạo (CNN)

➢ Tìm hiểu mô hình và công nghệ mạng CNN của YoLov3, Darknet53 ➢ Xậy dựng thử nghiệm ứng dụng phân lớp ảnh dùng mô hình mạng nơ-

ron YoLov3 để phân loại các ảnh xe hơi theo nhãn hiệu hãng xe ➢ Cài đặt ứng dụng thử nghiệm và đánh giá kết quả

1.3 Một số phương pháp phân lớp ảnh

Phân lớp ảnh có rất nhiều phương pháp tiếp cận trong học máy (machine learning), sâu hơn trong học máy là các phương pháp học sâu (deep learning) Một số phương pháp phân lớp ảnh bao gồm:

1 Bộ phân lớp theo láng giềng gần nhất (Nearest Neighbor Classifier), cách

phân loại này không liên quan gì tới mạng nơ-ron tích chập, và nó rất hiếm khi được sử dụng trong thực tế, nhưng nó cho chúng ta ý tưởng cơ bản về bài toán phân loại hình ảnh Sau khi gán nhãn, thuật toán sẽ tạo ra bộ dữ liệu ảnh test, so sánh nó với từng ảnh đã được huấn luyện, và dự đoán nhãn của nó trùng với ảnh trong bộ huấn luyện gần nó nhất Công thức tính khoảng cách là:

d1(I1, I2) = ∑p |I1 – I2 |

Hình 1.1 Ví dụ về tính khoảng cách giữa hai ảnh [1]

Trang 10

2 Bộ phân lớp theo K láng giềng gần nhất (K – Nearest Neighbor Classifier), tương tự như ý tưởng của thuật toán bộ phân lớp theo láng giềng gần nhất, nhưng thay vì chỉ dùng 1 hàng xóm gần nhất, thì ta dùng k hàng xóm gần nhất Ta lấy 1 ví dụ k=5:

Hình 1.2 Ví dụ sự khác nhau giữa hai NN với 5-NN classifier [1]

Ta thấy, vùng có 1 điểm xanh lá cây nằm giữ các điểm xanh da trời, với NN classifier, nó không thể dự đoán chính xác, trong khi với 5-NN classifer có thể xử lý vấn đề này Điều đó, cho thấy k-NN classifier có khả năng tổng quát hóa tốt hơn

3 Bộ phân lớp tuyến tính (Linear Classifier), là một phương pháp tiếp cận mạnh mẽ hơn hai phương pháp trên, và có thể mở rộng để sử dụng mạng nơ-ron và mạng nơ-ron tích chập Với cách tiếp cận này, sẽ có hai hàm chính “score function” và “loss function” Cách tiếp cận này dẫn đến bài toán cực tiểu hóa “loss function”

Hình 1.3 Ví dụ về linear classification [1]

Trang 11

Các dạng mở rộng của của Linear Classifier:

➢ Multi-class Support Vector Machine (Muli-class SVM) dựa trên phương pháp svm classifier, được phát triển tại phòng thí nghiệm AT&T Bell bởi Vapnick với các cộng sự

➢ Phân loại nhiều lớp với mạng nơ-ron, bài toán sẽ áp dụng mạng nơ-ron trong việc phân loại Nó là một trong những ứng dụng của mạng nơ-ron ➢ Phân loại nhiều lớp với mạng nơ-ron tích chập, bài toán áp dụng mạng nơ-

ron tích chập trong bài toán phân lớp

1.4 Định hướng giải pháp và công nghệ

Ngày nay, nhờ sự phát triển mạnh mẽ của máy tính trong việc xử lý tính toán, nên việc áp dụng các mô hình học sâu cho bài toán phân lớp ảnh trở nên dễ dàng hơn và cho độ chính xác cao hơn Mặt khác, sự bùng nổ internet, chúng ta ngày càng dễ thu thập dữ liệu phục vụ cho việc huấn luyện mô hình

Một số mô hình nổi tiếng ra đều dựa trên mạng nơ-ron tích chập như : Alexnet, VGG-16, GooLeNet, ResNet, DenseNet, Darknet, … Tùy vào đặc trưng của từng bài toán, mà ta sử dụng cho phù hợp

Trên thị trường, mạng Darknet cho mô hình YoLo được dùng rất phổ biến, vì nó dễ sử dụng, nhanh và linh hoạt Trong đấy phải kể đến mô hình YoLov3 sử dụng mạng Darknet53, nó có thể sử dụng linh hoạt nhiều bài toán như phát hiện đối tượng, phân lớp ảnh, phân vùng ảnh

Đồ án sẽ tiếp cận, sử dụng mô hình YoLOv3 (bên trong là mạng Darknet53) cho bài toán phân lớp ảnh xe hơi, ta có thể mở rộng bài toán phân lớp với việc vẽ thêm các bounding box cho từng đối tượng được phân lớp

Qua đó, đồ án sẽ ứng dụng mô hình đã được huấn luyện bởi YoLov3 cho việc xây dựng ứng dụng “ phân loại xe hơi” (car image classification)

Trang 12

CHƯƠNG 2 TỔNG QUAN VỀ MẠNG NƠ-RON TÍCH CHẬP

Chương 2 trình bày các nền tảng lý thuyết liên quan đến đồ án, là cơ sở để xây dựng phần mềm phân loại xe và kiểm thử mô hình phân loại trong các chương 3 và chương 4 Các cơ sở lý thuyết bao gồm:

• Cấu tạo một nơ-ron nhân tạo và kiến trúc mạng nơ-ron • Kiến trúc mạng tích chập (CNN)

2.1 Mạng nơ-ron nhân tạo

2.1.1 Mô hình hoạt động của nơ-ron

Nơ-ron (neural) nhân tạo lấy ý tưởng từ nơ-ron của não bộ con người, với đơn vị một nơ-ron Thực tế, bộ não con người có đến khoảng 86 tỷ tế bào nơ-ron và chúng kết với nhau đến khỏng 10^14– 10^15 synapses

Hình vẽ bên trái dưới là một tế bào ron sinh học, và một mô hình ron toán học ở bên phải Mỗi nơ-ron nhận tín hiệu đầu vào từ các dendrites của nó và tạo ra tín hiệu dọc theo sợi trục axon của nó Phần cuối của sợi trục axon phân nhánh ra bên ngoài và kết nối qua synapses với dendrites của tế bào nơ-ron khác

nơ-Hình 2.1 Cấu tạo nơ-ron thần kinh và nơ-ron nhân tạo [1]

Trong mô hình toán học của nơ-ron ở bên phải hình vẽ, các tín hiệu đi dọc các axons tương tác bằng cách nhân với dendrite của nơ-ron khác (ví dụ: w0x0) dựa vào khả năng của synapse của nơ-ron đó (ví dụ: w0) Ý tưởng nằm ở chỗ khả năng của synapse ( ứng với trọng số w) có thể học và kiểm soát mức độ ảnh hưởng( ứng với w>0) hoặc ức chế (ứng với w<0) nên nơ-ron khác Trong mô hình cơ bản, các dendrites mang tín hiệu đến thân tế bào, nơi mà

Trang 13

chúng được tổng hợp Nếu tổng hợp tín hiệu cuối cùng có thể đạt đến cao hơn một ngưỡng cho phép nơ-ron đó sẽ được kích hoạt, gửi một tín hiệu mũi nhọn dọc theo sợi axon như hình vẽ Trong mô hình toán học, giả sử rằng thời gian chính xác của tín hiệu truyền dọc theo axon không quan trọng, và chỉ có tần suất truyền thông tin Ta biểu diễn điều đó qua hàm kích hoạt f, có một số hàm kích hoạt thường hay được dùng đặc biệt phổ biến là hàm sigmoid vì nó nhận đầu vào là một số thực và đầu ra là sô thập phân từ 0 đến 1 Hàm sigmoid : σ(x)=1/(1+e−x)

2.1.2 Một số hàm kích hoạt

Như ở phần phân loại tuyến tính, chúng ta sử dụng một số thuật toán có liên quan đến nơ-ron, một nơ-ron có khả năng cho kết quả đúng ( nếu hàm kích hoạt gần bằng 1) và kết quả sai ( nếu hàm kích hoạt gần bằng 0 )

Các hàm kích hoạt thường sử dụng :

Hàm phi tuyến sigmoid có công thức toán học: σ(x)=1/(1+e-x), được biểu dưới dạng hình học như hình dưới đấy

Hình 2.2 Đồ thị toán học của hàm sigmoid

Trong thực tế gần đây, hàm sigmoid không còn được ưa chuộng và hiếm khi được sử dụng Bởi nó có hai nhược điểm lớn:

Vanishing gradient – saturated sigmoid neurons là hiện tượng bão hòa (saturated) khi nó đạt giá trị cực lớn hoặc cực nhỏ Như đồ thị của hàm sigmoid ta thấy đầu vào là số lớn vô cùng thì đầu ra tiệm cận 1, và tương tự đầu vào mà nhỏ vô cùng thì đầu ra tiệm cận 0 Và khi hàm số đạt cực hay cực tiểu ta gọi là điểm bão hòa Khi đó đạo hàm của hàm số bằng 0, do đó không thể cập nhật lại được tham số nào, quá trình học bị bế tắc

Trang 14

Để có thể tránh hiện tượng bão hòa, ta cần tránh đưa đầu vào với giá trị cực lớn hoặc cực nhỏ lệnh hẳn với giá trị của weights Vậy nên ta cần một số biện pháp chuẩn hóa giá trị đầu vào trong khoảng [0,1] có thể làm giảm thiểu khả năng vanishing gradient

Hàm sigmoid không có tính chất Zero-centered, vì hàm số đạt cực đại và cực tiểu tại 0 và 1, nên giá trị trung bình của hàm số khác 0, do đó hàm sigmoid không thể lấy 0 làm trung tâm miền giá trị, điều này khiến cho quá trình backpropagation chỉ diễn ra theo một chiều dương hoặc âm, làm hạn chế quá

trình học

Hàm phi tuyến Tanh có công thức toán học: 𝐭𝐚𝐧𝐡⁡(𝐱) =𝒆𝒙−𝒆−𝒙

𝒆𝒙+𝒆−𝒙

Hàm tanh có đồ thị toán học :

Hình 2.3 Đồ thị toán học của hàm Tanh

Hàm Tanh có miền giá trị trong khoảng [-1;1] Tương tự như hàm sigmoid, nó cũng bị bão hòa ở hai đầu Tuy nhiên hàm Tanh lại đối xứng qua 0 nên nó khắc phục được một nhược điểm của hàm sigmoid Nó cũng có thể biểu diễn dưới dạng hàm sigmoid như sau :

tanh(x)=2σ(2x)-1

Hàm ReLU trở nên phổ biến đến hiện tại, nó có công thức toán học:

𝑓(𝑥) = max⁡(0, 𝑥)

Ta có đồ thị của hàm ReLU:

Trang 15

Hình 2.4 Đồ thị toán học của hàm ReLu

Hàm ReLU chỉ đơn giản là lọc các giá trị nhỏ hơn 0 Nó có một số ưu nhược điểm:

Tốc độ hội tụ rất nhanh khoảng 6 lần so với hàm Tanh, điều này là do ReLU không bị bão hòa ở hai đầu như Sigmoid và Tanh

Tốc độ tính toán nhanh hơn hẳn so với hàm Sigmoid và Tanh bởi vì nó không dùng đến hàm exp và công thức lại rất đơn giản

ReLU cũng có nhược điểm đố với các node có giá trị nhỏ hơn 0, qua hàm kích hoạt ReLU sẽ thành 0, những node bị chuyển thành 0 thì không có ý nghĩa gì với hàm kích hoạt ở lớp tiếp theo và

Một nhược điểm nữa là khi learning rate lớn, các trọng số (weights) có thể làm tất cả các nơ-ron dừng việc cập nhật

Hàm Leaky ReLU được phát triển từ hàm ReLu, với mục đích khắc

phục những nhược điểm của nó Thay vì trả về 0 với đầu vào nhỏ hơn 0, hàm Leaky ReLU sẽ thay vào một hằng số đưa ra

Hàm Leaky ReLU có công thức toán học:

f(x)=1(x<0)(αx)+1(x>=0)(x) Và đồ thị toán học của nó như sau:

Trang 16

Hình 2.5 Đồ thị toán học của hàm Leaky ReLU

Ngoài ra còn có một biến thể khá nổi tiếng của ReLU như là PReLU, nó giống với Leaky ReLu nhưng có khả năng tự chọn biến hằng nên nó tối ưu hơn

2.1.3 Mô hình mạng nơ-ron

Mạng nơ-ron nhân tạo (Artificial Neural Network) gọi tắt là ANN bao gồm các nút ( là các đơn vị xử lý hay nơ-ron) được kết nối với nhau bởi các liên kết nơ-ron Mỗi liên kết có một trọng số là đặc trưng cho tính kích hoạt hoặc ức chế giữ các nơ-ron Các trọng là phương tiện để lưu giữ thông tin dài hạn trong mạng nơ-ron và nhiệm vụ của quá trình huấn luyện mạng là cập nhật các trọng số khi có thêm các thông tin về các mẫu học

Mạng nơ-ron có thể học từ dữ liệu mẫu và tổng quát hóa lại trên dữ liệu mẫu học Trong đó, các nơ-ron đón nhận tín hiệu đầu vào là nơ-ron vào và các nơ-ron đưa thông tin ra gọi là nơ-ron ra

❖ Phân loại mạng nơ-ron

Ta có thể phân loại mạng ron theo hai cách: theo kiểu liên kết

nơ-ron và theo số lớp

Phân theo kiểu liên kết nơ-ron, ta có hai loại là mạng nơ-ron truyền

thẳng (feel-forward neural network) và mạng nơ-ron quy hồi (recurrent NN) Đối với mạng nơ-ron truyền thẳng, các liên kết nơ-ron đi theo một hướng và không tạo thành đồ thị chu trình với các đỉnh là nơ-ron, các cung là các liên kết nơ-ron Trong khi đó, mạng nơ-ron quy hồi cho phép các liên kết nơ-ron tạo

Trang 17

thành chu trình Vì trong mạng nơ-ron hồi quy, các thông tin của các nơ-ron được truyền lại các nơ-ron, nên mạng này có khả năng lưu trữ trạng thái của

Hình 2.6 Mạng truyền thẳng [2]

Hình 2.7 Mạng hồi qui [2]

Phân theo số lớp: các nơ-ron được tổ chức thành các lớp sao cho mỗi

nơ-ron của lớp trước được nối với mỗi nơ-ron của lớp tiếp theo, không được phép liên kết giữa các nơ-ron trong cùng một lớp, hoặc từ nơ-ron ở lớp dưới lên nơ-ron của lớp trên, và cũng không được phép có các liên kết nơ-ron nhay qua lớp khác

Trang 18

❖ Huấn luyện mạng nơ-ron

Mạng nơ-ron có khả năng học (huấn luyện) để tinh chỉnh các trọng số liên kết cũng như cấu trúc của mình sao cho phù hợp với các mẫu học

Trong đó, ta có ba kỹ thuật học: học có quan sát (supervised learning), học không có giám sát (unsupervised learning) và học tăng cường

Đối với mạng học có giám sát, nó được cung cấp tập mẫu học {(Xs,Ys)} với Xs là tín hiệu đầu vào, thì kết quả đúng là Ys Mỗi lần học, vector Xs được đưa vào mạng, sau đó so sánh với sự sai khác giữa kết quả đúng đã cho Ys với kết quả mới tính toán được Sai số này sẽ được dùng để hiệu chỉnh lại các trọng số của liên kết mạng Quá trình này lặp lại liên tục cho đến khi thỏa mãn điều kiện nào đó đưa ra Đối với mạng học không giám sát còn gọi là mạng tự tổ chức Các kỹ thuật học trong mạng nơ-ron có thể là hiệu chỉnh các trọng số liên kết gọi là học tham số; nếu là điều chỉnh sửa đổi cấu trúc của mạng bao gồm số lớp, số nơ-ron, kiểu và trọng số các liên kết gọi là học cấu trúc Cả hai kỹ thuật này có thể dùng đồng thời hoặc tách biệt

Học tham số: giả sử ta có n nơ-ron trong mạng và mỗi nơ-ron có đúng

1 liên kết vào các nơ-ron khác Khi đó, ma trận trọng số liên kết W sẽ có kích thước nx1 Mục đích của học tham số nhằm nhằm tìm kiếm ma trận W sao cho:

Ys = f (Xs , W) đối với mỗi mẫu học S=(Xs, Ys)

Học cấu trúc: Trong học tham số, giả sử mạng có cấu trúc cố định

Trong mạng truyền thẳng với yêu cầu tìm ra số lớp của mạng L và số ron trên mỗi lớp nj Tuy nhiên, với các mạng hồi qui cần phải xác định them các tham số ngưỡng giới hạn của các nơ-ron trong mạng

nơ-Cả hai phương pháp học trên đều có thể quy về bài toán tìm kiếm tôi ưu trong không gian tham số Do vậy, có thể dùng các cơ chế tìm kiếm theo gradient hay các giải thuật di truyền, lập trình tiến hóa

❖ Tính toán và biểu diễn dữ liệu của mạng nơ-ron

Đối với mạng nơ-ron truyền thẳng, các tín hiệu ra dựa trên các tín hiệu vào và các trọng số liên kết nơ-ron đã xác định sẵn trong mạng Do vậy, trạng thái bên trong nó chỉ có duy nhất là vector trọng số W

Đối với mạng hồi qui, trạng thái bên trong của mạng được lưu giữ tại các ngưỡng của các nơ-ron

Trang 19

Như vậy, quá trình tính toán trên mạng truyền thẳng có lớp lang hơn hơn mạng hồi qui Các mạng quy hồi có thể không ổn định, khi cho vector giá trị đầu vào X nào đó, mạng cần phải tính toán rất lâu, thậm chí có thể bị lặp vô hạn trước khi đưa ra được kết quả mong muốn Quá trình học của mạng qui hồi cũng phức tạp hơn nhiều Nhưng nó lại có thể mô phỏng các hệ thống phức tạp trong thực tế

Việc lựa chọn sai cấu trúc mạng có thể dẫn tới hoạt động kém hiệu quả Nếu ta chọn mạng quá nhỏ, chúng không thể biểu diễn sự phụ thuộc dữ liệu mong muốn Nếu ta chọn mạng quá lớn, có thể nhớ tất cả các mẫu học dưới dạng bảng tra, nhưng nó không hoàn toàn tổng quát hóa được những tín hiệu đầu vào chưa biết trước

2.1.4 Các mạng nơ-ron phổ biến

Mạng Hopfield do nhà vật lý người Mỹ J.J.Hopfield đề xuất, cho phép

ánh xạ từ dữ liệu vào sang tín hiệu ra theo kiểu tự kết hợp Trong ứng dụng, mạng Hopfield có khả năng tự kết hợp (hồi tưởng) giống nõa người, nhận ra người quen sau khi thấy những nét quen thuộc

Mạng Kohonen được Teuvo Kohonen (1989) đề xuất ý tưởng các đặc

trung topo tự tổ chức(tức không cần mẫu học) nhằm đảm bảo trật tự sắp xếp các mẫu trong không gian biểu diễn nhiều chiều sang không gian mới các mảng nơ-ron Các vector tín hiệu vào gần nhau sẽ ánh xạ sang các nơ-ron lân cận

Mạng perceptron được F.Rosenblatt đề xuất năm 1960 Nó là mạng

truyền thẳng một lớp có một hoặc nhiều đầu ra

Mạng nơ-ron nhiều lớp với thuật toán lan truyền ngược sai số [3]hay

còn gọi là Back-propagation Neural Network, được Rosenblatt và các tác giả khác mô tả mô tả từ những năm 50 nhưng chưa hoàn thiện Các nguyên tắc trong luật học đối vưới mạng nhiều lớp đã được Bryson và Ho đề xuất từ năm 1969, nhưng phải tới năm 1980 vấn đề mới được thực sự quan tâm cho đến ngày nay

Trang 20

Hình 2.8 Mạng nơ-ron nhiều lớp lan truyền ngược sai số

Trong kiến trúc mạng này, các nơ-ron lớp thứ t được kết nối đầy đủ với lớp thứ t+1 Số nơ-ron trong lớp ẩn được xác định dựa theo kinh nghiệm hoặc các kỹ thuật tìm kiếm khác nhau

Giả sử quá trình huấn luyện mang là học có giám sát với tập mẫu là {(Xs, Ys)} Thủ tục học như sau:

• Lan truyền mẫu Xs để có outputs= f(Xs) • Tính sai số Errs dựa trên sai lệch outs-Ys

• Hiệu chỉnh các trọng số liên kết nơ-ron

Phương pháp hiệu chỉnh trọng số liên kết nơ-ron dựa vào nguyên tắc lan truyền ngược sai số thực hiện bằng nguyên lý tìm kiếm gradient trong không gian các tham số W sao cho cực tiểu hàm sai số tổng cộng

Độ phức tạp thời gian của mạng nhiều lớp phụ thuộc vào thời gian huấn luyện mạng Giả sử có m mẫu vào và |W| trọng số Mỗi lần đưa tất cả các mẫu đi qua mạng (vòng lặp epoch phải tốn O(m|W|) thao tác nơ-ron Trường hợp xấu nhất, số vòng lặp phụ thuộc hàm mũ của số đầu vào n Như vậy, chi phí thời gian sẽ là O(knm|W|)

Mạng nơ-ron nhiều lớp ngược hướng [3]còn gọi là

Counter-propagation Neural Network (CPN) Với cách tiếp cận lan truyền ngược hướng, các tín hiệu mẫu ra ( không phải là sai số ) được lan truyền ngược trên mạng nhằm hiệu chỉnh các trọng số Mạng ngược hướng có hai lớp Kohonen và các nơ-ron ra Các nơ-ron ở lớp vào được nối đầy đủ với các nơ-ron ở lớp Kohonen Tại mỗi bước, chỉ có nơ-ron trung tâm và một số nơ-ron láng giềng được chọn nối với nơ-ron ra và trọng số liên kết tương ứng của chúng được hiệu chỉnh

Trang 21

Điểm khác biệt là kết quả đầu ra không được lưu trong mạng dưới dạng tập tất cả các trọng số tại mỗi nơ-ron ra, mà chỉ một phần trong số đó Như vậy số nơ-ron ở lớp Kohomen bằng kết quả đầu ra cần lưu trữ , số nơ-ron ra bằng số biến thành phần trong mỗi kết quả

Giả sử quá trình huấn luyện mạng là học có giám sát với tập mẫu là {(Xs, Ys)} Quá trình học diễn ra như sau:

• Mỗi vector mẫu Xs chọn ra nơ-ron trung tâm c theo nguyên tắc hoặc có tín hiệu lớn nhất hoặc có vector trọng số gần với tín hiệu vào nhất • Hiệu chỉnh các trọng số liên kết dẫn tới lớp Kohonen

• Hiệu chỉnh các trong số liên kết giữa lớp ra và lớp Kohonen

Mạng có thể nhận giá trị tín hiệu vào, ra là số thực Người ta có thể dùng mạng ngược hướng để biểu thị quan hệ phụ thuộc giữa các biến dựa trên trọng số liên kết ở lớp ra

Mạng nơ-ron nói chung và mạng lan truyền ngược nói riêng là sự mô phỏng sinh học nơ-ron não bộ con người Nó có khả năng học từ tập mẫu Quá trình học của mạng lan truyền ngược là học có giám sát có mẫu cho trước, do đó nó cần có tập mẫu chuẩn Trong quá trình học, vector đầu vào đi vào mạng Kohonen, diễn ra quá trình học cạnh tranh Vector lời giải đi vào lớp ra theo hướng ngược lại làm thay đổi giá trị các trọng số của các nơ-ron trong lớp ra

2.2 Mạng nơ-ron tích chập

Về xử lý dữ liệu ảnh, ta có nhiều phương pháp nhưng nổi bật nhất là mạng nơ-ron tích chập Ngày nay, trên thị trường có rất nhiều mô hình mạng nổi tiếng như ResNet, VGGNet, Darknet, … đều dựa trên mô hình mạng nơ-ron tích chập hay còn gọi là convolutional neural network (CNN), dùng trong thị giác máy tính Đặc biệt, CNN có thể tính toán song song trên GPU nên đem lại hiệu quả và tốc độ rất cao Những hiệu quả cao như vậy khiến nó trở nên quan trọng không chỉ cho việc xử lý ảnh mà chúng còn xử lý âm thanh, văn bản, phân tích dữ liệu chuỗi thời gian, …

2.2.1 Các lớp của mạng nơ-ron tích chập

❖ Lớp tích chập

Lớp tích chập hay còn gọi là CONV là phần quan trọng nhất trong mạng nơ-ron tích chập và đảm nhiệm công việc tính toán nặng nhọc nhất Các tham số của CONV bao gồm một tập các bộ lọc (filters) Các filter đều có kích thước

Trang 22

nhỏ Các filter hay còn gọi là kernel là các ma trận vuông ( theo width và height) Các filter này được khởi tạo và điều chỉnh trong quá trình học Và filters phụ thuộc độ sâu của đầu vào ( ví dụ đối với ảnh màu có 3 kênh thì filters tương ứng có độ sâu là 3) ta có một bộ lọc hoàn chỉnh theo tensor

Ví dụ một bộ lọc có kích thược 5x5x3 ( 5 pixel cho chiều rộng và chiều dài và 3 là độ sâu của bộ lọc vì có 3 channel màu) Mạng sẽ học qua các bộ lọc (filters ) để có thể nhìn ra các đặc điểm điểm của ảnh, như là các cạnh của vật thể ,làm mờ làm nét vật thể,… Và nó học theo từng vùng nhỏ của dữ liệu vào, các vùng này gọi là Feature Locality, giống như khi ta nhìn nhận vào 1 góc nhỏ của bức tranh

Hình 2.9 Công thức tính tích chập [4]

Hình 2.10 Ví dụ tính tích chập

Trang 23

Từ input đầu vào là ma trận hoặc tensor, sau đó nhân với kernel, ta sẽ có được ma trận hoặc tensor mới, ta có được feature map

Một số kernel thường hay được sử dụng:

Hình 2.11 Kernel làm ảnh gốc không đổi [5]

Hình 2.12 Kernel làm ảnh gốc lệch phải [5]

Hình 2.13 Kernel làm ảnh gốc bị mờ [5]

Trang 24

Hình 2.14 Một số kenrel phát hiện cạnh [6]

Bước nhảy (stride) của bộ lọc và thêm lề (padding) trong lớp tích chập

• Bước nhảy là số pixel mà giữa hai lần kernel trượt qua, nó có tác dụng giảm mẫu cũng có thể gọi là quá trình downsampling, vì nó làm cho ma trận kết quả nhỏ đi, và thậm chí an toàn hơn so với pooling

Hình 2.15 Bước nhảy cho kernel

• Thêm lề: Bởi vì sau khi tích chập xong, khiến cho ma trận nhỏ đi, điều này ngăn cản quá trình tiếp tục tích chập khi nó có kích thước bé không thể chấp nhận để giải quyết vấn đề này mà không làm ảnh hưởng đến dữ liệu, người ta them các giá trị 0 ở viền của ngoài ma trận đầu vào

Trang 25

Hình 2.16 Thêm lề cho ma trận đầu vào

❖ Lớp pooling

Lớp pooling thường được dùng ở giữa các lớp tích chập, với mục đích là giảm kích thước feature maps-đầu ra của quá trình tích chập hay còn gọi là quá trình giảm mẫu (downsampling) Khi kích thước dữ liệu giảm, giúp giảm số lượng tham số phải học và số lượng tính toán thực hiện trong mạng

Lớp pooling giúp tóm tắt lại các tính năng mà không mất đi dữ liệu quan trọng Điều này giúp model tránh được quá khớp dữ liệu, giúp tăng khả năng phán đoán của model

Các kiểu pooling:

• Max Pooling: là quá trình lựa chọn phần tử cao nhất từ feature map mà được filter che phủ Do đó, đầu ra sau khi max-pooling sẽ là feature map chứa các phần tử nổi bật nhất từ feature map trước đó

Hình 2.17 Minh họa cách tính max pooling [7]

• Average pooling: là quá trình lựa chọn phần tử bằng tổng giá trị trung bình từ feature map mà filter che phủ Do đó, đầu ra sau sau quá trình average pooling sẽ là tập hợp các phần tử trung bình của feature map trước đó

Trang 26

Hình 2.18 Minh họa cách tính average pooling [7]

❖ Lớp chuẩn hóa

Có rất nhiều lớp chuẩn hóa đã từng được đề xuất để cho kiến trúc ConvNet Nó là kỹ thuật để chuẩn hóa các phân phối của lớp trung gian, giúp quá trình gradients mượt hơn, training nhanh hơn và độ chính xác tổng quát tốt hơn Nó được Ioffe và Szegedy giới thiệu vào năm 2015 với khái niệm Batch Normalization (BatchNorm) Nó được biết đến rộng rãi bằng cách kiểm soát giá trị trung bình và phương sai của đầu vào trên các mini-batches BatchNorm giúp ổn định phân phối và nâng cao hiệu quả huấn luyện

Thuật toán của lớp chuẩn hóa:

Gọi vector x = (x1, x2, x3, …, xH) với H là kích thước đầu vào cho lớp chuẩn hóa Lớp chuẩn hóa căn giữa và căn chỉnh lại đầu vào x như sau: [8]

Trong đó:

h là đầu ra của lớp chuẩn hóa

µ và σ là giá trị trung bình và độ lệch chuẩn của đầu vào ❖ Lớp Activation Function

Lớp này sẽ áp dụng hàm kích hoạt cho đầu ra của lớp tích chập, một số hàm kích hoạt thường dùng như ReLU, Sigmoid, Tanh, Leaky ReLu, … Sở dĩ lúc đầu, qua lớp tích chập, nó chỉ là tuyến tính Vậy mục đích của Activation function layer được đưa vào để cho lớp tích chập trở nên phi tuyến

Trang 27

❖ Lớp liên kết đầy đủ

Sau khi dữ liệu qua phần các lớp kể trên, thì model đã học được tương đối các đặc điểm của ảnh là một tensor với kích thước 3 chiềuH*W*D , ta cần chuyển đổi tensor này về vector 1 chiều có kích thước 1 chiều là H*W*D, quá trình này còn gọi là Flattening

Hình 2.19 Minh họa lớp liên kết đầy đủ [1]

Lớp liên kiết đầy đủ là lớp mạng nơ-ron thông thường, nó lấy dữ liệu đầu vào từ lớp trước và tính điểm số của lớp rồi xuất ra vector có độ dài bằng số lớp cần nhận dạng

Hình 2.20 Ví dụ kết mạng nơ-ron tích chập [1]

❖ Chuyển đổi lớp liên kết đầy đủ sang lớp tích chập

Không có sự khác biệt gì lớn giữ lớp liên kết đầy đủ với lớp tích chập ngoài việc lớp lớp tích chập kết nối theo từng vùng của đầu vào Bởi vì trong lớp tích chập ta dùng các phương pháp giảm mẫu nội suy nên làm giảm kích thước không gian, đạt hiệu quả tính toán cao hơn

Vì vậy, trong một số bài toán, người ta sẽ chuyển đổi dữ liệu ban đầu về dữ liệu hình ảnh để thực hiện tính toán trên lớp tích chập

Trang 28

2.2.2 Kiến trúc mạng nơ-ron tích chập

Các mạng tích chập đại đa số sử dụng 3 lớp chính: lớp tích chập, lớp pooling, và lớp kết nối đầy đủ Chúng ta nên tách hàm kích hoạt thành một lớp riêng biệt

❖ Các mẫu thiết kế

Các hình thức phổ biến trong kiến trúc mạng nơ-ron tích chập là xếp chồng một vài lớp Conv-ReLU, theo sau đó là các lớp Pool, và cứ lặp đi lặp lại kiểu mẫu này cho đến khi hình ảnh được hợp nhất từ các kích thước nhỏ Tại một thời điểm nào đó, thông thường là khi chuyển sang lớp kết nối đầy đủ Lớp đầy đủ cuối cùng kết nối đầu ra Ta có thể tóm tắt các mẫu thiết như sau:

➢ INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC

Trong đó:

• dấu * chỉ sự lặp đi lặp lại,

• POOL? Là lớp POOL có thể gộm thêm điều kiện gì đó • Ngoài ra, N >= 0 ( và nên N<=3) Tương tự với M,K Từ đó, ta có một số triển khai như sau:

• INPUT-> FC (N=M=K=0)

• INPUT -> CONV -> RELU -> FC

• INPUT -> [CONV -> RELU -> POOL]*2 -> FC -> RELU -> FC • INPUT ->[CONV ->RELU->CONV->RELU->POOL]*3->[FC-

Trang 29

2.2.3 Một số mạng nơ-ron tích chập

Ngày nay, có rất nhiều mô hình mạng nơ-ron tích chập ra đời phục vụ cho nghiên cứu và các dự án thực tế, các kiến trúc này đã từng thống trị trên thi trường một khoảng thời gian Những mô hình này là:

• AlexNet là mạng có quy mô lớn đầu tiên đánh bại các phương pháp thị giác máy tính truyền thống, nó có 60 triệu tham số và 650000 nơ-ron

Trang 30

• ResNet là mạng có kiến trúc sử dụng phổ biến nhất hiện nay, nó có ưu điểm khiến ch mạng có hàng trăm, hàng ngàn lớp vẫn khả thi huấn luyện

Trang 31

Hình 2.25 Kiến trúc mạng DenseNet [10]

• MobileNet được phát triển bởi Adrew G.Howard, gồm 30 lớp như sau:

Hình 2.26 Kiến trúc mobilele net v1

Trang 32

❖ Vấn đề xử lý tính toán

Điểm tắc nghẽn nhất khi xây dựng kiến trúc mạng nơ-ron tích chập là thắt nút cổ trai bộ nhớ Rất nhiều GPU hiện tại chỉ có từ 2 đến 6 GB bộ nhớ GPU tốt nhất cho máy tính laptop hiện nay là 12G Có ba nguồn chính làm ngốn bộ nhớ:

• Từ kích thước các hàm kích hoạt của mạng tích chập, và thuật toán gradients, chúng ngốn nhiều bộ nhớ Chúng còn phải lưu trữ trạng thái, để thực hiện quá trình lan truyền ngược

• Từ các thông số của mạng, chúng luôn phải lưu trữ để thực hiện gradients, và phải nhân lên vài lần để thực hiện quá trình lan truyền ngược

• Mỗi triển khai của của mạng tích chập luôn phải duy trì bộ nhớ linh tinh ví dụ như các lô dữ liệu ảnh, vector thông tin ảnh,…

Trang 33

CHƯƠNG 3 TÌM HIỂU CÔNG NGHỆ MÔ HÌNH YoLov3

YoLo (You only look one) trở thành một phần quan trọng trong lĩnh vực thị giác máy tính với bài báo hội thảo năm 2015 bởi Joseph Redmon

Nó không chỉ ra đời với mục đích phát hiện đối tượng thời gian thực mà nó có thể giúp giải quyết rất nhiều bài toán như là phân lớp, dự đoán, phát hiện đối tượng, phân vùng ảnh

Đồ án tập trung nghiên cứu phần phân lớp ảnh trong mô hình công nghệ YoLov3 Qua đó để ứng dụng mô hình vào ứng dụng phân lớp ảnh ảnh xe hơi

3.1 Kiến trúc mạng Darknet53 3.1.1 Mạng Darknet53

Hình 3.1 Darknet-53 [12]

Mạng Darknet là biến thể phát triển từ mạng tích chập (CNN), ở các mô hình YoLo khác nhau, họ sử dụng những biến thể khác nhau từ mạng Darknet Với YoLov3, họ sử dụng mạng Darknet53

Trang 34

Mạng Darknet53 là một mạng phân lớp và là phần đầu trong kiến trúc của YoLov3 Nó được huấn luyện với nhiệm vụ phân loại ảnh trên cơ sở dữ liệu hình ảnh ImageNet Nó hoạt động giống như các mạng ResNet-101 và ResNet

Trong mạng Darknet53, nó dùng để lấy các feature extractor, gồm 53 lớp tích chập theo sau đó là các lớp chuẩn hóa batch normalization và lớp hàm kích hoạt Learky ReLU Điều đặc biệt là nó không dùng lớp Pool để giảm mẫu (trong các version trước, darknet vẫn dùng lớp pool để giảm mẫu) Để giảm mẫu các feature map, các lớp tích chập sử dụng bước nhảy (stride) là 2 Chính điều này giúp ngăn chặn sự mất mát thông tin ở các feature map do tác động của pooling

3.1.2 Lớp tích chập

❖ Khởi tạo các filters

Ở mục 3.1.1, ta đã biết mạng darknet53 gồm 53 lớp tích chập, và theo sau mỗi lớp chuẩn hóa và lớp hàm kích hoạt Learky ReLu Ở Darknet53, nó bao gồm các filter kích thước 1x1 với 3x3 ( khá tương đồng mạng ResNet).Khác với machine learning, chúng ta phải tự chọn các filter, trong deap learing (cụ thể là trong mạng Darknet53), các filter hay kernel này do thuật toán gradient sinh ra tuân theo phân phối chuẩn Mặc dù, các filter có thể sinh ra lên đến vài trăm nghìn nhưng chúng vẫn phải tuân thủ kích thước là 1x1 và 3x3 Trong quá trình huấn luyên, mạng sẽ chọn ra các filter phù hợp để hội tụ nghiệm

Khi đưa cho đầu vào, tất cả các lớp cấu thành tạo nên sự biến đổi hiệu quả giữa đầu vào và kết quả dự đoán Việc đo lường giữa đầu ra theo dự đoán và kết quả thực tế được định nghĩa là sai số (loss) Giá trị sai số này sau đó truyền ngược về các filters và sử dụng để điều chỉnh các filters để để giảm thiểu sự khác biệt giữ dự đoán và kết quả thực tế Bằng cách này, các filters được điều chỉnh trong quá trình huấn luyện và hệ thống coi là đã hội tụ khi mà hàm sai số đạt min Sau đó, các filters sẽ không được điều chỉnh đáng kể

Các filter cũng có thể được khởi tạo từ các trọng số của mạng khác Điều này rất phổ biến trong transfer learning, và nó rất nhanh và hiệu quả

Trang 35

Pc là số thông số (parameters) của lớp tích chập

K là kích thước kernels được sử dụng trong lớp tích chập N là số kernels

C là số kênh (channels) của input Từ đó ta có công thức sau:

• Wc = K2 x C x N • Bc = N

• Pc = Wc + Bc

❖ Tính kích thước đầu ra các tensor sau khi tích chập Giả sử:

O là kích thước đầu ra ảnh ra I là kích thước đầu vào ảnh vào

K là kích thước của kernels (filters) được sử dụng trong lớp tích chập N là số kernels

S là bước nhảy (stride)

Ta có kích thước đầu ra của ảnh là:

𝑂 = 1 +𝐼 − 𝐾 + 2𝑃𝑆

3.2.3 Khối xử lý Residual

Để tiện thiết kế cho kiến trúc của Darknet53, người ta chia ra thành các khối residual block Khi chia theo từng khối, Nó giúp làm gọn lại kiến trúc, từ đó mà kiến trúc Darknet53 tận 53 lớp tích chập nhìn rất sáng sủa như sau:

Hình 3.2 Khối residual thứ 1 của Darknet53

Hình 3.3 Khối residual 2 của Darknet53

Mỗi khối residual bao gồm hai lớp tích chập, lớp tích chập thứ nhất có kernel kích thước 1x1 và lớp tích chập thứ 2 có kernel với kích thước 3x3

Trang 36

Nhưng mỗi khối residual có số kernel khác nhau Từ đó ta có thể tạo một hàm chung cho residual bằng code python dựa trên thư viện TensorFlow như sau:

Hình 3.4 Code mẫu cho khối residual

3.2 Kiến trúc mô hình YoLov3

3.2.1 Khái quát thuật toán YoLov3

❖ Tổng quan

YoLov3 chỉ dùng lớp tích chập, thay thế cho cả lớp kết nối đầy đủ ( fully connected layer) Cơ chế này còn gọi là fully convolutional network (FCN), và nó hoàn toàn không sử dụng lớp pool để giảm mẫu Nó dùng một kích thước cố định với ảnh đầu vào thông thường 416x416 YoLov3 còn có thể xử lý hình ảnh theo lô (batch) tức cho một lô ảnh vào cùng một lúc để xử lý song song với GPU, điều này làm tăng tốc độ huấn luyện rất nhiều lần, chính vì vậy, chúng ta cần phải thay đổi kích thước ảnh về một mẫu cụ thể để xử lý song song YoLov3 giảm mẫu chỉ dùng đến bước nhảy (stride) để giảm thiểu sự mất mát thông tin khác với pooling( nó làm mất mát thông tin) từ đó làm tăng độ chính xác lên Ta lấy một ví dụ như kích thước ảnh đầu vào là 416x416 mà dùng stride = 32 thì sau khi tích chập mẫu đã giảm xuống còn 13x13

❖ Diễn giải quy trình

Đầu vào là một lô ảnh được thay đổi lại về kích thước (416,416,3) theo thứ tự là chiều rộng, chiều cao và độ sâu Đầu ra là bounding box chứ các đối tượng Mỗi bounding box sẽ có sáu thông số (pc, bx, by, bh, bw, c) Trong đó c là một vector xác suất đối tượng của các lớp đối tượng Do đó, ta có thể nếu diễn gải c thành N classes thì ta có N+5 thông số

Trong YoLov3, đối tượng dự đoán được sử dụng lới tích chập với kích thước là 1x1, nên kích thước dự đoán bằng chính kích thước của feature map trước nó Cách dự đoán của YoLov3 là mỗi cell (một đơn vị diện tích khi chia nhỏ ảnh, giả sử ảnh có kích thước là 416x416 mà chia theo 416x416 thì mỗi cell có kích thước 1x1) dự đoán đại đại diện cho một bounding box ( một hộp chứa vật thể cần dự đoán)

Trang 37

Hình 3.5 Biểu diễn quan hệ cell với feature map [13]

Như vậy, chúng ta có Bx(5+N) thực thể trong feature map, với B là số bounding boxes Mỗi bounding box có 5+N thuộc tính Trong đó, 5 thuộc tính là mô tả tọa độ trung tâm x,y của bounding box, kích thước theo chiều cao và chiều rộng và xác suất chứa đối tượng trong bounding box; còn N là một vector chưa xác suất của từng class Như hình 3.5, ta có mỗi cell chứa 5 box, mỗi box là đại diện cho 1 bouding box Tức là mỗi cell chứa sẽ cho dự đoán 5 bounding box

Hình 3.6 Biểu diễn của 1 cell [13]

Ngày đăng: 16/05/2024, 14:12