Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 76

ĐỒ ÁN TỐT NGHIỆP

Xây dựng hệ thống tự động nhận diện biển báo


giao thông trong điều kiện khó ứng dụng hỗ trợ
cho xe tự lái
HOÀNG ANH DŨNG
dung.ha184401@sis.hust.edu.vn

Chuyên ngành Cơ điện tử

Giảng viên hướng dẫn: TS. Nguyễn Xuân Hạ


Chữ ký của GVHD

Bộ môn: Cơ sở Thiết kế máy và Robot


Viện: Cơ Khí

HÀ NỘI, 7/2022
Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
VIỆN CƠ KHÍ Độc lập - Tự do - Hạnh phúc

NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP

Họ và tên sinh viên: Hoàng Anh Dũng


Khoá: 63 Lớp: Cơ điện tử 06 Chuyên ngành: Cơ điện tử.
Tên đề tài tốt nghiệp: Xây dựng hệ thống tự động nhận diện biển báo giao thông trong
điều kiện khó ứng dụng hỗ trợ cho xe tự lái

NỘI DUNG NHẬN XÉT


I. Khối lượng đồ án:
1. Phần thuyết minh: 64 trang
II. Nhận xét

SVTH: Hoàng Anh Dũng


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Lời cảm ơn
Chặng đường 4 năm tại trường Đại học Bách Khoa Hà Nội là một trải nghiệm vô cùng
quý giá đối với em. Đó không chỉ là một khoảng thời gian dài mà còn là một thử thách vô
cùng khó khăn, tuy nhiên với sự giúp đỡ nhiệt tình của các thầy cô , các thành viên trong
lớp Cơ điện tử K63, bạn bè và gia đình yêu quý, em đã dần hoàn thành được chặng
đường gian nan này.
Trước hết em muốn gửi lời cảm ơn chân thành tới Tiến sĩ Nguyễn Xuân Hạ và các thầy
cô của bộ môn Cơ sở Thiết kế máy và Robot đã nhiệt tình hướng dẫn giúp em hoàn thành
luận văn tốt nghiệp một cách tốt nhất.
Tiếp đến em muốn gửi lời cảm ơn tới anh Nguyễn Duy Anh, anh Bùi Việt Hoàng đã giúp
đỡ trong quá trình em thực hiện luận văn tốt nghiệp.
Quá trình hoàn thành đồ án tốt nghiệp không chỉ giúp em củng cố lại các kiến thức đã
từng được học mà còn giúp em làm quen với cách thức làm việc của một người kỹ sư, đó
là ý thức làm việc độc lập, tư duy sáng tạo và tính kỷ luật, trách nhiệm đối với công việc
được giao.
Và cuối cùng do thời gian thực hiện dự án tương đối ngắn và kiến thức đối với chủ đề
được giao vẫn còn hạn chế, em rất mong có thể nhận được những góp ý, nhận xét chân
thành để giúp bản luận văn của em sẽ được cải thiện tốt hơn nữa.

Tóm tắt nội dung đồ án


Xe tự lái là lĩnh vực nghiên cứu đang thu hút được rất nhiều sự quan tâm của các hãng
công nghệ lớn trên toàn thế giới. Một trong những bài toán của xe tự lái là trích xuất
thông tin từ môi trường (Perception), trong đồ án này em sẽ tập trung đi vào xử lý một
bài toán nhỏ của Perception đó là vấn đề nhận diện biển báo giao thông trên đường.
Trong khuôn khổ của đồ án, em đã xây dựng hệ thống nhận diện và phân loại biển báo
giao thông có kích thước nhỏ,áp dụng các kĩ thuật preprocessing giúp nâng cao hiệu suất
cho mô hình.

Sinh viên thực hiện

SVTH: Hoàng Anh Dũng


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

MỤC LỤC

DANH MỤC HÌNH VẼ....................................................................................vii


DANH MỤC BẢNG BIỂU.................................................................................x
DANH SÁCH THUẬT NGỮ.............................................................................xi
CHƯƠNG 1. TỔNG QUAN VỀ XE TỰ LÁI....................................................1
1.1 Công nghệ xe tự lái và các ứng dụng hiện nay..........................................1
1.2 Các cấp độ của xe tự lái.............................................................................3
1.3 Những ứng dụng của AI trong xe tự lái.....................................................4
1.4 Bài toán trích xuất thông tin môi trường trong xe tự lái............................9
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT.................................................................14
2.1 Học máy, học sâu....................................................................................21
2.2.1 Học máy cơ bản........................................................................22
2.2.2 Phương pháp huấn luyện các mô hình học sâu.........................27
2.2.3 Overfitting – Quá khớp.............................................................33
2.2.4 Phân loại các bài toán trong thị giác máy.................................34
2.2 Bài toán phát hiện vật thể (object detection) và các mạng xương sống
phổ biến trong mô hình học sâu...............................................................36
2.2.1 Các mô hình nhận diện vật thể..................................................37
2.2.2 Các mạng xương sống(backbone) phổ biến..............................38
2.3 Các điều kiện thách thức trong môi trường thực tế..................................44
2.3.1 Biển báo giao thông được quan sát với kích thước nhỏ............37
2.3.2 Các điều kiện challenging khác................................................38
2.5 Các kĩ thuật xử lí nâng cao hiệu suất cho mô hình..................................45
2.5.1 Sliding window.........................................................................37
2.5.2 Region proposals......................................................................38
2.5.3 Chỉnh sửa Anchor box..............................................................38
CHƯƠNG 3. HUẤN LUYỆN MÔ HÌNH NHẬN DIỆN BIỂN BÁO GIAO
THÔNG........................................................................................48
3.1 Huấn luyện mô hình phát hiện biển báo giao thông.................................48

SVTH: Hoàng Anh Dũng


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

3.1.1 Chuẩn bị dữ liệu.......................................................................37


3.1.2 Chuyển định dạng dữ liệu.........................................................38
3.1.3 Huấn luyện mô hình.................................................................38
3.2 Huấn luyện mô hìnb phần loại biển báo giao thông.................................56
3.2.1 Chuẩn bị dữ liệu.......................................................................37
3.1.2 Chuyển định dạng dữ liệu.........................................................38
3.1.3 Huấn luyện mô hình.................................................................38
3.3 Kết hợp 2 model detector và classifier để được model cuối cùng phát hiện
và phân loại biển báo giao thông.............................................................60
CHƯƠNG 4. KẾT LUẬN.................................................................................65
4.1 Kết luận...................................................................................................65
4.2 Hướng phát triển của đồ án trong tương lai.............................................65
TÀI LIỆU THAM KHẢO................................................................................66

SVTH: Hoàng Anh Dũng


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

DANH MỤC HÌNH VẼ

Hình 1-1.Công nghệ ô tô tự lái ngày càng phát triển…………………………………….1


Hình 1-2. Các tính năng trên xe tự hành được hoàn thiện theo thời gian………………..2
Hình 1-3. Hệ thống kiểm soát hành trình của công nghệ ô tô tự lái……………………..4
Hình 1-4. Thang đo 6 cấp độ xe tự lái theo phân loại của SAE International…………..6
Hình 1-5. Hệ thống kiểm soát hành trình thích ứng AAC được coi là công nghệ xe tự
hành Cấp độ 1……………………………………………………………………………7
Hình 1-5. Việc phát triển xe tự lái sẽ phụ thuộc vào công nghệ bản đồ hóa môi trường
xung quanh………………………………………………………………………………8
Hình 1-6. Những chiếc xe tự lái Cấp độ 5 có khả năng vận hành ở mọi nơi mà không bị
ràng buộc về bất kỳ điều kiện nào………………………………………………………9
Hình 1-7. Công nghệ AI ngày càng ảnh hưởng mạnh mẽ đến đời sống của con
người……………………………………………………………………………………11
Hình 1-8. Công nghệ AI trên ô tô được phát triển với mục đích đảm bảo sự an toàn cho
người điều khiển xe……………………………………………………………………..12
Hình 1-9. Sơ đồ xử lý bài toán trích xuát thông tin từ môi trường……………………..13
Hình 1-10. Nhận diện vật thể từ dữ liệu 3D pointclound ……………………………...15
Hình 1-11. Ảnh độ sâu …………………………………………………………………16
Hình 1-12. Ảnh nhìn từ góc cao của dữ liệu Lidar 3D ………………………………...16
Hình 2-1. Các khái niệm cơ bản trong trí tuệ nhân tạo…………………………………18
Hình 2-5. Gradient dưới góc nhìn vật lý ……………………………………………….21
Hình 2-6. Đồ thị hàm mất mát khi sử dụng gradient…………………………………...23
Hình 2-7. Đồ thị tính toán của f ………………………………………………………..24
Hình 2-8. Vai trò của hàm kích hoạt …………………………………………………...25
Hình 2-9. Đồ thị hàm Sigmoid ………………………………………………………....26
Hình 2-10. Đồ thị hàm tanh ……………………………………………………………..26
Hình 2-11. Đồ thị hàm ReLU ………………………………………………………..….27
Hình 2-12. Đồ thi hàm Leaky ReLU …………………………………………………....28
Hình 2-13. Learning rate …………………………………………………………..…..28

SVTH: Hoàng Anh Dũng


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-14. Learning rate decay: linear warmup………………………………………29


Hình 2-15. Ý tưởng transfer learning ………………………………………………...30
Hình 2-16. Các trường hợp mô hình dự đoán so với hàm thật ………………………31
Hình 2-14. Bài toán phân loại ảnh……………………………………………………33
Hình 2-15. Bài toán nhận dạng đối tượng ……………………………………………33
Hình 2-16. Bài toán phân đoạn ảnh …………………………………………………..34
Hình 2-17. Bài toán phân đoạn cá thể trong ảnh……………………………………...34
Hình 2-18. Bài toán mô tả ảnh………………………………………………………..35
Hình 2-19. Hình ảnh mô tả mô hình RCNN, một mô hình đại diện cho phương pháp
Two-stage Detection …………………………………………………………………36
Hình 2-20. Phương pháp One-stage tìm kiếm và phát hiện vật thể cũng như phân loại
chúng chỉ trong một thuật toán………………………………………………………..37
Hình2-21.Chỉ số IoU………………………………………………………………….38
Hình 2-22. Precision Recall Curve – đường biểu diễn mối quan hệ giữa Precision và
Recall…………………………………………………………………………………38
Hình 2-23. Residual Block …………………………………………………………..39
Hình 2-24. Cách tính số lượng tham số đối với tích chập 2 chiều thông thường…...41
Hình 2-25. Biển báo giao thông rất nhỏ trong hình(kích thước 5x5 pixel)…………41
Hình 2-26. Biển báo giao thông trong các điều kiện challenging khác……………...42
Hình 2-27. Các vùng trong bức ảnh được tạo ra bằng phương pháp trượt cửa
sổ……………………………………………………………………………………..43
Hình 2-28. Sliding window image processing……………………………………….44
Hình 2-29. Tìm kiếm chọn lọc của OpenCV sử dụng phương pháp Felzenszwalb
superpixel để tìm các vùng của hình ảnh có thể chứa một đối tượng……………….45
Hình 2-30: Tìm kiếm chọn lọc của OpenCV áp dụng các biện pháp tương tự phân cấp
cho các vùng tham gia và cuối cùng tạo thành tập hợp các đề xuất cuối cùng cho các đối
tượng có thể có mặt…………………………………………………………………..46
Hình 2-29: Xác định anchor box cho một vật thể……………………………………47
Hình 2-30: Công thức ước lượng bounding box từ anchor box……………………...48
Hình3-1. Sơ đồ xử lý của bài toán……………………………………………………49
Hình 3-2:Hình ảnh gốc trước khi sliding windown (1622x626 pixel)………………49
Hình 3-3: Thu được 3 hình ảnh sau khi sliding windown…………………………….50
Hình 3-4: Ví dụ về một label cho một ảnh đã crop…………………………………..51

SVTH: Hoàng Anh Dũng


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 3-5: Cấu trúc cây thư mục của dữ liệu train……………………………………..51
Hình 3-6: Kiến trúc của mô hình Retinaface…………………………………………..52
Hình 3-7: Chỉnh sửa file cấu hình………………………………………………………53
Hình 3-8: Tính toán mAP cho một lớp, chỉ phát hiện biển báo giao thông……………54
Hình 3-9. Kết quả dự đoán trên tập testing……………………………………………...55
Hình 3-10. Thống kê dữ liệu cho mỗi lớp……………………………………………….56
Hình 3-12: Dữ liệu dùng để train model classifier……………………………………...56
Hình 3-13. Đồ thị sai số và độ chính xác khi huấn luyện……………………………....57
Hình 3-14. Thống kê dữ liệu dùng để đánh giá mô hình cuối cùng……………………..57
Hình 3-15. Thống kê False Positive và True Positive trong mỗi class………………….58
Hình 3-16. Vẽ đường Recall-Precision curve…………………………………………....59
Hình 3-17.Tính mAP50 cuối cùng……………………………………………………...59
Hình 3-18. Minh họa về việc phát hiện các biển báo giao thông của bộ dữ liệu
Zalo………………………………………………………………………………………60

DANH SÁCH THUẬT NGỮ

ST
Thuật ngữ Giải thích
T
1 Accuracy Độ chính xác
2 Anchor box Hộp bao cơ sở để dự đoán các hộp bao khác
3 Artificial intelligence Trí tuệ nhân tạo, trí thông minh nhân tạo
4 Backbone Mạng xương sống
5 Bounding box Hộp bao
6 Class Lớp
7 Classification Phân loại
8 Cnn Mạng nơ ron tích chập sâu
9 Cross validation Một kĩ thuật để đánh giá độ chính xác của mô hình
10 Data Dữ liệu
11 Dataset Bộ dữ liệu

SVTH: Hoàng Anh Dũng


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

12 Early stopping Kĩ thuật dừng huấn luyện mô hình sớm


13 Epoch Một lần duyệt qua tất cả các điểm trong tập dữ liệu
15 Fine tuning Tinh chỉnh
16 Framework Nền tảng
17 Fully connected layer (FC) Tầng kết nối đầy đủ
18 Gradient descent Một phương pháp lặp tìm cực trị địa phương
19 Hyperparameter Siêu tham số
20 Instance Cá thể
21 Instance segmentation Phân đoạn cá thể ảnh
22 Iteration Vòng lặp
23 Label Nhãn
24 Layer Tầng
25 Learning rate Tốc độ học
26 Linear regression Hồi quy tuyến tính
27 Loss function Hàm mất mát
28 Machine learning Máy học, học máy
29 Neural network Mạng nơ ron
30 Object detection Phát hiện vật thể
31 Overfitting Quá khớp
32 Precision Tỉ lệ chính xác
33 Recall Tỉ lệ tái hiện
34 Test data Dữ liệu kiểm tra
35 Training data Dữ liệu huấn luyện
36 Transfer learning Học tập chuyển giao
37 Underfitting Không khớp
38 Validation Một kĩ thuật để đánh giá độ chính xác của mô hình
39 Validation set Tập dữ liệu đánh giá

SVTH: Hoàng Anh Dũng


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

CHƯƠNG 1. TỔNG QUAN VỀ XE TỰ LÁI

1.1. Công nghệ xe tự lái và các ứng dụng hiện nay


Xe tự lái còn gọi là xe tự hành (self-driving car) có khả năng cảm nhận môi trường
xung quanh và di chuyển an toàn với ít hoặc không có sự can thiệp của con người.Xe tự
lái kết hợp các công nghệ có khả năng cảm biến môi trường xung quanh như radar, lidar,
sonar, định vị GPS, trí tuệ nhân tạo(AI),... Hệ thống điều khiển nâng cao sẽ phân tích
thông tin thu được để xác định đường đi phù hợp, cũng như chướng ngại vật và biển báo
liên quan.

Công nghệ ô tô tự lái đã “chớm nở” từ rất sớm và đạt được nhiều thành tựu nổi bật ở thời
điểm hiện tại, hứa hẹn sẽ mang đến triển vọng phát triển cho ngành công nghiệp tự động
hóa trong tương lai. Công nghệ ô tô tự lái ngày càng phát triển và trở nên thịnh hành hơn
khi thị trường đòi hỏi những đột phá để mở ra kỷ nguyên mới cho ngành công nghiệp tự
động hóa.

Hình 1-17.Công nghệ ô tô tự lái ngày càng phát triển

SVTH: Hoàng Anh Dũng 1


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

1. Lịch sử phát triển công nghệ ô tô tự lái

Năm 1939, trong cuộc triển lãm của General Motors, Norman Bel Geddes đã tạo ra
chiếc xe hơi tự lái đầu tiên. Đó là chiếc xe điện từ trường điều khiển bằng sóng vô tuyến
tạo thành nhờ các gai kim loại từ hóa được gắn trên đường. 

Năm 1977, Nhật Bản đã cải tiến ý tưởng trên bằng cách sử dụng hệ thống camera chuyển
dữ liệu đến máy tính để xử lý hình ảnh con đường. Tuy nhiên, chiếc xe này chỉ di chuyển
được với tốc độ khoảng 32km/giờ. Sau một thập kỷ, người Đức tiếp tục cho ra đời một
phương tiện được trang bị camera có thể tự lái với tốc độ khoảng 90km/giờ. Khi công
nghệ này được cải thiện thì khả năng phát hiện và phản ứng với môi trường của xe tự lái
cũng tăng theo. 

Từ 1950 - 2000, các tính năng an toàn/tiện lợi, đai ghế điều khiển hành trình và Antilock
Brakes (Hệ thống chống bó phanh) được khám phá. 

Trong năm 2000 - 2010, các tính năng tự động hóa, hệ thống kiểm soát hành trình, phát
hiện điểm mù, cảnh báo va chạm, chệch làn và phanh chống bó cứng tiếp tục được phát
triển. Những tính năng này nhằm đảm bảo sự an toàn và tiện lợi cho người dùng. 

Giai đoạn từ 2010 - 2016, các khả năng hỗ trợ người lái như: camera chiếu hậu, phanh
khẩn cấp tự động và hỗ trợ tập trung vào làn đường đã xuất hiện. 

SVTH: Hoàng Anh Dũng 2


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 1-18. Các tính năng trên xe tự hành được hoàn thiện theo thời gian

Kể từ năm 2016 đến nay, tính năng của xe tự hành đã dần trở nên tự chủ hơn như: giúp
người lái xe đi đúng làn đường, phát triển công nghệ ACC (Adaptive Cruise Control - hệ
thống kiểm soát hành trình thích ứng) và khả năng tự đỗ xe. 

Các chuyên gia dự tính từ nay đến năm 2025 sẽ tập trung nghiên cứu để nâng cấp các tính
năng: an toàn tự động một phần, hỗ trợ giữ làn đường, kiểm soát hành trình, tự đỗ xe, hỗ
trợ lái khi kẹt xe,... để các phương tiện tự hành hoạt động hiệu quả và an toàn hơn.  

2. Những thành tựu ở thời điểm hiện tại và tiềm năng phát triển trong tương
lai của công nghệ ô tô tự lái 

Bất chấp ảnh hưởng của COVID -19, thị trường xe tự hành vẫn có tiềm năng to lớn
và mang lại nhiều lợi ích về kinh tế - xã hội. Theo trang tin Globenewswire, thị trường ô
tô tự lái toàn cầu được định giá 20,97 tỷ USD vào năm 2020 và dự kiến đạt 61,93 tỷ USD
với tốc độ tăng trưởng kép hàng năm là 22,75%. Các cấp độ tự động hóa được áp dụng
phổ biến trong hầu hết các mẫu xe hơi của nhiều hãng lớn hiện nay. hiện Năm 2020,
khoảng 11.2 triệu ô tô tự lái cấp độ 2 được bán ra, con số này tăng 78% so với năm 2019.

SVTH: Hoàng Anh Dũng 3


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hiện nay, xe tự lái đặc biệt được thử nghiệm và sử dụng phổ biến ở California, Arizona,
Washington, Texas, Michigan và một số tiểu bang của Hoa Kỳ. 

Thị trường xe tự hành đặt ra mục tiêu đạt 37,22 tỷ USD vào năm 2023 với tốc độ CAGR
(Compound Annual Growth Rate - tỷ lệ tăng trưởng kép hàng năm) là 16,84%.

Các quốc gia dẫn đầu công nghệ thế giới như Mỹ, Đức, Anh, Nhật Bản, Singapore,...
đang đẩy mạnh nhiều chính sách mở cửa cho xe tự hành toàn cầu như: ban hành quy định
mới, sửa đổi luật giao thông và công nhận sự tồn tại của ô tô không người lái,... 

3. Nguyên lý hoạt động của công nghệ ô tô tự lái

Để ứng dụng công nghệ ô tô tự lái, các nhà phát triển đã tích hợp công nghệ
AI nhằm cung cấp năng lượng, kết hợp lượng lớn dữ liệu từ các hệ thống nhận dạng hình
ảnh, máy học và mạng thần kinh. Mạng nơ-ron sẽ xác định các mẫu trong dữ liệu được
cung cấp cho thuật toán máy học. Dữ liệu này thường là hình ảnh thu được trên xe tự lái
để mạng thần kinh tập xác định đèn giao thông, lề đường, người đi bộ, cây cối, biển báo
và các bộ phận khác trong môi trường lái xe. 

Hình 1-19. Hệ thống kiểm soát hành trình của công nghệ ô tô tự lái

Các công nghệ trên sẽ kết hợp với tính năng của xe tự hành có sẵn để vận hành như:

SVTH: Hoàng Anh Dũng 4


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

 - Hệ thống kiểm soát hành trình thích ứng (ACC): khi dừng xe sẽ tự động duy trì khoảng
cách giữa xe của người lái và phương tiện phía trước. 

 - Tính năng đánh lái tập trung vào làn đường: khi ô tô băng qua vạch kẻ đường, tính
năng này sẽ can thiệp bằng cách tự động thúc xe về phía làn đường đối diện. 

- Tay lái rảnh: tính năng này cho phép người điều khiển không cần đặt tay vào vô lăng. 

Cơ quan Quản lý An toàn Giao thông đường cao cấp Hoa Kỳ (NHTSA) phân loại cấp độ
xe tự lái khác nhau để xác định mức độ tự chủ của người lái và phương tiện khi vận hành.
Cụ thể, có sáu cấp độ xe tự lái từ 0 đến 5 và mỗi cấp độ sẽ thể hiện nhiệm vụ, vai trò khác
nhau.  

1.2. Các cấp độ của xe tự lái

Tính đến thời điểm hiện tại, thuật ngữ “xe tự lái” đang dần trở nên quen thuộc hơn
trong ngành công nghiệp sản xuất ô tô. Xe tự lái là một lĩnh vực hoàn toàn mới và để áp
dụng vào thực tế, chúng ta sẽ cần phải đặt ra những quy chuẩn chung. Hiệp hội Kỹ sư Ô
tô (SAE) – tổ chức phát triển các quy định và tiêu chuẩn cho ngành công nghiệp ô tô toàn
cầu - đã xây dựng một hệ thống phân loại gồm 6 cấp độ tự lái khác nhau để xác định mức
độ tự chủ của phương tiện và người lái khi vận hành.

Theo đó, 6 thang đo các cấp độ xe tự lái sẽ bắt đầu từ Cấp độ 0 – tức là không hề có sự
trợ giúp nào từ phương tiện – cho đến Cấp độ 5 – khi phương tiện tự chủ hoàn toàn mà
không cần đến bất cứ thao tác điều khiển nào đến từ người ngồi sau vô-lăng.

SVTH: Hoàng Anh Dũng 5


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 1-20. Thang đo 6 cấp độ xe tự lái theo phân loại của SAE International

1. Xe tự lái Cấp độ 0 – Không tự động hóa

Ở cấp độ này, người lái sẽ hoàn toàn phụ trách việc điều khiển phương tiện, từ đánh lái,
tăng tốc, phanh, đỗ xe hay bất cứ hành động nào nhằm điều hướng chiếc xe.

Mặc dù vậy, mức độ tự lái này vẫn bao gồm những tính năng như hỗ trợ phanh khẩn cấp,
cảnh báo điểm mù hay cảnh báo lệch làn đường. Lý do là vì những công nghệ này không
tham gia điều khiển phương tiện mà thay vào đó đưa ra cảnh báo hoặc chỉ dẫn cho chủ
phương tiện trong những tình huống cụ thể. Phần lớn các mẫu xe hơi bán có mặt trên thị
trường hiện nay đều là những phương tiện thuộc nhóm này.

2. Xe tự lái Cấp độ 1 – Hỗ trợ người lái

Ở cấp độ thấp nhất trong thang phân loại xe ô tô tự lái, người lái phải thực hiện hầu hết
các tác vụ cần thiết để điều khiển chiếc xe, kết hợp với một số tính năng nhất định.
Những tính năng này sẽ hỗ trợ người lái trong việc điều hướng chiếc xe trong một vài
trường hợp cụ thể.

Hệ thống kiểm soát hành trình thích ứng – Adaptive Cruise Control (ACC), là một ví dụ
tiêu biểu cho xe tự lái Cấp độ 1. Theo đó, hệ thống này sẽ chọn tốc độ phù hợp cho
phương tiện để nó giữ khoảng cách an toàn với các phương tiện di chuyển ở phía trước.

SVTH: Hoàng Anh Dũng 6


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Thêm vào đó, tính năng Hỗ trợ giữ làn đường Lane Keeping Assist (LKA) cũng được coi
là công nghệ tự động hóa Cấp độ 1.

Hình 1-5. Hệ thống kiểm soát hành trình thích ứng AAC được coi là công nghệ xe tự hành Cấp
độ 1

Khác với tính năng cảnh báo lệch làn đường, hỗ trợ giữ làn đường sẽ tự điều khiển
phương tiện để đảm báo chiếc xe đi theo đúng làn đường nhất định. Một phương tiện với
cả hệ thống kiểm soát hành trình thích ứng và hỗ trợ giữ làn đường sẽ đủ điều kiện để xếp
hạng xe tự lái Cấp độ 2.

3. Xe tự lái Cấp độ 2 – Tự hành một phần dưới sự giám sát của tài xế

Ở cấp độ tự lái này, chiếc xe không chỉ có một hệ thống hỗ trợ người lái duy nhất, mà sở
hữu nhiều hệ thống Hỗ trợ người lái nâng cao - Advanced Driver Assistance Systems
(ADAS) đã được lập trình từ trước giúp phương tiện tự đánh lái, tăng tốc và phanh trong
những tình huống phức tạp.

Nhưng mặc dù chiếc xe có thể tự đánh lái hay phanh, tài xế vẫn được yêu cầu phải chủ
động tham gia vào quá trình điều khiển phương tiện, đặc biệt là phải để 2 tay lên vô lăng
cũng như theo dõi hướng di chuyển của phương tiện.

SVTH: Hoàng Anh Dũng 7


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Cấp độ 2 thường được gọi là tự lái một phần và nhiều mẫu xe từng được giới thiệu tại thị
trường Mỹ và châu Âu trong năm 2020 vừa qua đều có thể xếp vào cấp độ này.

4. Xe tự lái Cấp độ 3 – Tự lái có điều kiện, có tài xế

Cấp độ xe tự lái này còn được gọi là tự động hóa có điều kiện, với nhiều hệ thống hỗ trợ
người lái sẽ được lập trình để đưa ra quyết định (bằng trí tuệ nhân tạo - AI) theo thời gian
thực dựa vào sự thay đổi của môi trường giao thông xung quanh chiếc xe.

Hình 1-5. Việc phát triển xe tự lái sẽ phụ thuộc vào công nghệ bản đồ hóa môi trường xung
quanh

Mặc dù xe tự lái Cấp độ 3 có thể hoạt động mà không cần sự can dự của tài xế vào quá
trình điều khiển, người lái vẫn bắt buộc phải có mặt để kiểm soát phương tiện, đặc biệt
trong trường hợp khẩn cấp do lỗi hệ thống.

5. Xe tự lái Cấp độ 4 – Tự lái có điều kiện, không tài xế

Được gọi là xe tự lái cấp độ cao, những phương tiện tự động hóa Cấp độ 4 sẽ không cần
bất cứ tương tác nào của tài xế trong quá trình vận hành xe, vì xe được lập trình để tự
dừng trong trường hợp hệ thống bị lỗi. Vì vậy trong hầu hết điều kiện thực tế, tài xế sẽ
không cần can thiệp để kiểm soát xe.

SVTH: Hoàng Anh Dũng 8


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Tại cấp độ xe tự hành thứ 4, phương tiện được thiết kế để cho phép tự di chuyển từ điểm
A đến điểm B, nhưng thường là trong các ranh giới địa lý cụ thể. Waymo – công ty phát
triển công nghệ tự lái của Google – đã cung cấp dịch vụ như vậy tại Phoenix, bang
Arizona sau khi thực hiện bản đồ hóa (mapping) toàn bộ đường phố tại thành phố này.

Mặc dù vậy, các điều kiện thời tiết có thể hạn chế hoạt động của xe tự lái Cấp độ 4. Đến
lúc này thì mọi thứ lại dựa vào công nghệ mà chiếc xe được trang bị. Ví dụ như một số
chiếc xe thông minh sử dụng công nghệ cảm biến LiDAR để phân tích dữ liệu môi
trường xung quanh mà không bị ảnh hưởng bởi yếu tố thời tiết.

6. Xe tự lái Cấp độ 5 – Tự động hóa không điều kiện

Đây là mức độ tự lái cao nhất trong thang đo của SAE. Ở cấp độ này, chiếc xe hoàn toàn
tự động di chuyển và xử lý tình huống theo thời gian thực mà không cần đến bất kỳ sự
tương tác nào từ phía người lái. Cấp độ xe tự lái thứ 5 sẽ không có vô lăng, tay ga, chân
phanh hay thậm chí là gương chiếu hậu như các dòng xe truyền thống.

Chúng giống như những toa xe hơn là một chiếc ô tô, được trang bị loạt công nghệ xe tự
hành cho phép vận hành ở mọi nơi mà không bị ràng buộc về điều kiện địa lý cũng như
thời tiết. Các phương tiện cũng hoàn toàn không có người lái và sự tham gia duy nhất của
con người chỉ là ra lệnh cho chiếc xe đi đến đâu. Việc này thậm chí cũng không cần phải
được thực hiện trên xe mà có thể được ra lệnh từ điện thoại thông minh của người dùng.

Hình 1-6. Những chiếc xe tự lái Cấp độ 5 có khả năng vận hành ở mọi nơi mà không bị ràng
buộc về bất kỳ điều kiện nào

SVTH: Hoàng Anh Dũng 9


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

a. Những ứng dụng của AI trong xe tự lái


Hiện nay, trí tuệ nhân tạo công nghệ AI được ứng dụng khá phổ biến trong cuộc
sống trên mọi phương diện. Công nghệ AI trên ô tô cũng được chú trọng nghiên cứu, phát
triển, đặc biệt là trên các dòng xe ô tô điện để hỗ trợ tối đa và đảm bảo an toàn cho người
dùng.
Trí tuệ nhân tạo AI - Artificial Intelligence là công nghệ giúp mô phỏng lại hành động, trí
óc của con người, thậm chí có khả năng thông minh giống như con người. Hiện nay, công
nghệ AI trên ô tô được ứng dụng khá phổ biến trên các dòng xe ô tô điện. Đây cũng là
một trong những lý do nhiều người dùng ở Việt Nam quan tâm và lựa chọn xe điện.

1. Trí tuệ nhân tạo AI được chú trọng phát triển và ứng dụng tại Việt Nam

Nhận thức vai trò quan trọng của trí tuệ nhân tạo AI trong tương lai, đầu năm
2021, Thủ tướng Chính phủ đã chính thức ban hành chiến lược quốc gia về nghiên cứu,
phát triển và ứng dụng công nghệ này đến năm 2030 nhằm đưa AI trở thành lĩnh vực
công nghệ quan trọng của Việt Nam trong cuộc Cách mạng 4.0. Với hy vọng rằng chiến
lược sẽ tạo ra cú huých lớn, thúc đẩy phát triển kinh tế, xã hội và dần đưa Việt Nam trở
thành tâm điểm mới về AI trong khu vực và trên thế giới.

Cùng với đó, công nghệ AI đã và đang được ứng dụng và góp phần thúc đẩy phát triển
nhiều lĩnh vực khác nhau như: giao thông vận tải, lĩnh vực y tế, bảo vệ môi trường, giáo
dục,... Đặc biệt, trí tuệ nhân tạo cũng đang từng bước được nghiên cứu áp dụng rộng rãi
trong ngành công nghiệp ô tô, phương tiện thông minh, xe tự lái.

SVTH: Hoàng Anh Dũng 10


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 1-7. Công nghệ AI ngày càng ảnh hưởng mạnh mẽ đến đời sống của con người
Công nghệ AI trên ô tô mang lại nhiều lợi ích

Sự phát triển mạnh mẽ của khoa học và công nghệ đã dần thay đổi thói quen tiêu dùng
hàng ngày của con người. Người dùng ngày càng có xu hướng lựa chọn những sản phẩm,
dòng xe ô tô được trang bị công nghệ AI, đặc biệt là những người đam mê công nghệ, với
mong muốn trải nghiệm công nghệ cao. Ứng dụng trí tuệ nhân tạo trên ô tô không chỉ
đem lại trải nghiệm khác biệt mà còn mang lại sự thuận tiện, nhiều tiện ích cho người
dùng. 

2. Đảm bảo an toàn cho người điều khiển

Công nghệ AI trên ô tô được ứng dụng và phát triển với mục đích cung cấp tính năng tiên
tiến giúp người lái đảm bảo an toàn và quản lý việc lái xe dễ dàng hơn. Khả năng kết hợp
giữa trí tuệ nhân tạo với các cảm biến môi trường xung quanh giúp dự đoán những trường
hợp có thể xảy ra và đưa ra những cách xử lý tốt. Nhờ ứng dụng này, công nghệ AI hỗ trợ
người lái tính toán khoảng cách giữa các xe phía trước. Từ đó, hệ thống dự đoán khả
năng va chạm và điều chỉnh tốc độ xe sao cho phù hợp để đảm bảo khoảng cách an toàn
cho xe. Ngoài ra, trong các trường hợp khẩn cấp, AI sẽ tự động phanh, cảnh báo chệch
làn đường, giám sát điểm mù,...hỗ trợ quá trình di chuyển thêm an toàn.

SVTH: Hoàng Anh Dũng 11


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hơn nữa, khả năng phát hiện độ tập trung của lái xe thông qua ánh mắt, độ mở của mắt
và vị trí đầu được nhiều người đánh giá cao và rất cần thiết khi di chuyển trong chuyến đi
xa. Hệ thống sẽ tự động đánh thức người lái khi cần thiết. Trường hợp lái xe mất tập
trung, AI sẽ cảnh báo để người lái xe quan sát đường đi tốt hơn bằng cách điều chỉnh nội
dung của màn hình cảnh báo (HUD) theo vị trí tập trung của mắt người lái nhằm đảm bảo
an toàn ở mức cao.

Hình 1-8. Công nghệ AI trên ô tô được phát triển với mục đích đảm bảo sự an toàn cho người
điều khiển xe
3. Ứng dụng AI thông minh với nhiều tiện ích nổi bật

Ứng dụng trí tuệ thông minh trên ô tô không những đảm bảo an toàn mà còn mang đến
nhiều tiện ích nổi bật khác như: nghe nhạc, đọc tin, tìm đường đi trên xe thông qua điều
khiển bằng giọng nói,...mang đến trải nghiệm “rảnh tay” cho người lái. 

Sự tiến bộ về công nghệ đã hỗ trợ cải thiện AI ở mức tối ưu, có thể xử lý tốt ngôn ngữ
vùng miền, hiểu tiếng địa phương, tiếng lóng hoặc văn nói hàng ngày. Tại Việt Nam,
người dùng hoàn toàn có thể trải nghiệm ứng dụng công nghệ AI trên xe ô tô điện VF e34
có khả năng nhận diện giọng nói bằng tiếng Việt, không phân biệt vùng miền giúp người
sử dụng dễ dàng điều khiển điều hòa và hệ thống giải trí mà không cần dùng tay.

Ngoài ra, AI còn có chức năng nhận diện các cử chỉ tay đơn giản cho phép người lái điều
khiển hệ thống thông tin giải trí mà không cần phải rời mắt khỏi đường đi.

b. Bài toán trích xuất thông tin môi trường trong xe tự lái

SVTH: Hoàng Anh Dũng 12


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Bài toán trích xuất thông tin từ môi trường xung quanh (Perception) của xe tự lái
chính là quá trình phát hiện và phân loại các vật thể trên đường di chuyển của xe. Các vật
thể gồm hai loại đó là vật thể tĩnh và vật thể động. Bài toán nhận diện vật thể động sẽ sử
dụng các tín hiệu từ Camera và Lidar để tạo ra các 3D bounding box xung quanh vật. Các
bounding box này sẽ giúp ích trong việc xác định vị trí và kích thước vật thể. Sau bước
nhận diện, các vị trí tiếp theo của các vật thể động sẽ được theo vết bằng các thuật toán
tracking. Các vị trí của vật sẽ được ghi lại và kết hợp với bản đồ môi trường đã thiết lập
để hệ thống có thể dự đoán vị trí tiếp theo của vật thể đó. Còn đối vói các vật thể tĩnh, hệ
thống sẽ kết hợp các tín hiệu từ Camera và Lidar để xác định và phân loại các đối tượng
đó. Các đối tượng tĩnh quan trọng đối với xe tự lái đó là vị trí các làn đường, biển báo và
đèn giao thông.

Hình 1-9. Sơ đồ xử lý bài toán trích xuát thông tin từ môi trường

Việc định vị và nhận diện đúng các vật thể đóng vai trò quan trọng trong xe tự lái.
Hiện nay đã có rất nhiều thuật toán và phương pháp được nghiên cứu và đã đạt độ chính
xác rất cao. Chúng ta sẽ điểm qua một vài các phương pháp tiêu biểu:
1. Nhận diện vật thể 2D
Nghiên cứu nhận diện vật thể đã được bắt đầu từ hơn 50 năm trước, nhưng đến
cuối những năm 1990 đầu năm 2000 mới có thuật toán đạt được hiệu suất cho xe tự lái.
Các năm trở lại đây, với việc phát triển của phần cứng tính toán cộng với nguồn dữ liệu
khổng lồ, công nghệ Deep Learning phát triển nhanh chóng. Các mạng học sâu (deep
convolution neural network) liên tiếp ra đời mang đến những bước tiến vượt bậc trong
các lớp bài toán phát hiện đối tượng nói riêng và cho ngành khoa học nói chung. Các
thuật toán phát hiện vật thể tốt nhất hiện nay đều dựa trên công nghê Deep Learning. Có
hai phương pháp tiếp cận đó là:
 Single stage detection framework: sử dụng một mạng đơn duy nhất để ch ra vị
trí và phân loại đối tượng trong hình ảnh. Điển hình cho cách tiếp cận này là
các mạng nổi tiếng như YOLOv3, YOLOv4, SSD, MoblieNet, ResNet50,
EfficienNet, EfficienNetV2.

SVTH: Hoàng Anh Dũng 13


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

 Region proposal detection frameworks sử dụng 2 giai đoạn riêng biệt. Giai
đoạn một sẽ đưa ra những vùng mà có xác suât chứa vật thể cao được đề xuất.
Giai đoạn 2 phát hiện và phân loại vật thể trong các vùng đề xuất đó. Các mô
hình phổ biến có thể kể đến như R-CNN, FASTER R-CNN.
Hiện nay phương pháp thứ hai có độ chính xác cao hơn nhưng yêu cầu tính toán lại
nhiều hơn do đó rất khó ứng dụng trong mô hình tự lái đòi hỏi thời gian thực. Và do vậy
vừa đảm bảo được việc chính xác cao và chi phí tính toán thấp nên single stage detector
thường được sử dụng trong các hệ thống tự lái. Tuy nhiên nhược điểm của phương pháp
này là phụ thuộc rất nhiều vào dữ liệu (chất lượng ảnh thu được từ camera).
2. Phân vùng ảnh
Phân vùng ảnh (image segmentation) là việc phân loại từng pixel của ảnh tương
ứng với từng lớp vật thể. Nhiệm vụ này rất quan trọng trong xe tự lái vì có những vật thể
khó có thể xác đinh bằng các hộp giới hạn như làn đường, vỉa hè và các tòa nhà. Trong
phân đoạn ảnh có hai bài toán là semantic segmentation (phân biệt từng pixel thuộc các
lớp khác nhau) và instance segmentation (phân biệt từng pixel trong cùng một lớp). Các
mô hình phổ biến có thể kể đến như Mask-RCNN, DeepLab, Unet,..
Mặc dù các mạng sử dụng trong phân đoạn ảnh hoạt động chậm và yêu cầu chi phí
tính toán cao để được sử dụng trong hệ thống tự lái, nhưng nó cũng có ưu điểm như nó có
thể làm nhiều tác vụ như phân đoạn ảnh, xác định hộp giới hạn của vật. Ngoài ra các mô
hình phân đoạn ảnh học nhiều được đặc trưng của ảnh hơn điều này có thể gợi ý đến việc
chỉ sử dụng một mô hình phân đoạn ảnh sẽ có thể giải quyết tất cản các vấn đề về "nhận
thức" môi trường xung quanh của hệ thống tự lái.
3. Nhận diện vật thể 3D
Viêc phát hiện đối tượng bằng hình ảnh từ camera có hạn chế là phụ thuộc nhiều
và chất lượng ảnh thu được. Khi ánh sáng thay đổi sẽ gây ra nhiễu ảnh hưởng tới khả
năng của mô hình. Không những vật ảnh thu được từ camera là hình chiếu lên không gian
hai chiều nên ta không biết được thông tin về độ sâu khung cảnh. Hệ thống xe tự lái sẽ
tận dụng những thông tin này cho những bài toán như tránh vật cản,... Việc ước lượng
khoảng cách có nhiều cách một trong số đó được trình bày trong khi tác giả chỉ dùng một
monocular camera. Trong một tác giả khác dã dùng stereo camera cho việc ước tính
chiều sâu của các vật thể. Tuy nhiên các phương pháp này phải giải quyết vấn đề so khớp
hình ảnh vốn cần rất nhiều chi phí tính toán.
Một phương pháp tiếp cận tương đối mới đó là sử dụng lidar 3D. Phương pháp
này vừa giải quyết được vấn đề ước lượng khoảng cách lại ít bị ảnh hưởng bởi điều kiện
ánh sáng và môi trường. Hình 1-10 mô tả quá trình phát hiện vật thể từ dữ liệu đám mây
điểm thu được từ lidar 3D.

SVTH: Hoàng Anh Dũng 14


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 1-10. Nhận diện vật thể từ dữ liệu 3D pointclound

Bên cạnh đó các mô hình 3D CNN cũng được nghiên cứu, sử dụng dữ liệu các
đám mây điểm thu được từ lidar để phục vụ cho bài toán object detection. Tuy nhiên chi
phí tính toán cũng là một vấn đề lớn đối với các mô hinh này.

Thay vì xử lý trực tiếp dữ liệu đám mây điểm như các phương pháp trên, các nhà
nghiên cứu đã chiếu các đám mây điểm xuống không gian hai chiều và sử dụng chúng
cho bài toán phát hiện vật thể. Có hai cách biểu diễn các đám mây điểm trong không gian
hai chiều. Cách thứ nhất biểu diễn dưới dạng ảnh có "chiều sâu" (hình 10) khi màu sắc
trên hình sẽ đại diện cho khoảng cách từ đó tới camera, phương pháp này lấy cảm hứng
từ việc phát hiện vật thể 3D thông qua ước lượng khoảng cách và các phương pháp xử lý
dữ liệu RGB-D.

SVTH: Hoàng Anh Dũng 15


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 1-11. Ảnh độ sâu

Một cách khác để biểu diễn khác mới phát triển gần đây là biểu diễn dữ liệu đám
mây điểm thành ảnh có nhìn từ góc cao (bird’s eye view – BV image). Nhiều nhà nghiên
cứu đã sử dụng những thuật toán phát và huấn luyện mô hình phát hiện vật thể 3D từ ảnh
2D BV. Những thuật toán tốt nhất hiện nay được đánh giá trên tập dữ liệu KITTI và tập
dữ liệu nuScenes vì các tập này đều cung cấp nhãn 3D.

Hình 1-12. Ảnh nhìn từ góc cao của dữ liệu Lidar 3D

Bên cạnh đó xe tự lái cũng dùng Radar để phát hiện vật thể ở cự ly xa và ước tính
vận tốc của vật thể đó. Tuy nhiên nó lại không xác định được hình dạng của vật thể và độ
phân giải còn thấp. Do vậy radar chỉ được dùng để xác định khoảng cách tới các vật thể

SVTH: Hoàng Anh Dũng 16


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

có kích thước lớn như phương tiện, còn đối với người đi bộ hoặc cấc vật thể tĩnh vẫn còn
là thách thức. Bên cạnh đó tầm nhòn của radar rất hạn chế, yêu cầu cần dùng rất nhiều
radar dể bao phủ mọi góc nhìn.
4. Bài toán nhận diện biển báo giao thông trong xe tự lái
Nhận diện biển báo giao thông là một trong những bài toán quan trọng và khó
trong xe tự lái. Theo mặc dù trong nhiều năm đã có rất nhiều nghiên cứu về vấn bài toán
này, tuy nhiên vẫn còn rất nhiều thách thức.
 Đầu tiên là các mô hình nhận diện không ổn định do điều kiện ánh sáng. Ánh
sáng thay đổi ảnh hưởng tới màu sắc, các đường biên và độ tương phản của
biển báo do đó làm các mô hình trích xuất sai đặc trưng dẫn đến nhận diện
nhầm.
 Thứ hai là các ảnh biển báo chụp bởi camera có thể làm biển bị méo bị biến
dạng.
 Thứ ba là ảnh bị nhòe do Camera chuyển động, dẫn đến các đường biên của
biển báo sẽ bị mờ.
 Thứ tư là các ảnh biển báo trên đường bị che lấp một phần bởi các vật thể khác
như cột đèn dẫn đến mô hình khó nhận diện.
 Thứ năm là các điều kiện thời tiết khắc nghiệt như sương mù, sẽ che lấp tầm
nhìn một phần hoặc toàn bộ biển báo.
 Và cuối cùng các mô hình phần loại vẫn chưa đạt được sử ổn định khi thay đổi
môi trường.
Cũng theo [11] mô hình nhận diện biển báo sử dụng các mạng học sâu đạt được độ
chính xác cao nhất.
Kết luận: Các công nghệ phát hiện biển báo giao thông là một yêu cầu thiết yếu
cho bất kỳ ứng dụng nào trong các phương tiện thông minh tự trị. Trong đồ án này,em sẽ
tập trung để xây dựng mô hình phát hiện các đối tượng giao thông. Dựa trên các bộ dữ
liệu hiện có và các mô hình được đào tạo trước, em áp dụng thêm các kỹ thuật xử lí dữ
liệu để đào tạo mô hình đạt được độ chính xác cao hơn ngay cả đối với dữ liệu thử
nghiệm rất thách thức.

SVTH: Hoàng Anh Dũng 17


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

2.1. Học máy, học sâu


Trí tuệ nhân tạo (Artificial Intelligence - AI) là trí thông minh của máy móc, khác
với trí thông minh tự nhiên của con người. Trí tuệ nhân tạo hướng đến khả năng máy tính
có thể thực hiện: suy luận, lập kế hoạch, giao tiếp, có tri thức, nhận thức. Trí tuệ nhân tạo
hiện diện trong mọi lĩnh vực của đời sống con người như kinh tế, giáo dục, y khoa. Trí
tuệ nhân tạo có nhiều hướng nghiên cứu, trong đó, một trong những hướng phổ biến nhất
là học máy (Machine learning - ML). Học máy có thể giúp máy móc có khả năng dựa vào
các tri thức về môi trường xung quanh rút ra một nguyên lý để phục vụ cho việc ra quyết
định. Và để thực hiện được quá trình này, có nhiều phương pháp ở trong ML. Phương
pháp ML phổ biến nhất được sử dụng trong lĩnh vực thị giác máy tính là học sâu (Deep
learning - DL). Các khái niệm AI, ML, DL được phân biệt như trong Hình 2-11.

Hình 2-1. Các khái niệm cơ bản trong trí tuệ nhân tạo

Học máy
Như đã trình bày ở phần trên, học máy là một thành phần của trí tuệ nhân tạo giúp
máy móc có thể "học" từ dữ liệu của môi trường xung quanh và thực hiện hành động nào
đó. Để đạt được mục tiêu này, các nhà khoa học đã nghiên cứu ra nhiều giải thuật khác
nhau, được chia thành 3 nhóm chính:

SVTH: Hoàng Anh Dũng 18


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

 Học có giám sát - Supervised-learning.


 Học không giám sát - Unsupervised-learning.
 Học tăng cường - Reinforcement learning.
Học sâu
Học sâu là một phương pháp học máy được xây dựng dựa trên việc mô tả lại cách
hoạt động của bộ não con người trong việc xử lý dữ liệu và tạo các mô hình ra quyết
định. Những đột phá của trí tuệ nhân tạo phần nhiều đến từ các mô hình học sâu. Học sâu
có thể giúp máy tính thực hiện được rất nhiều việc tưởng chừng như không thể từ khoảng
15 năm trước như: phân loại cả ngàn vật thể khác nhau trong các bức ảnh, tự tạo chú
thích nội dung cho ảnh, bắt chước giọng nói và chữ viết của con người, giao tiếp với con
người,…
Trong những năm gần đây, học sâu được nhắc đến rất nhiều như một xu hướng mới 
của trí tuệ nhân tạo. Có một số lý do sau đây:
 Bùng nổ dữ liệu: Các tập đoàn lớn, các mạng xã hội đã tạo ra một kho dữ liệu
khổng lồ. Học sâu khai thác được dữ liệu lớn (Big Data) cùng với độ chính xác
cao hơn hẳn so với các phương pháp học máy khác trên cùng một bộ dữ liệu, đặc
biệt là đối với dữ liệu ảnh.
 Phần cứng phát triển: Sự xuất hiện của nhiều mẫu GPU mới với hiệu năng tính
toán cao trong khi giá thành không quá đắt giúp cho rất nhiều người có thể tiếp
cận dẫn đến việc nghiên cứu học sâu không còn bị giới hạn trong những phòng
thí nghiệm của các trường đại học danh tiếng hay các công ty lớn nữa.
Điểm mạnh: Học sâu là phương pháp hiện đại nhất trong các lĩnh vực như thị giác
máy tính và nhận diện giọng nói. Mạng nơ ron sâu có hiệu suất cao trên tập dữ liệu ảnh,
audio và chữ viết; có thể dễ dàng cập nhật mô hình bằng dữ liệu mới. Kiến trúc của một
mô hình (số lượng và cấu trúc từng tầng) có thể được ứng dụng qua nhiều bài toán khác
nhau.
Điểm yếu: Học sâu không phải là thuật toán có mục đích sử dụng chung (general-
purpose) vì chúng đòi hỏi một lượng dữ liệu khổng lồ để huấn luyện. Hơn nữa, phương
pháp này cũng tốn rất nhiều tài nguyên để huấn luyện và đòi hỏi nhiều kiến thức chuyên
sâu để tinh chỉnh các tham số.
2.1.1. Học máy cơ bản
Một thuật toán học máy là một thuật toán có khả năng học tập từ dữ liệu. Tức là cho
các cặp dữ liệu đầu vào, đầu ra, thuật toán sẽ giúp chương trình máy tính hoạt động tốt
hơn dựa trên các kinh nghiệm học được từ các cặp dữ liệu đó. Tổng quát, nếu mỗi điểm
dữ liệu được mô tả bởi một vector đặc trưng d chiều xRd , hàm dự đoán đầu ra được viết
dưới dạng.

SVTH: Hoàng Anh Dũng 19


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

(2.1)
1. Hàm mất mát

Gọi là giá trị dự đoán được, còn y là giá trị thực. Chúng ta cần sự chênh lệch giữa
hai số này nhỏ nhất có thể, tức là là giá trị sau đây càng nhỏ càng tốt:

(2.2)

Trong đó hệ số là để thuận tiện cho việc tính toán (khi tính đạo hàm thì sẽ triệt tiêu).

Chúng ta cần vì có thể là một số âm, lúc đó, nếu e rất nhỏ, tức là e gần với
thì sai lệch là rất lớn. Điều tương tự xảy ra với tất cả các cặp (đầu vào, outcome).
Điều chúng ta muốn là tổng sai số nhỏ nhất, tương đương với việc tìm w để hàm số sau
đạt gía trị nhỏ nhất.

(2.3)
Hàm số L(w) được gọi là hàm mất mát (loss function) của bài toán Linear Regression.
Chúng ta luôn mong muốn rằng sự mất mát (sai số) là nhỏ nhất, điều đó đồng nghĩa với
việc tìm vector hệ số w sao cho giá trị của hàm mất mát này càng nhỏ càng tốt. Giá trị
của w làm cho hàm mất mát đạt giá trị nhỏ nhất được gọi là điểm tối ưu (optimal point),
ký hiệu:

(2.4)
2. Tối ưu hóa hàm mất mát
a) Gradient descent
Để giải bài toán tìm điểm tối ưu của hàm mất mát (Hàm mất mát cũng thường được
ký hiệu là với là tập hợp các tham số của mô hình), ta có thuật toán lặp gradient descent
với các bước tuần tự như sau:
 Dự đoán một điểm khởi tạo
 Cập nhật đến khi đạt được kết quả chấp nhận được theo công thức:
(2.5)
Với là đạo hàm của hàm mất mát tại .
Gradient descent dưới góc nhìn vật lý

SVTH: Hoàng Anh Dũng 20


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-21. Gradient dưới góc nhìn vật lý

Thuật toán GD thường được ví với tác dụng của trọng lực lên một hòn bi đặt trên
một mặt có dạng thung lũng như Hình 2-12a. Bất kể ta đặt hòn bi ở A hay B thì cuối cùng
nó cũng sẽ lăn xuống và kết thúc ở vị trí C. Tuy nhiên, nếu bề mặt có hai đáy thung lũng
như Hình 2-12b thì tùy vào việc đặt bi ở A hoặc B, vị trí cuối cùng tương ứng của bi sẽ ở
C hoặc D (giả sử rằng ma sát đủ lớn và đà không mạnh để bi có thể vượt dốc). Điểm D là
một điểm cực tiểu địa phương, điểm C là điểm cực tiểu toàn cục. Vẫn trong Hình 2-12,
nếu vận tốc ban đầu của bi ở điểm B đủ lớn, nó vẫn có thể tiến tới dốc bên trái của D do
có đà. Nếu vận tốc ban đầu lớn hơn nữa, bi có thể vượt dốc tới điểm E rồi lăn xuống C
như trong Hình 2-12c. Dựa trên quan sát này, một thuật toán được ra đời nhằm giúp GD
thoát được các cực tiểu địa phương. Thuật toán đó có tên là momentum (tức theo đà).
b) Gradient với momentum
Trong gradient descent, chúng ta cần tính lượng thay đổi ở thời điểm t để cập nhật
vị trí mới cho nghiệm. Nếu ta coi đại lượng này như vận tốc v t trong vật lý, vị trí mới
của hòn bi sẽ là với giả sử rằng mỗi vòng lặp là một đơn vị thời gian. Dấu trừ
thể hiện việc phải di chuyển ngược với gradient. Việc tiếp theo là tính đại lượng sao
cho nó vừa mang thông tin của độ dốc hiện tại (tức gradient), vừa mang thông tin của đà.
Thông tin của đà có thể được hiểu là vận tốc trước đó (với giả sử vận tốc ban đầu
). Một cách đơn giản nhất, ta có thể lấy tổng có trọng số của chúng:
(2.6)
Trong đó là một số dương nhỏ hơn một. Giá trị thường được chọn là 0.9, là vận tốc
tại thời điểm trước đó, chính là độ dốc tại thời điểm hiện tại. Từ đó ta có công thức
cập nhật nghiệm:
(2.7)

SVTH: Hoàng Anh Dũng 21


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Sự khác nhau giữa GD thông thường và GD với momentum nằm ở thành phần cuối cùng
trong (2.7). Thuật toán đơn giản này mang lại hiệu quả trong các bài toán thực tế.

c) Stochastic Gradient Descent (SGD)


Trong thuật toán này, tại một thời điểm, ta chỉ tính đạo hàm của hàm mất mát dựa
trên chỉ một điểm dữ liệu rồi cập nhật các tham số dựa trên đạo hàm này. Việc này được
thực hiện với từng điểm trên toàn bộ dữ liệu, sau đó lặp lại quá trình trên. Thuật toán rất
đơn giản này trên thực tế lại hoạt động hiệu quả.
Mỗi lần duyệt một lượt qua tất cả các điểm trên toàn bộ dữ liệu được gọi là một
epoch. Với GD thông thường thì mỗi epoch ứng với một lần cập nhật các tham số, với
SGD thì mỗi epoch ứng với N lần cập nhật tham số với N là số điểm dữ liệu. Việc cập
nhật từng điểm một như thế này có thể làm giảm tốc độ thực hiện một epoch. Nhưng mặt
khác, SGD chỉ yêu cầu một lượng epoch rất nhỏ. Vì vậy SGD phù hợp với các bài toán
có lượng cơ sở dữ liệu lớn và các bài toán yêu cầu mô hình thay đổi liên tục như học trực
tuyến (online learning). Với một mô hình đã được huấn luyện từ trước, khi có thêm dữ
liệu, ta có thể chạy thêm một vài epoch nữa là đã có nghiệm hội tụ. Các kỹ thuật biến thể
của GD như momentum hoàn toàn có thể được áp dụng vào SGD.
d) Thứ tự lựa chọn điểm dữ liệu
Một điểm cần lưu ý là sau mỗi epoch, thứ tự lấy các dữ liệu cần được xáo trộn để
đảm bảo tính ngẫu nhiên. Việc này cũng ảnh hưởng tới hiệu năng của SGD. Đây cũng
chính là lý do thuật toán này có chứa từ stochastic (ngẫu nhiên).
Quy tắc cập nhật của SGD là:
(2.8)
Trong đó là hàm mất mát nếu chỉ có một cặp dữ liệu thứ i. Các kỹ thuật
biến thể của GD như momentum hoàn toàn có thể được áp dụng vafp SGD.

e) Gradient Descent lô nhỏ - Mini-batch Gradient descent


Khác với SGD, GD lô nhỏ sử dụng 1 < k < N điểm dữ liệu để cập nhật ở mỗi vòng
lặp. Giống với SGD, GD lô nhỏ bắt đầu mỗi epoch bằng việc xáo trộn ngẫu nhiên dữ liệu
rồi chia toàn bộ dữ liệu thành các mini-batch, mỗi mini-batch có k điểm dữ liệu (trừ mini-
batch cuối có thể có ít hơn nếu N không chia hết cho k). Ở mỗi vòng lặp, một mini-batch
được lấy ra để tính toán gradient rồi cập nhật θ. Khi thuật toán
chạy hết dữ liệu một lượt cũng là khi kết thúc một epoch. Như vậy, một epoch bao gồm
xấp xỉ N/k vòng lặp. Giá trị k được gọi là kích thước lô (batch) (không phải kích thước
mini-batch) được chọn trong khoảng khoảng từ vài chục đến vài trăm.

SVTH: Hoàng Anh Dũng 22


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-22. Đồ thị hàm mất mát khi sử dụng gradient

f) Điều kiện dừng thuật toán


Gradient descent là phương pháp lặp. Vây khi nào thì nên dừng thuật toán Gradient
descent lại? Trong thực tế, người ta thường kết hợp các phương pháp sau
 Giới hạn số vòng lặp: Nhược điểm của cách làm này là thuật toán có thể dừng lại
trước khi nghiệm đủ tốt. Tuy nhiên, đây là phương pháp phổ biến nhất và cũng
đảm bảo được chương trình chạy không quá lâu.
 So sánh giá trị gradient của hàm mất mát tại hai lần cập nhật liên tiếp, khi nào
giá trị này đủ nhỏ thì dừng lại.
 So sánh giá trị của hàm mất mát sau một vài epoch, khi nào sự sai khác đủ nhỏ
thì dừng lại. Nhược điểm của phương pháp này là nếu hàm mất mát có dạng
bằng phẳng tại một điểm không phải cực tiểu địa phương, thuật toán sẽ dừng lại
trước khi đạt giá trị mong muốn.
 Vừa chạy gradient descent, vừa kiểm tra kết quả. Một kỹ thuật khác thường
được sử dụng là cho thuật toán chạy với số lượng vòng lặp lớn. Trong quá trình
chạy, chương trình thường xuyên kiểm tra chất lượng mô hình trên tập huấn
luyện và tập xác thực. Đồng thời, mô hình sau một vài vòng lặp được lưu lại
trong bộ nhớ. Nếu ta thấy chất lượng mô hình bắt đầu giảm trên tập xác thực thì
dừng lại. Đây chính là kỹ thuật early stopping.

3. Lan truyền ngược


Ở phần trên, chúng ta đã tìm hiểu thuật toán Gradient descent và các biến thể của nó
để tối ưu hàm mất mát. Để thực hiện được các thuật toán này, chúng ta cần phải tính
được gradient của hàm mất mát theo từng ma trận trọng số w. Tuy nhiên, một mạng học
sâu có cấu tạo rất phức tạp, ghép của nhiều hàm. Vì vậy mà việc tính gradient gặp rất
nhiều khó khăn, đôi khi là không thể tính được. Để giải quyết vấn đề này, chúng ta cần sử

SVTH: Hoàng Anh Dũng 23


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

dụng kỹ thuật lan truyền ngược - backpropagation dựa trên nền tảng đồ thị tính toán -
computational graph. Đồ thị tính toán là một loại đồ thị mà chúng ta có thể sử dụng nó để
biểu diễn bất cứ hàm nào với mỗi nút của đồ thị là một bước tính toán cần thực hiện. Bất
cứ khi nào chúng ta biểu diễn một hàm số dưới dạng một đồ thị tính toán, chúng ta có thể
thực hiện được kỹ thuật lan truyền ngược. Đây là kỹ thuật giúp chúng ta có thể tính được
gradient ngược từ tầng cuối cùng lên tầng đầu tiên. tầng cuối cùng được tính gradient
trước vì nó gần hơn với hàm mất mát và các output. Việc tính toán gradient của các tầng
phía trước được thực hiện theo quy tắc đạo hàm của hàm hợp (chain rule).
Để dễ hiểu hơn, chúng ta cùng xét ví dụ dưới đây.
Xét hàm số đơn giản sau:

Ta sẽ vẽ được đồ thị tính toán của hàm số f như trong Hình 2-14

Hình 2-23. Đồ thị tính toán của f

Đầu tiên, chúng ta sẽ truyền giá trị vào với x = −2; y = 5; z = −4 qua đồ thị tính toán. Ta
sẽ điền kết quả trung gian tại từng nút của đồ thị tính toán. Ta đặt nút trung gian là q = x
+ y = 3. Và kết quả cuối cùng thu được là f = qz = −12. Tiếp theo, chúng ta sẽ tính
gradient của f theo ngược chiều của đồ thị tính toán:

Như vậy, xuất phát từ phần cuối cùng của đồ thị tính toán, nhờ kỹ thuật lan truyền ngược
mà chúng ta có thể tính gradient của hàm f đối với tất cả các biến đầu vào. Do đó trong
trường hợp tổng quát, thay vì phải tính gradient của một hàm tổng phức tạp, rất khó để
giải bằng giải tích, chúng ta có thể chia thành nhiều hàm nhỏ, dễ tính toán gradient hơn
và chỉ việc ghép chúng lại.

SVTH: Hoàng Anh Dũng 24


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

2.1.2. Phương pháp huấn luyện các mô hình học sâu


1. Những thiết lập ban đầu
Hàm kích hoạt – Activation function
Trong một mạng nơ ron, dữ liệu được đưa vào, nhân với các trọng số rồi sau đó đi
qua một hàm phi tuyến để tới tầng nơ ron tiếp theo. Hàm phi tuyến để chuyển tầng này
được gọi là hàm kích hoạt (activation function). Hàm kích hoạt được mô tả như ở trong
Hình 2-21. Có nhiều loại hàm kích hoạt, mỗi hàm lại có đặc điểm riêng. Người thiết kế
mạng phải chọn hàm kích hoạt sao cho phù hợp nhất.

Hình 2-24. Vai trò của hàm kích hoạt

a) Hàm Sigmoid
Công thức hàm sigmoid:

(2.9)
Hàm sigmoid có tác dụng ép các số đầu vào về trong khoảng (0;1). Nếu đầu vào lớn, hàm
số sẽ cho đầu ra gần với 1. Với đầu vào nhỏ (rất âm), hàm số sẽ cho đầu ra gần với 0. Và
khi đầu vào gần giá trị 0 thì hàm này gần như tuyến tính. Hàm số này được sử dụng nhiều
trong quá khứ vì có đạo hàm rất đẹp.

SVTH: Hoàng Anh Dũng 25


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-25. Đồ thị hàm Sigmoid

Hàm sigmoid có nhược điểm là khi đầu vào có giá trị tuyệt đối lớn (rất âm hoặc rất
dương), gradient của hàm số này sẽ rất gần với 0. Điều này khiến cho các tham số sẽ
không được cập nhật. Các vấn đề của hàm sigmoid:
 Các nơ ron bão hòa sẽ triệt tiêu gradient.
 Output của hàm sigmoid không có tính chất trọng tâm là 0 (zero-centered).
 Hàm e mũ (exp()) có độ phức tạp tính toán tương đối cao.

b) Hàm tanh
Công thức hàm tanh:

(2.10)
Hàm tanh có đặc điểm gần giống với hàm sigmoid nhưng nó ép các số về trong
khoảng (-1;1). Hàm tanh có trọng tâm là 0, khắc phục được một nhược điểm của hàm
sigmoid

Hình 2-26. Đồ thị hàm tanh

Đặc điểm của hàm tanh:


 Ép các số về trong khoảng (-1,1).

SVTH: Hoàng Anh Dũng 26


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

 Có trọng tâm là điểm 0.


 Vẫn triệt tiêu gradients khi bão hòa.

c) Hàm ReLU
ReLU (Rectified Linear Unit) được sử dụng rộng rãi gần đây vì tính đơn giản của
nó. Đồ thị của hàm ReLU được minh họa trên Hình 2-24. Công thức toán học của hàm
ReLU:

Hình 2-27. Đồ thị hàm ReLU

Ưu điểm của hàm ReLU:


 ReLU được chứng minh giúp cho việc huấn luyện các mạng học sâu nhanh hơn
rất nhiều (khoảng 6 lần hành tanh).
 Không bão hòa (trong vùng đồ thị dương).
 Có độ phức tạp tính toán thấp do công thức đơn giản.
Nhược điểm của hàm ReLU:
 Output không có tính chất zero-centered.
 Triệt tiêu gradient ở nửa không dương.
 Khi learning rate lớn, các trọng số có thể thay đổi theo cách làm tất cả nơ ron
dừng việc cập nhật.

d) Hàm Leaky ReLU


Công thức hàm Leaky ReLU:

SVTH: Hoàng Anh Dũng 27


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-28. Đồ thi hàm Leaky ReLU

Hàm Leaky ReLU tương tự như hàm ReLU nhưng đã khắc phục được nhược điểm
ở phần âm của hàm ReLU bằng cách thay vì trả về giá trị bằng 0 ở phần âm, Leaky ReLU
tạo một đường xiên có độ dốc rất nhỏ. Ưu điểm của hàm Leaky ReLU:
 Không bị bão hòa.
 Độ phức tạp tính toán thấp.
 Hội tụ nhanh hơn rất nhiều so với hàm tanh (khoảng 6 lần).
 Không bị triệt tiêu.

2. Những thay đổi khi huấn luyện


a) Learning rate schedules
Các thuật toán tối ưu như SGD, SGD+Momentum, v.v đều có hyperparameter là
learning rate. Vậy thì learning rate như thế nào thì phù hợp? Hình 2-26 cho chúng ta thấy
dựa vào đồ thị hàm mất mát chúng ta có thể dự đoán được xu hướng của learning rate.

Hình 2-29. Learning rate

SVTH: Hoàng Anh Dũng 28


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Tất cả các thuật toán tối ưu đều bắt đầu với learning rate lớn, sau đó giảm dần theo
thời gian. Từ đó ta có khái niệm learning rate decay. Learning rate decay là khi chúng ta
giảm learning rate tại một vài điểm xác định sẵn. Ví dụ đối với các mạng ResNet, ta
thường giảm learning rate đi 10 lần sau một số lượng vòng lặp đã định sẵn.
Ngoài ra cũng còn một kỹ thuật với learning rate khác là Linear Warmup.
Learning rate khởi tạo cao có thể gây ra hiện tượng bùng nổ hàm mất mát (loss
exploding). Vì vậy để tránh hiện tượng này, chúng ta nên tăng learning rate một cách
tuyến tính từ 0 lên giá trị learning rate sử dụng trong khoảng vài trăm đến vài nghìn
iteration đầu khi mới bắt đầu huấn luyện một mô hình.

Hình 2-30. Learning rate decay: linear warmup

Tóm lại, khi huấn luyện một mô hình, những hyperparameter chúng ta cần quan
tâm:
 Kiến trúc mạng: sử dụng hàm kích hoạt hợp lý.
 Learning rate: quan sát hàm mất mát để lên lịch các bước giảm của nó, loại cập
nhật.

b) Transfer learning
Transfer learning được sử dụng trong các trường hợp:
 Không đủ dữ liệu: Huấn luyện một mạng học sâu cần rất nhiều dữ liệu và tốn
rất nhiều tài nguyên một mạng học sâu có thể học trên dữ liệu đó và ứng dụng
vào bài toán cụ thể. Ngoài ra việc huấn luyện trên một tập dữ liệu nhỏ hầu hết
không hiệu quả.
 Cải thiện chất lượng: Rất nhiều trường hợp transfer learning cải thiện chất
lượng dự đoán so với việc huấn luyện mô hình từ đầu.

c) Ý tưởng của transfer learning

SVTH: Hoàng Anh Dũng 29


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Ý tưởng của transfer learning được biểu diễn trực quan trên Hình 2-28. Đầu tiên,
ta có một mạng CNN bất kỳ. Ta sẽ huấn luyện mạng CNN này trên một tập dữ liệu rất
lớn (Ví dụ như ImageNet) đủ để ta có thể huấn luyện cả một mạng CNN. Và ý tưởng ở
đây là ta sẽ sử dụng các đặc trưng của bộ dataset này để áp dụng vào một bộ dataset nhỏ
trong ứng dụng riêng của mình. Và thay vì phải phân loại 1000 lớp, ta sẽ chỉ phân loại C
lớp, một số nhỏ lớp vì chúng ta chỉ có một bộ dữ liệu nhỏ. Ta sẽ thực hiện với tầng cuối
cùng, tầng kết nối đầy đủ từ tầng đặc trưng cuối cùng sang tầng tới lớp score. Bây giờ, ta
cần phải khởi tạo lại ma trận chuyển giữa hai tầng này một cách ngẫu nhiên. Thay vì kích
thước 4096 × 1000 như trong ImageNet, ma trận này sẽ có kích thước 4096 × C. Sau đó,
ta sẽ đóng băng toàn bộ các tầng còn lại và chỉ huấn luyện tầng cuối cùng này và để nó
hội tụ trên tập dữ liệu của mình. Vì tập dữ liệu của chúng ta nhỏ nên chỉ đủ để huấn luyện
được tầng này.

Hình 2-31. Ý tưởng transfer learning

Nếu như chúng ta có nhiều dữ liệu hơn, chúng ta có thể thử một cách khác, đó là
tinh chỉnh toàn bộ mạng. Sau khi huấn luyện xong tầng cuối cùng ở trên bằng dữ liệu của
mình, ta có thể thử huấn luyện nhiều tầng hơn. Tuy nhiên khi đó cần lưu ý là ta nên giảm
learning rate (khoảng 1/10) learning rate khi huấn luyện cả mạng. Vì learning rate khi
huấn luyện toàn bộ mạng nhìn chung đã hoạt động tương đối tốt, chúng ta chỉ thay đổi
một lượng nhỏ để có kết quả tốt hơn cho bộ dữ liệu của mình. Bảng 2.1 cho chúng ta thấy
các kịch bản khi thực hiện Transfer learning.

Bảng 2-1: Các kịch bản transfer learning

Bộ dữ liệu rất giống Bộ dữ liệu rất khác


Sử dụng linear classifier ở Khá khó. Thử linear classifier từ
Rất ít dữ liệu
top tầng các tầng khác nhau
Khá nhiều dữ
Finetune một vài tầng Finetune một số lượng lớn tầng
liệu

SVTH: Hoàng Anh Dũng 30


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Trường hợp thứ nhất là bộ dữ liệu chúng ta rất giống với bộ dữ liệu đã huấn luyện
toàn bộ mạng. Nếu chúng ta chỉ có một số lượng rất nhỏ dữ liệu thì chúng ta chỉ cần huấn
luyện tầng cuối cùng của mạng, là bộ linear classifer. Và nếu chúng ta có nhiều dữ liệu
hơn, chúng ta có thể tinh chỉnh một vài tầng khác.
Mặc dù vậy, trong nhiều trường hợp, chúng ta sẽ gặp rắc rối khi dữ liệu của chúng ta
hoàn toàn khác với bộ dữ liệu đã huấn luyện toàn bộ mạng. Khi đó, chúng ta cần sáng tạo
hơn một chút vì đôi khi tầng cuối không có quá nhiều thông tin. Với trường hợp này,
chúng ta cần thử nghiệm nhiều, sáng tạo hơn trong khi huấn luyện. Tuy nhiên phần lớn là
chúng ta không thể transfer learning được khi bộ dữ liệu nhỏ mà lại quá khác so với bộ
dữ liệu đã huấn luyện mạng gốc. Nếu chúng ta có nhiều dữ liệu hơn một chút, chúng ta
có thể tinh chỉnh một số lượng lớn các tầng trong mạng.
Transfer learning hiện nay thường được sử dụng rất phổ biến. Việc huấn luyện
một mô hình từ đầu rất tốn thời gian và tài nguyên, và trong hầu hết trường hợp là chúng
ta không đủ dữ liệu để làm điều đó.
2.1.3. Overfitting – Quá khớp
Overfitting là hiện tượng một mô hình quá khớp với một bộ dữ liệu riêng, dẫn tới
mô hình bị sai khi chạy trên các phần dứ liệu khác. Đây là một hiện tượng không mong
muốn thường gặp trong quá trình thực hiện các bài toán trí tuệ nhân tạo. Cần nắm các kỹ
thuật để tránh hiện tượng này.
Mô hình của ta sau khi huấn luyện có thể đạt hiệu quả không tốt khi chạy trên một
tập dữ liệu mới. Hiện tượng này xảy ra do mô hình của ta chưa tổng quát hóa được với
toàn bộ dữ liệu. Nguyên nhân khá dễ hiểu do tập dữ liệu huấn luyện của ta chỉ là một tập
nhỏ chưa thể đại diện cho toàn thể dữ liệu được và hơn nữa còn có nhiễu. Người ta chia
chia hiện tượng này theo nguyên nhân thành 2 loại chính là chưa khớp (underfitting) và
quá khớp (overfitting).

Hình 2-32. Các trường hợp mô hình dự đoán so với hàm thật

SVTH: Hoàng Anh Dũng 31


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Chưa khớp – Underfitting


Mô hình được coi là chưa khớp khi nó quá đơn giản và chưa phừ hợp với cả tập dữ
liệu train. Như trong Hình 2-29 ở hình bên trái, tập dữ liệu huấn liệu gần với hàm
thế nhưng mô hình được chọn ở đây lại chỉ là một đường thẳng. Đường
thẳng này rõ rang là không mô tả được mô hình và dẫn đến sự thiếu chính xác trên cả tập
dữ liệu train và tập dữ liệu test.
Quá khớp – Overfitting
Đây là hiện tượng mô hình quá phức tạp, quá khớp với dữ liệu huấn luyện nhưng
khi dự đoán điểm dữ liệu mới thì bị sai. Nguyên nhân có thể do mô hình chúng ta xây
dựng quá phức tạp so với bài toán hoặc là chưa đủ dữ liệu để huấn luyện, đánh giá. Như
trong Hình 2-29 bên phải, mô hình được xây dựng có bậc lên tới tận 15. Đồ thị của mô
hình đi qua hầu hết các điểm dữ liệu của tập train. Độ chính xác khi chạy mô hình trên
tập train rất cao.Tuy nhiên, nếu dùng mô hình này dự đoán với một giá trị mới của x thì y
sẽ bị lệch đi so với hàm thật rất nhiều.
Vừa khớp – Good fitting
Hiện tượng này nằm giữa hai hiện tượng underfitting và overfitting cho ra kết quả
hợp lý với cả tập train và các giá trị mới, tức là nó mang được tính tổng quát như đồ thị ở
giữa trong Hình 2-29. Đây là trường hợp lý tưởng nhất khi mô hình vừa phù hợp với dữ
liệu train, vừa phù hợp với dữ liệu test.
Các phương pháp tránh overfitting
 Validation
Trích từ tập train ra tập con nhỏ và thực hiện việc đánh giá mô hình trên tập con nhỏ này.
Tập con nhỏ được trích ra từ training set này được gọi là validation set. Với khái niệm
này, ta tìm mô hình sao cho độ chính xác trên cả tập train và tập valid đều cao. Thử
nghiệm nhiều mô hình khác nhau, mô hình nào tốt nhất trên tập valid sẽ là mô hình tốt.
 Regularization
Regularization là thay đổi mô hình một chút để tránh overfitting trong khi vẫn giữ được
tính tổng quát của nó (tính tổng quát là tính mô tả được nhiều dữ liệu, trong cả tập train
và tập test. Để thực hiện việc đó, một trong những kỹ thuật đơn giản nhất là early
stopping. Trong học máy, nhìn chung hàm mất mát giảm dần khi số vòng lặp tăng lên.
Early stopping tức là dừng thuật toán sớm trước khi hàm mất mát đạt giá trị quá nhỏ, giúp
tránh overfitting. Chúng ta cũng tách từ tập train ra một tập valid nhỏ như trên và sau một
số vòng lặp, ta lại thực hiện kiểm tra. Nếu độ chính xác trên tập valid giảm thì dừng lại.

2.1.4 Phân loại các bài toán trong thị giác máy

SVTH: Hoàng Anh Dũng 32


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Các bài toán trong thị giác máy phổ biến có thể kể đến như: Phân loại ảnh – Image
Classification Bài toán phân loại ảnh có nhiệm vụ gán nhãn cho một bức ảnh từ một tập
các nhãn định sẵn. Đây là một trong những vấn đề cốt lõi trong thị giác máy tính, với rất
nhiều ứng dụng thực tiễn đa dạng như phân loại đồ vật, phân loại động vật, phân loại giới
tính, v.v. Hơn thế nữa, bài toán phân loại ảnh cũng là một bài toán tiền đề cho các bài
toán khác của thị giác máy tính. Mục đích của bài toán phân loại là đưa ra một nhãn
tương ứng với mỗi ảnh kèm theo chỉsố confidence (độ tin cậy) của nhãn đó.

Hình 2-14. Bài toán phân loại ảnh


Nhận dạng đối tượng – Object Detection Nhận dạng đối tượng là quá trình tìm kiếm
trong một bức ảnh hoặc video các vật thể riêng biệt và vị trí của chúng, khoanh vùng đối
tượng bằng một hình chữ nhật (bounding box) và phân loại chúng. Bài toán này có rất
nhiều ứng dụng như tìm kiếm đồ vật, theo dõi đối tượng.

Hình 2-15. Bài toán nhận dạng đối tượng

Phân đoạn hình ảnh – Image Classification Nhiệm vụ của bài toán phân đoạn ảnh là phân
loại từng pixel trong ảnh thuộc lớp nào. Trong bài toán phân đoạn ảnh, chúng ta sẽ không

SVTH: Hoàng Anh Dũng 33


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

quan tâm tới từng vật riêng biệt mà chỉ quan tâm tới từng pixel. Semantic segmentation
có thể ứng dụng trong xe tự lái, phân tách làn đường, khi mà nếu chỉ có bounding box,
chúng ta không thể biết đoạn đường phía trước xe là cong hay thẳng, rẽ trái hay rẽ phải.

Hình 2-16. Bài toán phân đoạn ảnh

Phân đoạn cá thể ảnh – Instance segmentation Bài toán phân đoạn cá thể ảnh có thể coi là
tổng hợp của 2 bài toán nhận diện vật thể và phân đoạn ảnh. Vì vậy, đây là bài toán khó
nhất và thách thức nhất trong lĩnh vực thị giác hiện tại khi phải thực hiện đồng thời hai
nhiệm vụ mà vẫn phải đảm bảo độ chính xác và tốc độ đủ dùng. Instance segmentation
không những giúp chúng ta phát hiện vật thể mà còn giúp chúng ta biết được hình dáng
của vật thể đó. Instance segmentation có nhiều ứng dụng trong xe tự lái nhận diện vật thể
giao thông, trong việc hiểu ngữ cảnh của ảnh (trên mạng xã hội)

Hình 2-17. Bài toán phân đoạn cá thể trong ảnh


Mô tả ảnh – Image Captioning Bài toán mô tả ảnh là bài toán với đầu vào là một bức ảnh
và đầu ra là một nhãn (label) miêu tả nội dung của bức ảnh đó dưới dạng văn bản (text)

SVTH: Hoàng Anh Dũng 34


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

hoặc giọng nói (speech). Đây là một bài toán kết hợp giữa 2 loại mô hình học sâu là CNN
và RNN để có thể xử lý với các kiểu dữ liệu khác nhau là ảnh và ngôn ngữ. Đây là một
trong lĩnh vực khó và đang được nghiên cứu.

Hình 2-18. Bài toán mô tả ảnh

2.2. Bài toán phát hiện vật thể (object detection) và các mạng xương sống phổ biến
trong mô hình học sâu

2.2.1. Bài toán phát hiện vật thể (object detection)


Bài toán phát hiện vật thể hay nhận dạng đối tượng (Object detection) là một thuật
ngữ chung để mô tả một tập hợp các nhiệm vụ thị giác máy tính có liên quan liên quan
đến việc xác định các đối tượng trong ảnh kỹ thuật số. Nhận dạng đối tượng đã được sử
dụng rộng rãi để phát hiện khuôn mặt, phát hiện xe, đếm số người đi bộ, hệ thống bảo
mật và xe không người lái. Có nhiều cách để nhận diện đối tượng có thể được sử dụng
cũng như trong nhiều lĩnh vực thực tế. Về phần tiếp cận mô hình, thuật toán nhận dạng
đối tượng có thể được phân loại thành 2 dạng chính: One-stage và Two-stage Method
❖ Two-stage Method:

SVTH: Hoàng Anh Dũng 35


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Phương pháp nhận dạng này có thể chia làm 2 giai đoạn. Giai đoạn đầu tiên là giai đoạn
phát hiện vật thể ở trong 1 bức ảnh. Giai đoạn thứ 2 là giai đoạn phân loại các vật thể đã
được phát hiện ở giai đoạn 1. Một số mô hình phổ biến của phương pháp Two-stage có
thể kể đến như: RCNN, Fast RCNN, Faster RCNN.

Hình 2-19. Hình ảnh mô tả mô hình RCNN, một mô hình đại diện cho phương pháp Two-stage
Detection
Trong hình 2-19 là luồng xử lý (pipeline) của mô hình RCNN. Ở giai đoạn 1 của phương
pháp two-stage, R-CNN sử dụng thuật toán selective search để trích chọn ra 2000 vùng
đề xuất (regional proposals). Vùng đề xuất là vùng được coi là có khả năng chứa vật thể
bên trong đó. Sau khi trích xuất ra khoảng 2000 vùng đề xuất với các vị trị và kích thước
khác nhau, 2000 vùng này sẽ được đưa qua một mô hình CNN để phân loại xem vùng đề
xuất đó thuộc lớp (class) nào. Đối với các mô hình Fast R-CNN hay Faster R-CNN, đã có
những cải tiến nhất định về phương pháp trích chọn vùng đề xuất giúp cho mô hình phát
hiện vật thể nhanh và chính xác hơn nhưng nhìn chung các phương pháp two stage vẫn
thực hiện phát hiện vật thể và phân loại vật thể ở 2 giai đoạn riêng biệt. Điều này làm cho
phương pháp two-stage có độ chính xác cao tuy nhiên tốc độ xử lý chậm.
❖ One-stage Method:
Khác với phương pháp Two-stage, phương pháp này sẽ không phân ra hai giai đoạn rõ
ràng, mà cùng lúc sẽ thực hiện cả việc phát hiện vật thể (tìm bounding box) và phân loại
vật thể (classification).

SVTH: Hoàng Anh Dũng 36


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-20. Phương pháp One-stage tìm kiếm và phát hiện vật thể cũng như phân loại chúng chỉ
trong một thuật toán

Một số mô hình phổ biến của phương pháp One-stage có thể kể đến như YOLO, SSD,…
Ưu điểm của phương pháp trên là nhanh, có khả năng chạy trong thời gian thực (real
time) tuy nhiên độ chính xác không cao bằng các phương pháp two-stage.

Các phương pháp đánh giá bài toán nhận dạng vật thể:
Đối Với bài toán nhận dạng vật thể, phương pháp hay được sử dụng nhất là độ chính xác
trung bình, tính chỉ số AP (Average precision).

Precision đại diện cho độ tin cậy của mô hình, là tỉ lệ số điểm true positive trong số
những điểm được phân loại là positive, cho chúng ta biết độ chính xác của phép dự đoán
như tỉ lệ phần trăm các dự đoán đúng. Precision cao tức là trong những điểm tìm được, tỉ
lệ tìm được đúng cao.

Recall đại diện cho độ nhạy của mô hình, là tỉ lệ số điểm true positive trong số những
điểm thực sự là positive, cho ta biết xem có bỏ sót nhiều điểm positive không. Recall
càng cao thì tỉ lệ các điểm positive bị bỏ sót sẽ thấp.

Một mô hình phân loại tốt phải là một mô hình có cả Precision và Recall đều cao. Có hai
cách đo chất lượng của bộ phân loại dựa vào Precision và Recall: Precision-Recall curve
và F-score.

IoU (Intersection over union)


IoU đo sự giao nhau giữa hai vùng được nhận diện. Chúng ta sử dụng chỉsố này để đo
xem bao nhiêu phần của vùng được dự đoán giao với ground truth (vùng ảnh thật). Trong
một số bộ dữ liệu, chúng ta sẽ định nghĩa trước một ngưỡng IoU để phân loại xem phép
dự đoán là true positive hay false positive.

SVTH: Hoàng Anh Dũng 37


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-21. Chỉ số IoU


Precision Recall Curve & Average Precision
Khi một mô hình nhận diện ra kết quả dự đoán(prediction) , ta cần so sánh kết quả đó với
đáp án trên thực tế (ground truth). Với những kết quả dự đoán có chỉ số IoU của
prediction và groundtruth lớn hơn 1 ngưỡng nào đó (từ 0 đến 1), ta quy định kết quả đó là
True Positive, ngược lại sẽ là False Positive. Từ đó, với mỗi 1 ngưỡng (threshold) khác
nhau, ta có thể vẽ được các đường cong mô tả mối quan hệ giữa Precision và Recall
(Precision Recall Curve).

Hình 2-22. Precision Recall Curve – đường biểu diễn mối quan hệ giữa Precision và Recall
Giá trị AP (Average Precision) được chính là vùng diện tích phía dưới đường Precision
Recall Curve. Với AP lớn, nó cho thấy Precision và Recall cao, chứng minh rằng model
học tốt, còn với AP nhỏ thì ngược lại.

mAP (mean Average Precision)

SVTH: Hoàng Anh Dũng 38


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Thông thường, với mỗi 1 lớp trong bài toán phân loại sẽ có 1 giá trị AP riêng, và mAP là
trung bình cộng của các giá trị AP của các lớp khác nhau.
2.2.2. Các mạng xương sống (backbone) phổ biến
Kiến trúc xương sống là một trong các thành phần quan trọng nhất của mô hình
nhận diện vật thể. Những kiến trúc mạng này giúp trích xuất những đặc trưng từ ảnh đầu
vào từ đó giúp nhận diện ra các đối tượng trong ảnh.
a) ResNets
Các mạng học sâu thông thường thường có các lớp tích chập, rồi ở cuối mạng sẽ có
các tầng kết nối đầy đủ cho nhiệm vụ phân loại. Những kiến trúc này thường cải tiến độ
chính xác nhờ gia tăng chiều sâu của mạng CNN. Nhưng thực nghiệm cho thấy đến một
ngưỡng độ sâu nào đó thì độ chính xác của mô hình sẽ bão hòa và thậm chí phản tác dụng
và làm cho mô hình kém chính xác hơn. Khi thực hiện thuật toán lan truyền ngược, ta sẽ
tính các gradient lần lượt qua các lớp, điều này dẫn tới việc phải nhân các đạo hàm riêng
theo các trọng số trung gian nhiều lần. Khi mạng sâu, nếu các số đó nhỏ thì gradient càng
về gần tầng đầu sẽ càng nhỏ, tiến dần về 0, gọi là vanishing gradients; còn nếu các số đó
lớn thì gradient càng về gần tầng đầu càng lớn, trở thành số rất lớn, gọi là exploding
gradients. Vanishing gradients khiến cho thuật toán gradient descent không làm thay đổi
nhiều các trọng số của các tầng đó, làm các tầng này không hội tụ và mạng sẽ không thu
được kết quả tốt. Mạng ResNet ra đời để giải quyết vấn đề đó. Giải pháp mà ResNet đưa
ra là sử dụng các kết nối tắt (skip connection) để xuyên qua một hay nhiều lớp. Một khối
như vậy được gọi là Residual Block, được biểu diễn trong Hình 2-33.

Hình 2-23. Residual Block

Việc xếp chồng các lớp sẽ không làm giảm hiệu suất mạng. Chúng ta có thể đơn
giản xếp chồng các ánh xạ đồng nhất lên mạng hiện tại và hiệu quả của kiến trúc không
thay đổi. Điều này giúp cho kiến trúc sâu không kém hơn các kiến trúc nông. Hơn nữa,
với kiến trúc này, các lớp ở phía trên có được thông tin trực tiếp hơn từ các lớp dưới nên
sẽ điều chỉnh trọng số hiệu quả hơn. ResNet gần như tương tự với các mạng gồm có các
tầng: tích chập, pooling, kích hoạt và kết nối đầy đủ.

SVTH: Hoàng Anh Dũng 39


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

b) EfficientNet
Việc thu phóng mô hình đúng cách sẽ mang lại hiệu quả tốt hơn của mô hình đối
với tác vụ cần giải quyết. Sẽ có 3 cách thu phóng mô hình:
 Thu phóng theo chiều sâu: thu phóng theo chiều sâu là một cách thông dụng
nhất được sử dụng để thu phóng một mô hình CNN. Độ sâu có thể được phóng
to cũng như thu nhỏ bằng cách thêm hoặc bớt các lớp tương ứng.
 Thu phóng theo chiều rộng: việc thu phóng theo chiều rộng của mạng (theo như
trong hình minh họa ta có thể hiểu là thêm dữ liệu đầu vào) cho phép các lớp tìm
hiểu các tính năng chi tiết hơn.
 Thu phóng theo độ phân giải: theo một cách trực quan, chúng ta có thể nói rằng
trong một hình ảnh có độ phân giải cao, các đặc trưng sẽ chi tiết hơn và do đó
mô hình đào tạo ra sẽ học được các đặc trưng nhỏ.
Tuy nhiên các biện pháp thu phóng trên không phải lúc nào cũng tốt như việc thu
phóng theo chiều rộng nếu tăng chiều rộng sẽ ngăn cản mạng học các tính năng phức tạp.
Tương tự nếu tăng chiều sâu sẽ dẫn đến hiện tượng vanishing gradient.
Để giải quyết các vấn đề trên nhóm tác giả Mingxing Tan và Quoc V.Le đã nghiên
cứu một mô hình có thể kết hợp ba phương pháp thu phóng theo một tỷ lệ nào đó để cho
hiêu suất cao nhất. Để chứng minh luận điểm đó nhóm tác giả đã phát triển một kiến trúc
mạng có tên là EfficientNet [17]. Nhóm tác giả đã thử nghiệm các bộ thông số với 8 mô
hình từ EfficientNet-B0 đến EfficientNet-B7, và EfficientNet-B7 đang có độ chính xác
cao nhất trên tập ImageNet.
c) MobileNet
MobileNet được phát triển bởi đội ngũ Google, mô hình sử dụng cách tính chập tích
mang tên DSC (Depthwise Separable Convolution) nhằm giảm kích thước mô hình và
giảm độ phức tạp tính toán. Do đó, MobileNet thường được sử dụng cho các ứng dụng thị
giác máy trên các thiết bị nhỏ gọn như điện thoại thông minh hay thiết bị nhúng.
Để hiểu rõ hơn về DSC, ta cần phải hiểu rõ về tích chập 2 chiều thông thường. Như đã
biết, tích chập 2 chiều thông thường sẽ được tính toán trên toàn bộ chiều sâu (channel).
Do đó số lượng tham số của mô hình sẽ gia tăng đáng kể phụ thuộc vào độ sâu của layer
trước đó.

SVTH: Hoàng Anh Dũng 40


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-24. Cách tính số lượng tham số đối với tích chập 2 chiều thông thường

Ở hình 2-24 có một đầu vào kích thước h×w×c, tích chập thông thường sẽ cần
k×k×c tham số để thực hiện tích chập trên toàn bộ độ sâu của layers. Mỗi một bộ lọc sẽ
tạo ra một ma trận output kích thước h′×w′×1. Áp dụng c′ bộ lọc khác nhau ta sẽ tạo ra
đầu ra có kích thước h′×w′×c′ (các ma trận output khi áp dụng tích chập trên từng bộ lọc
sẽ được concatenate theo chiều sâu). Khi đó số lượng tham số cần sử dụng cho một tích
chập thông thường sẽ là: c′×k×k×c.
Đối với DSC, sử dụng phương pháp tích chập chiều sâu và tích chập điểm sẽ cho số
lượng tham số ít hơn rất nhiều
2.3. Các điều kiện thách thức trong môi trường thực tế
2.3.1) Biển báo giao thông được quan sát với kích thước nhỏ
Đối với xe tự lái việc quan sát trước, dự đoán trước trên một đoạn đường là rất
quan trọng ,điều đó đòi hỏi camera phải trích xuất được các thông tin từ xa, khi đó thông
tin của đối tượng nhận về có thể có kích thước rất nhỏ gây khó khăn trong việc phát hiện
và phân loại đối tượng

Hình 2-25. Biển báo giao thông rất nhỏ trong hình(kích thước 5x5 pixel)

SVTH: Hoàng Anh Dũng 41


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

2.3.2) Các điều kiện challenging khác

Hình 2-26. Biển báo giao thông trong các điều kiện challenging khác

SVTH: Hoàng Anh Dũng 42


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Trong môi trường thực tế ta còn phải gặp rất nhiều thử thách khác như về thời tiết:
mưa, tối, bóng dâm, tuyết,khói,ống kính bẩn,mờ hay về lỗi thông tin khi nhận như
codec,lỗi màu sắc,nhiễu,…
Kết luận: Có rất nhiều thách thức trong môi trường thực tế nhưng trong giới hạn của đồ
án nên em tập trung phát triển mô hình để xử lí biển báo giao thông có kích thước nhỏ
2.5. Các kĩ thuật xử lí nâng cao hiệu suất cho mô hình
2.5.1) Sliding window
Thuật toán để được thiết kế để xử lý hình ảnh ,sử dụng một cửa sổ trượt để chia
ảnh thành một loạt các ảnh nhỏ hơn. Một cửa sổ trượt là một hình chữ nhật có kích thước
cố định trượt từ từ trái sang phải và từ trên xuống dưới trong một hình ảnh. (Như Hình 3
chứng minh, cửa sổ trượt của chúng tôi có thể được sử dụng để phát hiện khuôn mặt
trong hình ảnh đầu vào). Ngoài ra, một tập hợp các phép biến đổi tùy chọn có thể được
chỉ định để áp dụng cho mỗi cửa sổ.

Hình 2-27. Các vùng trong bức ảnh được tạo ra bằng phương pháp trượt cửa sổ

SVTH: Hoàng Anh Dũng 43


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-28. Sliding window image processing

Thuật toán sliding window giúp ta tạo ra nhiều data hơn từ data gốc đồng thời có
thể thu gọn đối tượng lại trong một ảnh nhỏ giúp model của ta dễ dàng học hơn và do đó
sẽ phát hiện đối tượng tốt hơn. Các cửa sổ trượt đóng vai trò không thể thiếu trong phân
loại đối tượng, vì chúng cho phép chúng tôi bản địa hóa chính xác "trong đó" trong một
hình ảnh mà một đối tượng nằm
2.5.2) Region proposals
Ý tưởng chung là thuật toán đề xuất khu vực nên kiểm tra hình ảnh và cố gắng tìm
các vùng của hình ảnh có khả năng chứa một đối tượng (nghĩ về đề xuất khu vực là anh
em họ saliency detection). Thuật toán đề xuất khu vực phát hiện chính xác các vùng của
hình ảnh có thể chứa một đối tượng vượt qua các "đề xuất ứng cử viên" cho trình phân
loại hạ nguồn để thực sự gắn nhãn cho các vùng, do đó hoàn thành việc phát hiện đối
tượng.
Các thuật toán đề xuất khu vực tự động chẳng hạn như tìm kiếm có chọn lọc
(selective search). Thuật toán tìm kiếm có chọn lọc được triển khai trong OpenCV lần
đầu tiên được giới thiệu bởi UIJlings et al. Trong bài báo năm 2012 của họ, Selective
Search for Object Recognition.
Tìm kiếm có chọn lọc hoạt động bằng cách phân đoạn quá mức một hình ảnh bằng
thuật toán SuperPixel (thay vì SLIC, Uijlings et al. sử dụng phương pháp từ bài báo 2004
của Felzenszwalb và Huttenlocher, Efficient graph-based image segmentation). Có thể
nhìn thấy một ví dụ về việc chạy thuật toán SuperPixel Felzenszwalb bên dưới:

SVTH: Hoàng Anh Dũng 44


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-29. Tìm kiếm chọn lọc của OpenCV sử dụng phương pháp Felzenszwalb
superpixel để tìm các vùng của hình ảnh có thể chứa một đối tượng.
Từ đó, tìm kiếm có chọn lọc tìm cách hợp nhất các superpixels để tìm các vùng
của hình ảnh có thể chứa một đối tượng. Tìm kiếm có chọn lọc hợp nhất các superpixels l
theo kiểu phân cấp dựa trên năm biện pháp tương tự chính:
Tương tự màu: Tính toán biểu đồ với 25 bin cho mỗi kênh của một hình ảnh, kết
hợp chúng lại với nhau và có được một mô tả cuối cùng là 25 × 3 = 75-D. Độ tương tự
màu của bất kỳ hai vùng nào được đo bằng khoảng cách giao điểm biểu đồ.
Tương tự kết cấu: Đối với kết cấu, tìm kiếm có chọn lọc các dẫn xuất Gaussian ở
8 hướng trên mỗi kênh (giả sử hình ảnh 3 kênh). Các hướng này được sử dụng để tính
toán biểu đồ với 10 bin trên mỗi kênh, tạo ra một mô tả kết cấu cuối cùng là 8x10x3 =
240-D. Để tính toán độ tương tự kết cấu giữa bất kỳ hai vùng nào,khoảng cách giao điểm
biểu đồ một lần nữa được sử dụng.
Độ tương tự kích thước: Số liệu tương tự kích thước mà tìm kiếm chọn lọc sử
dụng các khu vực nhỏ hơn được nhóm sớm hơn là sau này. Bất cứ ai đã sử dụng các thuật
toán phân cụm (HAC) phân cấp (HAC) trước khi biết rằng HAC dễ bị cụm đạt đến một
khối quan trọng và sau đó kết hợp mọi thứ mà chúng chạm vào. Bằng cách thực thi các
khu vực nhỏ hơn để hợp nhất trước đó, chúng tôi có thể giúp ngăn chặn một số lượng lớn
các cụm nuốt chửng tất cả các khu vực nhỏ hơn.
Hình dạng tương tự/khả năng tương thích: Ý tưởng đằng sau sự tương tự hình
dạng trong tìm kiếm chọn lọc là chúng nên tương thích với nhau. Hai khu vực được coi là

SVTH: Hoàng Anh Dũng 45


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

"tương thích" nếu chúng "phù hợp" với nhau (do đó lấp đầy khoảng trống trong thế hệ đề
xuất khu vực của chúng tôi). Hơn nữa, các hình dạng không chạm vào không nên được
hợp nhất.
Đo lường tương tự meta cuối cùng: Một meta tương tự cuối cùng hoạt động như
một sự kết hợp tuyến tính của sự tương tự màu, độ tương tự kết cấu, độ tương tự kích
thước và độ tương tự/tương thích hình dạng. Kết quả tìm kiếm có chọn lọc áp dụng các
biện pháp tương tự phân cấp này có thể được nhìn thấy trong hình sau:
Kết quả tìm kiếm có chọn lọc áp dụng các biện pháp tương tự phân cấp này có thể
được nhìn thấy trong hình sau:

Hình 2-30: Tìm kiếm chọn lọc của OpenCV áp dụng các biện pháp tương tự phân cấp
cho các vùng tham gia và cuối cùng tạo thành tập hợp các đề xuất cuối cùng cho các đối tượng
có thể có mặt.
2.5.3) Chỉnh sửa Anchor box
Để tìm được bounding box cho vật thể, có thể ta sẽ cần các anchor box làm cơ sở
ước lượng. Những anchor box này sẽ được xác định trước và sẽ bao quanh vật thể một
cách tương đối chính xác. Sau này thuật toán regression bounding box sẽ tinh chỉnh lại
anchor box để tạo ra bounding box dự đoán cho vật thể.
Mỗi một vật thể trong hình ảnh huấn luyện được phân bố về một anchor box. Trong
trường hợp có từ 2 anchor boxes trở lên cùng bao quanh vật thể thì ta sẽ xác định anchor
box mà có IoU với ground truth bounding box là cao nhất.

SVTH: Hoàng Anh Dũng 46


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-29: Xác định anchor box cho một vật thể.
Ở hình 2-29 ,từ Cell i ta xác định được 3 anchor boxes viền xanh như trong hình. Cả
3 anchor boxes này đều giao nhau với bounding box của vật thể. Tuy nhiên chỉ anchor
box có đường viền dày nhất màu xanh được lựa chọn làm anchor box cho vật thể bởi nó
có IoU so với ground truth bounding box là cao nhất.
Để dự báo bounding box cho một vật thể chúng ta dựa trên một phép biến đổi từ anchor
box và cell.Cho một anchor box có kích thước (pw,ph) tại cell nằm trên feature map với
góc trên cùng bên trái của nó là (cx,cy), mô hình dự đoán 4 tham số (tx,ty,tw,th) trong đó
2 tham số đầu là độ lệch (offset) so với góc trên cùng bên trái của cell và 2 tham số sau là
tỷ lệ so với anchor box. Và các tham số này sẽ giúp xác định bounding box dự đoán b có
tâm (bx,by) và kích thước (bw,bh) thông qua hàm sigmoid và hàm exponential như các
công thức bên dưới:

Ngoài ra do các tọa độ đã được hiệu chỉnh theo width và height của bức ảnh nên luôn có
giá trị nằm trong ngưỡng [0, 1]. Do đó khi áp dụng hàm sigmoid giúp ta giới hạn được
tọa độ không vượt quá xa các ngưỡng này.

SVTH: Hoàng Anh Dũng 47


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 2-30: Công thức ước lượng bounding box từ anchor box.


Ở hình 2-30, hình chữ nhật nét đứt bên ngoài là anchor box có kích thước là (pw,ph).
Tọa độ của một bounding box sẽ được xác định dựa trên đồng thời cả anchor box và cell
mà nó thuộc về. Điều này giúp kiểm soát vị trí của bounding box dự đoán đâu đó quanh
vị trí của cell và bounding box mà không vượt quá xa ra bên ngoài giới hạn này. Do đó
quá trình huấn luyện sẽ ổn định hơn rất nhiều .
Kết luận: Ta sẽ không chọn cách làm là chỉnh sửa Anchor box vì ta chỉ phát hiện
một loại đối tượng duy nhất đó là biển báo giao thông ,hầu như các bounding box của nó
đều là kích thước giống nhau ,khá nhỏ. Tuy kỹ thuật region proposals dự đoán sẽ tăng
hiệu suất phát hiện tốt hơn so với sliding window nhưng vì độ phức tạp của nó khi thực
hiện và trong giới hạn của đồ án nên em chọn thực hiện kĩ thuật sliding window

CHƯƠNG 3. HUẤN LUYỆN MÔ HÌNH NHẬN DIỆN BIỂN BÁO GIAO

THÔNG

Đối với bài toán nhận diện biển báo giao thông, ta sẽ sử dụng hai mô hình học sâu
để xử lý:
 Xây dựng mô hình phát hiện vật thể biển báo giao thông (object detection).
 Xây dựng mô hình phân loại các biển báo giao thông đã được trích xuất ra từ mô
hình đầu.

SVTH: Hoàng Anh Dũng 48


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình3-1. Sơ đồ xử lý của bài toán

3.1. Huấn luyện mô hình phát hiện biển báo giao thông
3.1.1)Chuẩn bị dữ liệu
Đối với nhiệm vụ phát hiện biển báo giao thông,em dùng bộ dữ liệu Zalo AI Challenge.
Bộ dữ liệu này rất khó khăn nhưng rất phù hợp cho các ứng dụng phát hiện biển báo giao
thông trong điều kiện giao thông của Việt Nam. Bộ dữ liệu bao gồm 4500 hình ảnh trong
tập train và 586 ảnh trong tập test với kích thước 1622x626, được thu thập từ bản đồ
Google Street View ở nhiều nơi khác nhau ở Việt Nam. Nhiệm vụ của vấn đề là phát hiện
bảy loại biển báo giao thông phổ biến, bao gồm cấm ngược chiều, cấm dừng và đỗ, cấm
rẽ, giới hạn tốc độ, nguy hiểm, hiệu lệnh, cấm còn lại. Bộ dữ liệu rất khó khăn vì phần
lớn các đối tượng quan tâm là cực kỳ nhỏ (<10x10 pixel). Hơn nữa, nó có một loạt các
cảnh từ khu vực thành thị đến khu vực nông thôn, từ đường phố cực kỳ đông đúc đến
đường cao tốc hẻo lánh. Ta chia tập train được cho ban đầu thành hai tập hợp con bao
gồm tập huấn luyện (3600 hình ảnh) và bộ thử nghiệm (900 hình ảnh).

Hình 3-2:Hình ảnh gốc trước khi sliding windown (1622x626 pixel)

SVTH: Hoàng Anh Dũng 49


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Ở đây kỹ thuật sliding window đã được áp dụng trên cả tập train và test với cửa sổ trượt
có kích thước 1024x626 và sải bước 426. Sau đó, các hình ảnh được cắt được đệm đến
1024x1024 để phù hợp với kích thước đầu vào của RetinaFace. Bộ dữ liệu được chú thích
ở định dạng Coco, vì vậy chú thích của nó đã được chuyển đổi thành định dạng của
RetinaFace.

Hình 3-3: Thu được 3 hình ảnh sau khi sliding windown

Có thể thấy rằng mặc dù kích thước của hình ảnh của bộ dữ liệu Zalo là lớn, nhưng các
biển báo giao thông rất nhỏ so với toàn bộ hình ảnh vì các biển báo ở rất xa máy ảnh.
Hơn nữa, như một đầu vào cho việc đào tạo mô hình, các hình ảnh phải được thay đổi
kích thước để phù hợp với kích thước của mạng. Điều này dẫn đến thực tế là các biển báo
giao thông sẽ rất nhỏ, cực kỳ khó để phát hiện với độ chính xác đủ tốt. Ngoài ra cần một
mô hình hiệu quả, có thể phát hiện các biển báo giao thông nhỏ như vậy cũng như có thể
triển khai trên phần cứng rất nhẹ, là cần thiết.

3.1.2) Chuyển định dạng dữ liệu


Dữ liệu bộ Zalo AI Challenge cho dưới dạng các file json chứa nhãn của tất cả các
ảnh. Tuy nhiên dữ liệu đầu vào ảnh của RetinaFace theo format darknet với một file .txt
sẽ cho một ảnh có chứa đối tượng ta đánh nhãn, còn với những ảnh không có đối tượng
thì thôi. File .txt sẽ có format như sau:
 Nội dung của mỗi ảnh sẽ liên tiếp nhau

SVTH: Hoàng Anh Dũng 50


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

 Hàng đầu sẽ là : #file_name


 Mỗi hàng tiếp sau đó là thông tin của bouding box chưa vật thể sẽ có dạng như
sau:
<x><y><bb_width><bb_height>
Trong đó:
 <x><y><bb_width><bb_height>: các giá trị số nguyên biểu diễn tọa độ của
điểm tại góc trên cùng bên trái của bounding box, chiều rộng cũng như chiều
cao của bounding box.

Ví dụ:

# 4517_0_0.png
998 227 8 8
998 217 8 9
959 224 12 12
586 109 22 26
744 201 14 12
744 216 12 13

Hình 3-4: Ví dụ về một label cho một ảnh đã crop


Sau khi chuyển định dạng dữ liệu để huấn luyện mô hình ta thực hiện các bước sau:
 Tạo một thực mục tên là widerface để chứa dữ liệu ảnh và nhãn tương ứng. Cấu
trúc thư mục sẽ như sau:

Hình 3-5: Cấu trúc cây thư mục của dữ liệu train

SVTH: Hoàng Anh Dũng 51


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

3.1.3. Huấn luyện mô hình


Lựa chọn mạng học sâu

Ta cần triển khai mô hình xuống phần cứng do đó ta sẽ chọn những mô hình đảm bảo
những tiêu chỉ về độ chính xác và tốc đô chạy . Do đó việc sử dụng RetinaFace như một
mô hình localization và Mobilenetv1-SSD như một mô hình phân loại đã được đề xuất.
Bởi vì mô hình Retinaface sử dụng mạng xương sống (backbone) Mobilenet, là một
mạng xương sống nhẹ, có số lượng tính toán ít và độ chính xác cao, phù hợp với tài
nguyên giới hạn của các hệ máy tính nhúng, tốc độ xử lý nhanh để có thể ứng dụng vào
trong xử lý thời gian thực (real-time).
Kiến trúc của mô hình Retinaface:

Hình 3-6: Kiến trúc của mô hình Retinaface


Về cơ bản, kiến trúc của mô hình Retinaface vẫn được giữ nguyên và để ứng dụng được
mô hình trên vào bài toán phân loại và định vị vật thể, cần phải làm những công việc sau:
❖ Chỉnh sửa đầu ra để mô hình chỉ phát hiện 1 đối tượng duy nhất là biển báo giao thông
❖ Chỉnh sửa lại hàm mất mát (hàm loss) để mô hình chỉ tập trung vào công việc phát
hiện đối tượng
❖ Tinh chỉnh các siêu tham số của mô hình:

SVTH: Hoàng Anh Dũng 52


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 3-7: Chỉnh sửa file cấu hình


Một vài siêu tham số, thông tin cần chú ý:
- Mạng xương sống (backbone): Mobilenet
- Số vòng lặp (epoch): 250
- Tốc độ học (learning rate): 0.01
- Phương pháp tối ưu (optimizer): Stochastic Gradient Descent
- Hàm mục tiêu: Multi-task loss bao gồm:
• Hàm mục tiêu cho dự đoán bounding box (Bounding box regression): Smooth L1
(loss_bbox)
• Hàm mục tiêu cho định vị điểm (Landmark regression): Smooth L1 (loss_landm)
• Hàm mục tiêu cho phân loại vật thể (Classification): Cross Entropy (loss_cls)
Công thức tính hàm mục tiêu của mô hình: 𝑙𝑜𝑠𝑠 = 𝛼.LOSS𝑏𝑏𝑜𝑥 + 𝛽.LOSS𝑐𝑙𝑠 + 𝛾.
LOSS𝑙𝑎𝑛dm

SVTH: Hoàng Anh Dũng 53


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Trong đó các hệ số 𝛼, 𝛽, 𝛾 được chọn trong quá trình thực nghiệm. Sau quá trình thực
nghiệm ta có: 𝛼 = 2, 𝛽 = 1 , 𝛾 = 0 vì bài toán của ta ko chịu ảnh hưởng của landmark
Sau khi hoàn thành các công việc trên, ta lấy dữ liệu đã chuẩn bị và tiến hành huấn luyện
mô hình

Sau khi train 250 epochs ta được kết quả đánh giá hiệu suất phát hiện biển báo của mô
hình như sau:

Hình 3-8: Tính toán mAP cho một lớp, chỉ phát hiện biển báo giao thông

SVTH: Hoàng Anh Dũng 54


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 3-9. Kết quả dự đoán trên tập testing

Nhận xét:
 Nhìn chung kết quả nhận diện biển báo khá tốt, kể cả biển nhỏ độ chính xác
mAP với ngưỡng 0.5 là khá cao.

3.2. Huấn luyện mô hình phần loại biển báo giao thông
Sau khi trích xuất được vị trí của biển báo giao thông từ mô hình nhận diện vật thể
ta cần biết được biển báo giao thông đó là loại biển gì. Ở đây chúng ta sẽ sử dụng một mô
hình phân loại. Dựa trên tốc độ và độ chính xác tương đối cao, ta sẽ chọn mô hình
Mobilenetv1-SSD cho quá trình huấn luyện mô hình

3.2.1. Chuẩn bị dữ liệu


Trong khuôn khổ của đồ án, ta chỉ huấn luyện 7 lớp dữ liệu ứng với 7 loại biển
báo phổ biến. Mỗi biển báo giao thông sẽ được cắt từ bức ảnh gốc ban đầu theo kích
thước của bounding box có trong nhãn trong tập training , sau đó tiếp tục đệm hình
ảnh đã crop được đến hình ảnh 60x60. Sau đó, hình ảnh được thay đổi kích thước
thành 300x300 để đáp ứng điều kiện kích thước hình ảnh đầu vào để đào tạo mô
hình Mobilenetv1-SSD.

SVTH: Hoàng Anh Dũng 55


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Từ 3600 ảnh gốc trong tập train ta lấy tọa độ bouding box từ label và thu được 9140
ảnh crop chỉ chứa duy nhất một biển báo giao thông thông. Ta thống kê dữ liệu có
trong mỗi lớp:

Hình 3-10. Thống kê dữ liệu cho mỗi lớp

Hình 3-12: Dữ liệu dùng để train model classifier

Sau khi huấn luyện mô hình 100 epoch, nhận thấy đồ thị sai số không giảm nữa ta sẽ
dừng mô hình và đánh giá kết quả

SVTH: Hoàng Anh Dũng 56


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 3-13. Đồ thị sai số khi huấn luyện


3.3. Kết hợp 2 model detector và classifier để được model cuối cùng phát
hiện và phân loại biển báo giao thông
Mô hình RetinaFace được điều chỉnh tinh chỉnh kết hợp mô hình Mobilenetv1-SSD.
AP50 đã được sử dụng để đánh giá độ chính xác của hai phương pháp phát hiện và phân
loại biển báo giao thông. Ta đánh giá mô hình cuối cùng trên tập validation gồm có 900
ảnh có tổng số biển báo là 1816 được phân bố vào các lớp như sau:

Hình 3-14. Thống kê dữ liệu dùng để đánh giá mô hình cuối cùng

SVTH: Hoàng Anh Dũng 57


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Và từ đó ta tính được mAP50 là 63,45%. Trong đó AP50 cao nhất là 78,44% cho
lớp cấm dừng và đỗ. Phát hiện các lớp quan tâm của bộ dữ liệu đều đạt AP50 trên 50%.
So với kết quả tốt nhất của Challenging Zalo AI ,với mô hình được đào tạo từ đầu, kết
quả của phương của em cao hơn (63,45% so với 60,53%).Kết quả được mô tả :

Hình 3-15. Thống kê False Positive và True Positive trong mỗi class

SVTH: Hoàng Anh Dũng 58


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hình 3-16. Vẽ đường Recall-Precision curve

Hình 3-17.Tính mAP50 cuối cùng

SVTH: Hoàng Anh Dũng 59


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Điều này có thể được giải thích rằng hình ảnh đầu vào cho mô hình phân loại
(Mobilenetv1-SSD) được cắt dựa trên các hộp giới hạn đầu ra của mô hình RetinaFace.
Mỗi hộp giới hạn chỉ chứa một biển báo giao thông riêng lẻ. Điều này đảm bảo rằng hình
ảnh được cắt chỉ có một biển báo giao thông có kích thước tối đa như trong ảnh ban đầu.
Do đó, chất lượng tốt nhất của hình ảnh cắt được cải thiện do đó, Mobilenetv1- SSD có
thể đưa ra kết quả tốt hơn. Hình 3-18 cho thấy một minh họa về việc phát hiện các biển
báo giao thông của bộ dữ liệu Zalo

Hình 3-18. Minh họa về việc phát hiện các biển báo giao thông của bộ dữ liệu Zalo

Có thể thấy rằng kết quả thu được rất tốt khi các biển báo được phát hiện chính xác với tỷ
lệ cao.

SVTH: Hoàng Anh Dũng 60


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

3.5 Triển khai các mô hình nhận diện và phân loại biển báo giao thông trên
Jetson Nano

Máy tính nhúng Jetson Nano


Được ra mắt vào tháng 3 năm 2019 bởi hang NVIDIA, Jetson Nano là một nền
tảng mạnh mẽ cho việc triển khai các thuật toán học máy. Với việc có kích
thước nhỏ gọn, sở hữu GPU mạnh, Jetson Nano rất phù hợp để sử dụng làm máy
tính xử lý trung tâm. Một tính năng đặc biệt khác là nó có thể sử dụng Tensor-
RT để tăng tốc các mô hình học sâu. Để sử dụng được Jetson Nano cũng như
bao máy tính khác ta cũng phải cài đặt hệ điều hành cho nó. Thẻ nhớ 64Gb được
dùng làm bộ nhớ chính của Jetson Nano. Việc cài đặt hệ điều hành có thể tham
khảo trên trang chủ của NVIDIA

Hình 3-19. Máy tính nhứng Jetson Nano

Tối ưu hóa mô hình


Để đưa các mô hình đã huấn luyện xuống phần cứng ta cần phải tối ưu hóa các
mô hình. Trong dự án này, các mô hình được tối ưu hóa nhờ công nghê NVIDIA
Tensor-RT. Đây là công nghệ được phát triển bởi NVIDIA giúp các mô hình trí
tuệ nhân tạo chạy nhanh hơn nhưng lại tốn ít tài nguyên hơn. Quá trình tối ưu
hóa mô hình được mô tả qua hình 3-18.

Hình 3-20. Quy trình tối ưu hóa mô hình

SVTH: Hoàng Anh Dũng 61


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Quá trình chuyển đổi mô hình sang Tensor-RT được thông qua một định dạng trung
gian gọi là ONNX (Open Neural Network Exchange). ONNX giúp biểu diễn các mô
hình học sâu và cho phép chuyển đổi định dạng giữa các frameworks khác nhau.
Các mô hình sau khi được huấn luyện trên Pytorch sẽ được lưu dưới dạng file
".pth", sau đó các mô hình này rất đơn giản được chuyển đổi sang định dạng ONNX
nhờ module Pytorch ONNX . Sau đó ta sẽ chuyển đổi mô hình ONNX sang đinh
dạng Tensor-RT. Do đó, hiệu quả tính toán của các mô hình của ta trên bộ phát triển
Jetson Nano Developer Kit của NVIDIA đã được đánh giá sau khi được đưa xuống
Tensor-RT như sau:

RetinaFace
+
MobileNetV
Model 1-SSD
Batch
size 1
Model FP16
Image
dimensio
n 1024x1024
Computi
ng time 0.27s
mAP50 63.45
RAM
usage 1.3GB
Hình 3-21. Kết quả đánh hiệu suất model dưới định dạng Tensor-RT trên JetsonNano

4. KẾT LUẬN

4.2. Kết luận


Trong đề tài này em đã xây dựng được model phát hiện biển báo giao thông trong
điều kiện khó , sử dụng mô hình RetinaFace để trích xuất vị trí biển báo giao thông và mô
hình Mobilenetv1- SSD để phân loại các biển báo giao thông vừa được trích xuất ra. Tuy
nhiên vì mạng RetinaFace khá bé, nên việc trích xuất các biển báo quá bé trong hình có
thể chưa tốt, dẫn đến bỏ xót các biển báo bé đó. Bên cạnh đó mô hình vẫn còn nhận nhầm
nhiều biển quảng cáo trên đường thành biển báo giao thông. Dẫu vậy các kết quả trên đây
vẫn sẽ là cơ sở quan trọng để em phát triển các bài toán về trích xuất thông tin môi trường
trong xe tự lái.

SVTH: Hoàng Anh Dũng 62


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Hơn thế nữa, quá trình thực hiện đề tài này cũng giúp em nắm được các kiến thức,
kỹ năng cơ bản về học máy và học sâu. Em đã nắm được kiến trúc, nguyên lí hoạt động
của một số mạng học sâu thông dụng. Ngoài ra, em cũng đã nắm được phương pháp huấn
luyện một mạng học sâu bất kỳ để ứng dụng vào bài toán cụ thể của riêng mình, biết các
kỹ thuật cải thiện độ chính xác, tinh chỉnh các mạng học sâu khi gặp các hiện tượng
không tốt như Overfitting. Đây là nền tảng quan trọng để áp dụng những công nghệ mới
này trên con đường sự nghiệp tương lai.
4.3. Hướng phát triển của đồ án trong tương lai
Dựa vào kết quả đã thực hiện ở trên, em dự định sẽ tiếp tục phát triển đề tài theo
những hướng dưới đây:
 Cải thiện mô hình nhận diện biển báo để có thể đạt hiệu suất tốt hơn nữa trên các
vật thể bé.
 Phát triển thêm các bài toán nhận diện biển báo giao thông trong các điều kiện
challenge khác.

TÀI LIỆU THAM KHẢO

[1] S. Yaakub, M. H. Alsibai, "A Review on Autonomous Driving Systems,"


International Journal Of Engineering Technology And Sciences (IJETS), vol. 5,
June 2018.
[2] K. J. Bussemaker, "Sensing requirements for an automated vehicle for highway and
rural environments," MSC thesis at the Delft University of Technology, 2014.
[3] "Cấp độ xe tự lái được phân loại như thế nào?," https://vinfastauto.com/vn_vi/phan-
loai-cac-cap-do-xe-tu-lai.
[4] E. Yurtsever, J. Lambert, A. Carballo, K. Takeda, "A surver of autonomous driving:
common practices and emerging technologies," 2020.
[5] X. Ma, Z. Wang, H. Li, W. Ouyang, and P. Zhang, "Accurate monocular 3D object
detection via Color-Embedded 3D reconstruction for autonomous driving," Mar.
2019.
[6] X. Cheng, P. Wang, and R. Yang, "Learning depth with convolutional spatial
propagation network," 2018.
[7] X. Chen, K. Kundu, Y. Zhu, A. G. Berneshawi, H. Ma, S. Fidler, and R. Urtasun,
"3D object proposals for accurate object class detection," in Advances in Neural

SVTH: Hoàng Anh Dũng 63


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

Information Processing Systems 28, C. Cortes, N. D. Lawrence, D. D. Lee, M.


Sugiyama, and R. Garnett, Eds Curran Associates, Inc., 2015, pp. 424–432..
[8] D. Lin, S. Fidler, and R. Urtasun, "Holistic scene understanding for 3D object
detection with RGBD cameras," IEEE International Conference on Computer
Vision, pp. 1417–1424., Dec. 2013.
[9] A. Geiger, P. Lenz, and R. Urtasun, "Are we ready for autonomous driving? the kitti
vision benchmark suite," in IEEE Conference on Computer Vision and Pattern
Recognition (CVPR), IEEE, 2012, pp. 3534-3361.
[10] H. Caesar, V. Bankiti, A. H. Lang, S. Vora, V. E. Liong, Q.Xiu, A. Krishnan, Y.
Pan, G. Baldan, and O. Beijbom, "nuScenes: A multimodal dataset for autonomous
driving," arXiv preprint arXiv:1903.11027, 2019.
[11] B. Sanyal, R. K. Mohapatra, R. Dash, "Traffic Sign Recognition: A Survey,"
International Conference on Artificial Intelligence and Signal Processing (AISP),
2020.
[12] "Giao thức CAN," https://en.peritec-sales.com/wp/knowledgebase/.
[13] V. H. Tiệp, Machine Learning cơ bản, 2020.
[14] S. Y. Fei-Fei Li, Justin Johnson, "Convolutional neural networks for visual
recognition," 2019.
[15] A. Krizhevsky, I. Sutskever, G. E. Hinton, "Imagenet classification with deep
convolutional neural networks".
[16] K. He, X. Zhang, S. Ren, J. Sun, "Deep residual learning for image recognition,"
arXiv:1512.03385, 2015.
[17] M. Tan, Quoc V. Le, "EfficientNet: Rethinking model scaling for convolutional
neural networks," arXiv:1905.11946v5, 2019.
[18] S. Sahil, A. Zaidi, M. S. Ansari, A. Aslam, N. Kanwal, M. Asghar, B. Lee, "A
survey of modern deep learning based object detection models,"
arXiv:2104.11892v2, 2021.
[19] J. Redmon, A. Farhadi, "YOLO9000: Better, faster, stronger," arXiv:1612.08242,
2016.
[20] J. Redmon, A. Farhadi, "YOLOv3: An incremental improvement,"
arXiv:1804.02767, 2018.
[21] A. Bochkovskiy, C. Y. Wang, H. Y. M. Liao, "YOLOv4: Optimal speed and
accuracy of object detection," arXiv:2004.10934, 2020.
[22] "YOLOv5," https://github.com/ultralytics/yolov5.

SVTH: Hoàng Anh Dũng 64


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

[23] X. Long, K. Deng, G. Wang, Y. Zhang, Q. Dang, Y. Gao, H.Shen, J.Ren, "PP-
YOLO: An effective and efficient implementation of object detector,"
arXiv:2007.12099, 2020.
[24] C. Y. Wang, A. Bochkovskiy, H. Y. M. Liao, "Scaled-YOLOv4: Scaling cross stage
partial network," arXiv:2011.08036, 2020.
[25] C. Y. Wang, H. Y. M. Liao, I. H Yeh, Y. H. Wu, P. Y. Chen, J. W. Hsieh, "CSPNet:
A new backbone that can enhance learning capability of CNN," arXiv:1911.11929,
2019.
[26] "NVIDIA TensorRT," https://developer.nvidia.com/tensorrt.
[27] F. Yu, W. Xian, Y. Chen, F. Liu, M. Liao, V. Madhavan, and T. Darrell, "Bdd100k:
A diverse driving dataset for heterogeneous multitask learning,"
arXiv:1805.04687v2, 2020.
[28] C. Ertler J. Mislej T. O. Y. Kuang, L. Porzi, G. Neuhold, "The mapillary traffic sign
dataset for detection and classification on a global scale," arXiv:1909.04422v2,
2020.
[29] "Getting Started with Jetson Nano Developer Kit,"
https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit.
[30] "python-can," https://github.com/hardbyte/python-can.
[31] R. Girshick, "Fast R-CNN," arXiv:1504.08083v2, 2015.
[32] R. Currie, "Hacking the CAN Bus: Basic manipulation of a modern automobile
through CAN Bus reverse engineer," 2017.
[33] B. Raj, "Deep learning on the edge," towardsdatascience, 2018.
[34] A. Faisai, T. Yigitcanlar, Md Kamruzzaman, G. Currie, "Understanding autonomous
vehicles: A systematic literature review on capability, impact, planning and policy,"
The journal of transport and land use, 2019.
[35] Wolf, A. Hata and D., "Road marking detection using lidar reflective intensity data
and its application to vehicle localization," in 17th International Conference on
Intelligent Transportation Systems (ITSC). IEEE, 2014, pp. 584–589..
[36] C. Chen, A. Seff, A. Kornhauser, and J. Xiao, "Deepdriving: Learning affordance
for direct perception in autonomous driving," in Proceedings of the IEEE
International Conference on Computer Vision, 2015, pp. 2722–2730..
[37] C. Szegedy, W. Liu, V. Jia, P. Sermanet, S. Reed, D. Anguelov, D. Erban, V.
Vanhoucke, A. Rabinovich, "Going deeper with convolutions," arXiv:1409.4842v1,
2014.
[38] E. Zablocki, H. Ben-Younes, P. Perez, M. Cord, "Explainability of vision-based

SVTH: Hoàng Anh Dũng 65


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

autonomous drving systems: review and challenges," arXiv:2101.05307v1, 2021.


[39] J. Redmon, S. Divvala, R. Girshick, A. Farhadi, "You only look once: Unified, real-
time object detection," arXiv:1506.02640, 2015.
[40] K. He, G. Gkioxari, P. Dollar, R. Girshick, "Mask R-CNN," arXiv:1703.06870v3,
2018.
[41] R. Girshick, J. Donahue, T. Darrell, J. Malik, "Rich feature hierarchies for accurate
object detection and semantic segmentation," arXiv:1311.2524v5, 2014.
[42] S. Ren, K. He, R. Girshick, J. Sun, "Faster R-CNN: Towards real-time object
detection with region proposal networks," arXiv:1506.01497v3, 2016.

SVTH: Hoàng Anh Dũng 66


Đồ án nghiên cứu GVHD:Nguyễn Xuân Hạ

SVTH: Hoàng Anh Dũng 67

You might also like