Trong đề tài này, nhóm sẽ cụ thé tập trung vào việc xây dựng hệ thống Smartcamera trên FPGA, sử dụng khối IP Deep Learning Processor Unit DPU của Xilinx,điểm mạnh của khối IP này năm ở s
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
THAI QUOC THONG - 20521983
KHOA LUAN TOT NGHIEP
NGHIÊN CUU TÍCH HOP THUAT TOÁN NHAN DANG BIEN SO XE TRONG NHÀ XE TREN CAMERA THONG MINH SỬ
DUNG CONG NGHE SOC.
RESEARCH ON ITEGRATING LICENSE PLATE RECOGNITION IN GARAGE ALGORITHMS ON SMART CAMERA USING
SOC TECHNOLOGY.
CU NHÂN NGÀNH KỸ THUAT MAY TÍNH
GIẢNG VIÊN HƯỚNG DẪN
TIEN SĨ NGUYEN MINH SƠN
TP HO CHÍ MINH, 2024
Trang 2LỜI CẢM ƠN
Trước tiên, em xin được gửi những lời cảm ơn chân thành đến các Thầy Côđang giảng dạy ở trường Dai học Công Nghệ Thông Tin — Dai Học Quốc Gia TP.HồChí Minh, trên hết là quý thầy cô đang làm việc tại Khoa Kỹ Thuật Máy Tính Nhờ
có các thầy và các cô chỉ dạy, nhiệt tình giải thích và hướng dẫn, em đã có thể tiếpnhận và áp dụng được nhiều kiến thức quý giá vào quá trình nghiên cứu và phát triểnkhóa luận tốt nghiệp cũng như chuyên ngành mà em đang theo đuổi
Hơn nữa, em cũng không quên ơn của Tiến sĩ Nguyễn Minh Sơn, thầy đã
hướng dẫn em rất tận tình xuyên suốt quá trình làm đề tài, hỗ trợ và định hướng cho
em, đưa ra cho em nhiều ý tưởng và kiến thức giúp em suôn sẻ hoàn thành khóa luậncủa mình Em cũng xin cảm ơn đến bạn bè và những anh chị đi trước, các thành viên
trong khoa,moi người đã giúp đỡ, quan tâm em trong khoảng thời gian làm nghiên
cứu này.
Con cũng không thể không cảm ơn gia đình đã đứng sau và động viên, tạo điều
kiện và ủng hộ con rất nhiều về mặt tỉnh thần và thê chất trong khoảng thời gian con
làm đề tài khóa luận này
Là lần đầu tiên thực hiện đề tài nghiên cứu tầm cỡ quy mô, với kinh nghiệm
chưa nhiều và thời gian hạn ché, trong bài luận văn này, em rất mong được nhận
những sự đóng góp ý kiến của quý thầy cô về đề tài này, và cũng mong bản thân được
bồ sung nhiều kiến thức hơn tuy còn nhiều thiếu sót cần được cải thiện
Em xin chân thành cảm on!
Thành phô Hồ Chi Minh, ngày 05 tháng 07 năm 2024
Sinh viên thực hiện
Thái Quốc Thông
Trang 3MỤC LỤC
Chương 1 GIỚI THIỆU ĐỀ TÀI -c2irrteeSvEErtrrreevertrrrrerrrrrrrre 14
1.1 Một số nghiên cứu liên quan -e -ccsccsescveeertesrteerresrtertreerrrree 15
1.1.1 Nghiên cứu ngoài hƯỚC -«ccccsv+esekkEkttktstrirkitriirrrrrrerkerrerree 15
1.1.2 Nghiên cứu trong nƯỚC -. -ccccecrrsrrirtrirrrirrrirrirrrrrrrrriree 16
1.2 Mục tiêu đề tài -ccc LH HH1 11.1111110111 11.11 17
1.3 GiGi cố ẽẽ 18
1.4 Kết quả mong muốn -ccc-5cc++erttEkktttttkkirttriiirriiirriiirrie 20 1.5 BO cục luận văn -ccscsccsExsEExtEExtEEkrrktrrkttkkrrkertrrtkrrrkrrrkrrrkrrrerrkee 20
Chương2 CƠ SỞ LÝTTHUYẾT 222.22224222422240.217.20 0.e 22
2.1 Field Programmable Gate Array (FPGA) -ce-c«ccccccererxeereeree 22
2.1.1 Định nghia we ccssessessesssesecseessessesssssesseesseeseeseesseeseeseessesseesceaseseeseeseessesseenss 22
2.1.2 Kiến trúc tổng quát -.-c cececcveeeertsterreserrrrrrrrerrrrrree 23 2.1.3 Ưu nhược điểm của EPGA c-e-cccecccsccxesersetrrserrrsrerkerrrxee 24
2.2 System on Chip (SOC) cccreeriirrirtritritririiririiiiiiiirrrrreriee 25
2.2.1 Định nghĩa SOC esesssesssesseesseeeseeeseeensesseesseesseeseeesseeaneeseeeaeesseesseesseeseensees 25
2.2.2 Kién trúc tổng quát của SOC -cccccckiererriirrrriiiirrrirree 26 2.2.3 Ưu và nhược điểm của SOC c+cs+©csecrsverserxerrxeersrrrsrrrsrre 28
2.3 Deep learning Processor Unit (DPPU) «c-«ccsxsxexeereerserervee 29
2.3.1 Định Nghia oes eesseeseesseesseesseeseecseeeseeseeeneeeneesseesaeeaeeeseeeaeeeseeeaeesseesseeseesseenees 29
2.3.2 Kiến trúc tổng quát của DPUCZDX8G c cccsccsse+ 30 2.3.3 Cấu hình khối IP DPUZDX8G -ccccccrreierrrrrrriirrrrrre 34
Trang 42.4 Smart CAMEL na DỒ 43
2.5 Cac thư viện va công cụ phổ biến trong thiết kế hệ thống smart camera
trên EPGA «c1 HH HH HH HH HH HT HH H111 re 45
2.5.1 OpenCV e1 re 45 2.5.2 Vitis AÍL HH HH HH gà 46
Chương 3 Thiết kế hệ thống phần cứng và hiện thực môi trường Smart
Camera Run-Time trên boarrd -«-s<c+xs£kxeEretkktrkktrkrttkrtkkrrkirrrirriirrrrreriee 50
3.1 _ Mô hình phần cứng và luồng xây dựng tổng quát 50
3.2 Board Ultra96 V2 chì ưng 51
3.2.1 Một số đặc trưng cơ bản - eccccceccccveeexreeeerreserrereerrsee 52
3.2.2 Mục tiêu Ứng dỤụng ccccrrerrrrrrrrrrrrrrrrrrtrrrrrrrrrrrrrrerrre 53
3.3 Avnet board SUPPOrt paCKag@S -« se ctrtetrketrirrtirrrirrrirrrirrrrrreriee 53
3.4 Cấu hình và tích hợp khối IP DPUCZDX8G vào thiết kế 56 3.5 _ Hệ điều hành PetalinuxX -ccccscccsvertrreerrstrtertrtrkrtrrrrsrrrerrrerrkee 61 3.6 Cau hình và xây dựng core từ Vitis IDE -xeeeccexeerrrrreeeee 64
Chương4 Thiết kế phần mềm quảng lý luồng, xây dựng mô hình AI và kiểm
soát môi trường trên môi trường Run-Time của Smart Camera 68
4.1 Mô hình phần mềm và luồng xây dựng tổng quát - 69
4.2 M6 hình AI nhận diện biển số xe và mô hình nhận dang ký tự trên biển
số xe 69
4.2.1 Trainning mô hình c-c-cexxsereerrtrterkeerrtrtitrrrrrrrrrrrrerrkee 71 4.2.2 _ Biên dịch mô hình s-scccccs+xexkererekrttstteterrrrrsrrrrkrrkee 75
4.3 Xây dựng ứng dụng quản lý luồng - -c cssccveereeerreeerreerrsee 77
Chương 5 “Thực nghiệm và đánh giá sc-cccckektekeertikekrtrrrerrirrrrrrree 84
Trang 55.1 Kết quả mô hình sau khi train trên máy cce -sse sss+ 84
5.2 Đánh giá mô hình đã train trên máy tinh -« cce-rserrerrree 89
5.3 Kết quả biên dịch mô hình: c¿-secc+veeeevveervrveerrrvesrrrerrrrsee 93 5.4 _ Kết quả test thực tế của hệ thống cc cccxvcceerkteerrrrrierrrrrree 96
5.4.1 Kết quả trên hình mẫu -cee©©2+eevecvvxeerccrxeerrcrrreerrrrree 96
5.4.2 Kết quả chụp được từ camera trên board -‹ s: 99
5.5 Đóng gói hệ thống -cscccrxerrrktrrtrtirttrtirtrriirtrrirrrrrrrrrrrrrrie 101 5.6 _ Hướng phát triển của đề tài -c cccccccrxeerrrtirtrrrrrrrrrrrrrrrrerrer 103
Trang 6DANH MỤC HÌNH
Hình 3.2.1 Board ltra96- V2 s-+c<+ckr HH HH1 1 H1 1 tr 52
Hình 3.2.2 Minh họa các khối của Ultra96-V 2 ccccc++222EEEEEEEvvvveeettttrtrtrrrrrseee 53
Hình 3.3.1 Board Support Packages Của AVN€V sec 54 Hình 3.3.2 Board Definition Files của Ultra96- V2 ccccssxsrerrerrerrerrrrrrrer 54
Hình 3.3.3 Thiết kế của board Ultra96-V2 tạo ra bằng thư viện HDL 55Hình 3.4.1 Minh họa khối IP DPUCZDX8G trên Vivado Design Suite 56
Hình 3.4.2 Cấu hình DUCZDX8G trên Vivado Design Suite - 57
Hình 3.4.3 Khoi IP DPUCZDX8G trên thiết kế eeeereereerrrrrree 58Hình 3.4.4 Không gian cấp phát địa chỉ của thiết kế ccc -+.ccccveee 58Hình 3.4.5 Biểu đồ tài nguyên phan cứng đã được sử dụng trên SoC ZU3EG 59Hình 3.4.6 Bảng thống kê số lượng tài nguyên sử dụng trên SoC ZU3EG 59
Hình 3.6.2 Architecture file s:ssc+‡ctEks+kertrtkrtrkEkrtsrtrrrrrrrrrrrkrirrrrrrrrrrrrrrke 66 Hình 3.6.3 xpfm file -cc+cctccctrtrHHHHHHHHHHH HH HH H gi nưệt 66 Hình 3.6.4 DPUCZDX8G fẨirmwWafe -5-556-5c++cxcEksErittrittkirkririrrirrie 66
Hình 3.6.5 thông tin khối DPUCZDXSG trên kít -: +++ccecccceveccrc 67Hình 3.6.6 Dia chỉ cấp phát cho DPU trên kit -c-eccceevecerriierreeecces 68
Hình 3.6.1 Luồng xây dựng đề tài tổng quát -ccccec++reccvverrrrreceverr 68
Hình 4.1.1 Mô hình ứng dụng phân luồng quản lý hệ thống trên Board 69Hình 4.2.1 Dataset biển sỐ xe -ccc++++eeev2vEEEEEEEEErtrirrrrrrvrtrrrrrrrrrrrrrrrrrrre 71Hình 4.2.2 Vẽ bounding box cho các ký tự trên biển số xe -:: cccs: 72
Hình 4.2.3 mô hình xác định vị trí của biển số xe 'Yolov3-fIny -«. .« 73
Hình 4.2.4 mô hình nhận diện các ký tự trên biển số xe Yolov4 - -.- 74Hình 4.2.6 chuyên đổi mô hình darknet sang caffe 76Hình 4.3.1 Cau trúc tổng quát của các luồng xây dựng ứng dụng trên Vitis AI 77Hình 4.3.2 cấu trúc của môi trường Vitis AI RUN Time -.cccccccccccc 77
Hình 4.3.3 Chi tiết luồng xây dựng ứng dụng sử dụng cho đề tài 78
Hình 4.3.4 Cau trúc xử lý trên ứng dụng tổng quát -cc -cccvc++ 78
Trang 7Hình 4.3.5 Kiến trúc thư viện Vitis AI Library APÏs -:: -:iiiiierrrereeee 79Hình 4.3.6 Mô hình thiết kế của đề tài nhóm xây dựng lại c - 80
Hình 4.3.7 Hai loại biển số xe vuôn có cùng số lượng ký tự trên biển 81
Hình 4.3.8 ví dụ về giải thuật sắp xếp ký tự cccccvccrrrreeeverrrrrrrerree 82Hình 4.3.9 Phương pháp sắp xếp ký tự [bước 1,2,3] :-::: cc:::reeerrreree 83Hình 4.3.10 Phương pháp sắp xếp ký tự [bước 4,5,5 Ï ] -ccccccccccccccccccce 83Hình 4.3.11 Phương pháp sắp xếp ký tự [bước 6] -+ c-cccccvveccrc 83
Hình 4.3.12 Flowchart phương pháp sắp xếp ký tự -c-ee 84
Hình 5.1.2 Kết quả nhận diện biển số xe máyy -+-ccccccccrrt+rrrecccce+ 86Hình 5.1.3 Kết quả nhận diện biển số xe hơi [ biển vuôn ] - 86Hình 5.1.4 Kết quả nhận diện trên biển số xe hơi [ biển dài ] - 87
Hình 5.1.5 Biểu đồ avg loss của mô hình Yolov4 - -cccceerrrrcccveee 88
Hình 5.1.6 Kết quả nhận dang ký tự trên biển số xe MAY -::::::icicicce: 89Hình 5.1.7 Kết quả nhận dang ký tự trên biển số xe hơi [ biển dài ] 89Hình 5.2.1 kết quả training của Yolov3-tiny cccccccccccccccrrrz+zrrrrrrrrrrrree 90
Hình 5.2.2 Kết qua training của olOv4 :-ccccccvvvccccrrrrrrereevvvvrrrrrrrrrrrrrree 90
Hình 5.3.1 thống kê độ chính xác của mô hình số floating point 93Hình 5.3.2 Thống kê độ chính xác của mô hình số INT8 - 94Hình 5.3.3 Thống kê độ chính xác của mô hình nhận dạng ký tự trên số INTS 95Hình 5.4.5 Kết quả nhận diện trên biển số xe máy [ cũ ] -:-:-cccs: 98
Hình 5.4.6 Kết quả nhận diện trên camera - Phạm Vi 0.5 m - 99 Hình 5.4.7 Kết quả nhận diện trên camera - Phạm Vi 1.4 m 100
Hình 5.4.8 Kết quả nhận diện trên camera - Phạm Vi ~ 2 m - 101 Hình 5.5.1 Đóng gói hệ thống [ phía sau J - ccccccseesccveeecvvsserrvesersvee 102
Hình 5.5.2 Đóng gói hệ thống [ phía trước ] . ccxeerrerrxecrrerreee 102
Trang 8DANH MỤC BANG
Bang 1.1.1 Danh mục từ ViẾt tắt -+++ceecevvvvvEEEEtrtrirrrerrvrrrtrrrrrrrrirrrrrrerrre 11Bảng 2.3.1 phan tử parallel cho từng kiến trúc khác nhau :-:::-: 36Bảng 2.3.2 Tài nguyên tiêu thụ trên từng kiến trúc DPUCZDXS8G 37Bảng 2.3.3 Số lượng khối BRAM36K cho từng kiến trúc trên mỗi core
DPUCZDXX8G 5c 5< C1 niên 38
Bang 2.3.4 Extra LUT của DPUCZDX8G khi sử dụng Channel Augmentation 39
Bảng 4.2.1 thông tin mô hình sử dụng cho đề tài - cccccccccccccccvcvvvccrrrrre 70
Bảng 5.2.1 So sánh tốc độ nhận diện trên từng mô hình - - 91
Bang 5.2.2 so sánh kết quả nhận diện biên số xe bang nhiều phương pháp khác nhautrên dataset biển số xe Việt Nam -.2+++2112222222221113%%+122E2221211111xxxsrttrtrrrrrrkrreree 91Bảng 5.2.3 So sánh kết quả hiệu năng với các đề tài của sinh viên trước đó 92
Bảng 5.2.4 Bảng so sánh hiệu suất với các bài báo được công bố [12] 92
Trang 9DANH MỤC TU VIET TAT
Bảng 1.1.1 Danh mục từ viết tắt
Từ Việt Tắt Từ Đây Đủ
MAC MAC bao gồm một bộ adder, multiplier và bộ accumulator
APU Application Processing Unit
PE Processing Engine
DPU Deep Learning Processing Unit
ICP Input Channel Parallelism
OCP Output Channel Parallelism
PP Pixel Parallelism
FC Fully Connected
CNN Mang Convolutional Neural
ACAP Adaptive Compute Acceleration Platform
XRT Xilinx Run Time
XIR Xilinx Intermediate Representation
SDK Software Development Kit
BDF Board Definition Files
OS Operating System
FPGA Field-Programmable Gate Array
GUI Graphical User Interface
API Application Programming Interface
SoC System on Chip
Trang 10AI Al Artificial Intelligence
GPU GPU Graphics Processing Unit
CPU Central Processing Unit
ARM Advanced RISC Machine
FPS Frames Per Second
IC Integrated Circuit
IOU Intersection Over Union
mAP Mean Average Precision
Trang 11TÓM TẮT KHÓA LUẬN
Trong khoảng thời gian gần đây, vi mạch được rất nhiều tập đoàn định hướng
và phát triển, con người đã có thể tích hợp được các hệ thống phức tạp trên một conchip Trong đó, phải ké đến Smart camera, một camera bao gồm hệ thống thông minh,
nó có khả năng nhận diện, quản lý, xử lý, các hình ảnh chụp được từ máy ảnh Việc
xây dựng một hệ thống smart camera có thé dựa trên nhiều nền tảng như: Embedded
system, SoC, FPGA, Mỗi cái đều có nhược và ưu điểm đặc trưng, và cũng chính
vì thế, Smart camera đã được nhiều sinh viên hay các nhóm nghiên cứu của các trườngđại học và của các công ty trong ngoài nước tìm hiéu, nghiên cứu, quan tâm Tuy vậy,bài toán thiết kế hệ thống, cụ thê là smart camera mà các giới nghiên cứu cần phải
quan tâm đó là tốc độ, độ chính xác, năng lượng tiêu tốn và giá thành sản phẩm.
Trong đề tài này, nhóm sẽ cụ thé tập trung vào việc xây dựng hệ thống Smartcamera trên FPGA, sử dụng khối IP Deep Learning Processor Unit (DPU) của Xilinx,điểm mạnh của khối IP này năm ở sự tối ưu về mặt phần cứng, tính phô biến, Xilinx
cung cấp công cụ, API và thư viện Vitis AI dé hỗ trợ lập trình DPU, được xây dựngbằng cácngôn ngữ phô biến như Python và C++, ngoài ra còn có các công cụ hỗ trợ
compile mô hình AI sử dụng các framework phô biến như Caffe, Pytorch, sangformat của DPU Hơn nữa, cộng đồng FPGA sử dụng DPU rất nhiều và nhóm cónhiều nguồn tài liệu để tham khảo Việc áp dụng các thuật toán thông minh, trí tuệ
nhân tạo trong xử lý ảnh vào các hệ thống Smart camera và truyền hình ảnh đã được
xử lý qua một đường truyền cho một thiết bị cuối ở khoàng cách xa đòi hỏi các thành
phần trên hệ thống phải hiệu quả trong quá trình hoạt động và việc quản lý luồng bêntrong hệ thống phải hợp lý Do đó trong đề tài này, nhóm muốn nghiên cứu, xây dựng,ứng dụng và cải tiến một hệ thống Smart camera Hệ thống có khả năng nhận diệnbiển số xe trên hình ảnh, sau đó thực hiện đọc các ký tự trên biển số xe, hình ảnh saukhi được xử lý sẽ được truyền qua máy tính dé quan sát thông qua Wifi Hệ thống sẽđược đo lường và đánh giá ở nhiều tốc độ và kích thước khung hình khác nhau, đáp
ứng mục đích và nhu câu sử dụng.
13
Trang 12Chương 1 GIỚI THIỆU DE TÀI
Trong những năm gan đây, ứng dụng của trí tuệ nhân tao đang là hiện tượng nồi
bật và thu hút rất nhiều sự quan tâm từ các nhóm nghiên cứu của các trường đại học
và nhiều ngành công nghiệp như ý tế, giải trí, sản xuất, an ninh Trong đó đáng nói
đến là ứng dụng trí tuệ nhân tao dé xử lý hình ảnh từ video hoặc máy ảnh, bởi vi
chúng mang lại những lợi thé nỗi trội về mặt thực tiễn, chúng có khả năng phân tíchhình anh dé nhận dạng và đưa ra thông tin về đối tượng trong ảnh hoặc có thể trựctiếp chỉnh sửa hình ảnh mà không cần sự can thiệp của con người, nhờ đó mà khả
năng ứng dụng của chúng vô cùng mạnh mẽ và được biết đến với tên gọi “Thị Giác
Máy Tính” Với khả năng đó, trong y học, người ta đã ứng dụng chúng trong việc
nghiên cứu nội soi tìm các tế bào ung thư vòm họng, ung thư đại trực tràng và ungthư da dày Trong sản xuất và an ninh, cứu hộ người ta ứng dụng chúng rất nhiều déđịnh vị, giám sát, theo đõi hành vi con người, tìm kiếm con người, nhằm góp phancủng cố và tăng cường tinh an toàn không chỉ chống trộm cắp mà đảm bảo an toàn
lao động tại các môi trường nguy hiém.
Việc áp dụng các thuật toán thông minh, trí tuệ nhân tạo trong xử lý anh đòi hỏi
một môi trường hệ thống phần cứng đủ mạnh mẽ, giúp các thuật toán này lưu trữ,tính toán, phân tích ảnh hiệu quả Và trước đây, không gì phù hợp cho việc đó bằngcác GPU hay chip xử lý đồ họa Tuy nhiên, hiện nay với khoa học và kĩ thuật tiền bộ,
đặc biệt với ngành công nghiệp bán dẫn, đã cho ra đời nhiều kiến trúc phần cứng tiết
kiệm hơn và đặc thù, phù hợp cho nhiều loại thuật toán trí tuệ nhân tạo khác nhau.Trong đề tài này, em muốn nghiên cứu và sử dụng một khối IP kiến trúc phần cứng
khá nổi trội của Xilinx dành cho các hệ thống SoC hiện nay đó là Deep Learning
Processor Unit (DPU) dé nhận dạng biển số xe, ứng dụng trong quản lý xe cộ và bãigiữ xe Hệ thống của em sẽ tích hợp khối IP này, sau đó nạp model AI phù hợp vớimục dich của minh và sử dụng khối IP dé xử lý ảnh thay cho CPU
Trên thị trường hiện nay, việc xử lý hình ảnh thường diễn ra trên CPU hoặc
GPU Mặc dù sức mạnh tính toán cao của GPU và CPU cho phép sử dụng các mạng
14
Trang 13lưới lớn hơn trong các ứng dụng phát hiện đối tượng; nhưng do tiêu thụ năng lượnglớn và không hiệu quả khi truy cập bộ nhớ và số bit được sử dụng dé biểu diễn ditliệu là cô định, nên việc sử dụng chúng trong các hệ thống nhúng còn gặp nhiều khókhăn Do đó, nhóm tiến hành nghiên cứu sâu rộng để sử dụng FPGA như một sự thaythế hiệu quả cho GPU va CPU dé triển khai các thuật toán học sâu [1] Cụ thể,nhómquyết định nghiên cứu việc xử lý hình ảnh nhận diện trên môi trường phần cứng SOC
và FPGA sử dụng khối Deep Learning Processor Unit (DPU) của Xilinx thay cho
CPU hoặc GPU cho việc sử dụng các mô hình trí tuệ nhân tạo để xử lý hình ảnh trênthiết bị phần cứng
Lý do nhóm chọn và sử dụng khối IP DPU cua Xilinx bởi vi tính phô biến,Xilinx cung cấp công cụ, API va thư viện Vitis AI dé hỗ trợ lập trình DPU, được xâydựng bằng các ngôn ngữ pho biến như Python va C++, ngoài ra còn có các công cụ
hỗ trợ compile môhình AI sử dụng các framework phô biến như Caffe, Pytorch, sang format của DPU.Hơn nữa, cộng đồng FPGA sử dụng DPU rất nhiều và nhóm
có nhiêu nguôn tải liệu đê tham khảo.
1.1 Một số nghiên cứu liên quan
Hiện nay, Smart Camera luôn được các trường đại học, các công ty, tập đoàn
lớn nghiên cứu và phát triển Cu thé ta có thé thấy các nghiên cứu trong nước và
ngoài nước như:
1.1.1 Nghiên cứu ngoài nước
Bài báo của Merwan Birem và FrancoIs Berry, có tựa đề "DreamCam: Amodular FPGA-based smart camera architecture"[2] được công bố vào năm
2014, đã sử dụng các module camera như MT9M031 và EV76C560 trên nên
FPGA Altera Cyclone III dé chụp ảnh với tốc độ 42 khung hình mỗi giây va
độ phân giải 800 x 1024 pixel Hệ thống này có ưu điểm là có thể điều chỉnhkích thước và số lượng điểm ảnh của hình ảnh đầu vào, đồng thời tự động biêndịch và tổng hợp thành một hệ thống mới Tuy nhiên, nhược điểm của nó là
15
Trang 14quá trình xây dựng hệ thống tốn nhiều bước và thời gian, cũng như thiếu các
tính năng như theo déi và nhận diện.
Bài báo của Ehsan Norouznezhad, Abbas Bigdeli, Adam Postula va Brian
C Lovell, có tựa dé "Object Tracking on FPGA-based Smart Camera usingLocal Oriented Energy and Phase Feature"[3], được công bố vào năm 2010.Trong bài báo nay, ho sử dụng camera Micron MT9P001 trên nền FPGAXilinx Virtex-5 ML506 và áp dụng thuật toán Histogram dé chụp ảnh với tốc
độ 30 khung hình mỗi giây và độ phân giải 640 x 480 pixel Hệ thống này có
ưu điểm là có khả năng phân loại nhiều đối tượng trong quá trình theo dõi vàgiám sát, bao gồm màu sắc, hình dạng, kết câu và chuyên động Tuy nhiên,nhược điểm của nó là cần mat nhiều thời gian tính toán dé xác định đối tượngcần theo dõi
1.1.2 Nghiên cứu trong nước
Luận văn "Tối ưu streaming cho bộ tăng tốc AI tích hợp trên
Ultra96-V2 cho smart camera" (Năm 2023) cua Võ Phúc Vinh Khang và Lê Hoài sử dung smart camera trên SoC Ultra96-V2 áp dụng thuật toán YOLOv2 Hệ
thống này có thời gian trễ tương đối thấp khi truyền streaming camera với độphân giải full HD, nhưng nhóm vẫn muốn tiếp tục cải tiến để giảm thời gian
có thê xử lý hình ảnh từ thẻ nhớ SD, chưa thể xử lý trực tiếp từ camera
Luận văn "Thiết kế và tích hop smart camera trên SoC Ultra96-V2" [6]
(Nam 2021) cua Bui Nguyén Phat va Lé Minh Huy str dung smart camera trén
16
Trang 15SoC Ultra96-V2 áp dụng thuật toán YOLOv2 Hệ thống này đã tích hợp được
thuật toán YOLOv2 dé nhận diện vật thể với độ chính xác cao, nhưng khôngquan tâm đến độ trễ của khối AI
Luận văn "Thiết kế và hiện thực IP camera trên Zynq-7000" [7] (Năm
2019) của Chung Vĩnh Kiện đã sử dung camera Raspberry Pi trên FPGA
Zynq-7000 dé thu thập và truyền hình ảnh qua kết nói Ethernet Hệ thống này
hỗ trợ độ phân giải cao và tốc độ khung hình én định, nhưng chưa tích hợpđược thuật toán xử lý AI dé nhận dạng người trong hình ảnh
Luận văn "Real-time face detection and tracking on FPGA DE10-Nano" [8] (Năm 2020) của Phan Truong Khang và La Ngoc Le sử dung module camera OV7670 trên FPGA DE10-Nano với thuật toán Viola-Jones Thuật
toán này có khả năng tính toán dé đàng và tốc độ xử lý nhanh, nhưng độ chínhxác chưa cao và độ phân giải giảm xuống Dữ liệu màu có thé gây mat mát
thông tin.
1.2 Mục tiêu đề tài
Trong luận văn này, nhóm sẽ tập trung vào việc tìm hiểu và xây dựng một hệthống smart camera giúp nhận diện và đọc biên số xe máy và xe hơi trong nhà xetrên FPGA của Board Ultra96-V2 sử dụng SoC (ZU3EG) Đồng thời nhóm sẽtruyền hình anh qua máy tinh bang đường wifi dé thuận tiện cho việc theo dõi và
đánh giá kết quả Vì vậy, nhóm cần có kế hoạch thực hiện phù hợp, và kế hoạch
của nhóm bao gôm:
- Tim hiểu về khối IP Deep learning Processor Unit (DPU) của Xilinx đành
cho thiết bị Zynq MPSoC dé xử convolutional neural networks và các tác
vụ học sâu hiệu quả, nhanh chóng thay cho CPU và GPU Nó cung cấp khảnăng tích hop và tăng tốc xử lý cho các mô hình học sâu phổ biến nhưYOLO (You Only Look Once), ResNet (Residual Network), và nhiều mô
hình khác [4].
17
Trang 16Tiếp theo nhóm cũng cần phải tìm hiểu về board Ultra96 version 2 của nhàcung cấp AVNET, Ultra96v2 có tích hợp một MPSoC, là một thiết bị Edge
cơ bản dành cho học tập và nghiên cứu.
Nhóm cũng cần tìm hiểu các công cụ trong suốt quá trình xây dựng hệthống, cụ thể, nhóm sẽ tìm hiểu về công cụ thiết kế phần cứng VivadoDesign Suite phiên bản 2021.2, công cụ xây dựng hệ điều hành trên boardPetalinux phiên bản 2021.2, công cụ Vitis IDE đề xây dựng platform phầncứng phiên bản 2021.2, công cụ Vitis AI để quantize và compile các môhình AI sang định dang mà DPU có thể hiểu được Các tool script cũng
được nhóm tìm hiểu, như Darknet đề train và kiểm thử các mô hình AI trên
máy tính, DPU-TRD dé xây dựng firmware cho DPU
Ngoài ra, nhóm cũng cần tìm hiểu về các thư viện và driver phục vụ choviệc xử lý mô hình thuật toán, xử lý phân luồng, giao tiếp camera và chip
Wifi trên board như thư viện OpenCV, pthread, driver Wilc, camera
usb,
Nhóm tim hiểu tiếp cấu trúc hệ thống của một OS Linux, các mô hình AIphù hợp với đề tài, các giải thuật xử lý tọa độ trên anh, Vitis AI LibraryAPIs để xây dựng chương trình và các bài báo học thuật có liên quan
Giới hạn đề tài
Trong thiết kế của nhóm làm đề tài “Nghiên cứu cải tiến khối nhận dạng
yolov2 tích hợp trên board ultra96v2 cho smart camera”[4] trước đó, họ đã dua
khối DPU vào thiết kế của mình, và cũng đã thành công chạy giải thuật yolov2trên DPU, tuy nhiên, dé tài của họ vẫn có một số hạn chế nhất định, vi dụ như tần
số hoạt động còn thấp (100MHz), độ trễ và FPS còn cao (<IFPS), ngoài ra, ởluồng hệ thống của họ, hình ảnh phải lưu lại vào bộ nhớ khiến tài nguyên bị chiếmdụng không cần thiết và việc truy cập hình ảnh cũng chậm hơn so với sử dụngvùng nhớ Ram, cụ thể là buffer của chương trình Cho nên đề tài này, nhóm quyếtđịnh nghiên cứu phương pháp tối ưu hơn so với đề tài tương tự này
18
Trang 17Vê phân mêm:
- M6 hình AI của nhóm phải có khả năng đọc va phân tích ảnh có chứa 1
hay nhiều biển số xe máy hoặc xe hơi trong môi trường nhà xe có đầy đủánh sáng và chữ trên biển số xe không bị nhòe Mô hình AI cần được biêndịch sang định dạng mà DPU có thé đọc được Độ chính xác của mô hìnhtrên 80% đối với nhận diện ky tự chữ cai va trên 80% đối với nhận diệnbiển số xe trên ảnh
- Chương trình của nhóm phải đảm bảo việc quan lý luồng một cách phù
hợp, đưa được hình ảnh từ nguồn là thiết bị cung cấp ảnh đã qua xử lý banđầu vao trong buffer, từ buffer một đến bốn luồng khác đảm nhiệm vai tròlay hình ảnh và giao cho DPU xử lý, sau khi xử lý xong, hình ảnh được trả
về buffer, một luồn sẽ lay anh từ buffer đã qua xử ly stream lên máy tinh
để quan sát thông qua Wifi Chương trình đảm bảo xử lý được trên các địnhdang ảnh 720p, 480p, 360p và tốc độ stream khoảng 5 FPS
Về phần cứng:
- Nhóm xây dựng một hệ thống SoC tích hợp khối IP Deep learning
Processor Unit (DPU) của Xilinx dành cho thiết bị ZynqMP để xử
convolutional neural networks thay cho CPU và GPU DPU sẽ được cấuhình với kiến trúc B2165, tần số 200MHz, | core hoạt động 2 luồng
parallel.
- Hệ thống cũng cần một hệ điều hành chạy ồn định, tích hợp các thư viện
và driver trên môi trường ‘run-time’, tích hợp đầy đủ các thư viện như
OpenCV, pThread, các compiler của C C++, môi trường Vitis AI Library
API, ngoài ra để sử dụng được DPU, nhóm cần xây dựng firmware của
khối IP này, các driver để giao tiếp với camera và chip wiñ như Wilc,
camera-USB,Xir,
19
Trang 181.4 Kết quả mong muốn
Vé mô hình AI, nhóm sẽ sử dung mô hình Yolov4 đê xử lý hình ảnh với tôc
độ dưới 1 giây, hình ảnh có chứa biên sô xe có thê được mô hình nhận diện với
độ chính xác trên 80 % và các ký tự trên biên sô xe được nhận diện với độ chính
xác trên 80%.
Về hệ thống nhóm mong muốn một hệ điều hành hoạt động ổn định không
bị treo hàng giờ, không sử dụng dây, sử dụng chip wifi/bluetooth wilc3000 dé
truy cập và truyền dữ liệu đến máy tính chủ Về nguồn vào, nhóm giả sử có mộtthiết bị stream ở đầu vào đảm nhiệm vai trò gửi hình ảnh có chứa biển số xe qua
xử lý ánh sáng và các tác nhân môi trường, đảm bảo hình ảnh đưa vào thiết bị
được hiên thị rõ ràng biên sô xe, các ký tự không bị nhòe mờ.
Về ứng dụng điều khiển luồn, nhóm mong muốn việc các luồng được hoạtđộng đồng bộ với nhau, chia sẻ 2 buffer, buffer input và buffer output, 1 luồngnhận ảnh đưa vào buffer input, 1 hoặc 4 luồng lấy hình ảnh từ buffer input, đưa
vào DPU xử ly, anh sau xử lý sẽ được đưa vào buffer output và sẽ được 1 luồng
truyền qua máy tinh dé quan sát thông qua chip wifi
Về phan cứng, nhóm mong muốn một phần cứng có tích hợp DPU IP đượccấu hình phù hợp với board, hoạt động với tầng số 200MHz, giao tiếp vớiProcessing system (PS) bang bus tốc độ cao (HP port)
1.5 Bồ cục luận văn
Chương 1: giới thiệu đề tài
O chương 1, nhóm sẽ giới thiệu về tông quang đê tài, lý do chọn dé tài,
mục tiêu của dé tài và giới hạn phạm vi nghiên cứu, vạch kê hoạch va mô ta kêt quả mà nhóm mong muôn dat được.
Chương 2: Cơ sở lý thuyết
Chương 2 nhóm sẽ đi sâu vào cơ sở lý thuyết của đề tài, chủ yếu sẽ tậptrung vào luồng xây dựng của hệ thống, mức độ trừu tượng và lý thuyết của
20
Trang 19khối DPU, cơ chế hoạt động của DPU Đồng thời nhóm sẽ trình bày nhữngthông tin học thuật dựa vào các nguồn tài liệu nhóm tìm kiếm được trên
Internet, tham khảo trên các Website học thuật và của khoa KTMT cũng như
góp ý của các thầy cô, anh chị bao gồm: Kiến thức về phần cứng FPGA, SoC,
Thuật toán YoloV4, OpenCV, SSH Tunnel, stream hình anh,
Chương 3: Thiết kế hệ thống phan cứng và hiện thực môi trường Smart
Camera Run-Time trên board
Dựa vào những co sở lý thuyết của chương 2, nhóm đề xuất mô hìnhthiết kế ở chương 3, đi từ tổng quát đến chỉ tiết hóa từng phan và giải thíchnguyên lý hoạt động của hệ thống nhóm xây dựng về mặt Hardware và OS,Firmware.
Chương 4: Thiết kế phần mềm quảng lý luồng, xây dựng mô hình AI và
kiêm soát môi trường trên môi trường Run-Time của Smart Camera
Ở chương 4, nhóm nêu ra mô hình thiết kế phần mềm sẽ hoạt động trênphần cứng mà nhóm đã xây dựng ở chương 3, nhóm cũng sẽ dựa vào cơ sở lý
thuyết ở chương 2, giải thích nguyên lý hoạt động của hệ thống về mặt
Software.
Chuong 5: Thwe nghiém va danh gia két qua
Sau khi xây dựng toàn bộ hệ thống và liên kết chúng với nhau, nhómtiến hành bước chạy thử, thực nghiệm dé thu được các kết quả từ mô hình vàtiền hành đánh giá, so sánh với mục tiêu nhóm đề ra ban đầu cũng như so sánhkết quả với các đề tài trước
Chương 6: Kết luận và hướng phát triển
Chương 6 sẽ tổng kết lại khóa luận, tóm tắt toàn bộ những công việc
mà nhóm đã thực hiện, đồng thời đưa ra những kết quả và thành tích đã đạtđược từ mô hình nhóm đã xây dựng Nhóm cũng sẽ đề xuất phương án và địnhhướng phát triển tiếp theo trong tương lai
21
Trang 20Chương2 CƠ SỞ LÝ THUYET
2.1 Field Programmable Gate Array (FPGA)
2.1.1 Dinh nghia
Field Programmable Gate Array (FPGA) là một loại thiết bị logic lập trình
được sử dụng dé xây dựng các mach logic kỹ thuật số Đặc điểm chính của
FPGA là khả năng lập trình lại chức năng và kết nối của các thành phần logic
bên trong nó sau khi đã được sản xuất FPGA bao gồm một lưới các ô lặp trị
logic và các phan tử logic (như công AND, OR, NOT) được kết nối lại theo ýmuốn của người lập trình
FPGA được cấu thành từ các bộ phận:
- Cac khối logic có thê tái lập trình (logic block)
- Cac thành phan thiết kế có sẵn như ROM, RAM, core vi xử lý, DSP slice,
- Hé thống mach liên kết có thé tai lập trình
- Khối các /O
FPGA cũng thường được xem như một ASIC (vi mạch bán dẫn), nhưng
nếu so sánh với các ASIC nói chung, FPGA không có khả năng vượt qua ASIC
về sự tối ưu, về hiệu suất lẫn tài nguyên, ngoài ra FPGA còn thua kém trong
việc thực hiện những công việc phức tạp và mang tính đặc thù [9] Tuy nhiên
FPGA vượt trội hơn bởi vì nó có khả năng tái thiết lập, cấu trúc và lập trìnhlại trong lúc nó đang được sử dụng, công đoạn thiết kế một mạch bằng FPGA
đơn giản hơn nhiều so với việc thiết kế ASIC, do vậy chi phí sản suất ít hơn,
thời gian đưa sản phẩm vào thực tế nhờ đó mà cũng được rút ngắn lại
Người ta thường xây dựng và lập trình FPGA băng các ngôn ngữ đặc tảphan cứng HDL như AHDL,Verilog, VHDL Những tập đoàn sản xuấtFPGA lớn như Altera, Xilinx (ARM) sẽ cung cấp một số công cu software vathiết bi hỗ trợ cho quá trình xây dựng một bản thiết kế khi sử dụng sản phẩmcủa họ Ngoài ra toàn bộ quy trình thiết kế IC chuẩn với đầu vào là các đoạn
22
Trang 21code HDL (còn gọi là RTL), người ta sẽ sử dụng các công cụ phần mềm tương
tự như Cadence, Synopsys, Synplify, được cung cấp bởi những công ty thuộcbên thứ ba, chúng không hạn chế khả năng thực hiện các công việc này
2.1.2 Kiến trúc tổng quát
Kiến trúc tổng quát của FPGA bao gồm các khối logic có thể lập trình, các
kết nối linh hoạt và khả năng tái cấu hình, cung cấp cho người dùng nền tang
linh hoạt dé triển khai các hệ thống số tùy chỉnh và hiệu qua cao Kiến trúctổng quát của FPGA bao gồm các thành phần chính sau:
Logic Blocks (LBs): Các khối logic là một trong những thành phần chínhcủa FPGA, được sắp xếp thành các mảng trên chip Mỗi khối logic bao gồmmột số lượng công logic, flip-flops và các thành phần logic khác như
multiplexers hoặc look-up tables (LUTs) Các LBs này có khả năng tai lập trình phục vụ cho việc xử lý logic đa dạng.
Interconnects: Interconnects là các đường kết nói trên chip cho phép cáckhối logic giao tiếp với nhau Chúng cung cấp đường dẫn cho tín hiệu giữa cácLBs và các phần khác của FPGA Interconnects chúng thường linh hoạt do
được thiệt kê cho việc kết nôi các khôi logic theo nhiêu cách khác nhau.
VO Blocks (IOBs): các thiết bị ngoại vi như cảm biến, bộ nhớ hoặc vi
điều khiển được kết nối với FPGA thông qua các khối IOBs Chúng cung cấp
các chan I/O dé giao tiếp với thé giới bên ngoài của FPGA
Configurable Switch Matrix: cho phép người lập trình kết nối các LBs
và IOBs theo cách tùy chỉnh Switch matrix cung cấp khả năng lập trình lạicau trúc kết nói trên FPGA, cho phép tùy chỉnh linh hoạt của chip dé phù hợp
với yêu câu cụ thê của ứng dụng.
Configuration Memory: Configuration memory chứa các bitstream hoặc
file cấu hình, được dùng để cấu trúc cho các thành phần trong FPGA Khi
23
Trang 22FPGA được khởi động, bitstream này sẽ được tải vào chip, cấu hình các LBs,
interconnects và IOBs theo cach mà người lập trình đã định nghĩa.
L] Logic block
GPIO bank
Programmable Programmable logic block interconnect
Sau nay, các kiến tric FPGA đã được người ta phát triển nhiều hon thôngqua việc bổ sung các thành phần chức năng chuyên dụng có thê tái lập trình
như DSP-48, logic ALU, Block RAMs, bộ nhân hoặc họ cũng có thé thêm bộ
vi xử lý nhúng vào các thiết bị FPGA này do nhu cầu từ các ứng dụng và
những người sử dung Vì thế nhiều FPGA hiện nay có nhiều biến thé hơn so
với các FPGA trước kia.
2.1.3 Ưu nhược điểm của FPGA
Ưu điểm:
Linht hoạt và Đa dụng: các mạch logic có thê được cấu hình theo nhucầu của ứng dụng mà không cần người dùng thiết kế lại Điều này làm chochúng rất linh hoạt và đa dụng
Hiệu suất cao: FPGA có thê cung cấp hiệu suất tính toán cao, dành cho
các ứng dụng có nhu câu xử lý song song cao.
24
Trang 23Tiết kiệm thời gian và Chi phí: Việc sử dụng FPGA có thê tiết kiệmthời gian và chi phí đáng ké so với việc phát triển một ASIC (Application-Specific Integrated Circuit) tùy chỉnh, đặc biệt là trong các dự án cần thửnghiệm nhanh chóng hoặc nhu cau về số lượng sản phẩm ít.
Câp nhật phần mềm dễ dàng: Khi cần thay đổi chức năng của hệ thống,người dùng có thê dễ dàng cập nhật thiết kế trên FPGA thông qua việc tải lạibitstream mới, mà không cần phải thay đổi phan cứng
Nhược điểm:
Độ trễ và Tốc độ: So với một số giải pháp phần cứng khác như ASICs,FPGA thường có độ trễ và tốc độ xử lý thấp hơn Điều này có thể làm giảmhiệu suất trong các ứng dụng yêu cầu xử lý cực kỳ nhanh
Tiêu thụ năng lượng cao: FPGA thường tiêu thụ năng lượng khá lớn so
với một số giải pháp khác, đặc biệt là khi hoạt động ở tần số cao hoặc khi sử
dụng toàn bộ tài nguyên cua chip.
Độ phức tạp cao: Việc thiết kế và lập trình FPGA có thé đòi hỏi kiến
thức chuyên sâu vê phan cứng và phân mém, và đôi khi cân phải vượt qua một
thời gian học tập và thử nghiệm đáng kể.
Giá thành: Trong một số trường hợp, giá thành của FPGA có thể caohơn so với việc phát triển một ASIC tùy chỉnh, đặc biệt là khi sản lượng tănglên và chi phí phát triển ban đầu đã được trả
Mặc dù có nhược điểm nhất định, FPGA vẫn là một công cụ mạnh mẽ
và linh hoạt trong nhiều ứng dụng điện tử, máy tính và trí tuệ nhân tạo
2.2 System on Chip (SoC)
2.2.1 Dinh nghĩa SoC
SoC là viết tắt của "System-on-Chip" (Hệ thống trên một chip) Đây là mộtkiểu thiết kế vi mạch tích hợp trên một chip duy nhất, kết hợp nhiều thành
25
Trang 24phần chức năng khác nhau của hệ thống điện tử vào một chip duy nhất Cácthành phần này có thê bao gồm bộ xử lý trung tâm (CPU), bộ nhớ, các bộ điềukhiến, các khối logic tùy chỉnh, các chuẩn giao tiếp như USB, Ethernet, và cácthành phần khác như DSP (Digital Signal Processor), GPU (GraphicProcessing Unit), và các thành phan phan cứng khác.
SoC thường được sử dụng trong máy tính nhúng, thiết bị thông minh, cácthiết bị đi động, và các hệ thống nhúng khác Sự tích hợp trên một chip giúpgiảm chi phí sản xuất, kích thước, và tiêu thụ điện năng, đồng thời cũng tạođiều kiện thuận lợi cho việc phát triển và tích hợp các ứng dụng đặc thù vàphức tạp trên cùng một nền tảng phần cứng
2.2.2 Kiến trúc tổng quát của SoC
kiến trúc tổng quát của một SoC bao gồm sự tích hợp của các thành phần
xử lý, bộ nhớ, giao tiếp và điều khiển trên một chip duy nhất, tạo ra một nềntảng phần cứng linh hoạt và hiệu quả cho nhiều ứng dụng điện tử
Bộ xử lý trung tâm (CPU): Đây là một trong những thành phan không théthiếu của SoC CPU thường được tích hợp trên chip và thực hiện vai trò xử lý
trung tâm của hệ thông, gồm việc thực hiện lệnh, kiểm soát bộ nhớ và tương
tác với các thành phần ngoại vi trên chip Một SoC có thé có một hoặc nhiều
core CPU Ví dụ như:
- Core CPU ARM ding tập lệnh ARM và đến từ công ty ARM
- RISC-V là các core CPU phát triển dựa trên mã nguồn mở RISC-V
- _ Là sản phẩm của công ty Renesas, SH (SuperH) dùng tập lệnh RISC được
triển bởi Hitachi
Bộ nhớ (Memory): SoC thường bao gồm nhiều loại bộ nhớ, bao gồm bộ
nhớ RAM (Random Access Memory) và bộ nhớ ROM (Read-Only Memory)
dé lưu trữ dữ liệu và mã chương trình Bộ nhớ có thé được tích hợp trực tiếp
trên chip hoặc kết nối thông qua các giao tiếp như DDR (Double Data Rate)
26
Trang 25Các bộ xử lý đặc thù (Specialized Processors): Ngoài CPU, SoC có thê
bao gồm các bộ xử lý đặc biệt như GPU (Graphic Processing Unit) cho xử lý
đồ họa, các bộ xử lý khác như Neural Processing Unit (NPU) cho trí tuệ nhântạo va DSP (Digital Signal Processor) cho xử lý tín hiệu số
Bộ điều khiến (Control Unit): Bộ điều khiển quản lý và điều khiển hoạtđộng của các thành phần khác trên chip, bao gồm việc kết nối với các thiết bị
ngoại vi, quản lý nguôn điện và điêu khiên các chê độ hoạt động của hệ thông.
Giao tiếp và kết nối (Interconnect): SoC cung cấp các giao tiếp và kết
nỗi đề liên kết các thành phần khác nhau trên chip với nhau và với các thiết bị
ngoại vi bên ngoài Các giao tiếp bao gồm các chuẩn như USB (UniversalSerial Bus), PCIe (Peripheral Component Interconnect Express), Ethernet, và
các giao tiếp không day như Wi-Fi và Bluetooth
Giao diện người dùng (User Interface): Một số SoC cung cấp các giao
diện người dùng như giao điện đồ họa, cảm biến chạm, và các công nghệ giao
diện người dùng khác đê tương tác với người dùng cuôi.
27
Trang 26PROCESSING SYSTEM
QUAD-CORE "ARie® MEMORY
TM 2
CORTEXTM-A53 | SRS Marat MAL SOOMP.
DUAL-CORE ELArroRM CONFIG
X<*ARM® MANAGEMENT AND
VIDEO CODEC
Hình 2.2.1 ZynqTM UltraScale+TM MPSoC
2.2.3 Ưu và nhược điểm của SoC
Ưu điểm:
Tích hợp cao: SoC tích hợp nhiều thành phần chức năng khác nhau trêncùng một chip, giúp tối ưu hóa về không gian, giảm kích thước của hệ thống
và giảm thiêu chi phí sản xuất
Tiết kiệm năng lượng: Tích hợp nhiều chức năng trên cùng một chipcũng giúp giảm tiêu thụ năng lượng so với việc sử dụng nhiều chip riêng lẻ
Hiệu suất cao: SoC thường hoạt động hiệu quả vì được tối ưu hóa và cóthé cung cấp hiệu suất xử lý trong không gian nhỏ tương đối cao
Tích hợp dễ dàng: SoC cung cấp nền tảng phần cứng đã tích hợp sẵn,giúp đơn giản hóa quá trình thiết kế hệ thống và giảm thời gian phát trién
28
Trang 27Phát triển nhanh chóng: Sử dụng SoC có thê giúp rút ngắn thời gian tạo
ra sản phẩm, đặc biệt là trong các sản phẩm có chu kỳ phát triển ngắn hoặcyêu cầu thời gian-to-market nhanh
Nhược điểm:
Giới hạn tính linh hoạt: Do tính tích hợp cao, SoC có thé gặp khó khănkhi cần thay đổi hoặc nâng cấp các thành phần chức năng cụ thé trên chip
Chỉ phí thiết kế cao: Thiết kế và phát triển SoC có thể cần đầu tư lớn
về cả thời gian, về tài nguyên, và chi phí
Khó khăn trong việc kiểm soát nhiệt độ: Vì mật độ tích hợp cao, SoC
có thé tạo ra nhiêu nhiệt độ và toc độ xung nhịp cao, điêu này có thé tạo ra
thách thức trong việc kiêm soát nhiệt độ và quản lý năng lượng
Thiết kế phức tap: SoC thường có thiết kế phức tạp, đòi hỏi kinh nghiệm
và kiến thức chuyên sâu trong việc thiết kế hệ thống và phần cứng
Mặc dù có nhược điểm nhất định, SoC vẫn là một giải pháp hữu ích vàphổ biến trong nhiều ứng dụng điện tử, máy tính và trí tuệ nhân tạo, nhờ vào
sự tích hợp và hiệu suât cao mà chúng mang lại.
2.3 Deep learning Processor Unit (DPU)
2.3.1 Dinh nghĩa
Deep learning Processor Unit (DPU) là một khối IP xử lý đặc biệt được tối
ưu cho các tác vụ deep learning hiệu quả và nhanh chóng DPU có khả năng
tích hợp và tăng tốc xử lý cho các mô hình deep learning phổ biến như ResNet(Residual Network), YOLO (You Only Look Once), và nhiều mô hình khác
DPU có thể cấu hình, tối ưu hóa cho các mang convolutional neural trêntừng thiết bị khác nhau, Mỗi khối DPU có nhiều ho phù hợp với từng dòngSoC như ultrascale, ultrascale+, MP SoC va mỗi họ của DPU có nhiều lõi
và nhiêu kiên trúc khác nhau, moi kiên trúc sẽ quy định lượng logic và tài
29
Trang 28nguyên cho khối DPU đó, và nó có thê được thiết lập tùy theo đối tượng phần
cứng và nhu cầu sử dụng
2.3.2 Kiến trúc tổng quát của DPUCZDX8G
Khối DPUCZDXSG là một họ của Deep learning Processor Unit (DPU)thiết kế dành riêng cho dòng Zynq® UltraScale+TM MPSoC
2.3.2.1 Chức năng
- Hé6 trợ một AXI slave interface dé truy cập và cấu hình trang thái
thanh ghi
- H6 trợ một AXI master interface dé fetch lệnh
- _ Hỗ trợ cấu hình riêng biệt cho từng kênh
- IP có sang ở nhiều biến thé, mở rộng cả về mặt sử dụng tài nguyên
logic và tính toán song song Các cau hình bao gồm B512, B800,B1024, B1152, B1600, B2304, B3136, và B4096, trong đó từng kiếntrúc biéu thị tông số MAC trên mỗi chu kỳ xung clock của DPU
- Software va IP hỗ trợ tối đa đến 4 core trên một AMD Xilinx SoC
Các chức năng mà DPUCZDX8G có thé thực hiện
- H6 trợ Convolution và transposed convoolution
- Depthwise convolution và depthwise transpoosed convolution
- Argmax va Max along channel dimension
- Fully connected layer
- Softmax
30
Trang 29- Concat, Batch Normalization
- Correlation 1D va 2D
2.3.2.2 Tổng quang core
Xilinx® DPUCZDX8G là một khối IP có thé lập trình thông qua cácthanh ghi (register bank) dé tính toán các mang convolutional neural Nóbao gồm hộ lập lịch hiệu suất cao (high performance scheduler), bộ tính
toán mang hybrid (hybrid computing array), bộ fetch lệnh (instruction fetch
unit), và memory pool tông (global memory pool) DPUCZDX8G là khối
microcoded IP sử dung một tập lệnh đặc biệt cho phép thực hiện tính toán
trên các mang convolutional neural hiệu quả.
Một số ví dụ về các mô hình mang convolutional neural đã được trién
khai trén DPU nhu YOLO, GoogLeNet, MobileNet, VGG, ResNet, SSD,
va FPN va nhiêu mang khác.
Khối IP DPUCZDX8G được thực thi bên trong ving programmable
logic (PL) của thiết bị Zynq® UltraScale+TM MPSoC thông qua việc kếtnối trực tiếp đến vùng processing system (PS) Khối DPUCZDX8G thực
hiện những microcode được compile từ các đồ thị mạng neural, DPU cần
vùng nhớ có thé truy cập được dé chứa các anh input và dữ liệu tạm thời
(cache) cũng như data output Một chương trình chạy trên application
processing unit (APU) cũng cần hỗ trợ ngắt và phối hợp truyền data
31
Trang 30Hybrid Computing Array
X22327-072219
2.3.2.3 Kiến trúc phan cứng
Chi tiết về kiến trúc phần cứng của khối DPUCZDX8G được thê hiện
như hình bên dưới Ban đầu, DPUCZDX8G fetch danh sách lệnh từ bên
ngoài bộ nhớ dé vận hành hệ thống tính toán Danh sách lệnh được tạo ra
từ VitisTM AI compiler, giúp thực hiện tối ưu hóa bao gồm cả layer fusion
Bộ nhớ On-chip được dùng để buffer các input activation, intermediafeature-maps và output meta-data giúp đạt được hiệu quả truyền dữ liệu.data được tái sử dụng hết mức có thé dé giảm thiểu việc sử dung bandwidth
từ bộ nhớ ngoài Thiết kế deep pipeline được xây dựng cho hệ thống tính
32
Trang 31toán Thành phần xử lý (Processing elements [PE]) tận dụng tối đa các khốifine-grained như khối cộng, nhân, accumulator trong thiết bị của Xilinx.
§ 5 Fetcher Data Mover š 5
83] Decoder On-Chip BRAM |a
5§ 5 8
£® | Dispatcher BRAM Reader/Writer | & ©
X22332-022420
Hinh 2.3.2 DPUCZDX8G Hardware Architecture
2.3.2.4 Mô hình SoC tích hợp DPU
Mô hình của một hệ thong SoC tích hợp DPU co bản được biểu diễn ở
hình bên dưới
33
Trang 32System (PS)
DisplayPort Arm Cortex- ae
USB3.0 A53 real
MIPI MIPI DPU
Hình 2.3.3 Ví dụ mô hình SoC tích hợp DPU
Khối DPUZDX8G được tích hợp vào hệ thống thông qua AXI
interconnect dé thực hiện các tác vụ học sâu, suy luận như phân loại hình
ảnh, phát hiện đối tượng và semantic segmentation
2.3.3 Cấu hình khối IP DPUZDX8G
DPUCZDXSG top-level interfaces được thê hiện như hình sau
J+ S_AXI
s axi_aclk
os axi_aresetn
Deep Learning Processing Unit (DPU)
Hình 2.3.4 DPU hai kernel
34
Trang 33IP DPUZDX8G cung cấp một số parameter dé user có thé câu hình tùy
ý các chức năng và tối ưu tài nguyên sử dụng Các cấu hình khác nhau có thê
ảnh hướng đến lượng DSP slices, LUT, block RAM và UltraRAM cấp phátcho khối IP từ tài nguyên PL (programmable logic) Ngoài ra IP cũng có các
tùy chỉnh cho việc thêm bớt các chức năng như channel augmentation, average
pooling, depthwise convolution, và softmax Hơn nữa, có một tùy chọn cho
phép lựa chọn số core DPUCZDXSG trên một IP
Tối đa user có thé cấu hình trên mỗi IP DPUCZDX8G là 4 core Sửdụng nhiều core DPUCZDX8G giúp đạt được hiệu suất cao hơn và tận dụng tối
đa tài nguyên cấp phát trên PL
2.3.3.1 Kiến trúc của DPUCZDX8G
IP DPUCZDX8G có thé được cấu hình với nhiều kiến trúc convolution
đa dang liên quan đến cơ chế song song của phan tử convolution Kiến trúccủa IP DPUCZDX8G bao gồm B512, B800, B1024, B1152, B1600,
B2304, B3136 và B4096.
Có ba chiều song song trong kiến trúc convolution của DPUCZDX8G:
pexel parallelism, input channel parallelism, va output channel parallelism.
Input channel parallelism luôn bang với output channel parallelism
Trang 34Trong hình, output channel parallelism (OCP) = 3; input channel
parallelism (ICP) = 3; va pixel parallelism (PP) = 2 OCP tương đướng với sốkernel sử dung trong quá trình tính toán convolution Số lượng pixels được
dùng là tùy ý để duy trì độ rõ nét
Các thành phan sử dụng trong quá trình tính toán cần 1 pixel cho mỗichannel (khối màu đỏ trong hình) Với ICP = OCP = 3 và PP = 2, số lượng
convolution MACs trên mỗi chu kỳ là 3 * 3 * 2 = 18.
Kiến trúc khác nhau đòi hỏi tài nguyên PL khác nhau Kiến trúc càng
cao, hiệu suất càng cao đồng thời tài nguyên cũng tỉ lệ thuận Số lượng thànhphần song song được liệt kê trong bảng dưới đây
Bảng 2.3.1 phần tử parallel cho từng kiến trúc khác nhau
—————
DPUCZDX8G Architecture Pixel Input Output Peak Ops
Parallelism Channel Channel | (operations/per
(PP) Parallelism | Parallelism cycle)
(CP) (OCP)
B512 4 8 8 512
800
Trong moi chu ky clock, convolution array biéu dién qua trinh nhan va
tổng hợp, quá trình này được xem là 2 lệnh Do đó, số lượng lệnh trên mỗi chu
kỳ tối da (Peak Ops) được tính theo công thức PP*ICP*OCP*2
36
Trang 352.3.3.2 Tiêu thụ tài nguyên
Tài nguyên được cấp phát cho khối IP DPUCZDX8G một core được liệt
kê theo bảng bên dưới Dữ liệu dựa trên platform của ZCU102 với cau hình
low RAM usage, alu parallel = PP/2, channel augmentation, conv: leaky ReLU + ReLU6, alu: ReLU6 feature, high DPS usage va Armax enabled.
Bảng 2.3.2 Tài nguyên tiêu thụ trên từng kiến tric DPUCZDX8G
DPUCZDX8G Architecture Register
BS12 34543 B800 29721 41147 90 166
B1024 34074 48057 104 230 B1152 32169 47374 121 222 B1600 38418 58831 126 326 B2304 42127 68829 165 438 B3136 46714 79710 208 566
B4096 52161 98249 255 710
eee (eee
2.3.3.3 RAM Usage
Cac Weights, bias va intermedia feature maps được buffer vào bộ nhớ
on-chip Bộ nhớ on-chip bao gồm RAM có thé khởi tao duéi dang block RAM vaUltraR AM Tùy chình cau hình RAM Usage quyết định tong số lượng bộ nhớ
on-chip sử dụng cho từng kiến trúc DPUCZDX8G khác nhau, và cấu hình này
sẽ áp dụng cho toàn bộ core DPUCZDX8G trên IP High RAM Usage có nghĩa
là số lượng bộ nhớ on-chip sẽ lớn hơn, cho phép DPUCZDX8G linh hoạt hontrong việc kiểm soát intermediate data High RAM Usage giúp tăng hiệu suấtcho từng core DPUCZDX8G Số lượng khối BRAM36K sử dụng cho từngkiến trúc với cầu hình Low và High RAM với depthwise convolution được liệt
kê theo bảng sau.
37
Trang 36Tập lệnh của DPUCZDXSG sẽ phụ thuộc vào từng cấu hình RAM Usagekhác nhau Khi RAM Usage được cấu hình lại, file lệnh của DPUCZDX8G
cũng nên được tạo lại băng cách compile lại mang neural.
Bang 2.3.3 Số lượng khối BRAM36K cho từng kiến trúc trên mỗi core
DPUCZDX8G
DPUCZDX8G Architecture Low RAM Usage High RAM Usage
B512 72 88 B800 90 108 B1024 104 136 B1152 121 143 B1600 126 162 B2304 165 209 B3136 208 260 B4096 255 315
2.3.3.4 Channel Augmentation
Channel augmentation là một chức nang tùy chỉnh cho phép cải thiện hiệu
quả của DPUCZDX8G khi số lượng input channel thấp hơn số lượng channelparallelism hiện có Ví dụ, số lượng input channel trên mỗi layer trong hầu hếtmạng CNN là ba, chúng thường không được sử dụng hết các hardwarechannel Nếu số lượng input channel lớn hơn số lượng parallelism channel,channel augmentation vẫn có thê được thiết lập
Vì vậy, channel augmentation có thể cải thiện hiệu quả cho hầu hết mạngCNN nhưng nó sẽ tiêu tốn thêm tài nguyên logic Bảng sau liệt kê các tàinguyên LUT tiêu tốn thêm khi sử dung channel augmentation
38
Trang 37Bảng 2.3.4 Extra LUT của DPUCZDX8G khi sử dụng Channel Augmentation
| DPUCZDX8G Architecture | Extra LUTs with Channel Augmentation |
B512 3121 B800 2624 B1024 3133 BI152 1744 B1600 2476 B2304 1710 B3136 1946 B4096 1701
2.3.3.5 DepthwiseConv (ALU)
Thông thường trong convolution, mỗi input channel cần vận hành trên một
kernel cụ thê, và kêt quả sẽ có được băng việc so sánh với kêt quả của các channel với nhau.
Trong convolution được phân tích theo depthwise, sự vận hành sẽ được thé
hiện qua hai bước: depthwise convolution va pointwise convolution.
Depthwise convolution được biểu diễn trên từng feature map riêng biệt nhưtrong hình bên dưới Bước tiếp theo là biểu diễn pointwise convolution, bước
này sẽ giống với convolution thông thường với kernel size 1x1 Cơ chế
parallelism của depthwise convolution bằng một nửa so với cơ chế parallelism
Trang 38ElementWise Multiply tính toán Hadamard product của hai input feature
maps Pham vi của Input channel của ElementWise Multiply từ 1 đến 256 *
channel_parallel Chức nang này luôn được bat.
2.3.3.7 AveragePool
AveragePool là chức năng cho phép sử dung average pooling trên DPUCZDXS8G không Chức năng này luôn bật và có hỗ tro rectangle sizes.
2.3.3.8 ReLU Type
ReLU Type là chức năng quyết định cụ thé hàm ReLU nào sẽ được bat trên
DPUCZDXSG Mặc định ReLU và ReLU6 được chọn Việc chọn “ReLU + LeakyReLU + ReLU6” sẽ bật LeakyReLU.
2.3.3.9 Argmax và Max
Chức năng Save Argmax cho phép sử dụng chức nang argmax và max trên các channel dimension khi restore output trở lai vùng DDR Trong một vai trường
hợp như segmentation, chi có thé sử dụng max Cho nên cấu hình này thường
sẽ có ích cho việc thay thế softmax bằng argmax trong model dé bỏ quá trình
tính toán Exp và giảm độ trễ.
40
Trang 392.3.3.10 Softmax
Cấu hình này cho phép bật chức năng softmax trên phan cứng Bộ gia tốc phan
cứng cho chức năng softmax được tích hợp bên trong DPU IP, nhưng nó hoạt động tách biệt, có giao thức của chính nó, với runtime, với quá trình nhận input
là định dạng số int8 và output là định dạng SỐ floating-point Việc bat chứcnăng softmax trên phần cứng có thể làm tăng tốc đến 160 lần so với thực hiệntrên phần mềm với các thiết bị MPSoC Người dùng có thể bật chức năng nàynếu model của họ có sử dụng layer softmax và họ muốn cải thiện đường truyền
2.3.3.11 S-AXI Clock Mode
s_axi_aclk là giao thức S-AXI clock Mặc định M-AXI Clock sẽ được sử dung,
s_axi_aclk chia sé clock với m_axi_aclk va công s_axi_aclk sẽ được ân Khi
chon independent, chúng sẽ được tách ra hai miền clock khác nhau
2.3.3.12 dpu_2x Clock Gating
dpu_2x clock gating là chức năng giúp giảm tiêu thu power cua
DPUCZDXSG Khi chức năng này được bat, một công tên là dpu_2x_clk_ce sẽ
xuất hiện cho từng core DPUCZDX8G céng dpu_2x_clk_ce can duoc kết nối voi céng clk_dsp_ce théng qua khéi dpu_clk_wiz IP Tin hiéu dpu_2x_clk_ce
có thé ngắt dpu_2x_clk khi hoạt động tính toán của DPUCZDX8G dang trong
trạng thai idle Để tạo ra công clk_dsp_ce ở khối IP dpu_clk_wiz , khối clocking
wizzard IP cũng cân được câu hình theo sô cụ thé.
41
Trang 402.3.3.13 DSP Cascade
Chiều dài tối da của chuỗi DSP48E slice cascade có thé được cấu hình
Cascade có độ dài lớn hơn thường sẽ sử dụng tài nguyên logic ít hơn nhưng sẽ
khiến thời gian bị ảnh hưởng Cascade ngắn hơn sẽ không phù hợp với các thiết
bị nhỏ vì nó đòi hỏi nhiều tài nguyên phần cứng Xilinx đề xuất chọn giá trịkhoảng giữa, là bốn, ở iteration đầu tiên và điều chỉnh giá trị nếu như timing
không phù hợp.
2.3.3.14 DSP Usage
Chức năng nay cho phép ta chọn sử dung DSP48E slices cho quá trình accumulation trong module DPUCZDX8G convolution hay không Khi low DSP usage được chon, IP DPUCZDX8G sẽ sử dung DSP slices chỉ khi thực hiện multiplication trong module convolution Khi high DSP usage được chon, DSP slice sẽ được dùng cho cả hai quá trình multiplication va accumulation.
Vi thé, high DSP usage tiéu thu nhiéu DSP slices hon va it LUTs hon
2.3.3.15 UltraRAM
Có hai loại tài nguyên bộ nhớ on-chip trên thiết bị Zynq® UltraScale+TM: khốiRAM và khối UltraRAM Số lượng có sẵng trên từng loại bộ nhớ phụ thuộcvào thiết bị Mỗi khối RAM bao gồm hai khối 18K slices có thé được cấu hình
dưới dạng 9b*4096, 18b*2048, hoặc 36b*1024 UltraRAM có thé được cấu
hình cố định ở dạng 72b*4096 Một phan tử bộ nhớ của DPUCZDX8G có độrộng là ICP*§ bits và depth là 2048 Với kiến trúc B1024, ICP là 8, và độ rộng
của bộ nhớ là 8*8 bit Mỗi phan tử bộ nhớ có thê được thực hiện trên một khối
UltraRAM Khi ICP nhiều hơn tám, mỗi phan tử bộ nhớ trong DPUCZDX8G
cần ít nhất hai khối UltraRAM
DPUCZDXSG sử dụng khối RAM dé làm bộ nhớ mặc định Với các thiết bị
sử dụng khối RAM và UltraRAM, cấu hình số lượng UltraRAM dé quyết địnhbao nhiêu UltraRAM sé thay thé các khối RAM Số lượng UltraRAM nên đượcthiết lập nhiều hơn số lượng mà DPUCZDX8G yêu cau
42