Khả năng tự động nhận diện và phân loại đối tượng không chỉ làm giảm gánh nặng công việc cho con người mà còn mở ra nhiều ứng dụng mới cho các lĩnh vực như an ninh, giám sát, giáo dục,…
Trang 1THÀNH PHỐ HỒ CHÍ MINH
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Tp Hồ Chí Minh, tháng 7 năm 2024
ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT DỮ LIỆU
XÂY DỰNG HỆ THỐNG NHẬN DIỆN BIỂN SỐ XE
BẰNG MÔ HÌNH HỌC SÂU
GVHD: TS NGUYỄN THÀNH SƠN SVTH: LÊ MINH ĐĂNG
VÕ HOÀNG NGUYÊN
S K L 0 1 3 4 2 3
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN NGÀNH KỸ THUẬT DỮ LIỆU
_ _
KHÓA LUẬN TỐT NGHIỆP
GVHD: TS Nguyễn Thành Sơn SVTH1: 20133034 – Lê Minh Đăng
SVTH2: 20133075 - Võ Hoàng Nguyên
TP Hồ Chí Minh, tháng 07 năm 2024
XÂY DỰNG HỆ THỐNG NHẬN DIỆN BIỂN SỐ XE
BẰNG MÔ HÌNH HỌC SÂU
Trang 3ĐH SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA CNTT Độc lập – Tự do – Hạnh phúc
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên 1: Lê Minh Đăng MSSV: 20133034
Họ và tên Sinh viên 2: Võ Hoàng Nguyên MSSV: 20133075 Chuyên ngành: Kỹ thuật Dữ liệu
Đề tài: Xây dựng hệ thống nhận diện biển số xe bằng mô hình học sâu
Họ và tên Giáo viên hướng dẫn: TS Nguyễn Thành Sơn
NHẬN XÉT
1 Về nội dung đề tài và khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:
TP Hồ Chí Minh, tháng 07 năm 2024
Giáo viên hướng dẫn
(Ký & ghi rõ họ tên)
Trang 4ĐH SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA CNTT Độc lập – Tự do – Hạnh phúc
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên 1: Lê Minh Đăng MSSV: 20133034
Họ và tên Sinh viên 2: Võ Hoàng Nguyên MSSV: 20133075 Chuyên ngành: Kỹ thuật Dữ liệu
Đề tài: Xây dựng hệ thống nhận diện biển số xe bằng mô hình học sâu
Họ và tên Giáo viên phản biện: ThS Lê Thị Minh Châu
NHẬN XÉT
1 Về nội dung đề tài và khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:
TP Hồ Chí Minh, tháng 07 năm 2024
Giáo viên phản biện
(Ký & ghi rõ họ tên)
Trang 5LỜI CẢM ƠN
Đầu tiên, nhóm chúng em xin được gửi lời cảm ơn chân thành đến Khoa Công nghệ Thông tin thuộc Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM đã tạo điều kiện thuận lợi cho nhóm chúng em được thực hiện và hoàn thành đề tài này
Tiếp đến, để hoàn thành tốt đề tài và bài báo cáo Khóa Luận Tốt Nghiệp này, chúng em cũng xin gửi lời cảm ơn sâu sắc đến Thầy Nguyễn Thành Sơn, người đã trực tiếp hỗ trợ chúng em trong suốt quá trình làm đề tài Chúng em cảm ơn Thầy đã đưa ra những lời khuyên từ kinh nghiệm thực tiễn của mình để giúp đỡ và định hướng cho chúng em đi đúng với yêu cầu của đề tài đã chọn, luôn giải đáp thắc mắc và đưa ra những góp ý, chỉnh sửa kịp thời giúp chúng em khắc phục nhược điểm và hoàn thành đề tài đúng tiến độ đề ra
Đề tài và bài báo cáo được chúng em cố gắng hoàn thành tốt nhất có thể, tuy nhiên không thể tránh khỏi việc gặp nhiều hạn chế trong kiến thức và kỹ thuật cũng như kinh nghiệm trong việc thực hiện một bài Khóa Luận Tốt Nghiệp Vậy nên chúng em rất mong nhận được những ý kiến đóng góp quý báu của Quý Thầy Cô để nhóm có thể hoàn thiện hơn về kiến thức, tư duy và rèn luyện kỹ năng để làm tốt hơn nữa trong những nghiên cứu kế tiếp của nhóm
Cuối lời, chúng em kính chúc Quý Thầy Cô luôn dồi dào sức khỏe và thành công hơn nữa trong sự nghiệp trồng người
Nhóm chúng em xin chân thành cảm ơn!
Trang 6ĐH SƯ PHẠM KỸ THUẬT TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA CNTT Độc lập – Tự do – Hạnh phúc
ĐỀ CƯƠNG KHÓA LUẬN TỐT NGHIỆP
Họ và tên Sinh viên 1: Lê Minh Đăng MSSV: 20133034
Họ và tên Sinh viên 2: Võ Hoàng Nguyên MSSV: 20133075 Chuyên ngành: Kỹ thuật Dữ liệu
Đề tài: Xây dựng hệ thống nhận diện biển số xe bằng mô hình học sâu
Họ và tên Giáo viên hướng dẫn: TS Nguyễn Thành Sơn
Nhiệm vụ của luận văn:
1 Tìm hiểu về bài toán Nhận diện biển số xe
2 Nghiên cứu lý thuyết, cách xây dựng các mô hình học sâu quan trọng mà nhóm muốn áp dụng trong đề tài là CNN, YOLOv2, YOLOv3, YOLOv4 và YOLOv8
3 Tiến hành đánh giá mô hình bằng các trường hợp thực nghiệm
4 Thiết kế giao diện bằng thư viện Streamlit nhằm thể hiện các chức năng của đề tài một cách trực quan
Đề cương viết luận văn:
1 Phần mở đầu
1.1 Lý do chọn đề tài
1.2 Mục tiêu và nhiệm vụ nghiên cứu
1.3 Đối tượng và phạm vi nghiên cứu
2 Phần nội dung
2.1 Chương 1: Bài toán Nhận diện biển số xe
2.2 Chương 2: Các mô hình học sâu quan trọng
Trang 7Tìm hiểu về đề tài, các bài toán và các
mô hình liên quan
4 01/03/2024 –
31/03/2024
• Tìm các tập dữ liệu biển số xe, ký
tự
• Tiến hành code các mô hình
• Làm nhãn cho các hình ảnh để tiến hành huấn luyện mô hình
• Viết lý thuyết về các mô hình
5 01/04/2024 –
30/04/2024
• Tiếp tục viết và sửa code
• Viết code để tạo giao diện bằng streamlit
• Tìm kiếm những tập dữ liệu ký tự khác để phù hợp với mô hình
• Tiếp tục viết lý thuyết về các mô hình và các chủ đề liên quan đến Khóa luận
Tập hình ảnh ký
tự trước đó chưa phù hợp
Trang 8• Tiếp tục viết lý thuyết và các bước cài đặt mô hình
10
25/06/2024 Báo cáo trước Giáo viên hướng dẫn lần
cuối
Trang 9MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục tiêu và nhiệm vụ nghiên cứu 1
3 Đối tượng và phạm vi nghiên cứu 1
NỘI DUNG 3
CHƯƠNG 1: BÀI TOÁN NHẬN DIỆN BIỂN SỐ XE 3
1.1 TỔNG QUAN VỀ BÀI TOÁN NHẬN DIỆN ĐỐI TƯỢNG 3
1.2 BÀI TOÁN NHẬN DIỆN BIỂN SỐ XE 4
1.2.1 Biển số xe việt nam 4
1.2.2 Quy trình chung của bài toán Nhận diện biển số xe 5
1.3 CÁC CÔNG TRÌNH, ỨNG DỤNG LIÊN QUAN ĐẾN BÀI TOÁN NHẬN DIỆN BIỂN SỐ XE 5
1.3.1 Hệ thống nhận diện biển số xe thông minh ParkingX 5
1.3.2 Công nghệ ANPR 7
CHƯƠNG 2: CÁC MÔ HÌNH HỌC SÂU QUAN TRỌNG 8
2.1 MÔ HÌNH CNN 8
2.1.1 Tìm hiểu tổng quan về mô hình CNN 8
2.1.2 Cấu trúc mô hình CNN 8
2.1.2.1 Convolutional Layer 8
2.1.2.2 Relu Layer 9
2.1.2.3 Pooling Layer 9
2.1.2.4 Fully connected Layer 10
2.2 MÔ HÌNH GFP-GAN 10
2.2.1 Tổng quan về mô hình GFP-GAN 10
2.2.2 Kiến trúc chi tiết của mô hình GFP-GAN 11
2.2.2.1 Degradation Removal Module 11
2.2.2.2 Generative Facial Prior and Latent Code Mapping 12
2.2.2.3 Channel-Split Spatial Feature Transform 12
2.3 MÔ HÌNH YOLOv2 13
2.3.1 Giới thiệu về mô hình YOLOv2 13
Trang 102.3.2 Các khái niệm quan trọng trong mô hình YOLO 13
2.3.2.1 Anchor Box 13
2.3.2.2 Intersection over Union 15
2.3.2.3 Metrics 16
2.3.2.5 Non-Maximum Suppression 17
2.3.3 Kiến trúc mô hình YOLOv2 18
2.3.3.1 Backbone 18
2.3.3.2 Neck 19
2.3.3.3 Head 20
2.3.4 Loss Function (Hàm mất mát) 22
2.3.4.1 Confidence Loss 23
2.3.4.2 Box Regression Loss 23
2.3.4.3 Classification Loss 24
2.3.4.4 Hàm Loss tổng 24
2.3.5 Cách thức hoạt động của mô hình YOLO 25
2.3.6 Một vài sự thay đổi của YOLOv2 so với YOLOv1 26
2.3.6.1 Chuẩn hóa hàng loạt 26
2.3.6.2 Sử dụng Anchor Box 26
2.3.6.3 Các cụm thứ nguyên 27
2.4 MÔ HÌNH YOLOv3 28
2.4.1 Giới thiệu về mô hình YOLOv3 28
2.4.2 Kiến trúc của mô hình YOLOv3 28
2.4.2.1 Backbone 28
2.4.2.2 Neck 32
2.4.2.3 Head 36
2.4.3 Loss Function (Hàm mất mát) 37
2.4.3.1 Objectness Score (Confidence Loss) 37
2.4.3.2 Class Prediction (Classification Loss) 38
2.4.3.3 Box Regression Loss 38
2.4.4 So sánh với YOLOv2 38
2.5 MÔ HÌNH YOLOv4 40
Trang 112.5.1 Giới thiệu về mô hình YOLOv4 40
2.5.2 Kiến trúc của mô hình YOLOv4 40
2.5.2.1 Backbone 41
2.5.2.2 Neck 43
2.5.2.3 Head 46
2.5.3 Hàm mất mát (Loss Function) 47
2.5.4 Các phương pháp được sử dụng để tăng độ chính xác của mô hình 47 2.5.4.1 Bag of Freebies (BoF) 47
2.5.4.2 Bag of Specials (BoS) 52
2.6 MÔ HÌNH YOLOv8 56
2.6.1 Giới thiệu về mô hình YOLOv8 56
2.6.2 Kiến trúc của mô hình YOLOv8 57
2.6.2.1 Những khái niệm quan trọng trong kiến trúc của mô hình YOLOv8 57 2.6.2.2 Backbone 62
2.6.2.3 Neck 63
2.6.2.4 Head 63
2.6.3 Hàm mất mát (Loss Function) 64
2.6.3.1 Sample Assignment 64
2.6.3.2 Tính toán Loss 65
CHƯƠNG 3: THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 66
3.1 CÀI ĐẶT MÔ HÌNH 66
3.1.1 Môi trường cài đặt 66
3.1.2 Dữ liệu thực nghiệm 66
3.1.2.1 Dữ liệu hình ảnh biển số xe máy 66
3.1.2.2 Dữ liệu ký tự 66
3.1.2.3 Dữ liệu thông tin các tỉnh thành 67
3.1.2.4 Dữ liệu Test 67
3.1.3 Các tiêu chí đánh giá 67
3.1.3.1 Mean Average Precision (mAP) 67
3.1.3.2 Accuracy 69
3.1.4 Huấn luyện mô hình 70
Trang 123.2 TRÌNH TỰ THỰC HIỆN 70
3.2.1 Huấn luyện 70
3.3.1.1 Chuẩn bị dữ liệu huấn luyện 70
3.3.1.2 Chuẩn bị nhãn cho dữ liệu 72
3.2.2 Dự đoán 74
3.3 KẾT QUẢ THỰC NGHIỆM 76
3.3.1 Mô hình tổng hợp 76
3.3.1.1 Thực nghiệm từng giai đoạn 76
3.3.1.2 Đánh giá từng giai đoạn 79
3.3.2 Mô hình YOLOv2 79
3.3.3 Mô hình YOLOv3 81
3.3.4 Mô hình YOLOv4 82
3.3.5 Mô hình YOLOv8 83
3.3.6 Train ký tự bằng mô hình CNN (ResNetRS420) 84
3.4 SO SÁNH CÁC MÔ HÌNH YOLOv2, YOLOv3, YOLOv4 VÀ YOLOv8 85 KẾT LUẬN 87
1 Những kết quả đạt được 87
2 Hạn chế của đề tài 87
3 Phương hướng phát triển 87
TÀI LIỆU THAM KHẢO 88
PHỤ LỤC 91
Trang 13DANH MỤC CÁC TỪ VIẾT TẮT
Fast R-CNN Fast Region-based Convolutional Neural Network
CIoU Complete Intersection over Union
GFP-GAN Generative Facial Prior – Generative Adversarial Network
Trang 14DANH MỤC CÁC HÌNH ẢNH
Hình 1.1: Kết quả của bài toán Nhận diện đối tượng [1] 3
Hình 1.2: Kết quả của bài toán Nhận diện biển số xe [2] 4
Hình 1.3: Quy trình chung của hệ thống nhận diện biển số xe [3] 5
Hình 1.4: Kiến trúc của hệ thống ParkingX [4] 6
Hình 1.5: Mô phỏng quy trình nhận dạng bằng ANPR [5] 7
Hình 2.1: Cấu trúc mô hình CNN [7] 8
Hình 2.2: Minh họa việc áp dụng filters trên ma trận đầu vào [6] 9
Hình 2.3: Minh họa việc áp dụng filter để xác định góc cong của ảnh [7] 9
Hình 2.4: Các loại Pooling [9] 10
Hình 2.5: Minh họa Pooling Layer [7] 10
Hình 2.6: Hình ảnh trước và sau khi được xử lý bằng GFP-GAN [10] 13
Hình 2.7: Dùng thuật toán K-Means để tìm các Anchor Boxes phổ biến [13] 14
Hình 2.8: Minh họa các Anchor Boxes phủ lên toàn bộ ảnh [14] 14
Hình 2.9: Công thức tính IoU [14] 15
Hình 2.10: Chi tiết công thức tính IoU [14] 15
Hình 2.11: Ví dụ về cách đánh giá chỉ số IoU [14] 16
Hình 2.12: Mô tả thuật toán DropBlock [14] 17
Hình 2.13: Ví dụ về việc áp dụng NMS [14] 18
Hình 2.14: Backbone của mô hình YOLOv2 [14] 19
Hình 2.15: Kiến trúc Neck trong mô hình YOLOv2 [14] 20
Hình 2.16: Dự đoán Bounding Box trong YOLOv2 [12] 21
Hình 2.17: Minh họa kết quả dự đoán của mô hình YOLO [16] 25
Hình 2.18: Các lớp fully-connected được loại bỏ (phần tô màu đỏ) [17] 26
Hình 2.19: Dùng K-Means để tìm ra số Anchor Box phù hợp [16] 27
Hình 2.20: Minh họa một DenseNet [19] 28
Hình 2.21: Cấu trúc một Dense Block [14] 29
Hình 2.22: Cơ chế hoạt động của một DenseNet [14] 29
Hình 2.23: Kiến trúc của DarkNet-53 [20] 31
Hình 2.24: Kiến trúc của DarkNet-53 sau khi bỏ đi ba lớp cuối cùng [21] 32
Hình 2.25: So sánh kết quả của DarkNet-53 so với các mạng khác [20] 32
Hình 2.26: Kiến trúc của FPN [14] 33
Hình 2.27: Multi-scale Prediction [21] 36
Hình 2.28: Đầu ra của lớp có kích thước 13 x 13 [21] 36
Hình 2.29: So sánh kết quả của YOLOv3 và YOLOv2 [20] 39
Hình 2.30: So sánh YOLOv3 với ResNet [18] 39
Hình 2.31: So sánh hiệu suất của YOLOv4 với các mô hình khác [14] 40
Hình 2.32: Sự khác nhau trong kiến trúc của DenseNet và CSPDenseNet [19] 41
Hình 2.33: Đồ thị hàm Mish [24] 42
Trang 15Hình 2.34: So sánh hàm kích hoạt Mish và các hàm kích hoạt khác [19] 43
Hình 2.35: Minh họa kiến trúc của SPP [14] 44
Hình 2.36: Minh họa hướng đi của PAN [14] 45
Hình 2.37: Cách hoạt động của PAN để đưa ra dự đoán cuối cùng [14] 45
Hình 2.38: Kiến trúc của SAM [14] 46
Hình 2.39: So sánh kết quả của CutMix so với các phương pháp tăng cường dữ liệu khác [19] 50
Hình 2.40: Minh họa phương pháp Mosaic [19] 50
Hình 2.41: Minh họa phương pháp Drop Block [24] 51
Hình 2.42: Sự thay đổi của kiến trúc SPP trong YOLOv4 [14] 54
Hình 2.43: Sự thay đổi của kiến trúc SAM trong YOLOv4 [14] 55
Hình 2.44: Sự thay đổi của kiến trúc PAN trong YOLOv4 [14] 55
Hình 2.45: Các chức năng của YOLOv8 [25] 56
Hình 2.46: Kiến trúc tổng quát của mô hình YOLOv8 [26] 57
Hình 2.47: Độ mượt của đồ thị hàm SiLU so với ReLU [27] 58
Hình 2.48: Các thành phần của Convolutional Block [26] 59
Hình 2.49: Các thành phần của SPPF Block [26] 60
Hình 2.50: Các thành phần của Bottleneck Block [26] 61
Hình 2.51: Các thành phần của C2f Block [26] 61
Hình 2.52: Các thành phần của Detect Block [26] 62
Hình 3.1: Môi trường ảo để cài đặt các thư viện Python 66
Hình 3.2: Cấu hình máy dùng để train mô hình 66
Hình 3.3: Cấu trúc của Confusion Matrix [33] 68
Hình 3.4: Đường cong Precision-Recall [34] 69
Trang 16DANH MỤC CÁC BẢNG
Bảng 3.1: Đánh giá các mô hình ở giai đoạn nhận diện biển số xe 79
Bảng 3.2: Đánh giá các mô hình ở giai đoạn nhận diện ký tự và tổng hợp 79
Bảng 3.3: Kết quả sau khi huấn luyện mô hình YOLOv2 80
Bảng 3.4: Kết quả sau khi test độ chính xác của mô hình YOLOv2 80
Bảng 3.5: Kết quả sau khi huấn luyện mô hình YOLOv3 81
Bảng 3.6: Kết quả sau khi test độ chính xác của mô hình YOLOv3 81
Bảng 3.7: Kết quả sau khi huấn luyện mô hình YOLOv4 82
Bảng 3.8: Kết quả sau khi test độ chính xác của mô hình YOLOv4 82
Bảng 3.9: Kết quả sau khi huấn luyện mô hình YOLOv8 83
Bảng 3.10: Kết quả sau khi Test độ chính xác của mô hình YOLOv8 83
Bảng 3.11: Kết quả sau khi huấn luyện mô hình CNN 84
Bảng 3.12: So sánh kiến trúc của các mô hình YOLO 85
Bảng 3.13: So sánh kết quả của các mô hình YOLO khi kết hợp với mô hình CNN 85
Trang 17MỞ ĐẦU
1 Lý do chọn đề tài
Hiện nay, xử lý ảnh đang là một lĩnh vực có sự phát triển bùng nổ với nguồn dữ liệu hình ảnh dồi dào từ nhiều nguồn khác nhau Điều này có thể được nhìn thấy một cách rõ ràng dựa trên số lượng bài báo, nghiên cứu về nó hằng năm Một trong những ứng dụng hàng đầu của lĩnh vực này không thể không kể tới bài toán Nhận diện đối tượng Khả năng tự động nhận diện và phân loại đối tượng không chỉ làm giảm gánh nặng công việc cho con người mà còn mở ra nhiều ứng dụng mới cho các lĩnh vực như
an ninh, giám sát, giáo dục,…
Nhìn rộng hơn từ bài toán Nhận diện đối tượng, Nhận diện biển số xe đã và đang nổi lên như một đề tài nghiên cứu thu hút, có lẽ bởi tính ứng dụng thực tiễn cao của nó trong nhiều lĩnh vực như quản lý thông tin phương tiện, quản lý giao thông, quản lý bãi
đỗ xe,…Việc áp dụng thành công công nghệ này trong việc quản lý có thể góp phần giải quyết nhiều vấn đề thực tế như truy bắt tội phạm, ùn tắc giao thông,…
Nhận thấy được những lý do quan trọng như trên, nhóm chúng em đã quyết định
chọn đề tài “Xây dựng hệ thống nhận diện biển số xe bằng mô hình học sâu” cho bài
Khóa Luận Tốt Nghiệp của mình
2 Mục tiêu và nhiệm vụ nghiên cứu
− Mục tiêu nghiên cứu: Tìm hiểu được lý thuyết về ba mô hình YOLOv2, YOLOv3,
YOLOv4 và YOLOv8 Sau đó áp dụng nó vào xử lý bài toán Nhận diện biển số xe từ hình ảnh
− Nhiệm vụ nghiên cứu:
• Tìm hiểu về bài toán Nhận diện biển số xe
• Nghiên cứu lý thuyết, cách xây dựng các mô hình học sâu quan trọng mà nhóm muốn áp dụng trong đề tài là CNN, YOLOv2, YOLOv3, YOLOv4 và YOLOv8
• Tiến hành đánh giá mô hình bằng các trường hợp thực nghiệm
• Thiết kế giao diện bằng thư viện Streamlit nhằm thể hiện các chức năng của đề tài một cách trực quan
3 Đối tượng và phạm vi nghiên cứu
− Đối tượng nghiên cứu: Biển số xe máy của Việt Nam
− Phạm vi nghiên cứu:
Trang 18• Nhận diện biển số xe máy của Việt Nam, chỉ nhận diện biển có màu trắng chữ đen
• Các mô hình mỗi lần nhận diện được một biển số xe
• Xoay biển số xe trên mặt phẳng 2D (2 chiều) có góc nghiêng từ -45 độ đến 45
độ
• Ảnh chất lượng tối thiểu 600px
Trang 19NỘI DUNG CHƯƠNG 1: BÀI TOÁN NHẬN DIỆN BIỂN SỐ XE
1.1 TỔNG QUAN VỀ BÀI TOÁN NHẬN DIỆN ĐỐI TƯỢNG
− Nhận diện đối tượng không còn là bài toán xa lạ trong lĩnh vực Thị giác máy tính
Mục đích của nó là xác định những vật thể có trong ảnh hoặc video và cho biết tên gọi của vật thể đó
− Để nhận dạng và phân loại một đối tượng, ta cần nhìn vào những đặc trưng nhất
định nào đó của nó như: mắt, mũi,… khi nhận diện đối tượng là con người
Hình 1.1: Kết quả của bài toán Nhận diện đối tượng [1]
− Có hai hướng tiếp cận chính khi thực hiên một bài toán Nhận diện đối tượng: [1]
• Tự tạo và huấn luyện mô hình: Ta cần thiết kế một kiến trúc mạng để học các đặc trưng từ các đối tượng muốn nhận diện Bên cạnh đó, chọn một bộ dữ liệu đủ lớn
có chứa các nhãn cũng là một vấn đề quan trọng trong việc huấn luyện mô hình
Ở cách này, ta cần cấu hình thủ công các lớp và các trọng số của mô hình nên đòi hỏi nhiều thời gian huấn luyện
• Sử dụng một mô hình đã được huấn luyện trước: Hiện nay, có khá nhiều mô hình Nhận diện Đối tượng đã được huấn luyện sẵn trên một bộ dữ liệu lớn, ta có thể
sử dụng lại nó và huấn luyện tiếp tục trên tập dữ liệu mới của mình để cập nhật các trọng số của mô hình
Trang 201.2 BÀI TOÁN NHẬN DIỆN BIỂN SỐ XE
− Bài toán Nhận diện biển số xe (License Plate Recognition – LPR) có thể được
xem là con của bài toán Nhận diện đối tượng Đây là một phần quan trọng trong lĩnh vực thị giác máy tính và trí tuệ nhân tạo
− Mục tiêu chính của bài toán này là phân tích, tự động nhận diện và trích xuất
thông tin từ biển số xe trong ảnh hoặc video
Hình 1.2: Kết quả của bài toán Nhận diện biển số xe [2]
1.2.1 Biển số xe việt nam
− Ở Việt Nam, biển số xe là một tấm gắn trên mỗi xe cơ giới, được cấp bởi cơ quan
công an khi mua xe mới hoặc chuyển nhượng xe Nó chứa các thông tin như vùng và địa phương quản lý, loại phương tiện, số đăng ký và các thông tin khác như danh tính người sở hữu, thời gian mua xe,… [3]
− Bên cạnh việc phân biệt biển số xe dựa vào các con số và chữ cái, ta còn sử dụng
màu sắc để phân loại nó Ví dụ: biển màu trắng chữ đen đại diện cho cá nhân và doanh nghiệp, biển màu xanh dương chữ màu trắng đại diện cho các cơ quan hành chính,…
− Màu sắc của biển số có thể kết hợp với các yếu tố khác như hình dạng và kích
thước để phân biệt giữa các loại phương tiện và tổ chức sở hữu khác nhau Ví dụ: biển
số xe quân đội ngoài màu đỏ ra thì còn các đặc điểm khác như hình chữ nhật có góc cạnh đậm, kiểu chữ đặc biệt hoặc các biểu tượng quân đội,… [3]
Trang 211.2.2 Quy trình chung của bài toán Nhận diện biển số xe
− Bài toán Nhận diện biển số xe được đề ra với mục đích xử lý hình ảnh đầu vào
chứa biển số xe và chuyển nó thành dạng ký tự để lưu và quản lý chúng nhằm phục vụ cho những ứng dụng cụ thể hơn
− Quy trình chung của hệ thống nhận diện biển số xe gồm những giai đoạn sau:
Hình 1.3: Quy trình chung của hệ thống nhận diện biển số xe [3]
• Xe vào: xe chạy đến vùng quan sát của camera Điều này có thể xảy ra ở cổng vào của một khu vực đỗ xe, xe chạy ngang qua một camera trên đường quốc lộ,…
• Camera: hình ảnh xe được chụp từ camera sẽ gửi về máy tính xử lý
• Tiền xử lý ảnh: hình ảnh sau đó được trải qua các công đoạn nhằm cải thiện chất lượng ảnh và làm cho biển số nổi bật hơn phục vụ cho nhu cầu nhận diện ký tự như: cân bằng độ sáng, làm nổi đường biên, giảm nhiễu,…
• Trích xuất vùng biển số xe: sử dụng mô hình học máy hoặc học sâu để phát hiện
vị trí của biển số xe trong hình ảnh hoặc video đầu vào Các mô hình YOLO, Faster R-CNN hoặc SSD thường được sử dụng ở giai đoạn này
• Nhận dạng biển số xe: sau khi vùng chứa biển số xe đã được xác định, hệ thống
sử dụng mô hình nhận dạng ký tự để đọc các ký tự trên biển số Các mô hình OCR (Optical Character Recognition), CNN thường được tích hợp vào giai đoạn này để đọc thông tin từ biển số [3]
1.3 CÁC CÔNG TRÌNH, ỨNG DỤNG LIÊN QUAN ĐẾN BÀI TOÁN NHẬN DIỆN BIỂN SỐ XE
1.3.1 Hệ thống nhận diện biển số xe thông minh ParkingX
− Hệ thống nhận diện biển số xe thông minh ParkingX do công ty VTI Solutions
phát triển nhằm cung cấp các giải pháp toàn diện cho việc quản lý bãi giữ xe một cách
tự động
− ParkingX được thiết kế với nhiều ưu điểm nổi bật: [4]
• Nhận diện chính xác và nhanh chóng: Hệ thống sử dụng công nghệ AI tiên tiến,
có khả năng nhận diện chính xác đến 99.97% các ký tự có trên biển số xe, bất
Trang 22chấp điều kiện khắc nghiệt như: thiếu sáng, biển số cũ, bụi bẩn,… Các thao tác nhận diện được thực hiện một cách nhanh chóng với thời gian nhỏ hơn 0.7 giây, đảm bảo đáp ứng lượng phương tiện truy cập cùng lúc trong giờ cao điểm
• Quản lý tự động: Xe ra vào bãi được ghi nhận biển số, mở cửa barrier, lưu lại biển số và hiển thị thông tin chủ xe một cách tự động, giúp tối ưu hóa nguồn nhân lực dành cho việc quản lý bãi giữ xe, đồng thời nâng cao hiệu suất làm việc
• Khả năng xuất báo cáo dữ liệu trực quan: Hệ thống cung cấp chức năng xuất báo cáo dữ liệu tổng quan cho bãi giữ xe, bao gồm các thông tin: tổng số phương tiện, tần suất ra vào, số lượng nhân viên và số lượng khách Việc này giúp người quản
lý nắm bắt được tình hình hoạt động của bãi, đánh giá hiệu quả hoạt động và lập
kế hoạch phát triển cho bãi giữ xe trong tương lai
• Phát triển mở rộng: Ứng dụng dễ dàng tích hợp với các hệ thống quản lý bãi giữ
xe ở nhà máy, văn phòng, trung tâm thương mại,… Cung cấp API để truy cập và
quản lý dữ liệu từ xa một cách tiện lợi
− Kiến trúc của một hệ thống ParkingX bao gồm: [4]
Trang 231.3.2 Công nghệ ANPR
− Công nghệ nhận diện biển số xe tự động (Automated Number Plate Recognition
– ANPR) là một giải pháp khá phổ biến đang được sử dụng trên toàn cầu Công nghệ này cho phép cảnh sát phát hiện được các xe ô tô có dấu hiệu vi phạm trong việc làm giả hoặc che mờ biển số xe, từ đó tiến hành theo dõi một cách đặc biệt hơn [5]
− Hệ thống ANPR sử dụng các camera công nghệ cao cùng với camera hồng ngoại
để lưu trữ và nhận diện biển số xe trong thời gian thực và tăng độ chính xác khi ghi hình vào ban đêm
− Quy trình hoạt động của ANPR bao gồm các bước sau: [5]
• Ghi hình phương tiện: Các camera ghi lại hình ảnh của xe từ nhiều góc độ khác nhau
• Nhận diện biển số: Hình ảnh biển số xe được chuyển đổi thành văn bản bằng công nghệ nhận diện ký tự quang học (OCR)
• Mã hóa và nhận diện ký tự: Dữ liệu văn bản này sau đó được mã hóa và nhận diện để đối chiếu với cơ sở dữ liệu, từ đó cung cấp các thông tin như: chủ sở hữu
xe, giấy phép lái xe,…
Hình 1.5: Mô phỏng quy trình nhận dạng bằng ANPR [5]
Trang 24CHƯƠNG 2: CÁC MÔ HÌNH HỌC SÂU QUAN TRỌNG
2.1.1 Tìm hiểu tổng quan về mô hình CNN
− CNN là viết tắt của Convolutional Neural Network, nghĩa là Mạng nơ-ron tích
chập Đây là một mô hình tiêu biểu để giải quyết các bài toán về thị giác máy tính trong thế giới Deep Learning (Học Sâu), được lấy cảm hứng từ cách hoạt động của bộ não con người, bắt chước cách các tế bào thần kinh sinh học truyền tín hiệu cho nhau [6]
− CNN có tính ứng dụng cao, được sử dụng nhiều trong các bài toán nhận dạng
hình ảnh (Object Detection), phát triển xe tự lái, giao hàng tự động,… Hiện nay, các công ty lớn như Facebook, Google hay Amazon đã đưa mô hình này vào quy trình sản xuất các sản phẩm của mình
− Đây là lớp quan trọng nhất và cũng là lớp đầu tiên tiếp nhận đầu vào của mô hình
CNN, chịu trách nhiệm thực hiện các tính toán để phát hiện ra đặc trưng của đầu vào
− Tầng này nhận đầu vào là một ma trận 3 chiều và một filters (bộ lọc) để học Bộ
filters này sẽ trượt qua từng vị trí trên bức ảnh để tính tích chập Tích chập có nghĩa là nhân các giá trị của filters theo từng phần tử với phần tương ứng trên ma trận ban đầu, sau đó tính tổng chúng lại để tạo thành một bộ feature map mới Mỗi giá trị trong bộ feature map này thể hiện mức độ phù hợp hoặc đặc trưng của filters tại một vị trí cụ thể trên dữ liệu đầu vào [6][7]
Trang 25Ví dụ 1: Tính tích chập với filters 3 x 3 trên ma trận 2D 5 x 5 để tạo ra ma trận mới có
kích thước 3 x 3
Hình 2.2: Minh họa việc áp dụng filters trên ma trận đầu vào [6]
Ví dụ 2: Phát hiện đặc trưng cụ thể của ảnh Ở đây ta có một filter 5 x 5 dùng để phát
hiện góc cong, nó sẽ có giá trị 1 tại các điểm tương ứng của một góc cong
Hình 2.3: Minh họa việc áp dụng filter để xác định góc cong của ảnh [7]
2.1.2.2 Relu Layer
− Tầng này được biết đến với một tên gọi khác là activation function (hàm kích
hoạt) Nhiệm vụ của nó là mô phỏng các nơ-ron có thể truyền qua axon, bên cạnh đó còn giúp tính toán đơn giản và cho kết quả tốt hơn Tầng này nằm ngay sau tầng Convolution, Relu sẽ gán những giá trị âm bằng 0 và giữ nguyên những giá trị lớn hơn
0 [8]
− Tuy nhiên, khi sử tầng Relu ta cũng nên chú ý vì nó không có đạo hàm tại điểm
0 Thêm vào đó, khi khởi tạo trọng số cho tầng này cũng nên cẩn thận vì nếu learning rate quá cao thì những nơ-ron sẽ rơi vào trạng thái dead unit, tức là luôn có giá trị < 0 [7]
2.1.2.3 Pooling Layer
− Tầng này thường sẽ được sử dụng sau hàm kích hoạt (Relu layer) Nó có nhiệm
vụ sắp xếp lại các lớp Convolution để làm giảm số lượng Parameter trong trường hợp
dữ liệu đầu vào quá lớn Có 2 loại pooling chính là: max-pooling và average [8]
Trang 26Hình 2.4: Các loại Pooling [9]
− Thực chất chức năng của tầng này là loại bỏ những phần không gian ảnh không
còn cần thiết và giữ lại những đặc trưng để phân loại đối tượng Tầng này có khả năng làm giảm chiều rất nhiều giúp giảm thời gian huấn luyện mô hình [8]
Hình 2.5: Minh họa Pooling Layer [7]
2.1.2.4 Fully connected Layer
− Fully connected là tầng cuối cùng trong kiến trúc mạng CNN, thường thực hiện
việc tổng hợp thông tin từ tất cả các đặc trưng trước đó có được từ tầng Convolution và Relu để đưa ra dự đoán cuối cùng
− Trước khi đưa dữ liệu vào tầng fully connected, thông thường ta phải chuyển
feature map từ tầng trước đó thành một vectơ 1D Vectơ này sẽ chứa xác suất của các đối tượng cần được dự đoán
2.2.1 Tổng quan về mô hình GFP-GAN
− GFP-GAN (Generative Facial Prior – Generative Adversarial Network) là một
mô hình học máy được công bố bởi Tencent vào tháng 1 năm 2021, với nhiệm vụ nhận đầu vào là các hình ảnh khuôn mặt có chất lượng thấp và khôi phục chúng thành các hình ảnh đầu ra có chất lượng cao [10]
− Một khung GFP-GAN bao gồm hai phần chính: một mô-đun loại bỏ suy giảm
trong hình ảnh đầu vào (U-Net) và một mô hình GAN đã được huấn luyện trước, chúng
Trang 27được nối với nhau thông qua các lớp ánh xạ mã tiềm ẩn (Latent Code Mapping) và các lớp biến đổi không gian trên các đặc trưng của ảnh đầu vào (Channel-Split Spatial Feature Transform – CS-SFT)
− Việc sử dụng GFP kết hợp với mô hình GAN không chỉ giúp cải thiện chất lượng
của quá trình khôi phục khuôn mặt nói riêng và đối tượng nói chung mà còn giúp tăng cường độ chính xác và độ tin cậy của các kết quả phục hồi [11]
2.2.2 Kiến trúc chi tiết của mô hình GFP-GAN
2.2.2.1 Degradation Removal Module
− Mô-đun loại bỏ suy giảm (Degradation Removal Module) là một phần quan trọng
trong kiến trúc mô hình GFP-GAN, được thiết kế nhằm loại bỏ các suy giảm của hình ảnh đầu vào như mờ, nhiễu và suy giảm chất lượng do nén JPEG (phương pháp dùng để giảm dung lượng hình ảnh), đồng thời tạo ra các đặc trưng “sạch” từ hình ảnh để sử dụng cho quá trình nhận diện khuôn mặt tiếp theo
− Để thực hiện điều đó, mô-đun này sử dụng U-Net, một kiến trúc mạng nơ-ron
tích chập sâu được sử dụng rộng rãi trong các ứng dụng xử lý hình ảnh và nhận dạng đối tượng Kiến trúc này có khả năng tạo ra dự đoán chi tiết từ các đặc trưng ở đa độ phân giải, giúp cải thiện chất lượng của quá trình phục hồi [10][11]
− Công thức của mô-đun này như sau: [11]
𝑭𝑙𝑎𝑡𝑒𝑛𝑡, 𝑭𝑠𝑝𝑎𝑡𝑖𝑎𝑙 = U-Net(𝒙)
Trong đó:
• 𝒙 là hình ảnh khuôn mặt đầu vào
• 𝑭𝑙𝑎𝑡𝑒𝑛𝑡 là các đặc trưng tiềm ẩn được trích xuất từ hình ảnh đầu vào và được sử dụng để tìm mã tiềm ẩn gần nhất trong mô hình StyleGAN2 (một mô hình đã được huấn luyện trước, thường được sử dụng để tạo ra các khuôn mặt chân thực
và là một điều kiện trước để tạo ra các đặc trưng khuôn mặt phụ hợp), từ đó tạo
ra một hình ảnh tái tạo gần giống nhất với hình ảnh đầu vào
• 𝑭𝑠𝑝𝑎𝑡𝑖𝑎𝑙 là các đặc trưng không gian đa độ phân giải được sử dụng để điều chỉnh các đặc trưng của StyleGAN2
− Để đảm bảo rằng quá trình loại bỏ suy giảm là hiệu quả và tạo ra các đặc trưng
sạch, hàm mất mát phục hồi (Restoration Loss) thường được sử dụng để đo lường sự khác biệt giữa hình ảnh phục hồi và hình ảnh gốc Điều này giúp mô hình cập nhật các
Trang 28tham số để tối ưu hóa việc tái tạo hình ảnh sao cho gần giống nhất với hình ảnh gốc [11]
2.2.2.2 Generative Facial Prior and Latent Code Mapping
− Một mạng GAN đã được huấn luyện trước (StyleGAN) học cách tạo ra các khuôn
mặt chân thực và đa dạng từ dữ liệu huấn luyện Trong quá trình này, thông tin về các đặc điểm và cấu trúc khuôn mặt được tích hợp vào các trọng số của mạng
− Sau khi một hình ảnh đầu vào được xử lý qua một mạng loại bỏ suy giảm, ta thu
được một vector đặc trưng gọi là 𝑭𝑙𝑎𝑡𝑒𝑛𝑡 Sau đó vector này được truyền qua một loạt các lớp tuyến tính, gọi là Multi-Layer Perception (MLP) để biến đổi nó thành một loạt
mã tiềm ẩn trung gian gọi là W Quá trình này giúp giữ lại các đặc tính quan trọng của khuôn mặt như hình dáng và cấu trúc
− Các mã tiềm ẩn trung gian W này sau đó được truyền qua từng lớp tích chập của
mô hình GAN đã được huấn luyện trước Mỗi lớp tích chập này sẽ tạo ra các đặc trưng GAN tương ứng cho mỗi tỷ lệ phân giải của hình ảnh gọi là 𝑭𝐺𝐴𝑁
− Một cách tổng quát, quá trình này giúp chuyển đổi các đặc trưng của hình ảnh
đầu vào thành các đặc trưng có chất lượng cao và phong phú hơn, làm cơ sở cho việc khôi phục và cải thiện hình ảnh [10][11]
− Công thức của quá trình này có thể được biểu diễn như sau:
• Biến đổi thành mã tiềm ẩn trung gian [11]
𝑾 = 𝑴𝑳𝑷(𝑭𝑙𝑎𝑡𝑒𝑛𝑡)
• Tạo ra đặc trưng GAN [11]
𝑭𝐺𝐴𝑁 = 𝑆𝑡𝑦𝑙𝑒𝐺𝐴𝑁(𝑾)
2.2.2.3 Channel-Split Spatial Feature Transform
− Trong quá trình phục hồi khuôn mặt, thông tin về vị trí và mối quan hệ giữa các
điểm dữ liệu trong không gian hình ảnh là rất quan trọng Do đó, GFP-GAN sử dụng những đặc trưng không gian đầu vào (𝑭𝑠𝑝𝑎𝑡𝑖𝑎𝑙) được tạo ra từ mạng U-Net trước đó nhằm áp dụng vào việc điều chỉnh các đặc trưng GAN (𝑭𝐺𝐴𝑁) sau này
− Spatial Feature Transform (SFT) là phương pháp cho phép thực hiện biến đổi
không gian trên các đặc trưng Ở mỗi tỷ lệ phân giải của hình ảnh, nó tạo ra các tham số biến đổi affine (tỷ lệ, dịch chuyển, quay,…) từ các đặc trưng của không gian đầu vào
Trang 29Sau đó, các tham số này được sử dụng để điều chỉnh các đặc trưng GAN tương ứng, giúp bảo toàn thông tin trong không gian và độ chân thật của hình ảnh
− Channel-Split Spatial Feature Transform (CS-SFT) là phương pháp được đề xuất
để cải thiện sự cân bằng giữa “tính thật” và “tính chân thật” trong quá trình phục hồi ảnh Các lớp CS-SFT cho phép thực hiện biến đổi không gian trên một phần của các đặc trưng GAN, trong khi vẫn giữ nguyên các đặc trưng còn lại Điều này giúp tạo ra các hình ảnh phục hồi có sự kết hợp lý tưởng giữa độ chân thật và sự thực tế [10][11]
Hình 2.6: Hình ảnh trước và sau khi được xử lý bằng GFP-GAN [10]
2.3.1 Giới thiệu về mô hình YOLOv2
− YOLOv2 là một phiên bản cải tiến của thuật toán nhận diện đối tượng YOLO
(You Only Look Once)
− Được phát triển và công bố bởi Joseph Redmon và Ali Farhadi vào cuối năm
2016 với những tính năng tốt hơn, nhanh hơn và tiên tiến hơn YOLO v1 [12]
2.3.2 Các khái niệm quan trọng trong mô hình YOLO
2.3.2.1 Anchor Box
a Anchor Box là gì?
− Anchor box là một ý tưởng của mô hình Faster R-CNN và được YOLO v2 tận
dụng lại để mạng dự đoán các bounding box dễ dàng hơn qua việc bỏ đi 2 lớp Fully Connected cuối cùng
− Anchor box là một tập các bounding box đã được xác định trước với chiều cao
(height) và chiều rộng (width) Có thể nói như vậy vì người ta nhận thấy rằng, trong hầu hết các bộ dữ liệu thì bounding box có hình dạng tuân theo những tỷ lệ và kích cỡ xác
Trang 30định Ta có thể sử dụng thuận toán K-means để tìm ra được kích thước và tỷ lệ của các bounding boxes đại diện cho các boxes phổ biến [13]
Hình 2.7: Dùng thuật toán K-Means để tìm các Anchor Boxes phổ biến [13]
− Các Anchor boxes sẽ phủ lên toàn bộ ảnh đầu vào để có khả năng bao phủ đối
tượng xuất hiện ở bất kỳ đâu trên ảnh Bên cạnh đó, Anchor box còn được đặt ở các vị trí đối xứng trên ảnh, điều này giúp mô hình không chỉ tập trung vào một số vị trí cụ thể
mà còn có khả năng dự đoán đối tượng ở các vị trí đối xứng [14]
Hình 2.8: Minh họa các Anchor Boxes phủ lên toàn bộ ảnh [14]
b Lợi ích khi sử dụng Anchor Box
− Anchor box giúp loại bỏ việc phải quét qua toàn bộ ảnh bằng cửa sổ trượt, thay
vào đó mỗi Anchor box có thể tập trung vào một vùng cụ thể của ảnh và dự đoán vị trí của đối tượng
− Tích hợp mạng nơ-ron tích chập (CNN) giúp xử lý toàn bộ ảnh cùng một lúc thay
vì phải quét qua từng vùng nhỏ bằng cửa sổ trượt Thêm vào đó, một quá trình gọi là Convolutional Correspondence (tương ứng tích chập) giúp liên kết một vị trí trong
Trang 31không gian đầu vào với một vị trí trong không gian đầu ra, giúp bảo toàn các đặc trưng được trích xuất và giữ nguyên vị trí tương ứng của chúng trong không gian đầu vào ở không gian đầu ra
− Việc kết hợp Anchor box và CNN giúp tối ưu hóa quá trình dự đoán vị trí đối
tượng Xử lý toàn bộ ảnh cùng một lúc giúp mô hình có thể thực hiện nhanh chóng ngay
cả các giai đoạn quan trọng như phát hiện đối tượng, mã hóa đặc trưng và phân loại [14]
2.3.2.2 Intersection over Union
a Khái niệm
− IoU là tỉ lệ của phần trùng lấp giữa diện tích được dự đoán và diện tích thực tế
với phần liên kết (tổng) giữa diện tích dự đoán và diện tích thực tế Giá trị IoU nằm trong khoảng từ 0 đến 1 Khi giá trị bằng 0 thì không có overlap và khi giá trị bằng 1 nghĩa là overlap hoàn toàn
Hình 2.9: Công thức tính IoU [14]
− Giả sử hộp có viền màu xanh là phần dự đoán, viền màu đỏ là phần thực tế thì
phần overlap giữa viền xanh và viền đỏ gọi là intersection Tổng diện tích của phần đỏ cộng với phân xanh trừ đi intersection gọi là Union Chúng ta có thể nhìn hình bên dưới
Hình 2.10: Chi tiết công thức tính IoU [14]
Trang 32b Đánh giá chỉ số IoU
− Với sự hỗ trợ của chỉ số Iou, chúng ta có thể đưa ra quyết định kết quả dự đoán
là True Positive (TP), False Positive (FP) hoặc False Negative Dưới đây là ví dụ:
Hình 2.11: Ví dụ về cách đánh giá chỉ số IoU [14]
− Xét ví dụ là ảnh trên, giả sử ta cho giá trị alpha là 0.5, thì hình bên trái có giá trị
0.96 > 0.5 nên là TP, hình giữa có giá trị 0.22 < 0.5 nên là FP, còn hình bên phải giá trị bằng 0 nên là FN
2.3.2.3 Metrics
a Khái niệm
− Metrics là một hàm trong keras để đo lường hiệu suất của mô hình Hàm loss và
metrics giống nhau, nhưng có một điểm khác nhau trong việc sử dụng kết quả trong quá trình training Trong hàm Loss, kết quả tạo ra được sử dụng trong quá trình training, trong khi đó hàm metrics dùng để đánh giá trong quá trình training [14]
b Tạo hàm Metrics
− Simple callables: Có kí hiệu là metric_fn(y_true, y_pred) Trả về một mảng các
loss có thể truyền tới compile() như là một metric [14]
− Subclasses of Metric:
• Đầu tiên tạo biến state trong init
• Cập nhật biến y_true, y_pred trong update_state()
• Trả về kết quả trong result()
• Xóa biến state trong reset_states()
2.3.2.4 DropBlock
Trang 33a Khái niệm
− DropBlock là một phương pháp khá giống với dropout, có điểm khác là nó lược
bỏ những vùng gián tiếp từ feature map của a lớp thay vì lược bỏ bằng cách random ngẫu nhiên Hình bên dưới mô tả thuật toán:
Hình 2.12: Mô tả thuật toán DropBlock [14]
− DropBlock có hai tham số chính là block_size và γ Giá trị block_size là kích
thước thước của block được lược bỏ, giá trị γ dùng để kiểm soát số lượng features để lượt bỏ [14]
b Thiết lập giá trị 𝜸
− Giả sử chúng ta muốn giữ mọi đơn vị kích hoạt với xác suất là keep_prob Trong
việc lược bỏ binary mask sẽ được lấy mẫu với phân phối Bernoulli với giá trị trung bình
là 1 - keep_prob γ có thể được tính như sau: [14]
Trong đó:
• keep_prob: xác suất của việc chọn một đơn vị trong dropout cổ điển
• block_size: kích thước thước của block được lược bỏ
• feat_size: kích thước của feature map
2.3.2.5 Non-Maximum Suppression
a Khái niệm
− Đối tượng trong hình ảnh có thể có nhiều kích thước và hình dạng khác nhau Để
bao hết được đối tượng, thuật toán phải tạo nhiều bounding box và chọn ra một bounding
Trang 34box tốt nhất để bao đối tượng thông qua việc sử dụng thuật toán Non-Maximum Suppression (NMS) [14]
b Cách thức hoạt động
− Non-Maximum Suppression được chia thành 2 giai đoạn:
• Lựa chọn những bounding box có score lớn hơn ngưỡng xác định trước
• Tính IoU cho từng cặp Bounding Box để loại bỏ bớt đi Bounding Box overlap và chọn ra Bounding Box tốt nhất
− Quan sát hình dưới để dễ hình dung:
Hình 2.13: Ví dụ về việc áp dụng NMS [14]
2.3.3 Kiến trúc mô hình YOLOv2
2.3.3.1 Backbone
− YOLOv2 sử dụng một mạng nơ-ron tích chập làm cơ sở (backbone network) để
trích xuất đặc trưng từ ảnh đầu vào
− Trong khi YOLOv1 sử dụng backbone Darknet với 24 lớp Convolutional, 5 lớp Max Pooling thì mô hình YOLOv2 sử dụng backbone Darknet-19 với 19 lớp
Convolutional và 5 lớp Max Pooling
− YOLOv2, kích thước ảnh đầu vào tăng từ 224 x 224 dùng cho YOLOv1 lên 416
x 416 Ngoài ra, mô hình còn sử dụng ảnh đầu vào với kích thước 512 x 512 và 608 x
608 (tùy yêu cầu bài toán) [14]
Trang 35Hình 2.14: Backbone của mô hình YOLOv2 [14]
2.3.3.2 Neck
− Neck là một phương pháp được giới thiệu gần đây trong bài toán nhận diện Nó
được sử dụng kết hợp với backbone để giúp mô hình hiểu được các thông tin sâu và phức tạp hơn về các đối tượng trong ảnh Thêm vào đó, Neck còn làm tăng sự phong phú của các đặc trưng được trích xuất cho các đối tượng có hình dạng và kích thước khác nhau [4]
− Trong mô hình YOLOv2, có sự mở rộng nhỏ ở cấu trúc Neck Để phát hiện các
đối tượng có kích thước nhỏ, các lớp Re-Organize được tạo ra, thực hiện song song với
Trang 36các lớp Convolutional và kết nối lại với nhau Điều này giúp cho mô hình tập trung vào việc nhận diện các đối tượng nhỏ và chi tiết [14]
Hình 2.15: Kiến trúc Neck trong mô hình YOLOv2 [14]
2.3.3.3 Head
− Trong mạng YOLO, Head là phần chịu trách nhiệm tạo ra các dự đoán cuối cùng
về bounding box bao gồm tọa độ (x, y) của tâm, lớp của đối tượng, độ tin cậy (confident), chiều rộng (width) và chiều cao (height) Các tọa độ này được tối ưu hóa để chứa đối tượng trong ảnh
− Nó là bước kết thúc của mạng và đóng vai trò quyết định trong việc xác định vị
trí và loại của các đối tượng trong ảnh Các lớp này được xác định trước trong quá trình huấn luyện và phản ánh loại đối tượng cụ thể (ví dụ: ô tô, mèo, chó,…)
− Head sử dụng ba hàm mất mát lần cho lớp (class), bounding box và độ tin cậy
của đối tượng nhằm đo lường độ chính xác của các dự đoán so với thực tế
− Thay vì dự đoán trực tiếp giá trị tọa độ và kích thước của bounding box, mô hình
sẽ dự đoán xác suất rằng có đối tượng nào nằm trong mỗi Anchor box không Xác suất này thường được tính bằng cách áp dụng hàm sigmoid để đảm bảo rằng giá trị luôn nằm trong khoảng từ 0 đến 1 [12][14]
− Bên cạnh việc dự đoán xác suất, YOLOv2 còn dự đoán bộ offset (độ lệch giữa
bounding box và anchor box) với mục đích điều chỉnh Anchor ox gốc và làm nó trở nên bounding box chứa đối tượng thực tế [12]
Trang 37− Các công thức chuyển đổi offset thành tọa độ và kích thước của bounding box
• 𝑝𝑤, 𝑝ℎ là chiều rộng và chiều cao của anchor box
• 𝑏𝑥, 𝑏𝑦, 𝑏𝑤, 𝑏ℎ là tọa độ của bounding box muốn dự đoán
• σ(𝑡𝑥) là hàm sigmoid (xác suất của dự đoán)
Hình 2.16: Dự đoán Bounding Box trong YOLOv2 [12]
− Ngoài dự đoán dựa vào các yếu tố trên, mô hình còn đánh giá hiệu suất bằng cách
sử dụng IoU (Intersection over Union) để đo độ chồng lấp giữa bounding box dự đoán
và bounding box thực tế, việc này giúp xác định bounding box nào được coi là dự đoán đúng khi so sánh với một IoU xác định trước [14]
− Cuối cùng, những Anchor box liên quan đến background (nền), những dự đoán
sai hoặc không liên quan đến bất kỳ đối tượng nào sẽ được loại bỏ (bằng cách so sánh với một ngường threshold nào đó) Giữ lại các Anchor có độ tin cậy cao và dùng phương pháp NMS (Nonmaximum Suppression) để loại những Anchor box trùng lặp (dùng chỉ
số IoU)
Trang 382.3.4 Loss Function (Hàm mất mát)
− Loss Function (hàm mất mát) trong mô hình YOLOv2 khá giống với YOLOv1 ở
điểm đều xem đây là một vấn đề bao gồm việc dự đoán vùng của đối tượng và phân loại đối tượng Nó cũng được chia ra thành ba phân chính là:
• Confidence Loss: Xác định xem liệu có đối tượng nào trong hộp dự đoán không
• Box Regression Loss: Khi hộp dự đoán chứa đối tượng, hàm loss này giúp cải thiện độ chính xác của việc dự đoán vị trí và kích thước của hộp
• Classification Loss: Xác định đối tượng trong hộp dự đoán thuộc loại đối tượng nào [14]
− Tuy nhiên, khi nhìn lại kiến trúc của hai mô hình, ta có thể thấy rằng mô hình
YOLOv2 không sử dụng các lớp FCs mà sử dụng các anchor boxes để dự đoán ra các bounding boxes, điều này khác với mô hình YOLOv1 Do đó, hàm loss của YOLOv2 không chỉ phụ thuộc vào i (chỉ số của ô lưới) và c (lớp của đối tượng) mà còn phụ thuộc vào chỉ số của anchor box kí hiệu là j [15]
− Trong hàm Loss của YOLOv2 sẽ có các ký hiệu như sau: [14]
• 𝑁𝐿𝑜𝑏𝑗 = ∑𝑆𝑖 =02 ∑𝐵𝑗=0𝐿𝑜𝑏𝑗𝑖,𝑗 là số lượng bounding box có chứa đối tượng
• 𝑁𝑐𝑜𝑛𝑓 = ∑𝑆𝑖 =02 ∑𝐵𝑗=0𝐿𝑜𝑏𝑗𝑖,𝑗 + 𝐿𝑛𝑜𝑜𝑏𝑗𝑖,𝑗 (1 − 𝐿𝑜𝑏𝑗𝑖,𝑗 ) xác định xem bounding box nào đó
có chứa đối tượng không, nếu có được đặt bằng 1, ngược lại bằng 0
• 𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑖𝑜𝑛𝑖,𝑗 = (𝑥̂i,j, 𝑦̂i,j, 𝑤̂i,j, ℎ̂i,j) là tọa độ và kích thước của khung bao dự đoán cho đối tượng j trong ô lưới i
• 𝑔𝑟𝑜𝑢𝑛𝑑 𝑡𝑟𝑢𝑡ℎ𝑖,𝑗 = (xi,j, yi,j, wi,j, hi,j) là tọa độ và kích thước của khung bao thực
tế cho đối tượng j trong ô lưới i
• λ𝑐𝑜𝑜𝑟𝑑 là hệ số điều chỉnh mức độ quan trọng của mất mát tọa độ
• λ𝑐𝑙𝑎𝑠𝑠 là hệ số điều chỉnh mức độ quan trọng của mất mát phân loại
• λ𝑜𝑏𝑗 là hệ số điều chỉnh mức độ quan trọng của mất mát độ tin cậy khi hộp có đối tượng
• λ𝑛𝑜𝑜𝑏𝑗 là hệ số điều chỉnh mức độ quan trọng của mất mát độ tin cậy khi hộp không có đối tượng
• Ci,j là độ tin cậy thực tế
• 𝐶̂𝑖,𝑗 là độ tin cậy dự đoán
Trang 39• pi,i(c) là xác suất thực tế của lớp c
• 𝑝̂𝑖,𝑗(c) là xác suất dự đoán của lớp c
• S2 là số ô trong lưới (grid cells)
• B là số hộp giới hạn được dự đoán trong mỗi ô
• 𝐿𝑜𝑏𝑗𝑖,𝑗
xác định rằng hộp giới hạn j trong ô lưới i có chứa đối tượng (bằng 1 nếu độ tin cậy thực tế bằng 1 và ngược lại bằng 0) [15]
• 𝐿𝑛𝑜𝑜𝑏𝑗𝑖,𝑗
xác định rằng hộp giới hạn j trong ô lưới i không chứa đối tượng (bằng 1
nếu IoU < 0.6 và độ tin cậy thực tế bằng 0, ngược lại bằng 0) [15]
2.3.4.2 Box Regression Loss
− Box Regression Loss hay Localization Loss là hàm mất mát được sử dụng để đo
lường sai số giữa khung bao (hộp giới hạn) dự đoán và khung bao thực tế của đối tượng Đặc biệt, nó chỉ đo lường mất mát của khung bao nào được dự đoán cao nhất sẽ chứa đối tượng (dựa trên IoU) và bỏ qua các khung bao dự đoán khác trong cùng ô lưới
− Tác giả không muốn đặt sự quan trọng của sai số tuyệt đối ở hộp giới hạn có kích
thước nhỏ và lớn bằng nhau, nên mô hình YOLOv2 đã thay việc dự đoán dựa trên chiều rộng (w) và chiều dài (h) của hộp bằng căn bậc hai của chúng (√𝑤 và √ℎ) Điều này
Trang 40làm cho sai số được giảm thiểu đáng kể và tăng độ chính xác khi nhận diện các hộp nhỏ hơn [14]
− Thêm vào đó, để tăng cường độ chính xác của hộp giới hạn, hàm Localization
Loss còn thêm vào công thức trọng số λ𝑐𝑜𝑜𝑟𝑑 Nói cách khác, việc thêm trọng số này vào công thức sẽ giúp phần chênh lệch liên quan đến vị trí và kích thước của hộp giới hạn được tăng cao hơn trong công thức tổng hàm mất mát của mô hình YOLOv2 [14]
− Công thức của hàm Loss này như sau: [15]
𝒍𝒐𝒔𝒔𝒊,𝒋𝒙𝒚𝒘𝒉 = 𝛌𝒄𝒐𝒐𝒓𝒅
𝑵𝑳𝒐𝒃𝒋 ∑𝑺𝒊 = 𝟎𝟐 ∑𝑩𝒋 = 𝟎𝑳𝒊,𝒋𝒐𝒃𝒋[(𝒙𝒊,𝒋 − 𝒙𝒊,𝒋)2 + (𝒚𝒊,𝒋− 𝒚̂𝒊,𝒋) 2
+ (√𝒘𝒊,𝒋 − √𝒘̂𝒊,𝒋) 2 + (√𝒉𝒊,𝒋 − √𝒉̂𝒊,𝒋) 2
2.3.4.3 Classification Loss
− Trong mô hình YOLOv2, Classification Loss (hàm mất mát phân loại) được tính
dựa trên sai số bình phương của xác suất điều kiện theo lớp (xác suất một đối tượng trong ảnh thuộc vào lớp nào đó) Mục tiêu của nó là đánh giá sự chênh lệch giữa xác suất dự đoán và xác suất thực tế cho các lớp khác nhau ở mỗi ô trong lưới [3]
− Công thức của hàm mất mát phân loại của mô hình YOLOv2 như sau: [15]
𝒍𝒐𝒔𝒔𝒊,𝒋𝒑 = −𝛌𝒄𝒍𝒂𝒔𝒔
𝑵𝑳𝒐𝒃𝒋 ∑𝑺𝒊 = 𝟎𝟐 ∑𝑩𝒋 = 𝟎𝑳𝒊,𝒋𝒐𝒃𝒋∑𝒄 ∈ 𝒄𝒍𝒂𝒔𝒔𝒑𝒊,𝒋𝒄 𝒍𝒐𝒈(𝒑̂𝒊,𝒋𝒄 )
2.3.4.4 Hàm Loss tổng
− Công thức hàm mất mát cuối cùng của mô hình YOLOv2 được tính bằng cách
lấy tổng của ba hàm: Confidence Loss, Localization Loss và Classification Loss
− Việc kết hợp ba thành phần này giúp mô hình có thể xác định chính xác vị trí của
các đối tượng, xác định sự có mặt của đối tượng trong ảnh và phân loại chúng đúng cách hơn
− Bên cạnh đó, việc thêm vào hàm mất mát các chỉ số λ giúp mô hình dễ dàng tinh
chỉnh quá trình huấn luyện của mô hình nhằm đạt được kết quả cũng như hiệu suất tốt nhất [14][15]
𝒍𝒐𝒔𝒔𝒊,𝒋 = 𝒍𝒐𝒔𝒔𝒊,𝒋𝒙𝒚𝒘𝒉 + 𝒍𝒐𝒔𝒔𝒊,𝒋𝒑 + 𝒍𝒐𝒔𝒔𝒊,𝒋𝒄