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: Hệ thống nhận diện phương tiện giao thông bằng FPGA

81 1 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 đề Hệ thống nhận diện phương tiện giao thông trên FPGA
Tác giả Nguyễn Ngọc Thùy Dương, Quách Ngọc Trâm
Người hướng dẫn THS. Phan Đình Duy
Trường học Trường Đại học Kỹ thuật 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 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 81
Dung lượng 32,14 MB

Nội dung

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 2

LỜ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 3

MỤ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 4

Mô 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 5

3.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 6

5.2 Hướng phát

TÀI LIEU TIENG ANH

TAI LIEU TIENG VIET

s0

Trang 7

2.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 8

2.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 9

DANH 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 10

DANH 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 11

TÓ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 12

Chươ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 13

tiệ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 14

Chươ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 17

tí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 18

Hì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 19

Riê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 20

a!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 22

zở) = (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 23

số 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 24

Xé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 26

Hì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 27

box 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 28

ra 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 29

nhữ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 30

Ground 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 31

2.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 32

Hì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 33

2.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 34

2.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 35

2.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 36

Bả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 37

sử 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 38

2.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 40

2.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

Ngày đăng: 02/10/2024, 04:50

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN