Vì YOLO được biết đến là một trongnhững mô hình CNN có khả năng phát hiện và phân loại đối tượng với tốc độ cao màvẫn đảm bảo độ chính xác nên thường được ứng dụng trong các hệ thống nhậ
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Ỹ THUẬT MÁY TÍNH
NGUYÊN NGỌC THÙY DƯƠNG - 19520057
QUÁCH NGỌC TRÂM - 19522376
KHÓA LUẬN TÓT NGHIỆP
HE THONG NHAN DIỆN PHƯƠNG TIEN GIAO
THONG TREN FPGA
VEHICLE DETECTION SYSTEM ON FPGA
KY SƯ KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN
THS PHAN ĐÌNH DUY
TP HO CHi MINH, 2023
Trang 2LỜI CẢM ƠN
Để hoàn thành khóa luận này, chúng em xin gửi lời cảm ơn chân thành đến cácQuý Thầy cô Khoa Kỹ Thuật Máy Tính đã tạo cơ hội cho được học tập, rèn luyện và
tích lũy kiến thức, kỹ năng đề thực hiện khóa luận
Đặc biệt, em xin gửi lời cảm ơn đến Giảng viên hướng dẫn Phan Đình Duy đã tậntình chỉ dẫn, theo dõi và đưa ra những lời khuyên bồ ích giúp em giải quyết được cácvan đề gặp phải trong quá trình nghiên cứu và hoàn thành dé tài một cách tốt nhất
Ngoài ra, chúng em xin cảm ơn các giảng viên bộ môn đã truyền đạt những kiến
thức chuyên môn quý báu, những kiến thức này đã đóng góp rất nhiều cho quá trìnhthực hiện khóa luận của chúng em Chúng em cũng xin cảm ơn thầy Nguyễn Thanh
Thiện - có vấn học tập của lớp KTMT2019 đã giúp đỡ chúng trong quá trình học tập
tại trường, những ý kiến đóng góp của thầy sẽ là những hành trang đáng quý cho
chúng em trong tương lai.
Chúng em xin cảm ơn anh chị, bạn bè đã chia sẻ, động viên tinh thần cũng như
hỗ trợ rất nhiều cho chúng em trong suốt quá trình hiện thực
Do kiến thức của chúng em còn hạn chế và thiếu kinh nghiệm thực tiễn nên nộidung khóa luận khó tránh những thiếu sót Chúng em rất mong nhận sự góp ý, chỉ
dạy thêm từ Quý Thay cô
Cuối cùng, chúng em xin chúc Quý Thầy Cô luôn thật nhiều sức khỏe và đạt được
nhiều thành công trong công việc
Trang 3MỤC LỤC
Chương 1 TONG QUAN tt th re 2
1.1 Lý do thực hiện khóa luận ¿+ + +5 + s£vxvrexevserrerre 2
12 Mục tiêu khóa luận - «5S: E22 1010121 re 3
2.2.2 Câu trúc mang veccccsscessssssecscssssscssssssessssssscsssssvecssssusecesssueeesssssecessseess 8
2.2.3 Nguyên lý hoạt động của mang nơ-ron nhân tạo - 9
243 Mạng nơ-ron tích chập (CNN) «556cc 13
2.3.1 Câu trúc mạng nơ-ron tích chập -:+¿2vcvccczzz+rer 13
2.3.2 Lớp tích chập [3] - 5+ 13 2.3.3 Lớp pooling [3] - - + c+ +2 tt ưưn 15 2.3.4 Lớp dense (Fully Connection Layer aka Denses Laser) [3] 16
2.4 Mô hình YOLLO ¿SE 101010121 rên 17
Trang 4Mô hình YOLO v2-TÌny - s56 cttEerkrkerkerrrkerkrkervee 23
Mô hình Custom YOLO
Mô hình YOLOv3 - ¿+ + SE HH H11 re 25
Mô hình Tinier-YOLO [9]
Fire module ¿55c 5+ S2 2*2t+S* 222v 221111111 re 26
Cấu trúc mô hình
M4 008010 28
OpenBLAS [1222: euefTn, Ga 28
Số dau chấm động (Floating poin†) -:-czc5ccsscceccsse 28
Số châm động với chuẩn [EEE 754 -+-++ 28
Số chấm động half-precision với chuẩn IEEE 754 29
GEMM (General Matrix Multiplications) [13] 3Ú
OpenCL (Open Computing Language) [14] [4] 3Ú
Cách OpenCL tổ chức các phép tính toán song song 31Truyén nhận dữ LGU ccccccssscescssssecssssseeesssssesessssecessssseeeessseesesesseeee 33
Intel® FPGA SDK for OpenCLTM [15] 0 eee 34
Tổng quan về board DEI-SoC -:2scz222ssvzeccvse 34
PHƯƠNG PHÁP THỰC HIỆN -ccccccccccccezzre 37
Thiết kế mô hình Custom Tinier YOLO -:ccccc++ 37
Chuẩn bị và huấn luyện mô hình cccsccccccsscc-ec- 38Chuan bi va 0n ân, Vẽ 4I
Cấu hình mô hình trên framework darknet -° 41
Trang 53.3.2 Huấn luyện mô hình ¿+++++2E+++++2EEE+etrtrrxxrrrrrkrcee 423.4 Xây dựng hệ điều hành Linux trên board DEI-SoC.
3.4.1 Luồng boot linux [I7] ¿-cc522vs+veeccvvrreerrsrrrerrreree 44
3.4.2 Các công cụ cần thiết
3.4.3 Tạo file FPGA programmable bitstream (.aocx) và file raw binary
0000809077 46
3.4.4 Tạo file preloader (preloader-mkpimage.bin) [15]
3.4.5 Tạo file u-boot (uboot.img) [15] ¿-¿- -<es<c<ceecseexerexe 48 3.4.6 Tạo file zImage và file device tree blob(.dtb)
3.4.7 Tạo root filesystem [17] c.cccsessesesesssseseseseseeeeeseereeeeaseeeeeeeeeeee 48 3.4.8 Tạo u-boot script [17]
3.4.9 Tạo OpenCL driver eeeeseeeteeeeeeseseeeseeeeeereeeeseaeeneeeeee 50
3.5 Thiết kế hệ thống SoC-FPGA - 2¿¿2225czz222vsceccsxz 51
3.5.1 Hiện thực host prograim - + +cx+eexererererrrrerree 52
3.5.2 Hiện thực kernel + +5 +x+k‡k*k*EkEekekE ngư 55
Chuong 4 KET QUA THUC HIỆN -2¿-2222+zccev2zvererrrseersrr 57
41 Kết quả huấn luyện mô hình Custom Tinier YOLO 57
4.2 Kết quả chạy giả lập Custom Tinier YOLO - 62Chương 5 KET LUẬN VÀ HƯỚNG PHAT TRIÉN - 65
5.11 Kết quả dat ẨƯỢC 5 SH 65
5.1.2 Khó khăn tt re 65
5.1.3 Nhược điểm +-+22222++t2E2EEEtEEEEELEtrrrrkrrrrrrrvee 66
Trang 65.2 Hướng phát
TÀI LIEU TIENG ANH
TAI LIEU TIENG VIET
s0
Trang 72.1 Ma trận điểm ảnh X có kích thước 5*5 - 2-2 e2zetxxerrserg 4
h 2.2 Nhân ma trận con với kernel W +: +cxssxsxerrererserrrrrrrrrrerrre 5
h 2.3 Kết quả tích giữa ma trận con A va kernel W -cccc +- 52.4 Kết quả tích chập Y giữa ma trận X va kernel W 6
2.5 Ma trận với padding=1 6
h 2.6 Ma trận với padding=1 và stride=2 7 2.7 Kernel cho phép tích chập làm nét ảnh 7
h 2.8 Kernel cho phép tích chập xác định đường nét ảnh 8
h 2.9 Cấu trúc tổng quan của mang nơ-ron nhân ta0 cccsccssesseesseeeseesseeeeeesee 9
h 2.10 Đường biểu diễn biểu thức ReLU . ¿z+2sscz++ 10
2.11 Đường biểu diễn Leaky ReLU : -22ccccccczsccvcvcee "1
h 2.12 Sơ đồ quá trình Feed-forward -: z222vvz++22vvvrrerrvsrresrr 12
h 2.13 Cấu trúc mạng no-ron tích chập - ¿2+2 132.14 Tensor ba chiều biểu diễn ảnh màu ¿ 222222252 14
h 2.15 Tích chập giữa tensor ảnh màu va tensor kernel 14
h 2.16 Kích thước dữ liệu đầu ra từ lớp tích chập - -+ 15
h 2.17 Ví du về max pooling . -zz+22scc+ccz+
2.18 Phương pháp pooling giảm width va height của dữ liệu đầu vao 16
2.19 LỚP dense essere Sài 17
h 2.20.Téng quan quá trình nhận diện bằng mô hình YOLO 18
h 2.21 Cầu trúc của mô hình YOLO 2¿¿22+z¿+222+z+cvvszvzsrr 192.22 Các thông số của bounding box -ccc:¿+222cvvvvcresrrrrrrree 19
h 2.23 Công thức tính lo - - + +52 +£+2£2£+t+E+Eexerererkzxerersreree 20
h 2.24 Dự đoán bounding box dựa trên độ lệch so với anchor box [8] 2
2.25 Cấu trúc mô hình YOLOV2 -2¿¿©2+++2222++z+tvvxeerrrrrsree 22.26 Cau trúc mô hình YOLOv2-Tiny [1] -¿ cscz+ccssce2 23
h 2.27 Cấu trúc mô hình Custom YOLO [3] cccScxsreeersrerrer 24
2.28 Cấu trúc Darknet-53 mà mô hình YOLOv3 dùng [9] 25
Trang 82.31 Số dau cham động half-precision theo chuân IEEE 754 29
h 2.32 Thuật toán GEMM - 5c c2 St SE erverrrrrrrrrrrrrrrrrrrrrrree 30
h 2.33 Workflow của OpenCL framewWOrẨK + - + 5++cscxsrrxerere 31
2.34 Global dimension, local dimension, work-group và work-item 32
h 2.35 Vi dụ về cách ma OpenCL đồng bộ phép tinh 32
h 2.36 Sau khi gan phép tính vào work-item - +-++ + <c++s=se 33
h 2.37 Cấu trúc của hệ thống SoC-FPGA board DE1-SoC 34
2.38 Board DE1-SoC ÏayOUL - ¿S1 St ve 35
3.1 Một số ảnh trong Stanford car dataset : -cc++2cvsccrccrveree 39
h 3.2 Layout của SD card image [ Í6] ¿6+5 s+cecexeeexeererereeeg 43
3.3 Ludng boot Linux [17] .-: :¿22+++22+++++22vv+eztvvsversrrsseee 44
3.4 Các bước chạy sau khi Linux kernel được boot 45
h 3.5 Board package support của Terasic 46
h 3.6 Tổng quan hệ thống SoC-FPGA „51
3.7 Mô tả quá trình thực thi của hệ thống „52
h 3.8 Áp dụng phương pháp im2col dé xử lý đầu vào cho GEMM 54
h 3.9 Áp dụng phương pháp im2row đề xử lý đầu vào cho GEMM 554.1 Kết quả huấn luyện mô hình -c:+2222vvvvvrrrrtrrrrrrrercee 57
h 4.2 Kết quả nhận diện của Custom Tinier YOLO khi chạy giả lập 62
h 4.3 Kết quả biên dịch của kernel -c¿£52222vvvccrrtrtccrvsecccee 63
h 4.4 Kết quả chạy gia lập mô hình cho board DE1-SoC .- 64
Hìn
Trang 9DANH MỤC BANG
Bảng 2.1 So sánh hiệu suất của các phiên bản YOLO [2] - 23
Bảng 2.2 mAP và FLOPS của Tiny Yolov2 và Custom Yolo [3] 24
Bảng 2.3 Bang so sánh tốc độ của các kiến trúc mạng nơ-ron [9] 25
Bảng 2.4 Bảng so sánh độ chính xác của nhiều mô hình khác nhau [9] 26
Bảng 3.1 Bảng thông số mô hình Custom Tinier YOLO
Bảng 3.2 Liệt kê đặc trưng các loại xe trong tập huấn luyện Bảng 3.3 Chỉ tiết của mỗi partition Bảng 4.1 Độ chính xác AP của các đối tượng Bảng 4.2 Một số kết quả ngẫu nhiên của 3 đối tượng . -c-.+ 58 Bảng 4.3 So sánh BFLOPS của một số mô hình Tiny YOLO 60
Bảng 4.4 So sánh độ phức tap của các mô hình Tiny YOLO cho FPGA 61
Trang 10DANH MỤC TU VIET TAT
STT Từ viết tắt Từ đầy đủ
1 ALM Adaptive Logic Module
2 ALUT Adaptive Look-Up Table
3 CNN Convolution Neural Network
4 DNN Deep Neural Network
5 DSP Digital Signal Processing
6 FPGA Field Programmable Gate Array
7 GEMM General Matrix Multiply
8 HLS High-Level Synthesis
9 HPS Hardware Processor System
10 IoU Intersection over Union
11 LUT Look-Up Table
12 ReLU Retified Linear Unit
13 SDK Software Development Kit
14 SoC System on Chip
15 YOLO You Only Look Once
Trang 11TÓM TÁT KHÓA LUẬN
Đề tài "Hệ thống nhận diện phương tiện giao thông trên FPGA" - một nghiên cứu
về việc thiết kế và xây dựng một hệ thống nhận diện phương tiện giao thông trên
FPGA (Field-programmable gate array) Hệ thống này có khả năng nhận diện một số
phương tiện giao thông trên đường bao gồm ô tô, xe máy, xe tải Từ đó có thể ứngdụng mô hình này để xây dựng hệ thống giám sát vi phạm luật giao thông như bắn
tốc độ trên đường cao tốc, kiểm tra các vi phạm như lấn làn, vượt đèn đó, gây tai nạn, Việc thiết kế hệ thống sử dụng FPGA giúp tăng tốc độ xử lý và giảm thời gian đáp
ứng của hệ thống và có thể phát triển thành các IC Kết quả của nghiên cứu này sẽ
giúp cải thiện an toàn giao thông và giảm tỷ lệ xảy ra tai nạn.
Đề tài tập trung nghiên cứu một số mô hình nhận diện vật thé phổ biến hiện nay,
cụ thé là mô hình YOLO và các biến thé của nó Vì YOLO được biết đến là một trongnhững mô hình CNN có khả năng phát hiện và phân loại đối tượng với tốc độ cao màvẫn đảm bảo độ chính xác nên thường được ứng dụng trong các hệ thống nhận diệnthời gian thực Hơn nữa, một số biến thể của YOLO đã phát triển để đáp ứng những
môi trường bị giới hạn tài nguyên như máy tính nhúng hay hệ thống SoC FPGA Từ
đó, nhóm xây dựng một mô hình YOLO phù hợp với môi trường tài nguyên hạn hẹp
của DEI-SoC Đề phục vụ cho việc phát triển khả năng nhận diện một số loại phươngtiện giao thông, nhóm đã thu thập một bộ dữ liệu huấn luyện cho mô hình của nhóm
Ngoài ra, đề tài cũng nghiên cứu cách xây dựng hệ thống sử dụng hệ điều hành Linux
trên board DE1-SoC phục vụ cho việc thực thi chương trình trên board Từ đó, nhóm
tận dung khả năng hỗ trợ xây dựng mach logic tổ hợp bằng ngôn ngữ OpenCL dé
hiện thực mô hình nhận diện trên FPGA.
Trang 12Chương 1 TÔNG QUAN
1.1 Lý do thực hiện khóa luận
Sự phát triển bùng nỗ của phương tiện giao thông khiến cho việc quan lý đảm bảo
trật tự an toàn giao thông cũng như giám sát vi phạm luật của các phương tiện trở nên
khó khăn hơn, từ đó dẫn đến số vụ tai nạn và khả năng gặp tai nạn tăng cao Nhằm
tang cường đảm bảo an toàn cho người dân khi tham gia giao thông, chính phủ đã
cho thực hiện những chính sách đây mạnh ứng dụng khoa học công nghệ vào việc
xây dựng hệ thống hỗ trợ quản lý, giám sát
Một trong những giải pháp công nghệ được ứng dụng phổ biến, đóng một vai trò
quan trọng trong việc quản lý, điều phối và xử lý các tình huống giao thông chính là
xử lý ảnh Xử lý ảnh là đối tượng nghiên cứu của lĩnh vực thị giác máy tính và là
phân ngành trong xử lý tín hiệu số với tín hiệu xử lý là ảnh Day là một phân ngànhkhoa học mới rất phát triển trong những năm gần đây, thu hút rất nhiều nhà nghiên
cứu và phát các kỹ thuật cũng như mô hình xử lý ảnh có độ chính xác và khả năng
ứng dụng cao trong đời sống
Tuy nhiên, các thuật toán xử lý đều phải thực thi trên hệ thống máy tính phức tạp
Việc này hạn chế năng lực xử lý ảnh cũng như gây tiêu hao công suất tiêu thụ khi sửdụng lượng lớn camera và CPU hiệu năng cao cho hệ thống giám sát Để cải thiện
khả năng xử lý nhanh hơn và tiết kiệm năng lượng thì giải thuật nhận diện vật thé nên
được thực hiện trên FPGA.
Nhằm mục đích tìm hiéu, tiếp cận các kỹ thuật xử lý ảnh đang phổ biến hiện naykhi kết hợp cùng với các giải thuật máy học, thông qua các bước nghiên cứu về kiếnthức cơ bản về mô hình máy học xử lý ảnh như mạng nơ-ron tích chập CNN, nghiên
cứu các thư viện hỗ trợ xử lý tính toán như OpenCV, BLAS Hơn nữa, nhóm mongmuốn học hỏi thêm về hệ thống SoC, cũng như khả năng hiện thực mô hình máy học
lên FPGA Từ đó, chúng em có thé đưa ra và hiện thực giải pháp cho van dé nóitrên, cụ thể hơn là hiện thực một hệ thống máy học có thể nhận diện một số phương
Trang 13tiện giao thông trên FPGA Do đó, nhóm chọn thực hiện khóa luận “Hệ thống nhận
điện phương tiện giao thông trên FPGA”.
1.2 Mục tiêu khóa luận
Mục tiêu chính của khóa luận là nghiên cứu, hiện thực một hệ thống SoC có khả
năng phát hiện và phân loại một phương tiện giao thông trên đường, sử dụng mô hình
Custom Tinier YOLO hiện thực trên board FPGA DEI-SoC Cụ thể, chúng em sẽ
tiến hành:
Tìm hiểu và nghiên cứu các bài báo về hiện thực mô hình nhận diện trên
FPGA Từ đó lựa chọn hệ thống và mô hình khả thi dựa trên tài nguyên hiện
có.
Tìm hiểu về board DEI-SoC cũng như ngôn ngữ OpenCL nhằm hỗ trợ cho
quá trình xây dựng cũng như hiện thực mô hình nhận diện phù hợp lên hệ
thống
Tìm hiểu và nghiên cứu mô hình YOLO cũng như các biến thé của nó dé chọn
ra mô hình phù hợp với tiêu chí cụ thể như độ chính xác và độ tin cậy của dự
đoán, kích thước mô hình, tốc độ xử lý Từ đó, xây dựng mô hình phù hợp với
phần cứng nhưng vẫn đảm bảo độ chính xác của kết quả dự đoán
Thu thập và xây dựng dataset phù hợp cho mô hình và tiến hành huấn luyện.Xây dựng chương trình có thê phát hiện và phân loại được 3 loại phương tiệngiao thông gồm xe hơi, xe máy và xe tải Chương trình sẽ chia làm hai phầnchính: phần tính toán, xử lý dữ liệu được thực hiện trên board DE1-SoC, phầnđiều phối các khối xử lý của chương trình sẽ thực hiện trên máy tính cá nhân
Chương trình sẽ nhận đầu vào là ảnh màu và chuyền thành ảnh xám nhằm
giảm áp lực cho hệ thống tính toán Mục tiêu của chương trình là kết quả dự
đoán đạt độ chính xác 80-90%.
Trang 14Chương 2 CƠ SỞ LÝ THUYET
Chương này bao gồm các lý thuyết cơ bản liên quan đến mô hình của dé tài, giải
thuật dùng dé tính toán ma trận phù hợp với FPGA cũng như một số công cụ hỗ trợviệc thiết kế và phát triển hệ thống nhận diện phương tiện giao thông
2.1 Tích chập (Convolution) [1]
Tích chập là phép tính toán ma trận được áp dụng nhiều vào việc xử lý ảnh Biểu
diễn phép nhân tích chập ở dạng X x W = Y (kích thước của các ma trận sẽ được đề
cập sau) Khi đó, ma trận Y sẽ được xem là một hình ảnh đầu vào, ma trận W đóngvai trò là filter (bộ lọc) và ma trận Y sẽ là hình ảnh kết quả đầu ra Các thành phần
của ma trận W sẽ phụ thuộc vào ứng dụng của bài toán và ma trận này sẽ dùng phép
tích chập đề lọc ra được những tính chất cần thiết của hình ảnh đầu vào theo ứng dụng
của bài toán mình cần
Nhằm làm rõ hơn phép tính toán tích chập, giả sử cho ma trận ảnh đầu vào X có
kích thước 5*5 và các giá tri pixel như Hình 2.1:
o| of of of BRF) Oo; Oo} BL BRBl BỊ BỊ BỊOo] | | | Ooo| of | of o
Hình 2.1 Ma trận diém anh X có kích thước 5*5
Để lọc ma trận này cần có một ma trận vuông W kích thước k*k, với k (gia sử
k=3) là số lẻ, được gọi là kernel
101
W= 0 10
101
Viéc loc anh duge thuc hién bang cach “quét” ma tran X 1an lượt thành những ma
trận con A có kích thước bằng với kernel Bằng việc “quét” này sẽ lấy ra được 3*3
4
Trang 15điểm ảnh để tính tích chập với 3*3 giá tri của kernel, ví dụ nhân ma trận con A kích
thước 3x3 (được xác định dựa vào việc ướm kernel lên ảnh sao cho phần tử tâm của
kernel trùng với vị trí của của điểm trên ảnh) với kernel W như Hình 2.2 Nhân ma
trận con với kernel W.Hình 2.2.
x Ww
Hình 2.2 Nhân ma trận con với kernel W.
Các phan tử có địa chỉ giống nhau giữa hai ma tran (cùng số cột và số dòng) sẽđược nhân lại với nhau Kết quả thu được như Hình 2.3
x w AQW
Hình 2.3 Kết quả tích giữa ma trận con A va kernel W
Sau đó tổng của các phép nhân ấy sẽ chính là kết quả của một điểm ảnh của ma
trận đầu ra Y Lặp lại phép tích chập này đến hết ma trận X sẽ thu được kết quả ma
trận Y là “hình ảnh” đã được xử lý như Hình 2.4.
Trang 16Để phép tích chập có thể xử lý ảnh tốt nhất thì tất cả các pixel của ảnh đều phải
trở thành phan tử trung tâm của các ma trận con được “quét” nhưng với một bức ảnh
bình thường thì các phan tử biên không thé làm phan tử trung tâm của bat kỳ ma trậncon nào Vì vậy, nêu muốn tính tích chập trên các phan tử biên nhất thiết phải thêmmột hàng hay cột 0 vào mỗi bên của ma trận Khi đó phép tích chập có thêm mộttham số gọi là padding = 1 (Hình 2.5), tương tự với padding = k tức là thêm k vector
0 vào bốn phía của ma trận
Hình 2.5 Ma trận với padding=1.
2.1.2 Stride - Bước nhảy [1]
Tham số thứ hai của phép tích chập gọi là stride, tham số này xác định số bướcnhảy tới phần tử tiếp theo muốn tính tích chập Chẳng hạn như ví dụ phía trên, tính
Trang 17tích chập với stride = 1, tức là phan tử tiếp theo ngay sau phan tử trước Với phép tích
chập có thêm số stride = 2, padding 1, thì các phần tử được tính sẽ như Hình 2.6.
Hình 2.6 Ma trận với padding=1 và stride=2.
Khi đó sô phân tử của ma trận tích chập Y sẽ có sô phân tử ít hơn so ma trận gôc,
do đó tham số stride thường được dùng đề giảm kích thước của ma trận Y.
2.1.3 Ý nghĩa phép tính tích chập:
Phép tính tích chập thường được dùng đề làm nét/mờ ảnh hay xác định các đường
nét trên ảnh Tùy theo giá trị kernel khác nhau mà chức năng của phép tích chập khác
Trang 18Hình 2.8 Kernel cho phép tích chập xác định đường nét ảnh.
2.2 Neural network [2]
2.2.1 Tổng quan
Neural network hay mạng nơ-ron nhân tạo mô phỏng theo cách thức hoạt động
của thần kinh con người, sử dụng nhiều thuật toán phức tạp nhằm xác định, phát hiện các mối quan hệ trong tập dữ liệu Mỗi một nơ-ron trong mạng nhân tạo là một hàm toán học có chức năng thu thập và phân loại các thông tin dựa theo cấu trúc cụ thể Các nơ-ron này được phân thành các tầng kết nối với nhau.
2.2.2 Cấu trúc mạng
Mạng bao gồm các nơ-ron được phân chia thành nhiều tầng thuộc ba nhóm tầng
chính:
e Tang đầu vào (input layer): tầng tiếp nhận dữ liệu từ bên ngoài Số nơ-ron của
tầng chính là lượng dữ liệu được đưa vảo, chăng hạn như trong xử lý hình ảnh, lượng nơ-ron của tầng đầu vào chính là số điểm ảnh muốn xử lý Mỗi mạng nơ- ron chỉ có một tầng đầu vào.
e Tầng ấn (hidden layer): Tầng này phân chia dữ liệu thành các tầng nhỏ dé thu
thập, xử lý dt liệu đầu vào Tầng an này có thể có hoặc không, số lượng nhiều
hay ít tùy thuộc vào số lượng cũng như độ phức tạp của dữ liệu cần xử lý.
e Tang dau ra (output layer): Tầng này sẽ xuất kết quả đã được phân tích từ mạng.
Mỗi mạng nhân tạo chỉ có một tầng đầu ra.
Mỗi nơ-ron thuộc tang ấn và tang dau ra đều có những đặc điểm sau:
e Có liên kết với tất cả nơ-ron của tang trước đó với một trong số riêng.
© Mỗi nơ-ron đều có một hệ số tự do (hệ số bias) riêng.
e Thực hiện tính tổng tuyến tính.
Trang 19Riêng các nơ-ron thuộc tang an áp dụng hàm kích hoạt (activation function) nhằm chọn ra giá trị đầu ra tốt nhất để làm đầu vào cho tầng tiếp theo (Hình 2.9).
Input layer Output layer
Hidden layer 1 Hidden layer 2
Hình 2.9 Cấu trúc tông quản của mạng nơ-ron nhân tạo.
2.2.3 Nguyên lý hoạt động của mạng nơ-ron nhân tạo
Mỗi một nơ-ron hay node thuộc một tầng (trừ tầng đầu vào) về bản chất là một
hàm tính toán dựa trên đầu vào là giá trị của tất cả node thuộc tầng trước đó Giá trị đầu ra tại mỗi node thường là một số thực năm trong khoảng [0,1] Giá trị này giúp mạng lưới phân tích, đánh giá và đưa ra dự đoán sao cho kết quả dự đoán càng gần
với kêt quả mong muôn cảng tôt.
Dé xác định giá tri tai node i cân thực hiện hai bước:
e Bước l: Tính tông linear tức là tông của tích các giá tri node với hệ sô ket nôi
tương ứng với node đang xét, cộng với hệ số tự đo (bias) nếu có.
Trang 20a!J1; giá tri tai node j của tang 1-1.
wi, 1: hệ số kết nối giữa node i thuộc tang 1 với node j của tang trước đó.
bị: hệ số tự do (bias) của node i thuộc tang 1.
@ Bước 2: Áp dụng ham kích hoạt:
Giá trị của biểu thức tuyến tính (2.1) có thê đạt giá trị rất lớn hoặc rất nhỏ dẫn đến các van đề về mặt tính toán (giá tri NaN trong khi cho mô hình học) và mạng rất khó
hội tụ Điều này sẽ gây khó khăn trong quá trình huấn luyện mô hình và khiến cho
mô hình hoạt động không hiệu quả Vì vậy hàm kích hoạt được đề xuất nhằm đưa kết quả tính toán của node vào một khoảng giá trị nhất định ReLU là một trong những hàm kích hoạt hiệu quả được sử dụng phô biến hiện nay (Hình 2.10).
Biểu thức ReLU có dang: f(x) = max (0,%)
_ Oo
ReLU(X) CC em `" W FU Dns wD WO
-7.5 -5.0 -2.5 0.0 2.5 5.0 7.5 10.0
l ¬ Đ °
Hình 2.10 Đường biểu dién biêu thức ReLU.
ReLU chỉ giữ lại các giá trị dương, còn giá trị âm sẽ trả về 0 Tuy nhiên, ReLU chỉ chặn đầu dưới mà không chặn đầu trên nên nó có thê tránh hiện tượng vanishing gradient mà không tránh được exploding gradient Tuy nhiên, trong thực tế, ReLU thường hoạt động khá tốt.
Ngoài ra, theo biểu thức (2.1), khi đưa các giá trị âm về 0 đồng nghĩa với việc
node đó sẽ không học tiếp được nữa Vì vậy, Leaky ReLU ra đời dé khắc phục nhược
10
Trang 21điểm này Biểu thức Leaky ReLU có dang: f(x) = max (ax, x) Giá trị @ tùy chọn
theo mục đích, nhưng thường là 0.01.
LeakyReLU(X)
¬ ©
G kh BÚ FU Ds wD OO
Hình 2.11 Đường biểu diễn Leaky ReLU.
Sau khi xác định được giá tri của các node trong một tầng sẽ thu được hai vector:
e Vector Z' = [Z{ zJ] là vector gồm n phan tử là tông linear của node thuộc
tang 1.
e Vector a! = [al a!] là vector có n phan tử là kết qua sau khi áp dụng ham
kích hoạt cho n node thuộc tầng 1.
Biểu thức tong quát có dang như sau:
(1) (0) (1) (0) (1) (0) (1) (1)
zi ay + wit Tr ay + tài + đà ị + Way Tr bì ị
2 = z | = ay! #101y +45! * Wey da * Woy + bài
Trang 22zở) = (W3) Ï «a? + b3 (2.6)
a3) = ø(z3) (2.7)
Ket quả từ vector a cua tang trước được dùng làm đâu vao cho tính toán của tang
sau, cứ tiếp tục cho đến tầng đầu ra Quá trình đó gọi là feed-forward như Hình 2.12.
Hình 2.12 Sơ đồ quá trình Feed-forward.
Trong công thúc tính giá trị node trên, có hai hệ số được đề cập tới là hệ số kết nối và hệ số tự do b Hệ số w giúp xác định mức độ liên hệ giữa hai node là mạnh hay yêu nhằm phân loại, phân tích dữ liệu Trong khi đó, hệ số tự do b thiết lập ngưỡng cho giá trị tông linear nhằm quyết định giá trị bao nhiêu thì mới được xem là
có mỗi liên hệ giữa hai node Hai hệ số này góp phần quyết định tính chính xác trong phán đoán của mạng no-ron Do đó, không thé đặt một giá trị ngẫu nhiên hay cảm
tính làm hệ sô mà phải dựa trên một cơ sở xác định.
Đề xác định giá trị w như thế nào cho hợp lý thường dựa trên độ sai lệch giữa kết quả dự đoán và kết quả mong muốn hay thực tế Dé làm được điều này, các giải thuật
gradient descent thường được sử dụng, thông qua việc tìm giá tri của loss function
nhỏ nhất, từ đó xác định giá trị w cho từng kết nối.
Sau mỗi lần so sánh kết quả mong muốn với dự đoán của mạng thì lặp lại việc
thiết lập giá trị w cho đến khi tỉ lệ chính xác đạt được mức mong muốn Quá trình
này được gọi là huấn luyện mô hình, trong đó, nhà phát triển xây dựng một tập dữ liệu huấn luyện bao gồm các dữ liệu đã được gán nhãn hoặc không tùy theo mục đích.
Mô hình sẽ được cho nhận diện các dữ liệu đó với các hệ sô w và b ban đâu Các hệ
12
Trang 23số này sẽ được cập nhật sau mỗi lần đánh giá kết quả dự đoán cho đến khi đạt độ
chính xác theo yêu câu.
2.3 Mạng nơ-ron tích chập (CNN)
Trong lĩnh vực học sâu (deep learning), CNN là một lớp các mạng thần kinh sâu (deep neural network), thường được dùng dé phân tích hình ảnh trực quan CNN sử
dụng một kỹ thuật đặc biệt gọi là tích chập trong quá trình phân tích, xử lý các đặc
trưng của đối tượng trong ảnh.
2.3.1 Cấu trúc mạng nơ-ron tích chập Cấu tạo của mạng lưới này có bốn lớp quan trọng: [3]
chiêu sâu sẽ là các kênh màu của ảnh, hay còn gọi là channel.
Khi xử lý hình ảnh có màu có kích thước càng lớn thì lượng parameter sẽ càng
lớn, vậy nên cần có hướng giải quyết hiệu quả hơn, đó là xử lý băng convolution
layers với phép toán tích chập.
13
Trang 24Xét anh màu được biéu diễn đưới dang tensor ba chiều (được biéu diễn theo RGB)
như Hình 2.14.
height
Hinh 2.14 Tensor ba chiéu biéu dién anh mau.
Cách tính tích chập tương tự với ảnh xám (mang hai chiều) như Hình 2.15.
Input Channel #1 (Red) Input Channel #3 (Blue)
Kernel là #1 Kernel T #2 Kernel 1 #3
Input Channel #2 (Green)
l + 3 + od +1=787
Ï
Bias = 1
Hình 2.15 Tích chập giữa tensor ảnh màu và tensor kernel.
Sau khi quá trình tính toán, thu được ma trận đầu ra cho các lớp tích chập tiếp
theo và với mỗi kernel khác nhau mạng nơ-ron sẽ học được những đặc trưng khác
nhau của ảnh, nên trong mỗi lớp tích chập có thé dùng nhiều kernel dé học được nhiều
14
Trang 25đặc trưng của ảnh Vì mỗi kernel cho ra output là một ma trận nên k kernel sẽ cho ra
k output matrix Khi kết hợp k output matrix này lại sẽ thu được một tensor ba chiều
có chiều sâu k như Hình 2.16.
K kernel F*F*DInput „| Stride: s
Convolutional layer
Hình 2.16 Kích thước đữ liệu đầu ra từ lớp tích chập.
Output của các convolution layer sẽ được xử lý qua bởi hàm kích hoạt trước khi
thành dữ liệu đầu vào của lớp tích chập tiếp theo.
2.3.3 Lớp pooling [3]
Lớp này thường sẽ xen giữa các lớp lớp tích chập để giảm kích thước dữ liệu
nhưng vẫn giữ được các đặc tính quan trọng Các lớp này giúp giảm bớt lượng tính
toán trong mô hình.
Thường sẽ có hai loại pooling: max pooling hoặc average pooling Việc chọn loại
pooling sẽ phụ thuộc vào yêu cầu của bài toán Trong đó, max pooling chọn giá trị lớn nhất trong kernel (ma trận con của đữ liệu) đang xét Average pooling cũng tương
tự nhưng lúc này giá trị cần tìm là giá trị trung bình của kernel đó.
Cụ thể, xét pooling kernel có kích thước K*K Đầu vào của lớp pooling có kích thước H*W*D, tách tensor đầu vào ra làm D ma trận kích thước H*W Với mỗi ma
trận, trên vùng kích thước K*K trên ma trận, đưa giá trị lớn nhất hoặc gia tri trung bình cua đữ liệu vào ma trận kết qua Quy tắc về stride va padding áp dung như phép
tính tích chập, ví dụ như Hình 2.17.
15
Trang 26Hình 2.17 Ví dụ về max pooling.
Thông thường, lớp pooling sẽ dùng size=(2,2), stride=2, padding=0 Khi đó width
va height của đầu ra của dit liệu giảm đi một nửa, depth thì được giữ nguyên, minh
Hình 2.18 Phương pháp pooling giảm width va height của dit liệu đầu vào.
2.3.4 Lớp dense (Fully Connection Layer aka Denses Laser) [3]
Như tên gọi của nó, đây là lớp mà các node đều có liên kết đến tất cả các node
trong mô hình hidden tiếp theo Sau khi ảnh được truyền qua nhiều lớp tích chập và lớp pooling thì mô hình đã học được tương đối các đặc điểm của ảnh (ví dụ mắt, mũi, khung mặt, ) thì tensor đầu ra của lớp cuối cùng, với kích thước H*W*D, sẽ được dàn phăng thành một vector kích thước (H*W*D) Sau đó, dùng các fully connected
layer dé kết hợp các đặc điểm của ảnh đề ra được output của model (Hình 2.19).
16
Trang 27box và dự đoán xác suất vật thê thuộc một lớp nào đó Mô hình chia ảnh thành đầu
vào thành một số lượng ô cô định Mỗi 6 này sẽ dự đoán một sỐ lượng bounding box nhất định đi kèm với điểm tin cậy (confidence) của mỗi box tương ứng Tuy nhiên không phải tất cả các box đều được sử dụng, mà chỉ những box có xác suất thuộc về
một lớp đối tượng cao hơn giá trị ngưỡng mới được chọn đề định vị vật thê trong ảnh,
tong quan như hình Hình 2.20 [4] [5]
Các mô hình nhận diện vật thể hai bước (2 stages object detection) bao gồm (1)
đề xuất vùng có chứa vật thé hoặc dùng kĩ thuật sliding window dé lay các vùng khác
nhau trên ảnh, (2) phân loại và nhận diện các vùng được đề xuất bằng các bounding box Vì vậy, những mô hình này yêu cầu rất nhiều tính toán và tốn nhiều thời gian để
dự đoán Trong khi đó, câu trúc của YOLO bao gồm 24 lớp tích chập và 2 lớp kết nối đầy đủ (fully connection) (Hình 2.21) Mô hình nhận diện bằng cách phân tích toàn ảnh đầu vào, trong đó các lớp tích chập chịu trách nhiệm phân tích các đặc trưng trong ảnh, còn các lớp fully connection sẽ định vị và dự đoán đối tượng dựa trên các đặc
trưng đã trích xuất được Do cấu trúc mô hình có dạng feed-forward, nó có thé xuất
17
Trang 28ra vị trí và lớp đối tượng ma bounding box thuộc về một cách trực tiếp nhờ vào mạng
nơ-ron Khối lượng tính toán và thời gian xử lý giảm đáng ké nhờ đó mà tốc độ tính
toán của mô hình khá nhanh Vì vậy nó thường được ứng dụng để nhận diện đối tượng
theo thời gian thực trong video [5]
Bounding boxes + confidence
Hình 2.20.Téng quan quá trình nhận diện bằng mô hình YOLO.
Tuy nhiên, mô hình YOLO tồn tại vài nhược điểm như khả năng nhận diện chưa
chính xác bởi vì mỗi grid cell chỉ cho phép nhận diện một vật thé nên nếu có nhiều vật ở gần hoặc đè lên nhau thì mô hình khó nhận diện được vì YOLO đưa ra kết
quả chỉ sau một lần feed-forward và giới hạn số lượng đối tượng nhận diện nên khả năng dự đoán chính xác thấp hơn so với các giải thuật hai bước như R-CNN, Fast
R-CNN Ngoài ra, mô hình đánh giá sai số của bounding box nhỏ và boundig box
lớn là như nhau dẫn đến khả năng định vị những vật thể nhỏ không chính xác, vì
18
Trang 29những chênh lệch được xem là không đáng ké giữa dự đoán và thực tế của các
bounding box lớn nhưng có thể gây ảnh hưởng đến IOU đối với những box nhỏ [4]
1 ko.) Lecco = TY J Mee
3 ike i ror ta Ha ita “
Cony, Layer Coy Layer Com Layer Conv Layer Cony Laver Coma Layer Conn Layer Conn Layer
TửNb4-3‹2 3x39? 1xIxIz8 D2341 4 TUỔI vị 23N1021 Maxpool Layer MaxpoalLayer 3156 r2 3431024 3411024
32-2 Paes IxIx5l2 IxIxB12 3⁄1034
JARIZ — DIO xraytn2d-c2
Mexponl LayerMaxpedl Layer
2S 2uES-2
Hình 2.21 Cấu trúc của mô hình YOLO.
2.4.1 Bounding box [4]
Bounding box là hình chữ nhật bao quanh đối tượng mà mô hình nhận diện Các
thông số của bounding box bao gồm toa độ tâm của box (x, y), chiều rộng và chiều cao của box (w, h) Ngoài ra còn có các thông số liên quan tới đối tượng nhận diện như xác suất đối tượng thuộc về một lớp, độ tin cậy của dự đoàn Mô hình sẽ học và
dự đoán các thông số này từ đó suy ra bounding box có chứa vat thé (Hình 2.22) [4]
y=(p b,.6,.8,.8, 00)
Hình 2.22 Các thông số của bounding box.
19
Trang 30Ground truth là bounding box mô tả vị trí thực tế của vat thé trong ảnh cũng là kết
quả mong đợi mô hình sẽ dự đoán được Thông thường, ground truth sẽ được xác
định trực tiếp và được đưa vào dữ liệu huấn luyện dé làm cơ sở cho quá trình học của
mô hình.
2.4.2 Hàm tính IoU [6]
IoU là chỉ số dùng dé đánh giá mô hình/giải thuật máy học bằng cách ước tính độ
trùng khớp giữa bounding box với ground truth Chỉ số này được tính theo công thức
Năm 2016, Joseph Redmon và Ali Farhadi đã có một bai báo công bố về phiên
bản cải tiến của YOLO, gọi là YOLOv2 hay YOLO9000 Phiên bản mới này vừa
khắc phục nhược điểm kẻ trên của bản trước, vừa cải tiến thêm sự da dạng của đối
tượng nhận diện Thay vì xây dựng một mô hình phức tạp hơn, hai tác giả đã đơn
giản hóa mô hình YOLO mà vẫn đảm bảo tốc độ cũng như độ chính xác cho mô hình.
Một sô ý tưởng cải tiên các tác giả đê xuât bao gôm:
20
Trang 312.5.1 Batch Normalization
Batch normalization (BN) là phương pháp giúp cho huấn luyện DNN nhanh và
ồn định hơn BN tận dụng số liệu thống kê từ trung bình và phương sai của các batch dé chuẩn hóa kết qua đầu ra đã được xử lý bởi hàm kích hoạt từ lớp trước BN cho phép mạng nơ-ron học sâu hơn mà không gặp phải tình huống giá trị gradient
mini-tăng hoặc giảm đột ngột Hơn thế nữa, các nghiên cứu đã chứng minh BN cho phép
mạng nơ-ron sử dung learning rate cao hơn va ít phụ thuộc vào giá tri khởi tao hơn
trong quá trình huấn luyện [7]
Trong mô hình YOLOv2, BN được thêm vào trong tất cả các lớp tích chập, giúp
mô hình tăng thêm 2% độ chính xác BN cũng giúp mô hình tránh overfitting và loại
bo dropout.
2.5.2 Anchor box
Anchor box là những bounding box được cho trước nhằm hỗ trợ dự đoán vật thé tốt hơn Anchor box là ý tưởng của Faster R-CNN mà ở đó các bounding box được xác định dựa trên sự chênh lệch so với anchor box Ý tưởng này xuất phát từ việc có những vật thê có dạng bounding box tương đồng với nhau như box của xe đạp có dạng nằm ngang, box của người đi bộ có dạng đứng Dự đoán sự chênh lệch so với anchor box thay vì xác định bounding box trực tiếp giúp mô hình học dé dang hơn Khi huấn luyện, các dạng anchor box có thể được xác định thường xuất hiện sử dụng giải thuật K-means dé phân cụm các bounding box trong dataset Như vậy, thay vì dự đoán trực tiếp coordinates, mô hình chỉ cần dự đoán offset hay độ lệch giữa ground-
truth bounding box với các anchor box (Hình 2.24) [8]
Khác với mô hình YOLO dự đoán vi trí của các bounding boxes trực tiếp từ lớp
dense dựa trên các đặc trưng trích xuất từ các lớp tích chập trước đó Ở YOLOv2, lớp dense đã bị loại bỏ, thay vào đó sử dung anchor box dé dự đoán bounding box Điều
nay làm giảm độ chính xác một ít nhưng lai recall lại tăng đáng ké.
21
Trang 32Hình 2.24 Dự đoán bounding box dựa trên độ lệch so với anchor box [8]
2.5.3 Fine-grained Feature
Tác gia sử dung thêm các lớp passthrough dé mang những đặc trưng trích xuất từ lớp tích chập trước đó đưa vào feature map 13x13 Điều này giúp mô hình có thé nhận diện được cả vật thể nhỏ mà YOLO trước đó không thể nhận diện (Hình 2.25).
Lớp passthrough này đơn giản sẽ biến đổi feature map 26x26x512 thành map 13x13x2048 bằng phương pháp reorganization và nối với map 13x13x512, khi đó sẽ
thu được feature map 13x13x3072 được dùng dé đưa ra kết quả dự đoán của mô hình.
[8]
208
22
Trang 332.5.4 Mô hình YOLO v2-Tiny
Mô hình YOLOv2-Tiny là phiên bản cô đọng của YOLOv2 Goi là phiên bản cô
đọng bởi vì mô hình này chỉ sử dụng 9 lớp tích chập thay vì 22 lớp như bản gốc, thé hiện ở Hình 2.26 Nhờ đó, tốc độ xử lý của mô hình tăng gap 442% so với YOLOvI,
cụ thể YOLOv2-Tiny có thê đạt 244 FPS trên một GPU Mặt khác, độ chính xác của
nó cũng giảm còn 23.6%, thâp hơn so với các biên thê khác, điêu này được thê hiện
Hình 2.26 Cau trúc mô hình YOLOv2-Tiny [1].
Mặc dù độ chính xác khá thấp, nhưng nó vẫn có thé được ứng dụng trong một số
trường hợp Hơn nữa kích thước mô hình nhỏ cũng như tốc độ xử lý nhanh là những
ưu thế dé hiện thực mô hình trên những môi trường giới hạn tài nguyên như máy tinh nhúng, hệ thống SoC-FPGA
Bảng 2.1 So sánh hiệu suất của các phiên bản YOLO [2].
Detector | “"TMPT°TM | props | EPS | mAP value | 4%
layers data
YOLOv1 26 Not given 45 63.5 VOC data
YOLOv1-Tiny 9 Not given 155 52.8 VOC data
YOLOv2 32 62.95 40 48.2 COCO data
YOLOv2-Tiny 16 5.42 244 23.6 COCO data
YOLOv3 106 140.7 20 57.8 COCO data
YOLOv3-Tiny 24 5.57 220 33.2 COCO data
23
Trang 342.5.5 Mô hình Custom YOLO
Đây là một biến thê được rút gọn của mô hình YOLOv2-Tiny phục vụ cho việc
xây dựng hệ thống trên DEI-SoC Mô hình đã lượt bớt một lớp tích chập của
'YOLOv2-Tiny và có cấu trúc như Hình 2.27
Convolution 16 - Filter Convolution 512 - Filter
Activation = Leaky Activation = Leaky
Convolution 256 - Filter
Convolution 32 - Filter
Activation = Leaky Activation = Leaky
Convolution 512 - Filter
Activation = Leaky
Convolution 425 - Filter Activation = Linear
Convolution 512 - Filter Activation = Leaky
Hình 2.27 Cấu trúc mô hình Custom YOLO [3]
Từ Bang 2.2 cho thấy độ chính xác của mô hình giảm và số lượng phép toán của
mô hình giảm hơn 2.5 lần số phép toán của mô hình gốc Trong đó mAP thu được từ
kết quả huấn luyện với 80 loại đối tượng của bộ dữ liệu COCO
Bang 2.2 mAP và FLOPS của Tiny Yolov2 và Custom Yolo [3]
Tiny YOLO | Custom
Yolo mAP 23.7 % 13.54 %
FLOPS 5.41 Bn 2.148 Bn
24
Trang 352.6 Mô hình YOLOv3
Hai năm sau, Joseph và Ali đã ra mắt phiên bản cải tiến hơn so với các phiên bản
cũ về mặt tốc độ xử lý, độ chính xác khi nhận diện các vật thể nhỏ, phân loại đối
Bảng 2.3 Bảng so sánh tốc độ của các kiến trúc mạng nơ-ron [9]
18.7
BFLOP/s
1246 1039
1090
1457
FPS 171
32 37
78
Mô hình sử dụng mang no-ron 53 lớp tích chập (Darknet-53 như Hình 2.28) thay
cho mang 19 lớp (Darknet-19) như YOLOv2, dựa theo Bảng 2.3, có thé thay BFLOPscủa YOLOv3 là cao nhất, cho thay Darknet-53 tận dụng GPU tốt hơn, nhờ vậy tính
toán hiệu quả và xử lý nhanh hơn so với những mô hình sử dụng quá nhiều lớp như
Convolutional 32 1x1
Convolutional 64 3x3
Residual 128 x 128
Convolutional 128 3x3/2 64x64 Convolutional 64 1x1
Connected 1000
Softmax
Hình 2.28 Cấu trac Darknet-53 ma mô hình YOLOv3 dùng [9]
25
Trang 36Bảng 2.4 Bảng so sánh độ chính xác của nhiều mô hình khác nhau [9]
backbone AP APso APz5 | APs APar AP¿, Two-stage methods
Faster R-CNN+++ [5] ResNet-101-C4 34.9 55.7 37.4 15.6 38.7 50.9
Faster R-CNN w FPN [8] ResNet-101-FPN 362 59.1 390 | 182 39.0 482
Faster R-CNN by G-RMI [6] | Incepton-ResNet-v2[2!] | 347 555 367 | 135 381 520 Faster R-CNN w TDM [20] Inception-ResNet-v2-TDM | 36.8 57.7 39.2 16.2 39.8 52.1 One-stage methods
YOLOv2 [I5] DarkNet-19 [15] 216 440 192 | 50 224 35.5
Ngoài ra, theo Bang 2.4, mô hình YOLOv3 có độ chính xác khá cao, chỉ xếp sau
những mô hình RetinaNet Khả năng nhận diện các vật thể nhỏ tuy không quá caonhưng cũng tốt hơn 13% so với phiên bản cũ
2.7 Mô hình Tinier-YOLO [9]
Như đã đề cập ở mục trước, đê có thê biểu diễn mô hình trong môi trường tài
nguyên bị giới hạn như board FPGA, máy tính nhúng như Jetson Nano, Raspberry
Pi , mô hình nhận diện cần phải có kích thước nhỏ gọn nhưng vẫn đảm bảo hiệu
quả, Tiny-YOLOv3 là một ví dụ Mô hình này được rút gọn từ mô hình YOLOv3.
Tuy nhiên kết quả dự đoán của mô hình có độ chính xác chưa cao cũng như hiệu suất
theo thời gian thực chưa đạt yêu cầu trên thiết bị có khả năng tính toán thấp Do đó,
mô hình Tinier YOLO ra đời nhằm giảm kích thước mô hình và tăng độ chính xáccủa kết quả dự đoán Cũng như các mô hình YOLO khác, Tinier YOLO cũng sử dụnglớp tích, lớp max pool để xây dựng mô hình Ngoài ra, Tinier YOLO module nhiều
lớp tích chập được gọi là fire module dé tăng độ chính xác của mô hình
2.7.1 Fire module
Fire module là một nhóm ba lớp tích chập được chia làm hai phần, gồm phần vắt
(squeeze part) và phan mở rộng (expand part) Phần vắt sử dung lớp tích chập với
filter 1x1, đây là một phương pháp hữu hiệu giảm số lượng tham số của mạng được
dé xuất bởi NIN Vì sử dung filter 1x1 tức là filter chỉ có một phần tử nên rất thuận
tiện cho việc huấn luyện ma không làm giảm độ chính xác quá nhiều Phần mở rộng
26
Trang 37sử dụng các lớp tích chập filter 1x1 và filter 3x3 , mở rộng kích thước dữ liệu đầu ra.
Kết quả của hai phần trên sẽ được nối với nhau dùng làm kết quả của module
Sử dụng một số lượng fire module nhất định trong mạng vừa giúp làm giảm sốlượng tham số của mô hình, vừa tăng chiều sâu cho mô hình - điều được chứng minh
là giúp làm tăng độ chính xác của mô hình [10]
2.7.2 Cấu trúc mô hìnhCấu trúc mô hình được chia làm ba phần chính:
e Phan đầu kế thừa năm cặp lớp (tích chập - max pool) đầu tiên của Tiny
YOLOv3.
© Phần giữa gồm sáu fire module đảm nhận việc nén số lượng tham số của mang
(parameters compression) và kết nói dữ liệu giữa các fire module với nhau
(dense connection) Dữ liệu đầu ra sau sáu module sẽ được dùng để thực hiệnđưa ra kết quả dự đoán lần thứ nhất
©_ Phần sau gồm hai fire module sẽ kết hợp hai dữ liệu đầu ra của phần đầu và
phan giữa dé đưa ra kết quả dự đoán lần thứ hai
p “The Later Part
The Promt Part The Middle Part
1a Ra
Hình 2.29 Cầu trúc mô hình Tinier YOLO [9]
27
Trang 382.8 Darknet [11]
Darknet được phát triển bởi Joseph Chet Redmon Nó là một framework mã nguồn
mở hỗ trợ thuật toán CPU và GPU, cai đặt nhanh và dé dang Do đó, nó thường đượcdùng dé hiện thực, huấn luyện các mô hình YOLO Ngoài ra, darknet cũng được pháttriển một số phiên bản hỗ trợ ngôn OpenCL, tạo điều kiện để hiện thực hệ thống nhận
điện trên FPGA.
2.9 OpenBLAS [12]
Basic Linear Algebra Subprograms là một interface cho các biểu thức đại số tuyến
tính cơ bản thường được sử dụng BLAS hỗ trợ cho các phép tính ma trận và vectorphức tạp khi hiện thực các ứng dụng Các nhà phát triển ứng dụng hay thư viện chỉtập trung vào các thuật toán có sử dụng các biểu thức được hỗ trợ bởi BLAS, còn việc
tối ưu kiến trúc của tầng ứng dụng sẽ dành cho chuyên gia
OpenBLAS là thư viện BLAS được tối ưu hóa dựa trên phiên bản GotoBLAS2
1.13 BSD.
2.10 Số dấu chấm động (Floating point)
2.10.1 Số chấm động với chuẩn IEEE 754
Số dấu cham động là dạng dir liệu sé thường được sử dụng trong lập trình dé biểu diễn số thực với độ chính xác khá cao Số dấu chấm động với định dạng theo chuẩn IEEE
754 thường được dùng hiện nay sẽ bao gồm ba thành phần là phần dấu (sign), số định trị (mantissa hay significand fraction) và số mũ (exponent) Số dấu chấm động còn được chia làm hai dạng chính là single precision có 32 bit biểu diễn.
Trong đó, biểu diễn nhị phân của dạng bao gồm ba trường (Hình 2.30) Sign (1bit) biếu diễn dấu của giá tri, Exponent (8 bit) biểu diễn phần mũ của số dau chấmđộng, Mantissa (hay significand/coefficient) (23 bit) là phần định trị
Giá trị số thực của một biểu diễn nhị phân số dấu châm động được xác định theocông thức (2.1) Trong đó, bias của dang single precision là 127 theo chuan IEEE
~1Š#" x (1.0 + 0.Mantissa) x 2E*ponentbias (2.1)
28
Trang 39“ 32 Bits >
Sign Exponent Mantissa
<—1Bit—> « 8 Bits > 23 Bits >
Single PrecisionIEEE 754 Floating-Point Standard
Hình 2.30 Số dau cham động dang single precision theo chuẩn IEEE 754
Single precision biểu diễn các giá trị trong phạm vi từ 3.40282347E+38 đến 1.17549435E-38 hoặc từ 1.17549435E-38 đến 3.40282347E+38.
-2.10.2 Số chấm động half-precision với chuẩn IEEE 754
Số dấu chấm động half-precision có kích thước 16 bit có cấu trúc tương tự với
dang dấu chấm động single precision Half-precision cũng có ba trường với Sign(1
bit), Exponent (5 bit), Mantissa (10 bit).
Half-precision biểu diễn các giá trị trong phạm vi +65,504 với giá trị dương nhỏnhất là 1 + 1/1024
Hình 2.31 Số dấu chấm động half-precision theo chuẩn IEEE 754
Half-precision thường được sử dụng trong các môi trường đồ họa để lưu trữ
điểm ảnh như Direct3D, MATLAB, OpenEXR và trong các phần cứng và phầnmềm máy học hay mạng thần kinh nhân tạo thường có khối lượng công việc tính
toán lớn mà không yêu cầu độ chính xác khá cao Việc sử dụng half-precision trongtính toán giúp hệ thống thực thi nhanh hơn so với đạng single hay double precision
29
Trang 402.11 GEMM (General Matrix Multiplications) [13]
GEMM được định nghĩa là biểu thức C = @AB + BC voi A và B ma trận, a
và B là biến vô hướng va C là ma trận tổn tại trước được ghi dé bởi kết quả đầu ra
(Hình 2.32) Biểu thức tích của hai ma trận A*B là một GEMM với ơ bằng 1 va Bbằng 0 Ví dụ: trong dữ liệu chuyển của lớp fully connection, ma tran trọng số sẽ là
đối số A, hàm kích hoạt tiếp theo sẽ là đối số B và ơ và B thường tương ứng là 1 và
0.
2.12 OpenCL (Open Computing Language) [14] [4]
OpenCL là một framework phục vụ cho việc lập trình song song ở cap thấp, và cóHLS (high-level synthesis) tool cho phép việc synthesize design bằng ngôn ngữC/C++ Một số các thiết kế phức tạp được thư viện hóa dé người thiết kế có thé tập
trung vào việc thiết kế các kernel logic
Về cơ bản, một nền tảng OpenCL bao gồm hai phần là máy chủ (host) và
accelerator (có chứa kernel code) Theo một flow thông thường, máy chủ sẽ load data
vào global memory của accelerator Sau đó, sẽ khởi động các kernel logic để xử lý
data này Va cuối cùng, máy chủ sẽ nhận lại được kết quả
30