1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Nhận diện làn đường bằng phần cứng AI trên FPGA

74 0 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nhận diện làn đường bằng phần cứng AI trên FPGA
Tác giả Dư Cẩm Vinh
Người hướng dẫn TS. Lam Đức Khải
Trường học Trường Đại học Công nghệ Thông tin
Chuyên ngành Kỹ thuật máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2022
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 74
Dung lượng 29,05 MB

Nội dung

Dé giải quyếtvấn đề này, đồng thời tăng thêm tốc độ xử lý, nhóm đề xuất một kiến trúc phầncứng cho mô hình CNN nói trên, được thiết kế và hiện thực trên nền tảng FPGAVirtex-7 VC707, đóng

Trang 1

ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA KỸ THUAT MAY TÍNH

DU CAM VINH

KHOA LUAN TOT NGHIEP

NHAN DIEN LAN DUONG BANG PHAN CUNG AI

TREN FPGA

FPGA-BASED AI HARDWARE FOR LANE DETECTION

KY SU KY THUAT MAY TINH

TP HO CHÍ MINH, 2022

Trang 2

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TINH

DU CAM VINH - 18521646

KHOA LUAN TOT NGHIEP

NHAN DIEN LAN DUONG BANG PHAN CUNG AI

TREN FPGA

FPGA-BASED AI HARDWARE FOR LANE DETECTION

KY SƯ KY THUAT MAY TÍNH

GIANG VIEN HUONG DAN

TS LAM DUC KHAI

TP HO CHÍ MINH, 2022

Trang 3

THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP

Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 526/QD-DHCNTT

ngày 19 tháng 07 năm 2022 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

Trang 4

LOI CAM ON

Đầu tiên em muốn cảm ơn các thay, cô tại Dai học Công nghệ Thông tin — Daihọc Quốc gia Thành phố Hồ Chí Minh đã giúp đỡ và chỉ dạy tận tình trong quátrình học tập và làm việc tại trường Từ đó, em nhận được những kiến thức, kinh

nghiệm cũng như có những trải nghiệm quý báu trong thời gian học đại học cũng

như dé tiếp bước cho cuộc sống sau này

Tiếp theo, em xin cảm ơn các thầy cô thuộc Khoa Kỹ thuật Máy tính đã giúp đỡ,

chỉ bảo tận tình trong quá trình học tập và làm việc tại khoa Đặc biệt trong quá

trình thực hiện khóa luận tốt nghiệp đã nhận được sự quan tâm, giúp đỡ từ các thầy,

cô để giúp hoàn thiện đề tài một cách tốt nhất

Dé có thể hoàn thành tốt khoá luận tốt nghiệp này, em xin cảm ơn thầy Lâm ĐứcKhải đã luôn giúp đỡ, chỉ dạy tận tình để giúp em có được những kinh nghiệm vềchuyên môn cũng như kỹ năng mềm giúp ích cho quá trình làm khóa luận cũng như

cuộc sông sau này.

Sau cùng, em muốn gửi lời cảm ơn đến gia đình và bạn bè đã luôn ủng hộ, tintưởng, động viên nhiệt tình để em có thể yên tâm, hoàn thành tốt khóa luận tốt

nghiệp.

Thành phó Hồ Chí Minh, tháng 8 năm 2022

Sinh viên thực hiện

Dư Cẩm Vinh

Trang 5

MỤC LỤC

Chương 1 GIỚI THIỆU TONG QUAN DE TAL -.2¿-cc¿5csz 4

1.1 Giới thiệu cccccc222EEEEEvirtEEEErrrrrrrrrrrrrrrrrrrri 4 1.2 Các nghiên cứu liên quan - 5 + +5++++s+s+£££+ztzverererererrersree 6

1.2.1 Các nghiên cứu phần mềm - 2¿©++z+22E+z++ztvzvzrerrer 61.2.2 Các nghiên cứu phan cứng

na ca na ẽ §Chương2 CƠ SỞ LÝ THUYÉT

2.1 Mạng nơ-ron (Neural Networks) 6 cty 0 2.2 Mạng nơ-ron tích chập (Convolutional Neural Networks)

2.3 Hàm kích hoạt (Activation functiON) -¿ sss++sssxssssexexeereeeexex 4 2.4 Lượng tử hóa dit liệu (Data quantization)

2.5 _ Field-Programmable Gate Arrays (FPGAS) - - + «5555 9

Chương 3 KIÊN TRÚC CNN DE XUẤT ¿-22cz+225scczc, 213.1 Quy tắc miêu tả làn đường 222cccccetcEEErvrerrrirrrrrrrrrrrree 213.2 Kiến trúc mô hình CNN -22vv++++ttttrtrkrvrrrrrrrrrrrrrrrree 223.3 Ham mắt mát (Loss function) :::::ccc:ccc22222E2EEErtrrrrrrrrrerrvee 24

3.4 Tập dữ liệu TuSimpÏe «+ ssstk nh iưy 25

3.5 Chỉ tiết training -cccccccc2cECEEvvrrrrrtrrrrrkrrrrrrrrrrrrrrrrree 26Chương 4 KIÊN TRÚC PHAN CỨNG DE XUẤTT - 27

4.1 _ Hiện thực lượng tử hóa - - - «St tt 27

4.2 Xử lý song song conVOlutION «se St set 28 4.3 Hai phép nhân 8-bit song song trên một bộ nhân 30

4.4 Kiến trúc tổng quan -2222++v++tttEEEEEvrtrrrrrrrrrrrrrrrerrrre 32

Trang 6

4.5 Các thiết kế convolution ::+++22v+ztetcvvvrrtrrrvrrrsrrrrree 344.6 Thiết kế Sigmoid

4.7 Phân tích các thiết kế convolution c:2++c+ccvszc+tczsscee 38Chương 5 HIỆN THUC TREN FPGA

711 Kếtuận/⁄Ê 4».<@ 52

7.2 Khó khăn gặp phải cccccccttrttrrtrtrrrtrtrrrirrrrree 53

7.3 Hướng phát triển -+++22E+++ttEEEvvretrrrvrrerrrrrrrrrrree 53IV)08/2909:7),84 600007 54

PHU LUC 05 58 59

Trang 7

DANH MỤC HÌNH

Hình 1.1: Kết quả bị lỗi của AR-LHT [7] -cccc¿z£2225vvvccccz+cevrxs 4Hình 1.2: Ví dụ về segmentation -22¿©22+++t222E+++tE2EEEvrtEEEExvrrrrrrrrrrrrk 5Hình 1.3: Kết quả semantic segmentation của bài báo [ 1 I] - - 6Hình 1.4: Kết quả instance segmentation của LaneNet [10] -: 6Hình 1.5: Dạng đầu ra của Line-CNN llia-ẳiẮiiÁ 7

Hình 2.1: Neuron sinh hỌC - ¿c2 S233 3E*E£ESE+EEEEerEetesrrrrsessrrrrrrrrresee 0 Ibi00):09/28)(200(0i00)ì 0100 0 Hình 2.3: Neural network - - ¿5:55 2222x222 221111111 re 1

Hình 2.4: Convolution cho ma trận 2D cccccccccseeseeseessesseeseeeeeeseeseeneesseeseesees 2

Hình 2.5: Convolution cho ma trận 3D ccccccssscsesseseeseseescsesseeecseeeeseeseseeseeeesee 3

Hình 2.6: Kiến trúc mô hình AlexNet [23] cccsssssssecssssssssssseessssssseeeseesnsnssseeeees 3Hình 2.7: D6 thị hàm sigmoid 2¿2222+++222ES++2EEEE+vettrxxrrerrrkrrrrrr 5Hình 2.8: Đồ thị hàm RLU -ccccccc2222c222vvvvrttrrrrtrrrrrrrrrrrrrrrrre 5Hình 2.9: Lượng tử hóa số thực [-1.5, 1.5] sang số nguyên 8-bit [0, 255] 6

Hình 2.10: Dynamic quantization của PyTorch -. -5-55s+s+s<<+<><+ 7 Hình 2.11: Static quantization của Py Torch ¿-s-+-+s+5c+s+x+x+scxerscxe 8

Hình 2.12: Inference trong Quantization-aware training của PyTorch 9 Hình 2.13: Xilinx Virtex-7 FPGA VC707 Evaluation KĨt - 9

Hình 3.1: Quy tắc miêu tả làn đường -c::¿+-22222cvvvcrrrrrrrrrrrrrrrrrrer 21Hình 3.2: Kiến trúc mô hình CNN được dé xuắt : :iccccccec 22Hình 3.3: Cấu trúc của một tầng encoder -: cz+2222+vscccerrrx 23

Hình 3.4: Nhánh classification - - +5: 5222223222 24 Hình 3.5: Nhánh vertical ¿- ¿1t HT HH HH it 24

Hình 3.6: Ảnh và nhãn của tập dữ liệu TuSimple -‹-5©+©+<<+ 25Hình 3.7: Chuyển đổi định dang từ TuSimple ¿-22c++225sccecz 26Hình 4.1: Kiến trúc tong quan khối DSP48E2 [34] - + 31Hình 4.2: Hai phép nhân 8-bit trên một khối DSP48E2 [21] - - 31

Hình 4.3: Kiến trúc tổng quan hệ thống phần cứng

Trang 8

Hình 4.4: Kiến trúc khối line buffer ¿:©+++2222v+++t2vvvrrerrvsrresrr 33Hình 4.5: Các phiên bản phần cứng cho khối convolution 34Hình 4.6: D6 thị ham sigmoid ước lượng -2c+z+2222vvvvvcrrrrrrr 36Hình 4.7: Lưu đồ thuật toán khối sigmoid ước lượng - : -: 37Hình 4.8: Kiến trúc khối sigmoid ước lượng - -cc¿+ccvsccsccsvcccere.Ö 7Hình 4.9: Các phiên bản mô hình phần cứng đề phân tích 39Hình 4.10: Dạng sóng hệ thống phần cứng 2: +c++22scczrz 40Hình 4.12: Tài nguyên phan cứng của các phiên ban so với thông lượng 40Hình 5.1: IP CNN theo chuẩn AXI4 -ccccccccccccccrrrrrrrrrrrrrrrrrrrree 42Hình 5.2: Sơ đồ hệ thống phần cứng -::++222vvvcrettrrrrrrrrerrrrrrrr 44Hình 5.3: Sơ đồ hệ thống trong Vivado -:-:©2++++22vvzreevvvvrrsrrrsrrrrre 44

Hình 5.4: XDMA driver trong Linux kernel - - s2 5s5s+++c+se<sc=sz 45

Hình 5.5: Chương trình Python dé kiểm tra 46Hình 6.1: Một số kết quả trong tap TuSimple 8Hinh 6.2: Phan bé tai nguyén trén FPGA

Hình 6.3: Hình anh thực tế của FPGA và Host PC

Trang 9

DANH MỤC BANG

Bảng 4.1: Kết quả lượng tử hóa mô hình 2 +c++22++zz+2vvszczzrr 28

Bảng 4.2: Độ lỗi của hàm sigmoid ước lượng -.-:-¿55z+22x+cecvxscx+ 38

Bảng 6.1: Độ chính xác trên tập TuSimple của phần mềm 4Bảng 6.2: Kết quả đánh giá và so sánh về phần cứng -2 49Bảng 6.3: Độ chính xác trên tập TuSimple của phần cứng - 5“

Trang 10

DANH MỤC TU VIET TAT

Các từ viết tắt Các từ viết đầy đủ

ADAS Advanced Driver Assistance Systems

ASIC Application Specific Integrated Circuit BRAM Block Random Access Memory

CNN Convolutional Neural Network

CPU Central Processing Unit

DMA Direct Memory Access

DRAM Dynamic Random Access Memory

FIFO First In, First Out

FN False Negative

FP False Positive FPGA Field-Programmable Gate Array

FPS Frames per Second

GFLOP Giga Floating-point Operation

GOPS Giga Operations per Second

GPU Graphics Processing Unit

IP Intellectual Property MSE Mean Squared Error

PCle Peripheral Component Interconnect Express

PE Processing Element

ReLU Rectified Linear Unit

RTL Register-Transfer Level

Trang 11

TÓM TÁT KHÓA LUẬN

Trong khóa luận này, nhóm nhắm đến VIỆC giai quyết bài toán nhận diện lan

đường sử dụng công nghệ mạng nơ-ron tích chập — Convolutional Neural Networks

(CNNs) Dé giải quyết van đề trên, nhóm dé xuất một quy tắc miêu tả làn đườnghiệu quả, gọn nhẹ, giúp giảm thiểu hậu xử lý sau khi lấy được kết quả từ mô hìnhCNN Sử dụng quy tắc này, một kiến trúc CNN có kích thước nhỏ gọn được thiết kế

để giải quyết bài toán phân loại làn đường Do không có kích thước quá lớn, môhình CNN được đề xuất có tốc độ xử lý rất nhanh trên các bộ xử lý đồ họa —

Graphics Processing Units (GPU§).

Tuy nhiên, các GPUs có xu hướng tiêu thụ năng lượng rất cao Dé giải quyếtvấn đề này, đồng thời tăng thêm tốc độ xử lý, nhóm đề xuất một kiến trúc phầncứng cho mô hình CNN nói trên, được thiết kế và hiện thực trên nền tảng FPGAVirtex-7 VC707, đóng vai trò như một bộ gia tốc phần cứng Bộ gia tốc được đềxuất sử dụng một kiến trúc được pipeline rất sâu, dẫn đến thông lượng xử lý(throughput) cao Ngoài ra, kỹ thuật lượng tử hóa (quantization) được áp dụng đểtiếp tục tối ưu về tài nguyên phần cứng lẫn tăng throughput

Bộ gia tốc được kết nối với máy tính bàn thông qua giao tiếp PeripheralComponent Interconnect Express (PCIe), và các chương trình phần mềm dé giaotiếp được viết cho CPU đề kiểm chứng hiệu năng của phần cứng Các kết quả tómtắt của khóa luận bao gồm:

e Một mang CNN được thiết kế cho bai toán phân loại làn đường, huấn luyện

và đánh giá sử dụng tập dữ liệu TuSimple [I] với độ chính xác đạt được là

93.53% Mô hình này có thể xử lý với tốc độ 348 FPS trên GPU NVIDIA

Tesla T4.

© Một bộ gia tốc phần cứng được thiết kế cho mô hình CNN nói trên, hiện thực

sử dụng FPGA Virtex-7 VC707 Hệ thống phần cứng này đạt được tốc độthực tế 549 FPS khi tiêu thụ 8.129 W, tương đương với throughput 296.26GOPS với hiệu suất năng lượng 36.44 GOPS/W

Trang 12

MỞ ĐẦU

Một trong những công nghệ đang được phát triển liên tục hiện nay là các hệthống hỗ trợ tài xế nâng cao — Advanced Driver Assistance Systems (ADAS) Côngnghệ này đóng một vai trò quan trọng trong việc giảm thiểu rủi ro và tai nạn giaothông Sự phát triển của công nghệ này đòi hỏi sự cải tiễn trong trong các phương

pháp nhận diện môi trường xung quanh xe, đặc biệt là phân loại làn đường.

Một trong những vấn đề lớn nhất gặp phải trong bài toán phân loại làn đườngchính là sự phức tạp trong môi trường đường bộ ngoài đời thật, VD: ánh sáng thấp,vạch phân cách không được vẽ rõ rang, khiến người thiết kế hệ thống khó có thé

xử lý hết tất cả mọi tình huống có thể xảy ra Trong vai năm gần đây, công nghệADAS nói chung và van dé phân loại làn đường nói riêng được vô cùng thúc daynhờ sự bùng nổ trong các nghiên cứu về mạng nơ-ron tích chập — ConvolutionalNeural Networks (CNNs) Các CNNs cho phép người thiết kế có thé tạo ra một môhình với mục đích phần nào mô phỏng bộ não người, và sau đó huấn luyện chúng

sử dụng một lượng lớn dữ liệu Quá trình huấn luyện này khiến mô hình tự điềuchỉnh các trọng số bên trong nó dé dan dần hiểu được dữ liệu và tự biết cách rúttrích các đặc trưng cần thiết để hoàn thành công việc của nó, thay vì cần người thiết

kế phải cụ thé tat cả mọi trường hợp có thé xảy ra

Tuy nhiên, mặc dù CNNs có khả năng đạt được độ chính xác TẤt cao trong cácbài toán phức tạp, chúng lại đòi hỏi một lượng lớn chỉ phí tính toán, từ đó dẫn đến

độ trễ cao Điều này tạo ra nhiều khó khăn trong việc sử dụng chúng cho các vấn đềyêu cầu tính thời gian thực (real-time) như xe tự hành Hơn nữa, một loại thiết bịthường được sử dụng cho CNNs là bộ xử lý đồ họa — Graphics Processing Unit

(GPU), nhờ vào khả năng xử lý song song cực lớn của chúng Nhưng các GPU lại

cần một lượng lớn năng lượng đề hoạt động, từ đó khiến chúng không được phùhợp cho các hệ thống nhúng di động trên xe tự hành Một giải pháp cho triển vọngcho CNNs là Field-Programmable Gate Arrays (FPGAs) Các thiết bị này có kiếntrúc phần cứng có thé được dé dàng cấu hình lại để trở thành các kiến trúc phancứng khác nhau, từ đó cho phép các kỹ sự có thé thiết kế các mạch tối ưu cho

Trang 13

CNNs Các mạch này sẽ có khả năng xử lý song song gần với GPU mà không cantiêu tốn nhiều năng lượng bằng.

Dựa trên các công việc và kết quả của đề tài này, bố cục của khóa luận được tổ

chức như sau:

© Chương 1: Giới thiệu tổng quan dé tai

Trình bày tổng quát về mục tiêu của vấn đề phân loại làn đường, sau đó liệt

kê và phân tích một số nhóm giải pháp hiện đang tồn tai, các nghiên cứutrong các giải pháp này, điểm mạnh và điểm yếu của chúng

© Chương 2: Cơ sở lý thuyết

Trình bày các lý thuyết nền được sử dụng trong đề tài Ở mỗi mục trình bày

cơ sở lý thuyết, ví dụ minh họa và hình ảnh nếu có

¢ Chương3: Kiến trúc CNN đề xuất

Trình bày kiến trúc của mô hình CNN được đề xuất Đưa ra chỉ tiết về kiếntrúc của mô hình cùng với lý giải về các lựa chọn trong thiết kế Cuối cùng,chỉ tiết về quá trình training được trình bày

e Chương 4: Kiến trúc phan cứng đề xuất

Trình bày chỉ tiết về kiến trúc của thiết kế phần cứng cho mạng CNN Phântích về các giải pháp để song song hóa giải thuật convolution cùng với cácthiết kế phần cứng tương ứng Đưa ra phân tích và cách lựa chọn các phiênbản thiết kế cho phiên bản cuối cùng

se _ Chương 5: Hiện thực trên FPGA

Trình bày cách hiện thực hóa kiến trúc phần cứng đã đề ra lên FPGA Trìnhbày cách xây dựng hệ thống và các phương pháp để vận hành, kiểm tra

e Chương 6: Kết quả

Đưa ra kết quả về độ chính xác và tốc độ của mô hình phần mềm lẫn phầncứng Ngoài ra, trình bày kết quả về tài nguyên phần cứng và các hình ảnhthực tế

© Chuong 7: Tổng kết

Đưa ra kết luận, trình bay các van dé gặp phải và hướng phát triển của đề tài

œ

Trang 14

Chương 1 GIỚI THIEU TONG QUAN DE TÀI

1.1 Giới thiệu

Một phương pháp truyền thống cho bài toán nhận diện làn đường là các giảithuật được thiết kế tay đề trích xuất các đặc trưng như màu sắc [2] [3] hay các thuậttoán như hough transform [4] [5] [6] Mặc dù nhiều thuật toán đạt được tốc độ rất

nhanh, các phương pháp này thường không được linh hoạt và dễ bị lỗi do tính đa

dạng của hình ảnh ngoài đời thật như ánh sáng thấp, vạch phân cách không được vẽ

rõ rang, Hình 1.1 trình bay một ví dụ lỗi của AR-LHT [6], một mô hình dựa trên

hough transform Kết quả được chạy từ mã nguồn của mô hình [7]

bằng kỹ thuật học sâu (deep learning), cụ thể là các mô hình CNN, nhờ vào hàng

loạt các công trình nghiên cứu chứng tỏ CNN có khả năng mang lại độ chính xác

cao cho rất nhiều ứng dụng khác nhau Các mô hình CNN có thể được huấn luyệntrên một số lượng lớn hình ảnh, từ đó chúng có thể tự học ra được những đặc trưngcần phải trích xuất từ ảnh, thay vì cần được cụ thể hóa bởi con người Một phươngpháp thường được dùng cho bài toán phân loại làn đường là xuất ra segmentationmap Một số mô hình tiêu biéu sử dụng phương pháp này bao gồm U-Net [8], Enet

[9], LaneNet [10] và một mô hình sử dụng mạng LSTM [11] Các phương pháp nay

Trang 15

xuất ra một ảnh output có kích thước giống với input, nhưng mỗi pixel đều được

phân loại vào một lớp khác nhau Mặc dù các phương pháp này đạt được độ chính

xác cao, kết quả đầu ra của chúng thường không được tối ưu Dé giải thích rõ hơn,các làn đường là những đường cong liên tục, mỏng và dài, việc miêu tả chúng bằngcác nhóm pixel dày đặc sẽ không chứa được các thông tin về hình học, ví dụ nhưgóc nghiêng, và các thông tin này đòi hỏi nhiều hậu xử lý từ đầu ra của mô hình để

có thé trích xuất ra Hình 1.2 thé hiện một ví dụ về segmentation do nhóm tạo ra

Đâu vào Đâu ra

Hình 1.2: Ví dụ về segmentationCác nghiên cứu gần đây đề xuất các giải pháp cho vấn đề này bằng các phươngpháp miêu tả làn đường nhỏ gọn hơn và có thể chứa thêm các thông tin miêu tả vềhình học Vi dụ, Line-CNN [12] sử dụng khối Line Proposal Unit (LRU) để dựđoán làn đường sử dụng các đường thắng được định nghĩa trước CondLaneNet [13]

va PINet [14] miêu ta làn đường bằng cách dự đoán ra các điểm thưa dọc trên cáclàn đường và PolyLaneNet [15] biến bài toán phân loại làn đường thành bài toán hồiquy Mặc dù đạt được độ chính xác vô cùng cao và có kết quả đầu ra rất tối ưu, cácphương pháp này đều được chạy trên các GPUs có mức độ tiêu thụ năng lượng rấtcao, dẫn đến chúng khó mang tính thực tiễn cho các hệ thống di động trên xe

Từ các van đề trên, ta có thé thay một mô hình CNN có độ chính xác cao kèmvới đầu ra mang tính tối ưu là một trong những giải pháp hiệu quả nhất cho bài toánphân loại làn đường Đồng thời, việc có khả năng hiện thực mô hình này trên mộtnên tảng có khả năng xử lý song song cao mà không tiêu tốn nhiều năng lượng, ví

dụ như FPGA, sẽ mang đến một giải pháp cực kỳ tối ưu cho các hệ thống di động

dùng pin trên xe tự hành.

Trang 16

1.2 Các nghiên cứu liên quan

1.2.1 Các nghiên cứu phần mềm

Các phương pháp deep learning ban đầu tìm cách giải quyết bài toán phân loại

làn đường sử dụng semantic segmentation [9] [11] Các mô hình này thường nhận

một ảnh RGB, và trả về một ảnh khác có kích thước tương tự với ảnh đầu vào,nhưng mỗi pixel đều được phân loại vào một lớp khác nhau như đường, xe, người

đi bộ, Mặc dù có kha năng thé hiện các hình dạng phức tạp, kỹ thuật nay khôngthể phân biệt các làn đường riêng biệt khác nhau, do tất cả mọi pixel trong tất cả cáclàn đều được phân loại vào cùng một lớp như nhau Hình 1.3 trình bày đầu ra của

mô hình CNN sử dụng kỹ thuật LSTM được công bố ở bài báo [11]

Hình 1.3: Kết qua semantic segmentation của bài báo [11]

LaneNet [10] tìm cách giải quyết van đề này bằng cách sử dụng instancesegmentation thay vì semantic segmentation, tức là cũng xuất ra segmentation map,tuy nhiên các pixel thuộc mỗi làn đường khác nhau sẽ được nhóm về thành cácnhóm khác nhau Hình 1.4 trình bày đầu ra của mô hình LaneNet

Đầu vào & nhãn

a 3 N

Đầu ra

Trang 17

Tuy có những cải tiến trên, các kiến trúc segmentation nói chung đều khôngđược tối ưu, do các vạch phân cách làn đều mỏng và dài, chạy dọc theo bức ảnh.Mặc dù các segmentation map nhìn rất đẹp khi đánh giá bằng mắt, việc thé hiện cácvạch phân cách làn bằng các nhóm pixel dày đặc sẽ đòi hỏi đầu ra đó được xử lýkhông hề ít dé có thể nhóm lại và xuất ra các thông tin như góc nghiêng của làn, tọa

độ của trung điểm,

Các nghiên cứu gần đây nhắm đến việc giải quyết sự thiếu tối ưu này bằng cáchquy tắc miêu tả làn đường nhỏ gọn hơn các segmentation map Dựa trên RegionProposal Network (RPN) của Faster R-CNN [16], Line-CNN [12] đề xuất khối Line

Proposal Unit (LPU) có khả năng dự đoán các offset của làn đường so với các

đường thing đã được định nghĩa sẵn UFAST [17] đề xuất một quy tắc miêu tả lànđường theo từng hàng (row-wise formulation), tức là đầu ra bao gồm một danh sáchhoành độ tương ứng và các tung độ đã được định sẵn Quy tắc miêu tả này được cảithiện thêm bởi CondLaneNet [13] bằng cách thêm hai bộ giá trị vertical range vàoffset map Một ý tưởng khác, PINet [14], dự đoán các điểm thưa trên làn đường,sau đó được cụm lại thành từng instance khác nhau (phân biệt được điểm nào thuộclàn nào) Hình 1.5 trình bày dạng au ra của Line-CNN [12]

Xác suất Độ dai Cac offset hoành độ dọc trên L3 để định nghĩa vạch phân cách _)

Hình 1.5: Dạng đầu ra của Line-CNN [12]

Mặc dù giải quyết được vấn đề thiếu tối ưu của segmentation map mà vẫn mang

độ chính xác vô cùng cao, các phương pháp mới này vẫn sử dụng các mô hình CNN

Trang 18

có kích thước quá lớn để đạt được tốc độ real-time Thậm chí các mô hình đượccông bồ với tốc độ vô cùng nhanh như UFAST [17] hay CondLaneNet [13], các tốc

độ này đều được đánh giá trên các GPU có cấu hình cao Mức độ tiêu thụ nănglượng của các GPU này khiến chúng khó có thể tích hợp được vào các hệ thống

nhúng di động sử dụng bởi các xe tự hành.

1.2.2 Các nghiên cứu phần cứng

Dé cải thiện về tốc độ xử lý lẫn năng lượng tiêu thụ, nhiều nghiên cứu tập trungvào thiết kế các bộ gia tốc phần cứng ChipNet [18] [19] là một mô hình CNN đượcthiết kế dé phân loại phần đường xe chạy sử dụng cảm biến LiDAR Mô hình nàyđược hiện thực trên FPGA Xilinx UltraScale XCKUI15 và đạt được tốc độ 79.4FPS Cho đầu vào từ camera, một mô hình CNN khác mang tên RoadNet-RT [20]được thiết kế cho đầu ra có ứng dụng tương tự với ChipNet Sử dụng kỹ thuật lượng

tử hóa dữ liệu (data quantization), mô hình này đạt được tốc độ 327.9 FPS khi được

hiện thực trên FPGA ZCU102 MPSoC Sử dụng kỹ thuật được trình bày ở [21],

throughput của RoadNet-RT tiếp tục được cải thiện bằng cách thực hiện hai phépnhân 8-bit song song trên một nhân DSP48E2, từ đó thiết kế một phiên bản 8-bit cóthê xử lý hai ảnh đầu vào một cách song song Tuy nhiên, phiên bản này kém tínhthực tế bởi vì thông thường các camera chỉ xuất ra từng khung ảnh một cách tuần

tự, có nghĩa là trong một ứng dụng thực tế, thường chỉ có một ảnh đề xử lý một lúc.Hơn nữa, cả hai phương pháp này đều xuất ra segmentation map, từ đó mang lại sựthiếu tối ưu được nhắc đến ở phần 1.2.1

1.3 Mục tiêu đề tài

Để giải quyết bài toán phân loại làn đường và tối ưu về năng lượng tiêu thụ của

mô hình CNN, trong khóa luận này, nhóm đưa ra ba mục tiêu chính:

1 Thiết kế một mô hình CNN có kích thước nhẹ, huấn luyện và đánh giá trên

tập dữ liệu TuSimple Mô hình sẽ được đánh giá bằng ba thang đo được cungcấp bởi tập dữ liệu bao gồm: accuracy, false positive (FP) và false negative

(FN), mục tiêu có accuracy > 95%.

Trang 19

2 Thiết kế một kiến trúc phần cứng cho mô hình CNN trên, sử dụng các kỹ

thuật để tối ưu như pipeline, data quantization dé đảm bảo mang lại sự đánhđổi tốt nhất và throughput, tài nguyên phần cứng và năng lượng tiêu thụ

3 Hiện thực kiến trúc này lên FPGA Virtex-7 VC707 như một bộ gia tốc phần

cứng cho vi xử lý chính thông qua chuẩn giao tiếp PCle Mục tiêu ban đầuđược đặt ra cho bộ gia tốc là có thé đạt được tốc độ > 150 FPS trong khi tiêu

thụ dưới 10W.

Trang 20

Chuong 2 CƠ SỞ LÝ THUYET

2.1 Mạng no-ron (Neural Networks)

Neural network là một kỹ thuật xử lý lấy cảm hứng từ bộ não người Một neuronsinh học nhận các tín hiệu đầu vào từ các dendrites và xuất ra các tín hiệu đầu ra

doc trên các axon Cac axon sau đó rẽ nhánh vào dendrites của các neuron khác thông qua các synapses Hình 2.1 minh họa cho một neuron sinh học.

Dengrite

Myelin sheath

Schwann cell Axon Terminal

Dua trén co ché nay, một mang neuron nhân tao (artificial neural network) baogồm nhiều lớp, thường được gọi là các fully connected layers, và mỗi layer bao gồmnhiều nodes Một node nhận đầu vào từ tất cả mọi node ở layer trước, và mỗi đầuvào sẽ được nhân với một trọng số (weight) Giá trị của các trọng số này khôngđược người thiết kế chọn mà phải được học thông qua một quá trình huấn luyện(training) Giá trị của các trọng số có vai trò như các synapse sinh học, chúng có thểkhuếch đại input từ một node trước hoặc làm yếu nó đi Sau đó, một giá trị biasđược cộng vào và tổng của cả node đó được đưa vào một hàm kích hoạt phi tuyếntính Hình 2.2 và Hình 2.3 lần lượt minh họa cho neuron nhân tạo và mạng nơ-ron

Trang 21

2.2 Mạng nơ-ron tích chập (Convolutional Neural Networks)

Cho các bài toán xử lý ảnh, các neural networks gặp phải một vấn đề lớn: giả sửinput là một ảnh RGB kích thước 240p (320 x 240 pixels) và layer đầu tiên chứa

1024 nodes, số lượng trọng số của layer này sẽ là 320 x 240 x 3 x 1024 +

1024 ~ 256 triệu trọng số Từ ví dụ này ta có thẻ thấy số lượng trọng số của một

neural network tăng vô cùng nhanh khi nhận input từ ảnh, dù kích thước ảnh không

lớn Một vấn đề khác gặp phải bởi các mô hình có nhiều trọng số là hiện tượngoverfitting, khi mô hình “học thuộc” và có độ chính xác cao với dữ liệu huấn luyện,nhưng lại có độ chính xác thấp đối với các dữ liệu mới mà chưa gặp qua trong lúchuấn luyện

Nhưng may mắn công việc xử lý ảnh thường không yêu cầu cả một neuralnetwork nhờ vào tính lân cận của hình ảnh Y nghĩa của một anh không nằm ở Việc

nó có bao nhiêu pixel và mỗi pixel có giá trị là bao nhiêu, mà nằm ở các nhóm pixellân cận với nhau được sắp xếp theo các cấu trúc cụ thể Để phát hiện có một chiếc

xe trong ảnh hay không, các pixel ở các góc ngoài cùng của ảnh thường không quan

trọng, ma ta quan tâm đến từng nhóm pixel bên trong ảnh, khi mà nơi có độ tương

11

Trang 22

phản cao phản ánh cạnh, các cạnh dài liên tục chỉ ra các đường, và nhiều đường sẽ

vẽ ra hình ảnh chiếc xe

Tích chap (convolution) là một kỹ thuật sử dụng các bộ lọc, gọi là các kernels,

để trượt qua tắm ảnh Các kernels này lấy giá trị của những pixel lân cận với nhau

và nhân chúng với các giá trị trong kernel dé tạo ra pixel cho output Kỹ thuật nàycho phép tính lân cận của các pixel được tận dụng Tương tự với các trọng số củaneural network, giá trị của các kernel nay cũng là các trong sé, chúng không đượcquyết định từ trước mà phải được học qua quá trình training Từ dữ liệu training,

mô hình sẽ có thé tự học các giá trị phù hợp cho các kernels

Cho một ma trận 2D, một kernel 2D được đặt lên một phần nhỏ của ảnh đầuvào, gọi là cửa số trượt (sliding window) Mỗi pixel trong sliding window này đượcnhân với các giá trị tương ứng trong kernel và tất cả các tích được cộng lại vớinhau Sau đó kernel sẽ trượt sang sliding window tiếp theo và quá trình này đượclặp lại, tạo ra pixel output tiếp theo Hình 2.4 minh họa cho convolution trên ma

trận 2D.

Input

Output 3|2|10|-2| 1) -3 Kernel

1121-2|0|10|-1

Hình 2.4: Convolution cho ma trận 2D

Cho ma trận 3D, nói cách khác một ảnh có nhiều kênh (channels), các kernelscũng sẽ có nhiều channels tương đương với ảnh đầu vào Một ma trận đầu vào kích

thước (C, x Hy, x W,) tích chập với một kernel kích thước (C, x Hy x Wy) sẽ tạo

ra một output 2D kích thước (1 x Hy X W,) Để tạo ra một output 3D kích thước (G% x Hy X W,) ta can Cy kernel 3D Tổng cộng, kích thước của kernel va bias sẽ

12

Trang 23

lan lượt là (G x Cy, x Hy x My) và (Œ% x 1) Hình 2.5 minh họa cho convolution

trên ma trận 3D.

c4 4 2|2|0 4 |-2| 3 |-4|-2 0T 3|-]|-2 2J1/1|Ì3|-3 4) -1) -1 4-3] 4 3) 4) 21/2 | -3 -4) 1) -3 0] 3 2|-1|-4lz|0 1/110 3 1/1/3|0|0 2| -4| 2 l4 |-1 -4|2/-2|Ez|-1

Hinh 2.5: Convolution cho ma tran 3D

Một convolutional neural network (CNN) sẽ bao gồm nhiều convolution layerscùng với một số loại layer khác Một kiến trúc CNN cổ điển sẽ bắt đầu bởi nhiềuconvolution layers để trích xuất các đặc trưng quan trọng (mô hình tự học cách chiếtxuất), và theo sau bởi các fully connected layers dé phân loại ảnh thành các classkhác nhau Một số mô hình điển hình cho loại kiến trúc này bao gồm LeNet-5 [22],

AlexNet [23], các mạng VGG [24], Inception [25] [26], các mạng ResNet [27] và

nhiều mô hình khác Hình 2.6 trình bày kiến trúc mô hình AlexNet [23], một môhình đóng vai trò quan trọng trong việc khiến lĩnh vực deep learning trở nên phổ

biên như ngày nay.

2

conv conv

TIxH hà 6 Overlapping

sige =4 padding =2 Ovetapning 256 ‘CONV

grees SSehernets Pe Fe)

‘ww

om om :

Hình 2.6: Kiến trúc mô hình AlexNet [23]

13

Trang 24

Ngoài convolution layer và fully connected layer, một số loại layer phổ biếntrong các CNNs bao gồm:

¢ Pooling: dé giảm kích thước của input nhằm giảm chỉ phí tính toán cho layer

sau mà không cần sử dung trọng số Các lựa chon phỏ biến là average/mean

pooling và max pooling.

¢ Upsampling: ngược lại với pooling layers, upsampling layer được dùng dé

tăng kích thước của input mà không cần ding tới trọng số Layer này thườngđược dùng cho các kiến trúc có đầu ra là ảnh Các kiến trúc này thường cómột giai đoạn encoder để giảm kích thước ảnh đồng thời trích xuất được cácđặc trưng cần thiết, sau đó một giai đoạn decoder (chứa upsampling layer) đểtổng hợp các đặc trưng này lại và tạo ra ảnh output

¢ Batch normalization: được nghiên cứu và công bố năm 2015 bởi các nhà

nghiên cứu tại Google [28], đây là một kỹ thuật được dùng để giảm hiện

tượng internal covariate shift, khi mà khoảng giá trị trong các layer khác

nhau quá nhiều, từ đó giúp tăng tính ôn định và tăng tốc quá trình training

¢ Dropout: được trình bày lần đầu ở [29], dropout là một kỹ thuật dùng dé

giảm overfitting bằng cách “tắt di” một số neuron hoặc feature maps trongquá trình training, nói cách khác sẽ ép các thành phần này xuất ra giá trị 0 và

buộc cái neuron và feature maps khác phải học được các đặc trưng khái quát hơn.

2.3 Hàm kích hoạt (Activation function)

Đa số các layer sau khi xử lý dữ liệu ở input thì giá trị sẽ được đưa qua một hàmkích hoạt phi tuyến tính (non-linear activation function) Một trong những hàm kíchhoạt phổ biến nhất trong giai đoạn sơ khai của lĩnh vực mạng nơ-ron là sigmoid.Ham sigmoid có tác dụng nén tam giá trị của input vào khoảng từ 0 đến 1 Hàm

sigmoid được trình bày bởi Phương trình (2.1) và Hình 2.7.

Trang 25

dưới -5 và lớn hon 5) bị nén thành ngưỡng 0 hoặc 1 như nhau Trong các mô hình

lớn, điều này có thé dẫn đến hiện tượng vanishing gradient trong quá trình training.Điều này nghĩa là trong training, các giá trị sẽ được đạo hàm ngược về từng layermột đê cập nhật lại các trọng sé, tuy nhién do nhiéu giá trị bị ép vào ngưỡng 0 hoặc

1, khi đạo hàm về nhiều layer quá, các giá trị cập nhật dần bị biến mất thành 0 Đểgiải quyết vấn đề này, ngày nay hàm kích hoạt được sử dụng rộng rãi nhất thay chosigmoid là Rectified Linear Unit (ReLU) Hàm ReLU giữ nguyên giá trị input nếu

nó lớn hơn 0, và ép về bằng 0 nếu ngược lại Hàm ReLU được trình bày bởi Phương

Trang 26

2.4 Lượng tử hóa dữ liệu (Data quantization)

Để thực hiện tính toán trong một mô hình CNN, kiểu dữ liệu dấu chấm động(floating-point) thường được sử dụng Điểm mạnh của floating-point là chúng cókhả năng thể hiện một khoảng giá trị vô cùng rộng, bao gồm các giá trị vô cùng lớn

và cả các giá trị vô cùng nhỏ Ví dụ kiểu dữ floating-point 32-bit theo chuẩn IEEE

754 [30] có khả năng thẻ hiện các giá trị từ -3.4E+38 đến 3.4E+38 với giá trị tuyệtđối nhỏ nhất có thé là 1.18E-38

Tuy nhiên, do sự phức tạp trong định dạng nhị phân của chúng, việc thực hiện

các phép toán bằng số floating-point chậm hơn rất nhiều so với số nguyên, và ở tangphần cứng, chúng cũng đòi hỏi nhiều tài nguyên phần cứng dé xử lý hơn Do kích

thước dữ liệu và chi phí tính toán bên trong các mô hình CNN thường khá cao, việc

tối ưu kiểu dữ liệu là vô cùng cần thiết Một kỹ thuật mới dé giải quyết van đề này

là lượng tử hóa dữ liệu (Data quantization) Nói nôm na, data quantization phiên

dịch (mapping) một khoảng giá trị số thực sang một khoảng giá trị số nguyên với độrộng bit thấp hơn Hình 2.9 minh họa phép mapping tit khoảng số thực [-1.5, 1.5]sang khoảng số nguyên 8-bit [0, 255]

Integer

As tata của the be te Be Ss Ba của củ ta Í 0À 02 03 0Á 65 96 oy oe oo 1 ah aa a da 15

Floating-point

Hình 2.9: Lượng tử hóa số thực [-1.5, 1.5] sang số nguyên 8-bit [0, 255]

Dé thực hiện phép mapping này, trọng sé scaling factor (S) và zero point (Z) cầnđược tìm ra Trong một mô hình CNN được lượng tử hóa, tùy theo cấu hình, mỗilayer sẽ có một cặp S và Z, hoặc trong mỗi layer, weight va activation cũng sẽ cómột cặp Š và Z riêng Đề thực hiện lượng tử hóa, khoảng giá trị số thực của mỗilayer phải được khảo sát trước Giả sử sau khảo sát, trong layer cần lượng tử chỉxuất hiện các giá tri trong khoảng [a, Ø], và ta đang muốn lượng tử sang kiểu số

16

Trang 27

nguyên có N bit, với khoảng giá trị [—2X~1,2N~1 — 1] (gọi tat [œ, 8„]), S và Z lầnlượt được tính bằng Phương trình (2.3) và (2.4).

se Dynamic quantization: chỉ có weight là được lượng tử hóa, sau khi thực

hiện xong phép nhân tích lũy (Multiply-Accumulate — MACC), kết quả đượcchuyền về dang floating-point dé tính hàm kích hoạt và đưa vào layer tiếp

theo Do phương pháp này quantize và de-quantize các giá trị không phải weight cho từng input riêng, cặp scaling factor và zero point của chúng có

thể được suy ra một cách chính xác nhất cho mỗi input, thay vì phải đượcthống kê dựa trên cả dataset Cộng với việc nhiều phép tính diễn ra ở dạngfloating-point, phương pháp này có độ mat mát về tính chính xác thấp nhấttrong 3 phương pháp, đồng thời giúp giảm kích thước bộ nhớ khi lưu trữ cáctrọng số, do chúng đã được lượng tử hóa thành kiểu dữ liệu có độ rộng bitthấp hơn Tuy nhiên, về chi phí tính toán, chúng vẫn thực hiện nhiều phép

floating-point Hình 2.10 minh họa cho phương pháp dynamic quantization.

Trang 28

e Static quantization: khác với dynamic quantization, phương pháp nay

lượng tử hóa cả weight và tat cả các giá trị khác, khiến cho gần như toàn bộ

mô hình đều xử ly bằng kiểu số nguyên Scaling factor và zero point của cácactivation trong mô hình sẽ được thống kê sau training bằng cách chạy mộtlượng lớn dữ liệu mẫu trong quá trình lượng tử hóa Cuối cùng, scaling factor

va zero point của weight va activation sẽ được lưu cùng với weight đã lượng

tử thành một bộ trọng số đầy đủ của mô hình Với phương pháp này, cả kíchthước dữ liệu và chỉ phí tính toán của cả mô hình được giảm vô cùng đáng kế

so với mô hình floating-point gốc Tuy nhiên, do scaling factor và zero pointcủa các activation phải được thống kê trước từ đầu nên có thé dẫn đến sự matmát về độ chính xác của mô hình Hình 2.11 minh họa cho phương pháp

static quantization.

Previous layer int8

> MACC int8 — Activation int8 — Next layer int8

Weight int8

Hình 2.11: Static quantization của PyTorch

se Quantization-aware training: trong một số mô hình, thực hiện lượng tử

hóa sau khi huấn luyện (bang floating-point) có thé dẫn đến sự mat mát về độchính xác không thé chấp nhận được Dé đáp ứng cho các trường hợp trên,

phương pháp quantization aware training được áp dụng Trong phương pháp

này, số lượng tử được áp dụng trong quá trình training Tuy nhiên số lượng

tử ở dạng số nguyên sẽ không thể đạo hàm cho backpropagation được Do

đó, sự lượng tử trong training sẽ chỉ là được giả lập bằng số floating-point

Để giải thích cụ thể hơn, ở bước inference, các giá trị floating-point sẽ đượclàm tròn xuống khoảng giá trị số nguyên dé giả lập tác dụng của lượng tửhóa Sau đó ở bước backpropagation, tất cả các giá trị sẽ được đạo hàm như

số floating-point Sau khi training hoàn tất, tất cả weight và activation sẽđược chuyên hin sang dang số nguyên lượng tử và các scaling factor và zero

point được lưu lai Mô hình đã lượng tử hóa này sau đó sẽ được chạy

18

Trang 29

inference như trình bay ở Hình 2.11 Hình 2.12 minh họa bước inference

trong quantization-aware training.

Previous layer fp32 —»| Fake quant Ny,

a

MACC fp32 —> Activation fp32 —>_ Fake quant = Next layer fp32

Weightfp32 —> Fake quant

Hình 2.12: Inference trong Quantization-aware training của PyTorch

Qua các kết quả phân tích ở phan 4.1, mô hình CNN của nhóm được lượng tử hóa sang kiêu dữ liệu số nguyên 8-bit bằng phương pháp static quantization.

2.5 Field-Programmable Gate Arrays (FPGAs)

Field-Programmable Gate Arrays (FPGAs) là các thiét bị bán dẫn chứa một lượng lớn các khối logic có thé cau hình lại, cùng với các Intellectual Property (IPs) như DSP, SRAM, PLL, Tat cả các tài nguyên logic nay được kết nối với nhau thông qua các interconnect có thé lập trình được Với kiến trúc này, một FPGA có

thé được cấu hình lại dé trở thành bất kỳ mach logic nào được thiết kế bởi kỹ sư, miễn sao thiết kế không vượt quá lượng tài nguyên phần cứng có sẵn trên FPGA.

So sánh với các vi xử lý mục đích chung (general-purpose processors), các

FPGAs cho phép các kỹ sư thiết kế các mạch vô cùng tối ưu cho các vấn đề cụ thẻ,

tận dung được kha nang xử lý song song cực kỳ lớn của tài nguyên FPGA và từ đó

có thé cải thiện tốc độ xử lý và mức độ tiêu thụ năng lượng Hình 2.13 trình bay

hình anh của board FPGA Virtex-7 VC707.

Hinh 2.13: Xilinx Virtex-7 FPGA VC707 Evaluation Kit

19

Trang 30

Một loại thiết bị khác tối ưu hơn FPGA là các Application Specific IntegratedCircuits (ASICs) Day là các thiết bị bán dẫn chứa các mạch logic cho các nhiệm vụ

cụ thé bên trong, nhưng thay vì có thể được cầu hình lại như FPGA, chúng được sảnxuất cô định cho một kiến trúc duy nhất Các thiết bị này có độ tích hợp cực kỳ cao,các khối logic bên trong được đặt và nối dây cụ thể cho thiết kế của chúng, thay vìđược nối thông qua các interconnect như FPGA Điều này giúp các ASICs có tốc độcao hơn và tiết kiệm năng lượng hơn Tuy nhiên giá thành sản xuất ASICs là rấtcao, do đó sản xuất ASICs chỉ phù hợp khi số lượng đặt hàng là rất lớn Điều nàydẫn đến yêu cầu nghiêm ngặt rằng các thiết kế cho ASIC cần được kiểm tra cực kỳ

kỹ lưỡng trước khi được gửi tới nhà máy dé đảm bảo không còn lỗi nào trong thiết

kế, do nếu phát hiện lỗi trong chip đã sản xuất thì không thể nào sửa được Đòi hỏinghiêm ngặt này dẫn tới thời gian thiết kế dài, bao gồm rất nhiều giai đoạn kiểm tra

Vì vậy, FPGAs, cùng với khả năng có thể cấu hình lại của chúng, là một lựa chọn

an toàn hơn cho các prototype và các dự án có thời hạn thiết kế ngắn

20

Trang 31

Chương 3 KIÊN TRÚC CNN ĐÈ XUẤT

3.1 Quy tắc miêu tả làn đường

Trong luận văn này, nhóm đề xuất một quy tắc miêu tả làn đường theo từng

dòng (row-wise) được lấy cảm hứng từ UFAST [17] và CondLaneNet [13] Hình

3.1 minh họa cho quy tắc được đề xuất.

28UE1 [E2IJ19A,

Hình 3.1: Quy tắc miêu tả làn đường

Trong quy tắc này, các làn đường được thể hiện thông qua một nhóm nhỏ các

điểm được lay dọc trên vạch phân cách làn theo các tung độ được định trước Các điểm này được thể hiện trong output của mô hình bằng một ma trận kích thước

(32 x 64) gọi là row-wise classification và một ma trận kích thước (32 x 1) gọi là vertical range Mỗi 6 trong vertical range có giá trị từ 0 đến 1, và các ô có giá trị > 0.5 đánh dấu răng hàng tương ứng ở ma trận row-wise classification có làn cắt qua Khi các hàng ở ma trận classification đã được chon, ô có giá tri lớn nhất trong mỗi hàng đánh dấu vị trí cụ thể mà vạch phân cách làn cắt qua ảnh Hai ma trận này được lặp lại cho mỗi làn mà mô hình có thể dự đoán được.

Lay cảm hứng từ PINet [14], nhóm chon kích thước cua ma tran classification

có chiều cao và chiều rộng giảm 8 lần so với kích thước ảnh input Điều này là dé

kích thước này có thể dễ dàng đạt được nhờ các convolution layer ở đầu, từ đó giảm

độ phức tạp của mô hình.

21

Trang 32

Với quy tắc miêu tả này, một ảnh RGB kích thước (3 x 256 x 512), với tổng kích thước 393,216 bytes, có thể được hoàn toàn mô hình bởi một ma trận kích

thước (4x 32 x 64) và một ma trận kích thước (4x 32 x 1), tổng cộng 8,320

bytes Ta có thê thấy, kích thước output nhỏ gấp hơn 47 lần kích thước input.

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

Áp dụng quy tắc trình bày ở phần 3.1, nhóm đề xuất một mô hình CNN có kích

thước nhẹ cho bài toán phân loại làn đường Mô hình nhận đầu vào là một ảnh RGB

và trả lại kết quả bao gồm 2 ma trận row-wise classification và vertical range Hình

3.2 minh họa kiên trúc của mô hình của nhóm đê xuât.

Hình 3.2: Kiến trúc mô hình CNN duoc dé xuất

Phần đầu của mô hình bao gồm 3 tầng encoder đề giảm kích thước ảnh đầu vào

thành 64 feature maps có kích thước (32 x 64) Các feature maps này sau đó sẽ

được đưa vào 2 nhánh output dé cuối cùng xuất ra 2 kết quả row-wise classification

và vertical range Khối căn bản nhất của mô hình là một nhóm 3 layers liên tiếp: convolution, batch normalization và ReLU Cho phần còn lại của luận văn, khối này

sẽ được gọi là “conv+bn+relu” Mỗi tang encoder bao gồm 3 khối “conv+bn+relu”

để giảm chiều cao và chiều rộng của input xuống một nửa, đồng thời tăng gấp đôi

số channels Dropout với p = 0.2 được áp dụng cho tất cả mọi convolution layer trong lúc training dé giúp hạn chế overfitting Hình 3.3 minh họa cho cấu trúc của

một tang encoder.

22

Trang 33

Hình 3.3: Cau trúc của một tang encoder

Nhánh classification bao gồm 3 “eonv+bn+relu” layers và một convolution layer không có activation ở cuối Qua mỗi layer, kích thước của ma tran input được giữ nguyên trong khi số channels bị giảm đi một nửa Lý do layer cuối cùng của nhánh classification không có hàm kích hoạt là do chúng ta chỉ quan tâm đến giá trị lớn

nhất trên mỗi hàng của output này, việc áp dụng các hàm như sigmoid sẽ kẹp output

vào một ngưỡng nhất định, khiến giá trị lớn nhất không nỗi bật ra.

Nhánh vertical cũng có cau trúc gần giống, gồm 3 “eonv+bn+relu” layers và một

“conv+sigmoiđ” layer ở cuối Tuy nhiên về kích thước ma trận ở mỗi layer, ở nhánh vertical chiều rộng của input cũng sẽ bị giảm đi một nửa cùng với số channels sau mỗi layer Convolution layer cuối cùng của nhánh vertical có hàm kích hoạt là sigmoid dé giữ giá trị của mỗi 6 output trong khoảng từ 0 đến 1, theo quy tắc được trình bày ở phần 3.1.

Tương tự như các tang encoder, dropout với p = 0.2 cũng được áp dụng cho tat

cả convolution layer cho cả 2 nhánh output dé hạn chế overfitting, chỉ trừ layer cuối cùng của mỗi nhánh Hình 3.4 và Hình 3.5 lần lượt trình bảy cấu trúc của nhánh

classification và nhánh vertical.

23

Trang 34

Cx 32x11

Hình 3.4: Nhánh classification Hình 3.5: Nhánh vertical

Hàm mat mát (Loss function)

Do mỗi nhánh là một output khác nhau, output của mỗi nhánh sé được áp dung

một ham loss khác nhau Hai ham loss nhóm sử dụng dựa trên hàm cross-entropy và

lay cảm hứng từ các hàm loss được trình bày bởi PINet [14] Sau khi loss của mỗi nhánh được tính ra, chúng được lay tong lại với nhau dé trở thành tổng loss của cả

mô hình.

Classification loss: Cho nhánh row-wise classification, loss được tính cho từng hang va sau đó được lấy tong lại Phương trình (3.1) trình bày classification loss, với C là số làn mô hình dự đoán được, h là chiều cao ma tran classification, cls; ; là prediction tai hàng j làn i, cls;, là label tương

ứng va [cg thê hiện cross-entropy loss.

C h

Leis = » » Ler (cls; „, cls; ;,) (3.1)

i=1 j=1

Vertical loss: Tương tự như classification loss, vertical loss là tong cua tat

cả cross-entropy loss cho mỗi làn Phương trình (3.2) trình bay vertical loss,

24

Trang 35

với C là sô làn mô hình dự đoán được, vert;, là vertical prediction tại làn i,

vert; là label tương ứng va Lẹp thé hiện cross-entropy loss.

ảnh RGB có kích thước (720 x 1280) Nhãn của tập TuSimple là một file có định

dạng json, với nhãn cho mỗi ảnh là một dòng với nhiều 3 trường: "lanes",

"h_samples" và "raw file" Truong ""aw file" chứa đường dẫn đến ảnh

sốc, và "h_samples" là danh sách các tung độ được định trước dọc theo chiều cao

của ảnh "lanes” bao gồm một hoặc nhiều danh sách tọa độ khác nhau, với mỗi

danh sách tương ứng với từng làn có trong ảnh, bao gồm danh sách các tung độ

tương ứng với các hoành độ đã định sẵn trong "h_samples" Các tung độ nào

không được làn cắt qua thì sẽ có giá trị -2 Hình 3.6 minh họa ví dụ về một ảnh

trong tập dữ liệu TuSimple.

Trang 36

Để huấn luyện, tat cả ảnh đều được thay đổi kích thước sang (256 x 512) vàcác giá trị RGB được chuyền từ khoảng [0,255] sang khoảng [0,1] Định dạng nhãncủa TuSimple được chuyền sang định dạng của nhóm Hình 3.7 minh họa sự khác

nhau giữa hai định dạng.

32 điểm cho mỗi làn Có thể thay mặc dù định dạng của nhóm lấy ít điểm hơn,thông tin về hình dạng của làn đường vẫn được bảo toàn trong khi giảm được kíchthước của đầu ra

3.5 Chỉ tiết training

Số làn đường mô hình có thể dự đoán được cố định là 4 theo đa số các ảnh trongtập TuSimple Các nhãn được chuyền từ định dạng gốc của tập TuSimple (phần 3.4)thành định dạng do nhóm đề xuất (phần 3.1) Tắt cả mã nguồn phần mềm được viếtbằng PyTorch [31], một thư viện deep learning cho ngôn ngữ lập trình Python [32]

Mô hình được huấn luyện sử dung Adam optimizer [33] với learning rate được chọntheo mặc định là le-3 Do giới hạn về bộ nhớ của GPU dùng cho training, batchsize được đặt là ở giá trị cao nhất có thể là 16 Một lần train mô hình bằng cả tập dữ

liệu được gọi là một epoch Thông thường, các mô hình thường sẽ train đi train lại

tập dữ liệu qua nhiều epoch để đạt độ chính xác cao nhất Mô hình của nhóm được

train trong 150 epoch, với epoch có độ chính xác cao nhất được chọn làm phiên bản

cuôi cùng.

26

Trang 37

Chương 4 KIÊN TRÚC PHAN CỨNG DE XUẤT

4.1 Hiện thực lượng tử hóa

Kiểu dữ liệu floating-point thường được dùng bởi các CPUs và GPUs đòi hỏi rấtnhiều tài nguyên phần cứng để xử lý Do đó, nhóm quyết định áp dụng kỹ thuậtlượng tử hóa (quantization) cho dữ liệu bên trong mô hình trước khi hiện thực kiếntrúc phần cứng

Như đã trình bày ở phần 2.4, thư viện PyTorch hỗ trợ 3 kỹ thuật quantization

Kỹ thuật thứ nhất, dynamic quantization, chỉ lượng tử hóa các trọng số nhưng các

activation vẫn được xử lý ở dạng floating-point Tuy kỹ thuật này bảo toàn được đa

số độ chính xác, chi phí tính toán của nó vẫn còn có thể được tối ưu thêm Do đó,

các kỹ thuật lượng tử hóa toàn bộ mô hình như hai phương pháp còn lại sẽ hữu ích

hơn.

Hai kỹ thuật còn lại, static quantization và quantization-aware training, có điểmchung là chúng đều lượng tử hóa toàn bộ mô hình, trọng số lẫn activation Điểmkhác nhau là một mô hình sử dụng static quantization vẫn được train như một môhình floating-point thông thường Điều này có thé dẫn tới khi lượng tử hóa xuống

độ rộng bit quá thấp, chúng có thé bị mat mát nhiều về độ chính xác aware training cải thiện việc này bằng cách giả lập số lượng tử hóa trong cả quátrình training, nói cách khác là hướng cho mô hình được train cụ thể cho việc chạybằng số lượng tử

Quantization-Để tìm hiểu kỹ thuật nào phù hợp nhất với mô hình đề xuất, nhóm quyết định ápdụng kỹ thuật static quantization trước đề kiểm tra Trước khi áp dụng lượng tử hóa,

mô hình được đánh giá về độ chính xác trên số floating-point Chi tiết đầy đủ về cácđánh giá floating-point được trình bày ở phan 6.1 Do phiên bản PyTorch nhómdang sử dụng hiện tại (1.11.0+cu113) chỉ hỗ trợ lượng tử hóa xuống số nguyên 8-bit, đây là độ rộng dữ liệu mà nhóm sử dụng Kết quả độ chính xác sau khi lượng tửhóa bằng kỹ thuật static quantization được trình bày ở Bang 4.1

27

Ngày đăng: 03/11/2024, 19:00

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN