Professional Documents
Culture Documents
DoAnNghienCuu HoangAnhDung K63
DoAnNghienCuu HoangAnhDung K63
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
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.
MỤC LỤC
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
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
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.
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.
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.
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,...
Để ứ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ư:
- 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.
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.
Hình 1-20. Thang đo 6 cấp độ xe tự lái theo phân loại của SAE International
Ở 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.
Ở 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.
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.
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.
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.
Đượ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.
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.
Đâ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
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.
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.
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.
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
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.
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.
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.
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.
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ể
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.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
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:
(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ý
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)
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ế.
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
Đầ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.
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.
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
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à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.
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.
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.
Ý 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.
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.
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
2.1.4 Phân loại các bài toán trong thị giác máy
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 đó.
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
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.
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)
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.
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
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).
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.
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.
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.
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 đủ.
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 đó.
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)
Hình 2-26. Biển báo giao thông trong các điều kiện challenging khác
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ổ
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:
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à
"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.
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.
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.
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)
Ở đâ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.
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-5: Cấu trúc cây thư mục của dữ liệu train
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:
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
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
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:
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ả
Hình 3-14. Thống kê dữ liệu dùng để đánh giá mô hình cuối cùng
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
Đ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.
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
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
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.
[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