xây dựng mô hình nhận diện biển báo giao thông sử dụng mạng nơ ron tích chập, phát hiện biển báo thời gian thực với mô hình YOLOv4. Viết lý thuyết CNN, yolov4, thực hiện và đánh giá mô hình. Lý thuyết về các tham số khi xây dựng một mô hình CNN hiệu quả. Thu thập dữ liệu biển báo Việt Nam, ngoài ra sử dụng tập GSTRB để training cho mô hình
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN VIỄN THÔNG
Giảng viên hướng dẫn:
Sinh viên thực hiện:
Trang 3MỤC LỤC
1.2 Tình hình nghiên cứu trong và ngoài nước 5
1.3 Tóm tắt quá trình thực hiện đề tài 6
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT MẠNG CNN VÀ THUẬT TOÁN YOLO 7 2.1 Deep Learning 7
2.2 Neural Network 8
2.3 Convolutional Neural Network 11
2.3.1 Tổng quát 11
2.3.2 Lớp tích chập (Convolutional Layer) 12
2.3.3 Lớp tổng hợp (Pooling layer) 14
2.3.4 Lớp kết nối đầy đủ (Fully Connected Layer) 15
2.3.5 Softmax 15
2.3.6 Batch Normalization 16
2.4 Thuật toán YOLO 17
2.4.1 Sơ lược về thuật toán YOLO 17
2.4.2 Thuật toán YOLOv4 24
CHƯƠNG 3 XÂY DỰNG MÔ HÌNH CNN PHÂN LOẠI BIỂN BÁO GIAO THÔNG TRÊN ẢNH 33 3.1 Sơ đồ khối tổng quát 33
3.2 Dataset 34
Trang 43.4 Định nghĩa mô hình 38
3.5 Huấn luyện thuật toán 42
CHƯƠNG 4 XÂY DỰNG MÔ HÌNH PHÁT HIỆN BIỂN BÁO GIAO THÔNG TRÊN VIDEO 43 4.1 Sơ đồ khối tổng quát 43
4.2 Dataset 44
4.3 Huấn luyện thuật toán 47
4.3.1 Cài đặt các thông số huấn luyện 47
4.3.2 Google Colab 48
4.3.3 Huấn luyện dữ liệu 48
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN NHẬN DIỆN BIỂN BÁO GIAO THÔNG 55 5.1 Kết luận 55
5.2 Hướng phát triển 56
Trang 5BẢNG KÍ HIỆU SỬ DỤNG TRONG ĐỒ ÁN
s Stride: số pixel dịch chuyển trong
mỗi lần trượt
y Scaling factor hay scaling
parameter của layer
ε Smoothing factor để tránh việc
chia 0 làm vô nghía, thường cógiá trị rất nhỏ
f*f Kích thước của filter yi Đầu ra của batch
normalization
H Chiều dài của lớp tích chập bw Chiều rộng của box
W Chiều rộng của lớp tích chập ci Xác suất xuất hiện của vật thể
thứ i trong grid
D Số chiều của lớp tích chập S2 Tổng số grid trong 1 ảnh
pc Xác suất grid đang xét chứa vật thể i Mẫu thứ i
bx Tọa độ x của góc phía trên bên trái
của box
by Tọa độ y của góc phía trên bên
dưới của box
bh Chiều cao của box
µB Giá trị kì vọng thực nghiệm được
tính toán trên mini-batch B
B Độ lệch chuẩn thực nghiệm cũng
được tính toán trong mini-batch B
m Số lượng instance trong mini-batch
B
Giá trị đầu vào thứ i trong
mini-batch sau khi chuẩn hóa và tâm
không
Trang 61.2 Tình hình nghiên cứu trong và ngoài nước
Đối với bài toán phân loại biển báo giao thông, tức là nhận diện bức ảnh này thuộcloại biển báo gì Đối với mỗi ngõ vào, ta phân loại vào 1 class nhất định Đây là bài toánphân lớp (Classification) Có nhiều thuật toán để phân lớp dữ liệu, từ cổ điển đến hiện đại.Nhưng mạng Nơ- ron tích chập được đánh giá là thuật toán hiệu quả, tránh được tác động
từ môi trường, nhiễu, sự thay đổi khoảng cách ảnh đến camera Trong đề tài này, mục tiêuchúng tôi đặt ra là xây dựng mô hình nhận diện biển báo giao thông trong ảnh và video
Từ đó so sánh hiệu quả giữa các mô hình khác nhau
Với bài toán nhận diện biển báo, gồm hai bài toán lớn là phát hiện và phân loại vậtthể Có rất nhiều cách để phân loại vật thể bao gồm R-CNN, Fast R-CNN, Faster R-CNN
Trang 7và một số thuật toán khác Trong đó, thuật toán YOLO (You Only Look Once) được xem
là vượt trội hơn về mặt thời gian khi có thể đáp ứng thời gian thực tốt hơn và mặc dù khảnăng nhận diện được đánh giá là thấp hơn R-CNN series nhưng khả năng nhận diện chínhxác vẫn nằm trong khả năng chấp nhận được
Trong đề tài đồ án này, chúng tôi sử dụng thuật toán mới nhất của YOLO là YOLOv4
để nhận diện biển báo giao thông, YOLOv4 có đáp ứng thời gian thực không khác so vớiYOLOv3 nhưng cho kết quả nhận diện chính xác hơn
1.3 Tóm tắt quá trình thực hiện đề tài
Việc hiện đề tài được chia thành nhiều giai đoạn, mỗi giai đoạn thực hiện một côngviệc như đã trình bày ở phần mục lục Chi tiết cho từng giai đoạn như sau:
Tìm hiểu về Deep Learning và các ứng dụng
Nghiên cứu xây dựng một mô hình CNN, YOLO
Tham khảo cách sử dụng các thư viện và môi trường ảo Lựa chọn thư viện phùhợp
Thu thập và tiền xử lý dữ liệu Phân chia dataset thành tập training, tậpvalidation và tập test
Xây dựng mô hình phân loại và mô hình nhận diện biển báo giao thông
Trang 8CHƯƠNG 2: CƠ SỞ LÝ THUYẾT MẠNG CNN VÀ THUẬT TOÁN YOLO
Chương này đưa ra lý thuyết về Deep Learning, mạng Neural Network và thuật toánYOLO Để thực hiện việc phân loại và phát hiện biển báo giao thông, việc vận dụngnhững kỹ thuật trên đã chứng minh được sự hiệu quả của mình Phần 2.1 giới thiệu nhanh
về kỹ thuật Deep Learning Phần 2.2 trình bày về mạng Neural Network từ đó đưa ra cơ
sở để trình bày về thuật toán Convolutional Neural Network ở phần 2.3 Phần 2.4 trìnhbày về thuật toán YOLO, là một mô hình CNN để phát hiện vật thể một cách nhanh chóng
và hiệu quả
2.1 Deep Learning
Deep Learning(Học sâu) là một nhánh nhỏ của Machine Learning(Máy học), bắtnguồn từ thuật toán Neural Network Tuy nhiên, gần đây Deep Learning mang lại nhiềuthành tựu kĩ thuật nhờ vào sự phát triển của Big Data(Dữ liệu lớn), với tập dữ liệu cànglớn giúp phát triển các mạng Neural Network sâu hơn với khả năng dự đoán chính xáccao hơn (Hình 1.1) Bắt nguồn từ các loại hình kinh doanh internet truyền thống như tìmkiếm web và quảng cáo Deep Learning ngày nay đã tạo ra nhiều lợi ích hơn trong cuộcsống hằng ngày Ví dụ như trong lĩnh vực y tế, việc phân tích các hình ảnh X-quang đượcứng dụng vào Deep Learning để nghiên cứu và dự đoán các khả năng mang bệnh củangười khám Và đặc biệt Deep Learning còn được ứng dụng trong các xe tự hành để dựđoán các tình huống giao thông
Trang 9Hình 2.1 Quan hệ giữa dữ liệu và khả năng dự đoán của thuật toán Nguồn: Coursera
Các ứng dụng khác nhau chúng ta có thể áp dụng các Neuron Network khác nhau:
Các ứng dụng Neural Network có thể áp dụngĐoán giá nhà
Quảng cáo online
Standard Neural Network
Nhận diện giọng nói
Máy dịch
Current Neural NetworkNhận diện vật thể Convolutional Neural Network
2.2 Neural Network
Neural Network là một mạng lưới gồm nhiều lớp được lấy cảm hứng từ neuron người
Ở đó, lớp đầu tiên để đưa các đặc tính của vật cần dự đoán vào được gọi là Input Layer
Và layer cuối cùng mang kết quả dự đoán gọi Output Layer Một mạng neuron có thể cóhoặc không có các lớp ở giữa Input Layer và Output Layer gọi là Hidden Layer, cácHidden Layer này giúp cho tỉ lệ dự đoán chính xác cao hơn tuy nhiên việc huấn luyệncũng tốn nhiều thời gian và dung lượng hơn Mỗi Layer là tập hợp nhiều node, các nodecủa lớp sau kết nối với toàn bộ các node của lớp trước
Trang 10Mỗi node trong hidden layer và output layer thực hiện các công việc sau: Liên kết vớitất cả các node ở layer trước đó với các hệ số w riêng Mỗi node có 1 hệ số bias b riêng.
Từ đó w,b biểu thị mối quan hệ giữa node trước và node sau
Hình 2.2 Mối quan hệ giữa ngõ vào và ngõ ra của một node.
Node phía trên có đầu vào là X1,X2, trọng số w1,w2 Ngõ ra y là kết quả của một hàmphi tuyến và một hàm tuyến tính Hàm phi tuyến g còn được gọi là hàm kích hoạt(activation) giúp tăng khả năng học của mạng neural
Các hàm phi kích hoạt thường được sử dụng là:
Sigmoid: Giá trị ngõ ra được chuyển về trong khoảng [0,1] bằng công thức:
1 ( )
Tanh: Giá trị ngõ ra được chuyển về trong khoảng [-1,1] khiến nó có tính chất tâm không
(zero-centered), theo công thức: Khi đó, ngõ ra bằng 1 khi ngõ vào lớn và ngõ ra bằng -1khi ngõ vào nhỏ Hàm Tanh với tính chất tâm không giúp các dữ liệu được phân bố quanhđiểm 0, tanh khi lấy đạo hàm có cả phần dương và phần âm giúp việc hội tụ trở nên tốt
Trang 11hơn Tuy nhiên hàm tanh không giải quyết được vấn đề bão hòa khi giá trị ngõ vào quálớn hoặc quá nhỏ của sigmoid.
Hình 2.3 Đồ thị hàm sigmoid (a) và hàm tanh (b)[1]
ReLU và leaky ReLU: Lấy ngưỡng giá trị ở 0 (Thay thế các giá trị âm bằng 0) : g(x)=
max(0,x) Hàm ReLU loại bỏ các giá trị âm, việc hội tụ cũng diễn ra nhanh hơn khi khôngcòn bị bão hòa ở hai đầu như hàm Sigmoid và hàm Tanh Tuy nhiên, với các giá trị âmnhỏ gần 0, việc giữ lại đạo hàm vẫn có giá trị khi lấy Gradient, nhưng lại bị triệt tiêu gây
ra hiện tượng “Dying ReLU” Để khắc phục việc đó, hàm Leaky ReLU ra đời và là biếnthể của ReLU: g(x) = , các giá trị âm lớn gần như xấp xỉ bằng 0 trong khi các giá trị âmnhỏ vẫn mang giá trị khi đạo hàm Nhưng cả hai hàm ReLU và Leaky ReLU lại không cóđạo hàm tại 0
Hình 2.4: Đồ thị hàm ReLU[1]
Trang 12Mish: Mish là hàm kích hoạt được sử dụng trong YOLOv4 Mish được tác giả cho rằng
tốt hơn các hàm kích hoạt khác nhờ việc giữ được tính chất của hàm ReLU giúp hội tụnhanh chóng hơn, giữ được một phần gradient âm cho phép model học tốt hơn như hàmLeaky ReLU, mà khắc phục được việc không có đạo hàm tại 0 của hai hàm trên, Mish cóđạo hàm tại mọi giá trị Hàm Mish được biểu diễn bởi công thức:
CNNs được chia thành 3 chiều : rộng, cao, sâu Các Nơ- ron trong mạng không liên kếthoàn toàn với toàn bộ Nơ-ron kế đến mà chỉ liên kết tới một vùng nhỏ Cuối cùng, mộttầng đầu ra được tối giản thành vec-tơ của giá trị xác suất
CNNs gồm 2 thành phần:
Trang 13 Phần tầng ẩn hay phần rút trích đặc trưng: Trong phần này, mạng sẽ tiến hành tínhtoán hàng loạt phép tích chập (Convolutional layer) và phép hợp nhất (pooling) để pháthiện các đặc trưng.
Phần phân lớp: Tại phần này, một số lớp các liên kết đầy đủ (Fully Connected) sẽđóng vai trò như một bộ phân lớp các đặc trưng đã rút trích trước đó.Tầng này sẽ đưa raxác suất của một đối tượng trong hình
Hình 2.6 Cấu trúc của CNN Nguồn www.mathworks.com
2.3.2 Lớp tích chập (Convolutional Layer)
Đây là phép tính quan trọng trong CNN Ta thực hiện phép tích chập bằng cách trượtkernel/filter theo kiểu dữ liệu đầu vào Tại mỗi vị trí, ta tiến hành phép nhân ma trận vàtính tổng để đưa vào feature map Feature map này chính là một ma trận 3 chiều, trong đóbao gồm những con số (parameter)
Ở lớp đầu tiên, khối tích chập dùng để phát hiện cạnh thẳng đứng và cạnh nằm ngang,cạnh nghiêng Ở các lớp tiếp theo, khối tích chập sẽ nhận diện các đường cong, đườnggấp khúc.Càng sử dụng nhiều lớp tích chập thì càng phát hiện được những đặc trưng phứctạp hơn, có thể là các vật thể như con mèo, bông hoa, bánh xe
Trang 15Hình 2.7 Mô tả quá trình nhận diện vật thể qua các lớp tích chập.[2]
Tại khối tích chập, các thông số được sử dụng bao gồm:
Stride (S) : Số pixel bạn dịch chuyển ở mỗi lần trượt
Padding (P): Tăng thêm một số hàng và cột ( thường có giá trị bằng 0) để tránh việc giảm kích thước ở output cũng như để lấy thông tin ở các pixel ngoài cùng Có 2 loạipadding là “valid” tức là padding =0 và “same” tức là padding để kích thước ngõ ra bằng kích thước ngõ vào
#filters (nc) : Số filter được sử dụng ở mỗi layers
f : kích thước của mỗi filter là f *f
Hình 2.8 Các thông số của conv layers
2.3.3 Lớp tổng hợp (Pooling layer)
Trang 16Mục đích là làm giảm số parameters mà ta cần phải tính toán, từ đó giảm thời giantính toán mà vẫn giữ được các đặc trưng quan trọng Ngoài ra nó còn tránh overfitting.
Có 2 loại pooling: max pooling lấy giá trị lớn nhất trong một pooling window vàaverage pooling lấy giá trị trung bình trong một pooling window
Pooling hoạt động gần giống convolution, ở max pooling cửa sổ trượt qua từng giá trịcủa ma trận dữ liệu đầu vào, chọn ra giá trị lớn nhất nằm trong cửa sổ trượt
Hình 2.9 Max pooling Nguồn: viblo
2.3.4 Lớp kết nối đầy đủ (Fully Connected Layer)
Sau khi ảnh được truyền qua nhiều lớp tích chập và lớp tổng hợp thì model đã học được tương đối các đặc điểm của ảnh (ví dụ bánh xe, khung xe,…) thì tensor của output cuối cùng, kích thước H* W* D sẽ được chuyển về 1 vector kích thước (H * W* D)
Hình 2.10 Phép flatten đưa tensor về thành 1 vector
Sau đó, mỗi điểm của vector sẽ được liên kết với toàn bộ output của mode giống như một lớp của mạng Neural Network Lớp kết nối đầy đủ cuối của mạng có nhiệm vụ phân loại theo yêu cầu của bài toán
2.3.5 Softmax
Sau khi mạng CNNs học qua các lớp phía trước, ta thu được vector đặc trưng Khi đó,cần dựa vào vector đặc trưng này để phân loại vào các lớp theo yêu cầu bài toán Hàm
Trang 17softmax là một mô hình xác suất để với mỗi input x, tính được output ai thể hiện xác suất
để input đó rơi vào lớp thứ i
Hàm softmax có đầu vào là 1 vector, đầu ra là một vector có cùng số chiều( ) : n n
Giá trị zi càng lớn thì xác suất dữ liệu rơi vào lớp thứ i càng cao Các ai lớn hơn 0 và cótổng bằng 1
Hình 2.11.Ví dụ về đầu vào và đầu ra của hàm softmax.[3]
2.3.6 Batch Normalization
Trong quá trình training,có thể xảy ra hiện tượng gradients không ổn định do gradientstrước và sau khi di chuyển qua 1 layers không giống nhau Đây là vấn đề liên quan đếnphân phối của inputs của các layers
Trang 18Batch Normalization học những giá trị trung bình và phương sai của đầu vào sau đóchuẩn hóa đầu vào để có giá trị trung bình là 0 và phương sai là 1 Việc chuẩn hóa dữ liệuđầu vào giúp cho quá trình huấn luyện nhanh hơn (hàm chi phí hội tụ nhanh hơn) so vớiviệc không chuẩn hóa.
Một lợi ích được nhận định của batch normalization là huấn luyện nhanh hơn Trong
đề tài đồ án này, chúng tôi kiểm tra hiệu quả của batch normalization thông qua việc sosánh mô hình baseline và mô hình baseline có sử dụng batch normalization
Thuật toán chuẩn hóa cụ thể là:
Hình 2.12 Phép biến đổi Batch normalization[4]
Các kí hiệu được đề cập trong bảng tóm tắt kí hiệu
2.4 Thuật toán YOLO
Phần trước việc phân loại vật thể được thực hiện qua một số mô hình CNN cụ thể đểphân loại các vật thể khác nhau Tuy nhiên trong thực tế, các bài toán về thị giác máy, họcsâu không chỉ đơn thuần trong việc phân loại vật thể mà còn phải nhận diện được đâu làvật thể đang cần phát hiện trong một tấm hình, một video gồm nhiều ngoại cảnh xungquanh Để thực hiện được bài toán này có nhiều thuật toán có thể thực hiện để phát hiệnvật thể như R-CNN series (R-CNN, Faster R-CNN, Fastest R-CNN) hay YOLOv1,YOLOv2, Để thực hiện phát hiện và nhận diện biển báo giao thông, nhóm chúng tôi lựachọn thuật toán YOLOv4 là thuật toán YOLO mới nhất do Alexey Bochkovskiy, Chien-Yao Wang, Hong-Yuan Mark Liao công bố vào 23/04/2020
Trang 192.4.1 Sơ lược về thuật toán YOLO
YOLO được viết tắt từ "You Only Look Once", tạm dịch là "Bạn chỉ nhìn mộtlần".Thuật toán YOLO xem bài toán phát hiện vật thể là một vấn đề hồi quy duy nhất trêntoàn bộ bức ảnh, trực tiếp từ các pixel của ảnh thành các ô dự đoán (bounding box) cùngvới xác suất phân loại vật thể[8] thay vì phải thực hiện nhiều bài toán hồi quy cho từngvùng vật thể như các thuật toán R-CNN series Như vậy việc chỉ sử dụng 1 bài toán hồiquy duy nhất cho toàn bộ ảnh, thuật toán YOLO giúp giảm số lượng phép toán, tăng tốc
độ xử lý khi đó có thể đáp ứng bài toán thời gian thực tốt hơn so với các thuật toán CNN
R-2.4.1.1 Grid System
Ý tưởng của việc thực hiện Grid System xuất phát từ việc thay vì thực hiện các lớpFully Connected ở cuối mô hình thì các lớp này sẽ được chuyển thành các lớp tích chậpnhư các lớp phía trước trong bài toán phân loại vật thể Khi đó ở lớp cuối cùng thay cholớp fully connected có kích thước (số classes, 1) thành một lớp tích chập có kích thước 3chiều (1,1,số classes)
Việc chuyển đổi này không làm ảnh hưởng đến kết quả dự đoán mà còn thể hiện đượcchúng ta hoàn toàn có thể phân loại vật thể bằng các phép toán tích chập với kết quả dựđoán nằm ở lớp tích chập cuối cùng và còn ưu việt hơn khi vẫn giữ được vị trí của vật thể.Việc chuyển đổi diễn ra như sau, ví dụ, hình ảnh chứa vật cần phân loại có kích thước 14
x 14 x 3, sau khi thực hiện các bước tích chập nhận được lớp tích chập cuối cùng có kíchthước 1 x 1 x 4, chính lớp tích chập mang kết quả phân loại vật thể
Trang 20Hình 2.13: Chuyển các lớp Fully Connected cuối thành các lớp tích chập
Để chứng minh vị trí vật thể không thay đổi và vẫn có thể xác định được qua lớp cuối
ta giả sử hình ảnh đang xét có kích thước 27 x 27 x 3 được chia thành 3 x 3 grid như hìnhdưới, vị trí của vật thể nằm ở ô có đánh màu, sau khi thực hiện các bước tích chập, ta thuđược lớp tích chập cuối cùng có kích thước 3 x 3 x 3
Hình 2.14: Vị trí và thông tin của vật thể được duy trì đến lúc cuối cùng
(Để đơn giản, trong hình trên không vẽ số chiều của lớp tích chập)
Ta có thể thấy sau khi thực hiện tích chập dữ liệu và vị trí của vật thể được duy trì chođến lớp cuối cùng, và ở ô màu tương ứng mang kết quả phân loại của vật thể Như vậy tavừa có thể phân loại vật thể vừa xác định được vị trí của vật thể
Trang 21Qua đó, grid system sẽ chia hình gốc thành số grid tương đương với kích thước củalớp cuối(không đề cập đến số chiều), như ví dụ trên lớp cuối có kích thước 3 x 3 vậy ta sẽchia hình gốc thành 3 x 3 grid (đường kẻ đậm) Tại đó mỗi grid sẽ mang 3 thông tinchính: Grid có đang chứa vật thể hay không, tọa độ của các bounding box (gồm tọa độ x,ycủa góc trên bên trái và chiều dài, chiều rộng của bounding box), xác suất phân loại vậtthể Xét hình 2.15, giả sử chúng ta cần nhận diện biển báo cấm vượt quá 30km/h, mặc dùbiển báo không nằm trọn trong một grid nhưng thuật toán sẽ chỉ xác định tâm vật thể(hình tròn trong hình dưới) và tâm vật thể nằm ở grid nào thì grid đó sẽ được xác định tồntại vật thể Ma trận của 1 grid như sau:
[ pc , bx , by , bh , bw , c1 , c2 , c3 , ]
Hình 2.15: Mô tả grid system trong bài toán nhận diện biển báo
2.4.1.2.Khái niệm về chỉ số IoU và thuật toán Non-max suppression
Chỉ số IoU (Intersection over Union) cho ta biết tỉ lệ trùng vào nhau của 2 box
Trong đó A B là phần giao nhau (Intersection) của box A và box B, A B là phầnchung của 2 box (Union) bằng tổng diện tích của 2 box trừ đi phần giao nhau Việc xácđịnh IoU giúp tính toán khả năng phát hiện chính xác vật thể, trong đó box A thường làcác anchor box ( hay groundtruth bounding box) được gán nhãn ở pha huấn luyện và box
B là bounding box của hệ thống xác định ở pha kiểm tra Tính toán IoU để đánh giá mô
Trang 22Hình 2.16: Phần giao nhau giữa 2 box A và B
Trong pha kiểm tra, hệ thống sẽ đưa ra nhiều bounding box khác nhau với các xác suất
dự đoán khác nhau và tỉ số IoU khác nhau, vì vậy thuật toán Non-max suppression giúploại bỏ các bounding box có tỷ lệ dự đoán thấp và chỉ giữ lại 1 bounding box cuối cùng có
tỷ lệ dự đoán cao nhất Thuật toán Non-max suppression diễn ra như sau:
Bước 1: Loại bỏ tất cả các bounding box có xác suất xuất hiện của vật thể pc thấp hơnngưỡng Việc loại bỏ như vậy để các grid không chứa vật thể có xác suất xuất hiện của vậtthể thấp sẽ không hiển thị bounding box
Bước 2: Chọn các bounding box có xác suất xuất hiện vật thể cao nhất
Bước 3: Nếu có nhiều bounding box có cùng xác suất xuất hiện vật thể cao nhất thì ta
sẽ loại bỏ bằng IoU, bounding box nào có chỉ số IoU thấp hơn ngưỡng sẽ bị loại bỏ Kếtthúc bước ba, ta sẽ nhận được bounding box có tỉ lệ nhận diện vật thể tốt nhất
2.4.1.3 Gán nhãn cho các mẫu
Tương tự các bài toán "Máy học"/"Học sâu", bài toán nhận diện vật thể cũng gồm có 2pha, pha kiểm tra và pha huấn luyện Trong pha học của thuật toán YOLO, chúng ta sẽthực hiện label vị trí và phân loại cho vật thể, khi đó y có dạng như sau:
y =[pc , bx , by , bh , bw , c1 , c2 , c3, ]
Ví dụ đối với hình 2.15 giả sử bài toán cần tìm vị trí vật thể và phân loại với 3 nhãn,trong đó biển báo của hình thuộc nhãn thứ nhất Khi đó, ở grid phát hiện được biển báogiao thông, y sẽ được gán như sau y = [1 , 230 , 120 , 20 , 30 , 1 , 0 , 0], tức là grid đó cóvật thể, tọa độ (x,y) ở phía trên bên trái của anchor box là (230,120), anchor box có chiềudài là 20 chiều rộng là 30, biển thuộc nhãn 1 và không thuộc hai nhãn còn lại Nếu xét
Trang 23grid không chứa vật thể y sẽ được gán y = [0 , x , x , x , x , x , x , x ] tức là không có vậtthể ở grid đó và các giá trị còn lại không cần quan tâm
Tuy nhiên, nếu có cùng 2 vật thể cùng xuất hiện trong 1 grid thì không thể thực hiệngán y như trên Với vấn đề đó, chúng ta có thể xử lý theo 2 cách:
Cách 1: Chia nhỏ grid ra đến khi nào 2 vật thể nằm ở 2 grid khác nhau Tuy nhiênnếu chia càng nhỏ grid, việc học không thể diễn ra sâu khiến việc phân loại vật thể khóchính xác do các lớp sau không học được các đặc trưng cao.Và nếu tâm của 2 vật thể gầnnhư trùng nhau cũng không thể giải quyết được như trên Khi đó, ta phải thực hiện theocách thứ 2
Cách 2: Thay vì y chỉ được gán cho 1 vật thể, y sẽ được mở rộng ra với nhiều vậtthể như sau:
y =[pc1 , bx1 , by1 , bh1 , bw1 , c1 , c2 , c3, ,pc2 , bx2 , by2 , bh2 , bw2 , c1 , c2 , c3, ]
Xét ví dụ với hình 2.16 bên dưới, cô gái và chiếc xe đều nằm cùng chung 1 grid Khi
đó, y sẽ được gán như sau y = [1, 120, 20, 20 , 120 , 1 , 0 , 1 , 90, 50 , 90 , 20 , 0 , 1] Tức là ở grid này có xuất hiện ô tô (y[0] = 1), (120,20,20,120) là 4 thông số anchor boxcủa xe ô tô, (y[5]=1,y[6]=0) để phân loại cho anchor box này là xe ô tô chứ không phải côgái, tương tự y[7]=1 có nghĩa grid này cũng có cô gái, 4 thông số tiếp theo để xác định tọa
độ anchor box cho cô gái cà (y[12]=0,y[13]=1) để phân loại anchor box này là cô gái chứkhông phải xe ô tô Như vậy, với cách 2 ta sẽ ghép y của 2 hay nhiều vật thể nằm trongcùng 1 grid lại thành một, y[0:6] để xác định cho việc phát hiện chiếc xe, và y[7:13] đểxác định cho cô gái Tuy nhiên với cách thứ 2, nếu ta ghép càng nhiều tốc độ xử lý cànglâu do càng có nhiều phép toán phép thực hiện, vì vậy không nên quá lạm dụng cách này
mà nên phối hợp hài hòa với cách thứ 1, tăng số grid phải chia lên
Trang 24Hàm mất mát phân loại (Classification Loss Function):
Hàm mất mát vị trí (Localization Loss Function): Được sử dụng để tính toán độ sai sốgiữa các bounding box dự đoán với các anchor box, cải thiện Localization Loss sẽ giúpviệc phát hiện vật thể trở nên chính xác hơn:
Hàm mất mát dự đoán (Confidence Loss Function): thể hiện sai số giữa dự đoán củabounding box với nhãn thực tế:
Hàm mất mát tổng quát sẽ bằng tổng 3 hàm mất mát phía trên:
Trang 252.4.1.5.Ngõ ra
Ở ngõ ra, mỗi grid sẽ thực hiện dự đoán 2 bounding box có pc cao nhất Loại bỏ tất cảbounding box có pc thấp trên toàn bộ bức ảnh Và cuối cùng thuật toán Non-maxsuppression sẽ được thực hiện để giữ lại bounding box chính xác nhất cho từng vật thể
Hình 2.18: Thuật toán được áp dụng ở ngõ ra (a): Với mỗi grid, lấy 2 bounding box có pc cao nhất.
(b): Loại bỏ tất cả các bounding box có pc thấp trên toàn bộ bức ảnh, bước này giúp loại
bỏ các grid không chứa vật thể.
(c): Áp dụng non-max suppression để chỉ chọn ra bounding-box cuối cùng có xác suất dự
đoán cao nhất.
2.4.2 Thuật toán YOLOv4
Thuật toán YOLOv4 về cơ bản cũng thừa kế các phương pháp cơ bản của các YOLO,tuy nhiên YOLOv4 áp dụng một số thuật toán phát hiện vật thể nhanh, tối ưu hóa cácphép toán thực hiện song song giúp tăng tốc độ nhận diện và tăng độ chính xác
Trang 26Hình 2.19: So sánh tốc độ xử lý và độ chính xác của YOLOv4 với các thuật toán khác trong cùng tập dữ liệu MS COCO[8] Có thể thấy so với YOLOv3 với cùng một FPS
(Frame per Second) YOLOv4 cho độ chính xác (AP) cao hơn hẳn.
2.4.2.1 Cấu trúc nhận diện vật thể của YOLOv4
Cấu trúc nhận diện vật thể của YOLOv4 thường có 2 phần:
Backbone: Backbone là 1 mô hình pre-train của 1 mô hình học chuyển (transferlearning) khác để học các đặc trưng và vị trí của vật thể Các mô hình học chuyểnthường là VGG16, ResNet-50, Mô hình học chuyển được áp dụng trongYOLOv4 là CSP Darknet53
Head: Phần head được sử dụng để tăng khả năng phân biệt đặc trưng để dự đoánclass và bounding-box Ở phần head có thể áp dụng 1 tầng hoặc 2 tầng:
o Tầng 1: Dense Prediction, dự đoán trên toàn bộ hình với các mô hình RPN,YOLO, SSD,
o Tầng 2: Sparse Prediction dự đoán với từng mảng được dự đoán có vật thểvới các mô hình R-CNN series,
Neck: Ở phần giữa Backbone và Head, thường có thêm một phần Neck Neckthường được dùng để làm giàu thông tin bằng cách kết hợp thông tin giữa quá trìnhbottom-up và quá trình top-down (do có một số thông tin quá nhỏ khi đi qua quá
Trang 27trình bottom-up bị mất mát nên quá trình top-down không tái tạo lại được) Các môhình được dùng trong quá trình Neck của YOLOv4 là SPP, PAN
Hình 2.20: Cấu trúc nhận diện vật thể của YOLOv4[9]
2.4.2.2 Backbone
Với backbone, YOLOv4 áp dụng mô hình CSPDarkNet53 vì theo tác giả mô hình có
độ chính xác trong việc phát hiện vật thể cao hơn so với các mô hình ResNet thôngthường, và tăng khả năng phân loại nhờ vào hàm Mish CSP-Net về cơ bản cũng tương tựnhư mô hình DenseNet nhưng có một số khác biệt CSP(Cross-stage-partial-connection)chia thông tin thành 2 phần bằng nhau, một phần được đưa thẳng vào lớp chuyển kế tiếp(Transition block), phần còn lại được đưa vào dense block (được nhắc đến ở phần sau)trước khi đưa vào lớp chuyển kế tiếp Chính nhờ phần đưa vào dense block giúp giữthông tin của các lớp phía trước, và phần đưa thẳng vào Transition block giúp giảm sốtham số cần tính toán
Hình 2.21: Sự khác biệt giữa mạng DenseNet và mạng CSPDenseNet.
Trang 28DenseNet là một trong những mô hình mạng mới nhất cho kỹ thuật nhận diện vật thểđược công bố vào năm 2016 DenseNet gồm 2 khối, trong đó khối chính là Dense Block
và 1 khối chuyển Dense Block là một kĩ thuật mở rộng của skip-connection Dense Blockgiúp mô hình trở nên phức tạp hơn làm tăng khả năng học của mô hình, từ đó tăng độchính xác mà lại giảm được 1 nửa số tham số so với mô hình ResNet trước đó Tương tựnhư ResNet, DenseNet cũng giúp giảm overfitting hay vanishing gradient
Lớp tích chập đầu tiên được đưa vào DenseNet sẽ thực hiện Batch-Normalization,ReLU và lấy tích chập với 1 filter có kích thước 3x3 để lấy được lớp tích chập thứ 2(Hình 2.21) Lớp tích chập thứ 2 này sẽ tiếp tục thực hiện ghép chồng (concatenate) vớilớp tích chập thứ 1, đây cũng là điểm mới của DenseNet so với ResNet khi ResNet sẽ chỉlấy element-wise, sẽ làm giảm đáng kể số tham số phải học so với ResNet Quá trình trêntiếp tục lặp lại với lớp tích chập thứ 2, thứ 3, (Hình 2.22) Kết thúc quá trình, lớp tíchchập cuối cùng sẽ được đưa vào lớp chuyển để thực hiện lấy tích chập hoặc max-pooling
và lại đưa vào một Dense Block mới.(Hình 2.23)
Hình 2.22: Quá trình lấy Batch-Norm, ReLU, tích chập với filter 3x3 của 1 lớp[10]
Trang 29Hình 2.23: Quá trình ghép chồng lớp tích chập phía trước vào lớp tích chập phía sau[10]
Hình 2.24: Mô hình DenseNet với 3 khối Dense Block và các lớp chuyển chèn giữa[10]
Mô hình Darknet-53 gồm 53 tầng tích chập đã được giới thiệu trong YOLOv3
Hình 2.25: Mô hình tích chập Darknet-53 gồm 53 tầng tích chập[11]
2.4.2.3 Neck
Trang 30Quá trình backbone, khi đi đáy lên đỉnh (bottom-up stream) giúp việc xác định vị trícủa vật thể nhanh và chính xác, tuy nhiên khi đi qua quá trình trên việc các feature mapcàng ngày càng thu nhỏ, độ phân giải giảm xuống làm cho một số các vật thể nhỏ qua đócũng bị biến mất làm mất mát thông tin Để khắc phục điều đó trước khi đẩy về head đểnhận dạng, Neck thường thực hiện một quá trình ngược lại (top-down stream) tạo ra cácreconstruction map để khôi phục lại một số thông tin bị mất trong quá trình bottom-upstream Nhưng một số thông tin đã bị mất khi khôi phục bằng quá trình top-down cũngkhông còn hiển thị lại nữa, do đó mạng FPN (Feature Pyramid Network), sẽ tái tạo lại cácthông tin bị mất nhờ các kết nối skip-connection giữa các feature mác được lấy tích chập1x1 và reconstruction map tạo ra các feature map mới giàu thông tin giúp việc phát hiện
và phân loại vật thể đạt độ chính xác cao hơn
Hình 2.26: Mô hình FPN.[12]
Trong đó các ô trong khung bottom-up là các feature map trải qua trong quá trình backbone Các ô trong khung top-down là các reconstruction map Các ô có viền nét đứt
là các feature map sau khi thực hiện skip-connection.
Trong YOLOv4, tác giả có 2 cải tiến đối với mô hình FPN gồm:
Đối với khối skip-connection giữa feature map và reconstruction map, tác giả sửdụng mô hình YOLO-SPP (Spatial Pyramid Pooling) thay cho các feature mapđược tích chập 1x1 YOLO-SPP được giới thiệu trong YOLOv3 và tiếp tục được
sử dụng trong YOLOv4 YOLO-SPP sử dụng các mạng tích chập max-pooling vớicác kích thước filter khác nhau, sau khi được lấy tích chập các lớp ngõ ra sẽ được