Smart camera cũng là một phan của quá trình phát triển này và có thé được định nghĩa là một hệ thống được tích hợp thêm nhiều chức năng: truyền tải hình ảnh qua kết nối không dây, tích h
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG ĐẠI HỌC CÔNG NGHỆ THONG TIN
KHOA KỸ THUẬT MÁY TÍNH
LÊ HỮU KIÊN - 19521716 NGUYEN ĐÌNH DUC HIỂU - 19520542
KHÓA LUẬN TÓT NGHIỆP
NGHIÊN CỨU CẢI TIEN KHOI NHAN DẠNG YOLOV2 TÍCH HỢP TRÊN BOARD ULTRA96V2 CHO SMART
CAMERA
RESEARCH ON IMPROVE THE YOLOV2
IDENTIFICATION BLOCK AND INTEGRATED ON
ULTRA96V2 BOARD FOR SMART CAMERA
KY SU NGÀNH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN
TIEN SĨ NGUYEN MINH SON
TP HO CHÍ MINH, 2023
Trang 2LOI CAM ON
Lời đầu tiên, chúng em xin gửi lời cảm ơn chân thành va sâu sắc đến quý Thay
Cô đã và đang giảng dạy tại trường Dai học Công Nghệ Thông Tin — Đại Học Quốc Gia TP Hồ Chí Minh, đặc biệt là quý Thầy Cô trong Khoa Kỹ Thuật Máy Tính Nhờ
sự tận tâm và chỉ dẫn của quý Thầy Cô, chúng em đã có cơ hội tiếp thu và vận dụng
những kiến thức quý giá vào quá trình nghiên cứu khóa luận tốt nghiệp cũng như chuyên ngành mà chúng em đang theo đuôi.
Đặc biệt, chúng em xin chân thành cảm ơn thầy Tiến sĩ Nguyễn Minh Sơn đã ướng dẫn nhóm rat tận tình trong suốt quá trình thực hiện đề tài, hỗ trợ và cung cấp
cho chúng em nhiều kiến thức chuyên môn quý báu để chúng em có thể hoàn thành
hoá luận Đồng thời, chúng em cũng xin chân thành gửi lời cảm ơn đến các anh chị,
ạn bè trong khoa, những người đã luôn quan tâm, giúp đỡ cho nhóm trong suốt quá
trình thực hiện nghiên cứu này.
Chúng con cũng xin cảm ơn gia đình đã luôn tin tưởng, tạo điều kiện và ủng
hộ chúng con về rất nhiều về mặt tỉnh thần cũng như thẻ chất trong suốt khoảng thời gian chúng con thực hiện đề tài khoá luận này.
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của sinh viên nên trong báo cáo này chúng em không thé tránh khỏi những thiếu sót Chúng em rất
mong nhận được sự đóng góp ý kiến của quý thầy cô dé chúng em được bổ sung,
nâng cao kiến thức của mình hơn.
Một lần nữa, chúng em xin chân thành cảm ơn!
Thành phố Hồ Chí Minh, ngày 18 tháng 07 năm 2023
Nhóm sinh viên thực hiện
Lê Hữu Kiên Nguyễn Đình Đức Hiếu
Trang 3MỤC LỤC
Chương I GIỚI THIỆU DE TÀI -ce<©2c+eeeEEExeererrxeerrrrreeere 2 1.1 Lý do chọn đề tài -c-e-<©+vrerkxeseettrrrrkkreersrtrrkkrddde 2
1.2 Một số nghiên cứu liên quan s se sss2+sseevzvsseecre 3
1.2.1 Nghiên cứu ngoài nưỚC -¿- 5+ c5 tt re rrey 3 1.2.2 Nghiên cứu trong nue - - - ¿+ St+k*k*kEEEEETk HH1 tr yy 3
1.43 Mục tiêu đề tài
1.4 Giới hạn đề tài -ce<ccccveseecrreeseerrressetrrsesrerrreserii 6
1.5 Kết quả mong muốn
1.6 _ Bố cục luận văn -ec©c+ee©©-eecc++eterkeetrvestErksterkestrreserrsserree 7 Chương 2 CƠ SỞ LÝ THUYÉT -cccces++ccc+cveeeesetttrrreeeersrrrkr 9
2.1 Field Programmable Gate Array (EFPGA) -<-<ceseseseseeeeeesesee 9
2.1.1 Định nghĩa SE Hung 9
2.1.2 Kiến trúc tổng quất -.¿ 2+++22E+++++2EE+vrretrkkxrrsrrrxrrrrrrkrcree 9 2.1.3 Ưu và nhược điểm của FPGA -cccccccccccrrrrrrrrrrrrrrrrrrrie 1
2.2 Hệ thống SoC (System on Chip) « ccc.sssccsssscsssecssseessseccsssccsssecsssecsssecessees 12 2.2.1 Định nghĩa hệ thống SOC scccscsssssesesssssesssssseeesssseesesssseceessssessessseeeesssees 2 2.2.2 Câu trúc phần cứng của một SoC -2c++z+222vvvvvrrzrrrrrr 2 2.2.3 Ưu và nhược điểm của hệ thống SOC c¿©csccz+ccsscee 5
2.3 Hệ thống nhúng -e esvcvvvserervreserrrrrsssrrrre 15
2.3.1 Định nghĩa cscs 6 SE t2 E1 11121 010101 2110111 re 5
2.3.2 Phần mềm của một hệ thống nhúng -¿-z++ 6 2.3.3 Phần cứng của một hệ thống nhúng -z++22+zz+22+scee 6
2.3.4 Đặc điểm của một hệ thông nhúng -¿¿2z++22++z+22+zce2 7
2.3.5 Ưu và nhược điểm của hệ thống nhúng -2 8
2.4 Thuật toán YOLOV 2 cssssssssssssseessseessssssessssssssssssessssessssssssessessssessees 19 2.4.1 Batch normaliZatiOn - esse eeeesesessseeescscsneessseessesneseseseeeeees 9
Trang 42.4.2 High resolution €ÌaSSIIeT - + St tk uy 19
2.4.3 Kiến trúc Anchor BOX 2:+22222+ztS2CvSrrttErkvrrrrrrrrrrrrrrrree 20
2.4.4 K-means cÏus(€TIng ¿- 5 55t S*2**xxttreekexekerrrerrree 20
2.4.5 Direction location prediCtION ¿c6 St 20 2.4.6 Fine-grained ÍeatUe +- + St tt 12101 11121 re 21 2.4.7 Multi-scale training cv ngư nườ 22
2.4.8 Light-weight backbone «kh ngư 22
2.5 Smart CAMELA sccccecesesseeresesscecseserscscecsesesecseseseseseseseseseensnsaeseseeeeeneeeee 23 2.6 OpenCYV HH TT TT Tư 0000 n0 g0 26
2.7 EFImpeg 5s HT HH nung 27 2.7.1 Các công cụ xử lý audio, video của FFmpeg ‹ -«-s++<+ 28
2.7.2 Các gói thư viện của FÏmpeg - 5-5555 5+2++ccccxereerrerrrre 28
2.8 SSH Tunnel
2.9 Sfreaming video - s5 5< nh nung 00 150 30
Chương 3 THIET KE HE THONG VÀ HIỆN THUC SMARTCAMERA 32 3.1 Hệ thống Zynq UltraScale+ MPSoC c-‹s<<cccveceee 32
3.2 Board Ultra96-V2 cc HH HH 000110100100 ge 34
3.3 BusAXI
3.4 Thiết kế tổng quát của hệ thống -«-escccvcesecevve 36
3.5 Tích hợp IP DPU trên Vivado 2()19.2 -scsscseessssesessrs 39
3.6 Hiện thực Smart camera 5-5 5 S5 S213 41
3.6.1 Xây dựng hệ điều hành linux dé boot lên board Ultra96-V2 41 3.6.2 Xây dựng chương trình thực thi bằng công cu Vitis 2019.2 47
3.7 Xây dựng luồng streaming cho Smart Camera 48
3.7.1 Streaming với camera hình ảnh thường - 555 ++c+<<++ 49
3.7.2 Streaming camera hình ảnh xử lý YOLOV?2 « -+++++5« 50
Trang 53.8 Sử dụng ZoneMinder để theo dõi camera -ccccee 51 Chương 4 THUC NGHIEM VA DANH GIA KET QUẢ 55
4.1 Kịch ban thực nghiệm và phương pháp đánh giá - 55 4.1.1 Kich bản thực nghiệm - - - «5 5k tế 55 4.1.2 Phương pháp đánh giá +55 tt Hư 55
4.2 Kết quả thực nghiệm -s-esvcvvveetervreserrrvrsserrree 56 4.2.1 Kết quả nhận diện -2¿-©22222222E++t22EEE+tEEEEEvrrttrrrrrrrrrrrrrrrr 56
4.2.2 Kết quả thực nghiệm khi streaming trong phạm vi Internet 58
4.2.3 Kết quả thực nghiệm kết nối Ethernet -ccc -++ 63 4.3 Đánh giá hệ thống
4.4 Đóng gói sản phẩm cee©eecc©c+esevcEvveeeecrveseerrrressrrree 66
4.4.1 Những linh kiện cần đùng -2-2222ccceScc2cvvvvvrrrrrrrrrrrrrerrerrre 66
4.4.2 Đóng gói smart CaIm€Ta -¿-+55c5+S+S+sxsxexereretererrrersred 66
Chương 5 KET LUẬN VA HƯỚNG PHAT TRIẺN - 68
5.1 _ Kết quả dat được ceccccceesecccveeeeerrxessrrrrsessrrree 68
5.2 Hướng phát triển của đề tài «c-eseccsseerssserxeserrssee 71
Trang 6DANH MỤC HÌNH ẢNH
Hình 2.1 Kiến trúc cơ bản của FPGA -ccc2ccccccvrrrrrrrrrrrrrrrrrrrrrrrrrre 10 Hình 2.2 Kiến trúc cơ bản của MOt SOC - 6 + 12th 14 Hình 2.3 Mơ hình cơ bản của một hệ thống nhúng - : ¿5+2 16
Hình 2.9 WordTree trong YOLOV2 + 5+1 1121 1E 12 912121111111 g vưy 23
Hình 2.10 Sơ dé khối của một smart came©ra 5-52 Ss22SE2E£2EE2EE2EEtExerree 23
Hình 2.11 Smart camera HANET AI CAMERA -. -5+555c+c+cscecccescsr 25
Hình 2.12 Một số cong kết nối trên smart camera 25 Hình 2.13 Quy trình xử lý video bằng FFmpeg
Hình 2.14 Tổng quan về SSH Tunneling
Hình 2.15 Kiến trúc cơ bản của streaming video.
Hình 3.1 Các khối trong Zynq UltraScale+ MPSoC 32 Hình 3.2 Các thành phần chính trên board Ultra96-V2 -z-sz£+ 34
Hình 3.3 Sơ đồ khối của board Ultra96-V2 e2
Hình 3.4 Kiến trúc tổng quát của hệ thơng smart camera - :-:- Ữ
Hình 3.5 Quy trình streaming của nhĩm tác giả tTƯỚC -+-+-+-++-++ 38
Hình 3.6 Quy trình streaming hiện tại ¿-¿- - ¿5< 5+5 k‡x‡EEkrkekerekrrkrkrkrtee 38
Hình 3.7 Sơ đồ khối SoC tích hợp IP DPU trên FPGA -.- 3Ø Hình 3.8 Kết quả sau khi generate bitstream -2z++222++z++vvzxzerrrrrseee 40
Hình 3.9 Năng lượng tiêu thụ ¿- - - + S5 E11 11010121 01 1g uư 40
Hình 3.10 Export hardware sau khi xây dựng hệ thống - 41
Hình 3.11 Config hardware desCriD(iON + Street 42
Hình 3.12 Image packaging configuratiOn - ¿-5- 5c 25+ S+2++xtxexerexexerrree 42
Hình 3.13 Boot image s€tting -‹ ¿6 + St HH1 1100101011 001g 42 Hình 3.14 USB Gadget SuppOT + 5-5252 22t 2tr tr ưư 43
Trang 7Hình 3.15 Enable Debug 'TWealks - - ¿kề ST H012 H01 01012 uy 44 Hình 3.16 Wilc module bitbake -. - - 52522222 S++t+xxerererkrkererrrrkrkrrer 44
Hình 3.17 Khai báo reserved MeMOTY 5+ +5+5++++S‡se£++t+x+xexerreexevee 45
Hình 3.18 Các file quan trọng được hình thành sau khi build Petalinux 47 Hình 3.19 Chương trình xử lý YOLOv2 trên FPGA - - - +5 cv 4
Hình 3.20 File smart_camera.elf trong thư mục sd_ card -. - s- sc++©+ 48
Hình 3.21 Mô hình streaming lên zoneminer bằng ffmpeg - - 50 Hình 3.22 Video streaming camera xử lý yolov2 bằng ffmpeg và rtsp 51
Hình 3.23 Giao diện Web của ứng dụng Zoneminder - - +5 2 s= 5m Hình 3.24 Giao diện đăng nhập vào Zoneminder - + +++ss+++x+rzxece 51
Hình 3.25 Giao diện chính của ứng dung Zoneminder - - + 5 +52 <s= 52
Hình 3.26 Lựa chọn ngôn ngữ tiếng việt được thêm vào hệ thống "5D 52
Hình 3.27 Phần mềm đã được việt hóa thành công „53
Hình 3.28 Cài đặt màn hình của Zoneminder (chung) 53
Hinh 3.29 Cai dat man hinh cua Zoneminder (nguồn) “ „54
Hình 4.1 Mô hình smart camera 5Ó
Hình 4.2 Kết quả nhận diện của Smart Camera Ultra96-V2 257
Hinh 4.3 Thoi gian va đối tượng được nhận diện - - ¿5-5 <+sec+c++xscee 57
Hình 4.4 Độ trễ với độ phân giải 1920x 1080 - cccccccccvverrerrrvrrerrrrrrrrrr 58 Hình 4.5 Độ trễ với độ phân giải 1280X720 ccccssesccssssescessseescessseescesnseseesnneceenneeees 59 Hình 4.6 Độ trễ với độ phân giải 640x480 co: 55ccccccttrirrtrtrrrrrrrrrrrer 59 Hình 4.7 Độ trễ với độ phân giải 1920x1080 với camera xử lý yolov2 60 Hình 4.8 Độ trễ với độ phân giải 1280x720 với camera xử lý yolov2 60
Hình 4.9 Độ trễ với độ phân giải 640x480 với camera xử lý yolov2 - 61 Hình 4.10 Kết nói Ethernet với board Ultra96v2 -:ccccrrtrtrrrtrrrrrrre 63
Hình 4.11 Tốc độ khi stream bằng wifi không ổn định - 64 Hình 4.12 Tốc độ khi stream bằng Ethernet khá ồn định . - 64
Hình 4.13 Các thành phần linh kiện được đặt vào hộp - e-«cx-c 66
Hình 4.14 Smart camera được đóng hộp hoàn chỉnh - - + + +x+c+sc++ 66
Trang 8DANH MỤC BẢNG BIÊU
Bang 2.1 Các thư viện của FEmpeg - - + +55 ‡EEekkkerrrkrkrkereree 29 Bang 3.1 Các thư viện cài đặt trên Petalinux c-ccccccccerereerrreerree 45
Bang 4.1 Độ chính xác khi nhận diện người ở các độ phân giải khác nhau 57
Bảng 4.2 Tốc độ nhận diện hình ảnh ở các độ phân giải khác nhau 58
Bang 4.3 Kết qua streaming hình ảnh thuOng ccccscssscsssssssesscsssseessssseeeessseesesssseeee 61 Bảng 4.4 Kết qua streaming hình ảnh xử lý YOIOV2 ccccsssssssssssssesssssssecssssecscesssecee 62 Bảng 4.5 Kết quả dựa trên khoảng cách kết nối khi streaming camera hình ảnh
Bảng 4.6 Kết quả dựa trên khoảng cách kết nối khi streaming camera hình ảnh xử lý
Yolov2 63
Bảng 4.7 Danh sách linh kiện Ĩ6
Bảng 5.1 Tổng hợp so sánh với nghiên cứu trước[7] 69 Bang 5.2 Kết qua so sánh về FPS và độ trễ trung bình khi streaming thường 69 Bảng 5.3 Kết quả so sánh về FPS và độ trễ trung bình khi streaming yolov2 70
Bang 5.4 Kết quả về FPS và độ trễ trung bình dựa trên khoảng cách kết nồi khi
streaming Xử lý yỌOV2 - - ¿©++t2%92t 2221212123921 212121121212121111111211.101111 1 re 70
Trang 9DANH MỤC TU VIET TAT
Từ viết tắt Tên đầy đủ AHB Advanced High performance Bus
AI Artificial Intelligence
ALU Arithmetic Logic Unit
APB Advanced Peripheral Bus
APU Application Processing Unit
ARM Advance RISC Machines
ASIC Application Specific Integrated Circuit
AXI Advanced eXtensible Interface
CCl Cache Coherent Interconnect
CNN Convolutional Neural Network
Core SW Core SoftWare
CPU Central Processing Unit
DDR4 Double Data Rate fourth generation
DMA Direct Memory Access
DRAM Dynamic Random Access Memory
DSP Digital Signal Processor
DPU Deep Learning Processing Unit
FPGA Field-Programmable Gate Array
FPS Frame Per Second
GPU Graphics Processing Unit
HDL Hardware Description Language
HLS High Level Synthesis
HOG Histogram of Oriented Gradients.
Trang 10LPDDR4 Low Power Double Data Rate fourth generation LUT Look Up Table
OpenCV Open source Computer Vision library
PL Programmable Logic
PS Processing System
RAM Random Access Memory
RGB Red Green Blue
RISC-V Reduce Instruction Set Computer version 5
ROM Read Only Memory
RTL Register Transfer Level
SDIO Secure Digital Input Out
SoC System on Chip
UDP User Datagram Protocol
UART Universal Asynchronous Receiver Transmitter
YOLO You Only Look Once
Trang 11TÓM TÁT KHÓA LUẬN
Ngày nay, những tiến bộ trong công nghệ vi điện tử đã giúp con người có thể tích hợp được nhiều hệ thống phức tạp trong một thiết bị duy nhất Smart camera cũng là một phan của quá trình phát triển này và có thé được định nghĩa là một hệ
thống được tích hợp thêm nhiều chức năng: truyền tải hình ảnh qua kết nối không
dây, tích hợp thuật toán xử lý ảnh Việc xây dựng smart camera có thé dựa trên nhiều nền tảng như: FPGA, Embedded system, System on Chip Mỗi công nghệ đều có ưu
nhược điểm đặc trưng của chúng, đã và đang được nhiều nhóm tác giả, trường học, các công ty lớn cả trong và ngoài nước nghiên cứu, phát triển Các yếu tố cần lưu ý
khi thiết kế smart camera có thể là tốc độ thu nhận và hiển thị, độ chính xác, năng lượng tiêu tốn và giá thành sản phẩm.
Trong dé tài này, nhóm đặc biệt quan tâm đến tốc độ nhận diện của hệ thống
smart camera Nhóm sẽ sử dụng IP DPU (Deep Learning Processing Unit) - là một
khối xử lý đặc biệt được tối ưu hóa dé thực hiện các tác vụ học sâu hiệu quả và nhanh
chóng Nó cung cấp khả năng tích hợp và tăng tốc xử lý cho các mô hình học sâu phd biến như YOLO (You Only Look Once), ResNet (Residual Network), và nhiều mô
hình khác dé cải thiện tốc độ nhận diện hình anh của hệ thống smart camera Đồng
thời nhóm sẽ video streaming hình ảnh lên web server với độ trễ thấp nhằm thực hiện kiểm tra và đánh giá kết quả Người dùng có thể xem stream trên web server thông
qua kết nối wifi.
Nhóm đề xuất thiết kế hệ thống smart camera trên bộ công cụ phần mềm
Vivado phiên bản 2019.2 của Xilinx (Gồm có Vivado Design Suite, Petalinux và Vitis ), sử dụng board Ultra96-V2 trên nền tảng Zynq UltraScale+ MPSoC của nhà
phát hành Avnet Tan số hoạt động mong muốn của hệ thông đạt 100MHz.
Trang 12Chuong 1 GIỚI THIỆU ĐÈ TAI
1.1 Lý do chọn đề tài
Kể từ những năm 1990, smart camera đã thu hút được nhiều sự quan tâm từ cácnhóm nghiên cứu, trường đại học và nhiều ngành công nghiệp, đặc biệt là trong cácngành sản xuất và giám sát sử dụng video Điều này có được là do smart camera manglại những lợi thế khác biệt so với máy ảnh thông thường Nó không chỉ thực hiện việcchụp ảnh thông thường mà còn phân tích hình ảnh dé nhận dạng và đưa ra thông tin
về đối tượng nào đó trong ảnh hoặc có thê chỉnh sửa ảnh trực tiếp mà không cần sự
can thiệp của con người tất cả đều được tích hợp trong một hệ thống nhỏ gọn Sựphổ biến ngảy càng tăng của smart camera được xây dựng dựa trên những tiễn bộ đạt
được trong công nghệ bán dẫn, kỹ thuật thị giác máy tính và được thúc đây bởi cácyếu tố kinh tế - xã hội như độ an toàn, bảo mật giúp tăng năng suất và tiết kiệm chiphí Ngày nay, smart camera được sử dụng trong nhiều lĩnh vực ứng dụng, đặc biệt
là trong giám sát an ninh, thị giác máy trong công nghiệp, robot, nhà thông minh
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 có khả năng thu được hình ảnh với độ phân giải cao, sau
đó truyền đi thông qua một đường truyền ở khoảng cách xa mà ở thiết bị cuối nhậnđược hình ảnh với độ trễ không quá cao là một yếu tố khá khó khăn và thu hút nhiều
sự quan tâm đặc biệt từ các tổ chức thiết kế, nghiên cứu Do đó trong đề tài này, nhómmuốn nghiên cứu và cải tiễn các vấn đề ảnh hưởng đến tốc độ nhận diện, tốc độstreaming của smart camera Hệ thống smart camera có thé truyền hình anh streamingbao gồm hai chế độ: camera hình ảnh thường và camera xử lý Yolov2 nhận dạng vậtthể thông qua Wifi Access Point, với một độ trễ thấp và có khả năng đáp ứng khung
hình full hd.
Trang 131.2 Một số nghiên cứu liên quan
1.2.1 Nghiên cứu ngoài nước
Hiện nay, Smart Camera luôn được các trường đại học, công ty, tập đoàn
lớn ưu tiên nghiên cứu và phát triển Vì thế, nhóm có thé dé dang tìm được cácbài báo khoa học về vấn đề này trên internet Một số bài báo khoa học gần đây
như:
s* Bài báo [1] “Object Tracking on FPGA-based Smart Camera using Local
Oriented Energy and Phase Feature’ của nhóm tác gia Ehsan Norouznezhad, Abbas Bigdeli, Adam Postula, Brian C Lovell vào năm
2010 sử dung module camera Micron MT9P001 trên FPGA Xilinx
Virtex-5 MLVirtex-506 ap dung thuat toan Histogram da thu dugc anh voi tốc độ 30 FPS
và độ phân giải 640 x 480 Ưu điểm của hệ thống này là nó có thé phân
loại được nhiều đối tượng khi thực hiện hoạt động theo dõi, giám sát bao
gồm màu sắc, hình dạng, kết câu và chuyền động Nhược điểm là cần nhiềuthời gian tính toán dé có thé xác định được đối tượng đang cần theo dõi
>
> °® Bai báo [2] “DreamCam: A modular FPGA-based smart camera
architecture” cua nhóm tác giả Merwan Birem, Francois Berry vào nam
2014 sử dung module camera MT9M031, EV76C560 trên FPGA Altera
Cyclone III đã thu được ảnh với tốc độ 42 FPS và độ phân giải 800 x 1024
Ưu điểm của hệ thống này là khả năng tùy biến kích thước của hình ảnh
đầu vào, điều chỉnh được số điểm ảnh cần thiết và nó sẽ tự biên dịch và
tong hợp thành một hệ thống mới Nhược điểm là mat nhiều bước và nhiều
thời gian dé có thể xây dựng hệ thống, thiếu các tính năng theo dõi, nhận
diện.
1.2.2 Nghiên cứu trong nước
+
* Luận văn tốt nghiệp [3] “The Research And Implementation Of CNN
Algorithm On Zedboard Zynq-7000” của nhóm sinh viên Phan Tuấn
Thanh, Vũ Hoàng Hy năm 2020 sử dụng thuật toán YOLOv2 trên FPGA
Trang 14,
>
Zedboard Zynq-7000 Ưu điểm của thuật toán này là độ chính xác cao, có
thể nhận diện được nhiều vật thé khác nhau và tốc độ xử lý khá nhanh sovới một số thuật toán xử lý ảnh khác Nhược điểm của đề tài này là chưathê xử lý hình ảnh thu được trực tiếp từ camera mà chỉ sử dụng hình ảnh
được lưu sẵn trong thẻ SD.
Luận văn tốt nghiệp [4] “Thiết kế và hiện thực IP camera trên Zynq-7000”
của sinh viên Chung Vĩnh Kiện năm 2019 sử dụng camera Raspberry PI
trên FPGA Zynq-7000 dé thu thập hình anh và truyền hình ảnh đến ngườixem qua kết nối Ethernet Ưu điểm của hệ thống là camera hỗ trợ độ phân
giải cao 1280 x 720 với tốc độ khung hình khi streaming ổn định ở mức
5.5-6 FPS Nhược điểm là đề tài này chưa thể tích hợp thuật toán xử lý AIvào dé nhận dạng được người có trong khung ảnh
Luận văn tốt nghiệp [5] “Real-time face detection and tracking on FPGA
DE10-Nano” của nhóm sinh viên Phan Truong Khang, La Ngoc Le năm
2020 sử dung module camera OV7670 trên FPGA DE10-Nano với thuật
toán Viola-Jones Ưu điểm của thuật toán này là khả năng tinh toán dé
dàng, tốc độ xử lý khá nhanh (vi dit liệu xử lý là 1 kênh màu grayscale)
Nhược điểm là độ chính xác chưa cao (40-80%) Độ phân giải giảm xuống
chỉ còn 320 x 420 pixel Dữ liệu màu có thê gây mất mát (vì nhóm tác giả
sử dụng ảnh màu chuyên sang ảnh xám grayscale, sau đó chạỹ thuật toánnhận dạng trên di liệu ảnh xám, rồi mới lay két quả nhận dạng từ anh xám
chuyên lại ảnh màu gây ra sai sót dữ liệu).
Luận văn tốt nghiệp [6] “Thiết kế và tích hợp smart camera trên SoC
Ultra96-V2” của nhóm sinh viên Bùi Nguyễn Phát, Lê Minh Huy năm
2021 sử dung smart camera trên SoC Ultra96-V2 áp dụng thuật toán
YOLOv2 Ưu điểm của đề tài này đã tích hợp được thuật toán YOLOv2 dé
xử lý hình ảnh lay từ smart camera Hệ thong đã nhận diện được vật thé
với độ chính xác cao (64 - 96%) ở độ phân giải 1280x960, với độ trễ trung
Trang 15bình khi streaming P2P là 19.26 giây Ở đây nhóm tác giả đã sử dụng bộYOLOv2 có sẵn dé tích hợp lên kiến trúc SoC của smart camera và khôngquan tâm đến độ trễ của khối AI này Vì thế nhóm muốn kế thừa bộYOLOv2 của nhóm tác giả này để phục vụ mục đích nghiên cứu và cải
tiên.
*
>+ Luan văn tốt nghiệp [7] “Tối uu streaming cho bộ tăng tốc AI tích hợp trên
Ultra96-V2 cho smart camera” của nhóm sinh viên Võ Phúc Vinh Khang,
Lê Hoài năm 2023 sử dung smart camera trên SoC Ultra96-V2 áp dụng
thuật toán YOLOv2 Ưu điểm của đề tài này là: Thời gian trễ trên thiết bịnhận là khoảng 3-5 giây đối với straminh camera hình ảnh thường và đối
với streaming camera hình ảnh xử lý YOLOv2 là khoảng 22.7 giây với độ
phân giải full HD 1920 x 1080 Tuy nhiên nhóm vẫn muốn tiếp tục cải tiễn
dé giảm thời gian trễ này xuống thấp nhất có thê
1.3 Mục tiêu đề tài
Ở luận văn này, nhóm tập trung vào việc tìm hiệu các phương pháp và côngnghệ giúp tăng tốc quá trình nhận diên vật thể của smart camera tích hợp trên hệ thongSoC (Board Ultra96-V2) Đồng thời nhóm sé streaming hình ảnh lên web server vớitốc độ cao thông qua wifi dé thuận tiện cho việc theo đõi và đánh giá kết quả Dé đáp
ứng được các yêu câu như trên, nhóm đê ra những mục tiêu cụ thê sau:
s* Nhóm sé sử dụng IP DPU (Deep Learning Processing Unit) được nhà sản xuất
Xilinx cung cấp IP DPU là một khối xử lý đặc biệt được tối ưu hóa dé thực
hiện các tác vụ học sâu hiệu quả và nhanh chóng Nó cung cấp khả năng tích
hợp và tăng tốc xử lý cho các mô hình học sâu phổ biến như YOLO (You OnlyLook Once), ResNet (Residual Network), và nhiều mô hình khác
s* Tiếp theo nhóm tìm hiểu board Ultra96-V2 của Avnet phân phối dựa trên hệ
thống Zynq UltraScale+ MPSoC do Xilinx phát hành Nhóm tìm hiểu thêm bộ
Trang 16công cụ Xilinx Vivado dé dùng cho việc tổng hợp IP DPU vào hệ thống SoC
trên board Ultra96-V2 kết nối với USB Camera và module Wi-Fi
* Kế tiếp nhóm tìm hiểu và xây dựng hệ điều hành Linux, sau đó nạp lên board
Ultra96-V2 bang nên tảng Petalinux của Xilinx phát hành dé điều khiến hoạtđộng của cả hệ thống
# Nhóm tìm hiểu tiếp các thư viện hỗ trợ như GStreamer, OpenCV và một sỐ
phương thức lập trình Socket đề thực hiện truyền hình ảnh streaming camerathường hay camera xử lý YOLOv2 thông qua mạng kết nối Wifi
# Cuối cùng nhóm viết các chương trình phần mềm bằng Vitis và nạp lên hệ
điều hành Linux trên board Ultra96-V2 dé điều khiển hoạt động hệ thống Nhóm sẽ thực hiện kiểm tra, đánh giá hệ thống, so sánh và đưa ra các kết luận
dựa trên các kết quả thử nghiệm
1.4 Giới hạn đề tài
Nhóm sẽ cải tiên hệ thong smart camera giúp giảm thời gian nhận diện vật thé
từ 1.4 giây của nhóm tác giả trước[7] xuống khoảng 0.8-1 giây cho 1 hình ảnh, đồngthời cải tiến cả tốc độ video streaming camera hình ảnh xử lý yolov2 Nhóm sẽ thực
hiện video streaming ở các độ phân giải khác nhau như là 1080p, 720p, 480p, 360p
lên web server.
1.5 Kết quả mong muốn
Về tốc độ nhận diện nhóm mong muốn thời gian nhận diện vật thể của smartcamera nhỏ hơn 1 giây cho 1 hình ảnh Về tốc độ streaming camera hình ảnh thường
có thé đạt 25fps, camera hình ảnh xử lý YOLOv2 có thé đạt 1 fps đối với độ phângiải full HD Người dùng có thể xem trực tiếp kết quả bằng cách truy cập vào địa chỉ
web trên trình duyệt, hoặc dùng công cụ hỗ trợ xem video như VLC Media Player.
Trang 171.6 Bo cục luận văn
Báo cáo này được chia làm năm chương, mỗi chương có nội dung được trình
bày như sau:
Chương 1: Giới thiệu đề tài
Chương đầu tiên sẽ giới thiệu tổng quan về đề tài khóa luận, lý do nhóm chọn
đề tài này, mục tiêu đề ra của nhóm, những giới hạn của đề tài và kết quả mà nhómmong muốn đạt được
Chương 2: Cơ sở lý thuyết
Chương nay trình bày những cơ sở lý thuyết được sử dụng có liên quan đếnnội dung nghiên cứu của đề tài, những thông tin này dựa vào các nguồn tài liệu nhómtìm kiếm được trên Internet, tham khảo các tài liệu có sẵn trên website của khoaKTMT cũng như những góp ý của các thầy cô, anh chị bao gồm: kiến thức chung vềField Programmable Gate Array (FPGA), Hệ thống SoC (System on Chip), Hệ thống
nhúng, Thuật toán YOLOv2, OpenCV, SSH Tunnel, Streaming video.
Chương 3: Thiết kế hệ thống và hiện thực smart camera
Dựa vào những kiến thức về cơ sở lý thuyết đã tìm hiểu được ở Chương 2 thì
ở Chương 3 này nhóm sẽ đề xuất một mô hình hệ thống một cách chỉ tiết của khóaluận Giải thích nguyên lý hoạt động của cả hệ thống
Chương 4: Thực nghiệm và đánh giá kết quả
Sau khi đã xây dựng được hệ thống, nhóm tiến hành các bước chạy thử, thực
nghiệm thu được các kết quả sau đó thực hiện việc đánh giá, so sánh với mục tiêu banđầu của đề tài cũng như so sánh với kết quả thực nghiệm của đề tài trước
Chương 5: Kết luận và hướng phát triểnChương cuối 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 đã hoàn thành, những kết quả và thành tích đạt được Đồng thời chương này
Trang 18nhóm sẽ đưa ra đề xuất cho những hướng phát triển tiếp theo của đề tài trong tương
lai.
Trang 19Chuong 2 CƠ SỞ LÝ THUYET
2.1 Field Programmable Gate Array (FPGA)
2.1.1 Dinh nghĩa
FPGA là một loại mạch tích hợp cỡ lớn dùng cấu trúc mảng phan tử logic mà
người dùng có thể lập trình được Chữ field ở đây muốn nói đến khả năng tái lập trình
"bên ngoài" của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp
của nhà máy bán dẫn Vi mạch FPGA được cấu thành từ các bộ phận:
e Các khối logic cơ bản lập trình được (logic block)
e Hệ thống mạch liên kết lập trình được
e Khối vào ra (I/O Pads)
e Phan tử thiết kế san khác như DSP slice, RAM, ROM, nhân vi xử lý
FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dung ASIC,
nhưng nếu so sánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trênthư viện logic thì FPGA không đạt được mức độ tối ưu như những loại này và cònhạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp Tuy vậy FPGA ưuviệt hơn ở chỗ có thé tái cau trúc lại khi đang sử dụng, công đoạn thiết kế đơn giản
do vậy chi phí giảm, rút ngắn thời gian đưa sản phâm vào sử dụng
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ
mô tả phần cứng HDL như VHDL, Verilog, AHDL Các hãng sản xuất FPGA lớnnhư Xilinx, Altera thường cung cấp các gói phần mềm và thiết bị phụ trợ cho quátrình thiết kế Ngoài ra cũng có một số hãng thứ ba cung cấp các gói phần mềm kiêunày như Synopsys, Synplify Các gói phần mềm này có khả năng thực hiện tất cả
các bước của toàn bộ quy trình thiết kế IC chuẩn với đầu vào là mã thiết kế trên HDL
(còn gọi là mã RTL).
2.1.2 Kiến trúc tổng quát
Kiến trúc cơ bản của FPGA gồm 3 thành phan chính sau: Khối I/O (hay gọi làcác pin FPGA), khối kết nối (Interconnection), các khối logic cấu hình (Logic Blocks
Trang 20hoặc Configurable Logic Blocks - CLB) Các khối CLB được tổ chức sắp xếp theo
mảng với 2 hướng doc và ngang như Hình 2.1.
là nguồn tài nguyên logic chính tạo nên các mạch logic đồng bộ lẫn không đồng bộ
Một CLB cơ bản gồm một mạch tổ hợp có thê lập trình (còn gọi là LUT), một
Flip-Flop hoặc một chốt (latch) LUT (Look Up Table) là khối logic có thé thực hiện bat
kì hàm logic nào từ 4 đầu vào (số đầu vào này sẽ tùy thuộc vào từng dòng chip củamỗi hãng) Kết quả của hàm này tùy vào mục đích mà gửi ra ngoài khối logic trựctiếp hay thông qua phần tử nhớ flip-flop Ngoài khối logic cơ bản đó, nhiều chipFPGA hiện nay còn có một hỗn hợp các khối khác nhau, một số trong đó chỉ được
dùng cho các chức năng cụ thé, chang hạn như các khối bộ nhớ chuyên dụng, các bộ
nhân (multipliers) hoặc các bộ ghép kênh (multiplexers) Tắt nhiên, cấu hình bộ nhớ
được sử dụng trên tat cả các khối logic được dùng dé điều khiển các chức năng cụ thé
của mỗi phân tử bên trong khối đó.
10
Trang 21Khối kết nối (Interconnections): dùng để liên kết các khối logic và I/O lại vớinhau dé tạo thành một thiết kế hoàn chỉnh Mạng liên kết trong FPGA được cau thành
từ các đường kết nối theo hai phương ngang và đứng Tùy theo từng loại FPGA màcác đường kết nối được chia thành các nhóm khác nhau Các đường kết nỗi được nốivới nhau thông qua các khối chuyển mạch lập trình được (programmable switch).Trong mỗi khối chuyền mạch chứa một số lượng nút chuyền lập trình được đảm bảo
cho các dạng liên kết phức tạp khác nhau
Khối I/O: cung cấp giao tiếp giữa các khối logic và kiến trúc định tuyến đếncác thành phần bên ngoài Một trong những vấn đề quan trọng nhất trong thiết kế kiến
trúc I/O là việc lựa chọn các tiêu chuẩn điện áp cung cấp và điện áp tham chiếu sẽ
được hỗ trợ Số lượng Pin (I/O) của FPGA tương đối lớn, thường được chia ra làm 2
loại: User Pin (chân người dùng), Dedicated Pin (chân chuyên dung) User Pin: người
dùng có thé lập trình như đầu vào, đầu ra hoặc cả đầu vào — ra Mỗi pin được kết nốivới một “I/O Cell” bên trong FPGA, được cấp bởi các chân Vcc I/O (I/O power pin)
Dedicated Pin: được mã hóa cứng với một chức năng cụ thể như:
e Power Pin
¢ Configuration Pin: các pin dé cấu hình FPGA
¢ Dedicated Input hay Clock Pin: điều khién mạng lưới clock trong FPGA
e Voltage IO: cấp nguồn cho các công logic va flip-flops bên trong FPGA
Theo thời gian, các kiến trúc FPGA co ban đã được phát triển nhiều hơn thông
qua việc bố sung các khối chức năng đặc biệt có thể lập trình như bộ nhớ Block
RAMs, logic số hoc (ALU), bộ nhân, DSP-48 và thậm chí là bộ vi xử lý nhúng đượcthêm vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng Kết quả là nhiềuFPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA trước đó
2.1.3 Ưu và nhược điểm của FPGA
¢ Uu điểm:
e_ FPGA có thể được lập trình ở mức logic Do đó, nó có thể thực hiện xử lý tín
hiệu song song và nhanh hơn hệ thống nhúng
11
Trang 22e FPGA có thé được lập trình lại hoặc sử dụng lại bat kỳ lúc nào FPGA cũng
có thê được lập trình từ xa
e Phat triển FPGA rẻ hơn do các công cụ ít tốn kém hơn
Nhược điểm:
e Việc lập trình FPGA đòi hỏi kiến thức về ngôn ngữ lập trình VHDL/Verilog
cũng như các nguyên tắc cơ bản về hệ thống kỹ thuật số Việc lập trình khôngđơn giản như lập trình ngôn ngữ bậc cao C hay Python được điều khiển dựatrên bộ xử lý Hơn nữa, các kỹ sư cần học cách sử dụng các công cụ mô phỏng
đa dạng.
e Khi bất kỳ FPGA cụ thé nào được sử dụng, các kỹ sư cần sử dụng tài nguyên
có san trên FPGA Điều này sẽ hạn chế về kích thước thiết kế cũng như tàinguyên hao tốn Dé tránh tình huống như vậy, FPGA thích hợp cần được chọnngay từ đầu
2.2 Hệ thống SoC (System on Chip)
2.2.1 Định nghĩa hệ thống SoC
System on Chip là hệ thống mạch tích hợp bao gồm tat cả các thành phan cần
thiết được tích hợp trên 1 chip duy nhất Thiết kế của một hệ thống SoC thường baogồm bộ xử lý trung tâm, memory, các port cho input va output, thiết bị lưu trữ thứcấp và các ngoại vi như I2C, SPI, UART, CAN, Timers, v.v Các thiết kế SoC thườngtiêu tốn ít năng lượng và có giá thành thấp hơn các hệ thống đa chip nếu so sánh cùngmột thiết kế Ngoài ra, hệ thống don chip cũng có tính ồn định cao hơn Các ứng dụng
xây dựng trên cơ sở sử dụng các hệ thống đơn chip cũng cho giá thành thấp hơn,
không gian chiếm chỗ ít hơn Một SoC ngày nay thường có khả năng xử lý chạy rấtnhiều ứng dụng xử lý âm thanh, hình ảnh, giải mã tín hiệu,
2.2.2 Cấu trúc phần cứng của một SoC
Mỗi chip SoC có mật độ tích hợp chức năng khác nhau nhưng hầu hết cácSoC đều có các thành phần cơ bản sau đây:
12
Trang 23s* CPU (Central Processing Unit): Lõi vi xử lý là thành phần không thé thiếu
trong một SoC làm nhiệm vụ quan lý toàn bộ hoạt động chính của một SoC.
CPU đảm nhiệm luéng xử lý chính trong SoC, điều phối các hoạt động giữa
các thành phần khác trong SoC, thực thi các tính toán chính Một SoC có thể
có một hoặc nhiều lõi CPU Một số lõi CPU:
¢ Lõi CPU ARM dùng tập lệnh ARM và là sản phẩm của hãng ARM
e RISC-V là các lõi CPU phát triển trên tập lệnh mở và miễn phí RISC-V
e SH (SuperH) dùng tập lệnh RISC được triển bởi Hitachi và nay là sản phẩm
của Renesas.
D>
>~ Bus hệ thong (System BUS): Bus hé thong là có nhiệm vụ kết nối thông suốt
các thành phần chức năng khác nhau trong vi xử lý Bus hệ thống giống nhưnhững con đường đề vận chuyền dữ liệu giữa các thành phần trong SoC Một
số cau trúc bus hệ thống:
e AMBA (AXL AHB, APB) là chuẩn bus phát triển bởi ARM.
e CoreConnect là chuan bus phát triển bởi IBM
e Avalon là chuẩn bus phát triển bởi Altera, hiện nay đã thuộc Intel
e STBus là chuẩn bus phát triển bởi STMicroelectronic
e Wishbone là chuân bus phát triển bởi Silicore Corporation, hiện nay đã
được công bố miễn phí trên OpenCores
> >~ Bộ nhớ (Memory): Bộ nhớ trong một SoC gọi là bộ nhớ nội dé phan biét voi
bộ nhớ nằm ngoài SoC và giao tiếp với SoC thông qua các chân (pin) điều
khiển của SoC Bộ nhớ nội này có thé là:
¢ ROM: lưu cấu hình hoặc chương trình ban đầu của SoC
e RAM: được sử dụng dé lưu thông tin hoặc giá trị tính toán trong suốt quá
trình hoạt động của SoC
,
s* Thanh phan điều khiến nội (Internal block): là thành phan chỉ điều khiển hoạt
động bên trong SoC mà không điều khién trực tiếp port nào của SoC như:
se Khối tạo clock (clock generator): Cung cấp clock cho toàn bộ các khối
chức năng trong SoC, ké cả CPU
13
Trang 24e Khối tạo Reset (reset generator): Cung cap reset cho toàn bộ các khối chức
năng trong SoC, ké cả CPU.
e Khối quản lý năng lượng (power management): Điều khiển cấp nguồn
(bật/tắt) cho các khối chức năng trong SoC
e Các khối giám sát (Monitor) là các khối có chức năng giám sát hoạt động
của SoC, kịp thời phát hiện ra các lỗi trong quá trình hoạt động để khởi
động lại một phần hoặc toàn bộ hệ thống.
s%* Ngoại vi (Peripheral): là các khối có thê lái trực tiếp các chân (pin hoặc port)
của SoC dé thực thi một chức năng điều khiển bên ngoài SoC, vi dụ như:
e UART: truyền nhận dữ liệu nối tiếp bất đồng bộ
e SegLCD: Điều khiên hiên thị trên segment LCD
e_ Video: Điều khiến camera.
e Audio: Thu phát âm thanh.
e ADC: bộ chuyên đổi tín hiệu tương tự thành tín hiệu số
Trang 252.2.3 Ưu và nhược điểm của hệ thống SoC
%* Ưu điểm:
e Su dụng cho các thiết bị điện tử có kích thước nhỏ như điện thoại, tablet
e SoC có mật độ tích hợp cao, nhiều chức năng nên việc làm phần cứng cho
sản pham sẽ đơn giản hơn, dé sản xuất hơn, chỉ phí thấp hơn, thời gian thiết
kế sản phẩm nhanh hơn Khi sản xuất với số lượng đủ lớn, giá thành sẽgiảm xuống một cách đáng kể
e Sản phẩm sử dung SoC tiết kiệm năng lượng hơn so với các sản phẩm cùng
chức năng nhưng không dùng SoC vì số lượng linh kiện lớn hơn, boardmạch làm phức tạp hơn Khi sản pham các có nhiều chức năng thi đặc điểm
này sẽ ngày càng thấy rõ hơn
s* Nhược điểm: Một loại SoC khó đáp ứng được nhu cầu của nhiều loại sản phẩm
khác nhau Chính vì vậy, mỗi hãng thiết kế và sản xuất chip đều có nhiều dòngSoC khác nhau, mỗi dòng sẽ đáp ứng một phân khúc sản phẩm nhất định vàtối ưu nhất cho phân khúc sản phẩm này Tối ưu ở đây được hiểu là số lượngchức năng mà chip được tích hợp là vừa đủ Quá nhiều chức năng sẽ khiến giáthành của chip tăng cao dẫn đến giá sản phẩm cũng tăng trong khi một vàichức năng lại không được dùng đến Quá ít chức năng thì không đáp ứng được
nhu câu ứng dụng của sản phâm
2.3 Hệ thống nhúng
2.3.1 Dinh nghĩa
Hệ thống nhúng là một loại hệ thống máy tính được thiết kế dé thực hiện một
số tác vụ như truy cập, xử lý, lưu trữ và kiểm soát đữ liệu trong các hệ thong thiét bi
điện tử khác nhau Các hệ thống nhúng là sự kết hợp giữa phan cứng va phần mềm,
ở đây phần mềm được nhúng vào phan cứng Một trong những đặc điểm quan trọng
nhất của các hệ thống này là nó chỉ cung cấp input/output trong một khoảng thời gian
giới hạn Sự hồ trợ của các hệ thông nhúng giúp cho công việc trở nên hoàn thiện và
15
Trang 26thuận tiện hơn Vì thế, các hệ thống nhúng thường được tích hợp trong rất nhiều thiết
bị từ đơn giản đến phức tạp Hình 2.3 mô tả mô hình cơ bản của một hệ thống nhúng
User Interface
Embedded Computer
Input Variables —— Software ———*> Output Variables |
Hardware
Link to Other Systems
Hình 2.3 Mô hình cơ ban của một hệ thong nhúng
2.3.2 Phần mềm của một hệ thống nhúng
Phần mềm được viết cho hệ thống nhúng được gọi là phần mềm nhúng hay
firmware Phần mém nhúng là một chương trình được viết, biên dịch trên máy tinh
và nạp vào một hệ thong khac bao gom một hoặc nhiều bộ vi xử lý đã được cài đặtsẵn một hệ điều hành, bộ nhớ ghi chép được, các công giao tiép được với các phầncứng khác Phần mềm nhúng là phần mềm tạo nên phan hôn, phan trí tuệ của các sảnphẩm nhúng Phần mềm nhúng ngày càng có giá trị cao trong các sản phẩm nhúng
2.3.3 Phần cứng của một hệ thống nhúng
Hệ thống nhúng sử dụng nền tảng phần cứng dé thực thi các hoạt động Phancứng của hệ thống nhúng được lắp ráp cùng với bộ vi xử ly/vi điều khiển Hệ thống
phần cứng này bao gồm các yếu tố như giao diện cho các dữ liệu đầu vào/đầu ra, bộ
nhớ, giao diện người dùng và bộ hiên thi dit liệu Về cơ bản, một hệ thống nhúng
thường bao gồm:
e Bộ cung cấp năng lượng
e Bộ nhớ
16
Trang 27e Đầu ra/ bảng mạch đầu ra
© Công giao tiếp nối tiếp
e SASC (System application specific circuits — Các mạch ứng dụng cho một
Output Interfacing! Driver Circuits
Hình 2.4 Phan cứng của một hệ thống nhúng
2.3.4 Đặc điểm của một hệ thống nhúng
Hệ thống nhúng được thiết kế dé thực hiện một chức năng chuyên biệt nào đó
Đây là điểm khác biệt so với các hệ thống máy tính khác như máy tính cá nhân hoặc
các siêu máy tính có thê thực hiện nhiều chức năng khác nhau với những phép tính
phức tạp Tính chuyên dụng của hệ thống nhúng giúp nâng cao khả năng sử dụng và
tiết kiệm tài nguyên cho hệ thống
17
Trang 28Tất cả các hệ thống máy tính đều có những hạn chế về các số liệu thiết kế, tài
nguyên Số liệu thiết kế là thước đo để đánh giá việc xây dựng các tính năng như độ
lớn, công suất, chỉ phí và cả hiệu năng hoạt động của hệ thống Hệ thống phải hoạt
động nhanh ở một mức độ chấp nhận được nào đó, đồng thời vẫn phải đảm bảo tiêuthụ ít năng lượng hơn dé tăng tuổi thọ của pin Một số hệ thống nhúng phải tương tácliên tục với những thay đổi trong hệ thống và tính toán các kết quả cụ thể trong thờigian thực với độ trễ cực thấp hoặc hầu như không có
Hệ thống nhúng phải được nhúng vào một vi điều khién hoặc bộ vi xử lý Hệ
thống nhúng luôn yêu cầu một bộ nhớ nên phần mềm nhúng thường được đưa trực
tiếp vào ROM Hệ thống nhúng không bắt buộc sử dụng bộ nhớ thứ cấp trên máy
tính Hệ thống nhúng phải được kết nối với các thiết bị ngoại vi dé kết hợp các thiết
bị đầu vào và đầu ra Hệ thống nhúng thường được tích hợp sẵn với phần cứng déđảm bảo tính bảo mật và hiệu suất để phần mềm nhúng trên hệ thống đó đáp ứngđược nhu cầu sử dụng với độ linh hoạt cao hơn
2.3.5 Ưu và nhược điểm của hệ thống nhúng
s* Ưu điểm:
e Đơn giản dé mang lai su sang tao cao
e Một số hệ thông nhúng không cần nhiều kết nối bên ngoài
© Có tốc độ ôn định tốt và cao
e Dễ sử dụng cho một việc cố định
e Đa năng, dễ di chuyên với kích thước nhỏ
e Độ chính xác tốt hơn trong kết qua
> * °® Nhược điêm:
e Nếu đã cài đặt và chạy những ứng dụng cụ thé, hệ thống nhúng khó có thé
nâng cấp và cải tiến về mặt phần cứng hoặc hiệu năng
e Nếu gặp sự có, cần phải cài đặt lại tat cả và sẽ khó khăn trong việc debug
dé tìm lỗi.
18
Trang 29e©_ Bộ nhớ có thé bi giới hạn, nếu hệ thống nhúng càng mạnh về CPU hoặc
GPU, giá thành sẽ tang tương ứng
2.4 Thuật toán YOLOv2
YOLOv?2 hay còn gọi là YOLO9000 đã được Joseph Redmon va Ali Farhadi
công bố và cuối năm 2017 và có mặt trong hội nghị về thị giác máy tính CVPR
(Computer Vision and Pattern Recognition) Cai tiễn chính của phiên bản này tốt hơn,
nhanh hơn, tiên tiến hơn để bắt kịp faster R-CNN (phương pháp sử dụng Region
Proposal Network) và xử lý được những hạn chế của YOLOvI
2.4.1 Batch normalization
Kỹ thuật Batch Normalization được đưa vào sau tat cả các lớp convolution củaYOLOv2 Kỹ thuật này không những giảm được thời gian huấn luyện mà còn có tácdụng tăng tính phổ quát (generalize) cho mạng Ở YOLOv2, Batch Normalizationgiúp tăng mAP lên khoảng 2% Mạng cũng không cần sử dụng thêm Dropout để tăngtinh phổ quát
2.4.2 High resolution classifier
YOLOv2 được huấn luyện với hai pha Pha đầu sẽ huấn luyện một mạngclassifier với ảnh đầu vào có kích thước nhỏ (224x224) và pha sau sẽ loại bỏ lớp fullyconnected và sử dụng mang classifier này như phần khung xương (backbone) dé huấnluyện mạng detection Ảnh đầu vào kích thước nhỏ cũng thường được sử dụng để
huấn luyện các mang classifier, sau đó sẽ được sử dụng như một pretrained model
cho phan backbone của các mang detection khác Ở pha sau, YOLOv2 sẽ finetubemạng backbone dưới ảnh đầu vào có kích thước lớn hơn là 448x448 trước tiên đểmạng hiểu được các kích thước ảnh đầu vào lớn hơn, sau đó sử dụng kết quả này déhuấn luyện cho quá trình detection Điều nay giúp tăng mAP (mean Average
Precision) của YOLOv2 lên khoảng 4%.
19
Trang 302.4.3 Kiến trúc Anchor Box
Trong YOLOv2, lớp fully connect ở g1ữa mang đã được loại bỏ, thay vào đó
tác giả đã sử dụng kiến trúc anchor box dé dự đoán các bounding box Việc dự đoán
các offset so với anchor box sẽ dễ dàng hơn nhiều so với dự đoán tọa độ của bounding
box Thay đổi này giúp giảm mAP đi một chút nhưng sẽ khiến cho recall tăng lên
2.4.4 K-means clustering
Thay vi phải chon anchor box bang tay, YOLOv2 sử dung thuật toán K-means
dé đưa ra các lựa chon anchor box tốt nhất cho mạng Việc nay giúp tao ra meanIntersection Over Union tét hon
2.4.5 Direction location prediction
YOLOvI không có các hạn chế trong việc dự đoán vi trí của bounding box.Khi các trọng số được khởi tạo ngẫu nhiên, bounding box có thé được dự đoán ở bat
kì đâu trong ảnh Điều này khiến cho mô hình không hoạt động tốt trong giai đoạnđầu của quá trình huấn luyện Vị trí của bounding box có thể ở rất xa so với vị trí của
grid cell.
YOLOv2 sử dung ham sigmoid (ø) dé hạn chế giá tri trong khoảng từ 0 đến 1,
từ đó có thê hạn chế các dự đoán bounding box ở xung quanh grid cell giúp mô hình
ồn định hơn trong quá trình huan luyện YOLOv2 đã có thêm 5% mAP khi áp dụng
phương pháp này Hình 2.5 mô tả dự đoán bounding box của YOLO.
Trang 312.4.6 Fine-grained feature
YOLOv?2 sử dung feature map 13x13 dé đưa ra các dự đoán, lớn hon feature
map 7x7 của YOLOv1 YOLOv2 kết hợp các feature map ở các tầng khác nhau dé
đưa ra dự đoán Cụ thê là kiến trúc nguyên bản của YOLOv2 kết hợp feature map26x26 lay từ đoạn gan cuối với feature map 13x13 ở cuối dé đưa ra các dự đoán Các
feature map này sẽ được ghép vào nhau (concatenate) dé tạo thành một khối sử dụngcho các dự đoán Hình 2.6 mô tả kiến trúc của YOLOv2
2x3x 1024]
Hình 2.6 Kiến trúc YOLOv2
Thông thường, việc concatenate hai feature map chỉ thực hiện được khi chúng
có cùng chiều rộng và chiều dài Và dé có thé concatenate được với nhau thì cần có
lớp Reorg Reorg là kỹ thuật tổ chức lại bộ nhớ dé biến feature map 26x26 thành13x13 với chiều sâu lớn hơn dé có thé thực hiện phép concatenate với feature map
13x13 ở cuối Hình 2.7 mô tả kỹ thuật Reorg trong YOLOv?2
21
Trang 322.4.7 Multi-scale training
Sau khi thêm kỹ thuật anchor box cho YOLOv2, input của mang được thay
đổi thành 416x416 thay vì 448x448 Tuy vậy, YOLOv2 được thiết kế chỉ gồm cáclớp convolution và pooling nên có thê thích ứng với nhiều kích thước ảnh đầu vào
khác nhau giúp tăng kha năng xử lý của YOLOv2 với da dạng kích thước ảnh.
2.4.8 Light-weight backbone
Điểm cải tiến của YOLOv2 còn phải kể đến backbone mới có tên Darknet-19.Mạng này gồm 19 lớp convolution và 5 lớp max pooling đã tạo ra tốc độ nhanh hơn
phiên bản YOLO trước Hình 2.8 mô tả Darknet- 19.
Type Filers | Size/Stride Output Convolutional 32 3x3 224 x 224 Maxpool 2x 2/2 112 x 112
Convolutional 64 3x3 112 x 112
Maxpool 2x 2/2 56 x 56 Convolutional 128 3x3 56 x 56
Convolutional 512 3x3 14 x 14 Convolutional 256 1x1 14x 14
Convolutional 512 3x3 14 x 14
Maxpool 2x2/2 7x7
Convolutional 1024 3x3 7x7 Convolutional 512 1x1 7x7
Ngoài ra, YOLOv2 con đưa ra cách kết hợp các dataset khác với ImageNet dé
có thể phát hiện nhiều class hơn Một directed graph hay còn gọi là WordTree đã
được tạo ra Dé có thé merge được các label từ tập ImageNet (1000 classes) vớiCOCO/PASCAL (100 classes) thì ta phải dựa vào WordNet để xây dựng quan hệ
giữa các class, từ đó có thể huấn luyện mạng nhận dạng các class có quan hệ với
nhau Hình 2.9 giới thiệu WordTree trong YOLOVv2.
22
Trang 33biplane jet airbus stealth golden potato _—felt sea American
fighter fern fern fern lavender twinflower
Hinh 2.9 WordTree trong YOLOv2
2.5 Smart camera
Smart camera đã được ứng dung trong công nghiệp được hon hai thập kỷ, nhưng
những tiến bộ trong công nghệ vi xử lý đã làm cho thiết bị này trở nên dễ tiếp cận vàphô biến hơn, đặc biệt là trong các lĩnh vực như giám sát và thị giác máy tính Thuậtngữ smart camera có nhiều định nghĩa khác nhau, tuy nhiên mọi người đều thốngnhất rằng một smart camera không chỉ bao gồm các cảm biến hình ảnh mà còn cóthêm một số loại chip xử lý như CPU, DSP, FPGA hoặc các thiết bị xử lý khác Sơ
đồ khối của một smart camera co bản được biểu diễn ở Hình 2.10.
Hình 2.10 So đồ khối của một smart camera
23
Trang 34Tuy nhiên, ngay cả máy ảnh kỹ thuật số thông thường cũng có sẵn một số bộ
xử lý hình ảnh để chỉnh sửa các hiệu ứng, loại bỏ các phần thừa, nhận diện khuôn
mặt, sử dụng bộ lọc hình ảnh hoặc thực hiện các tính năng xử lý ảnh khác Vì thế,
một máy ảnh bao gồm bộ xử lý cùng với cảm biến hình ảnh không được gọi là smart
camera.
Không giống với hầu hết các máy ảnh thông thường, output của smart camera
không phải là hình ảnh mà là một thông tin hoặc một lựa chọn Vì thuật toán xử lý
ảnh hoặc máy học được thực hiện trực tiếp trên smart camera nên hình ảnh không cầnphải truyền sang máy tính hoặc các thiết bị khác Thay vào đó, kết quả của quá trình
xử lý ảnh có thể được chuyên trực tiếp đến người điều khiển hoặc các thiết bị khác
trong hệ thống.
Một smart camera giống như một người đưa ra quyết định Nó thường có các
đặc điêm cơ bản sau:
s* Hiệu suất bộ xử lý: Một số loại smart camera có hiệu suất xử lý ngang bang
với khả năng xử lý của một hệ thống dựa trên máy tính cá nhân Smart camera
bao gồm các bộ xử lý có săn như DSP, PowerPC, Atom Ngoài ra còn có các
tùy chọn kết hợp như CPU và bộ đồng xử lý DSP cho một số thuật toán nhất
định.
* Kích thước: Nhiều thành phan trong smart camera được tích hợp vào một bộ
phận duy nhất, giúp giảm kích thước giá thành sản phẩm
* Cảm biến hình anh: Ban chất của smart camera vẫn là một máy ảnh, nhưng nó
không chỉ dừng lại ở việc thu nhận ảnh mà còn quét ảnh với tần số lên đến 10
kHz.
* Phan mềm: Hau hết các smart camera ngày nay đều được cài đặt các phần
mềm giúp người dùng dé dang thao tác hon trong việc xử lý ảnh
Độ bèn: Độ bền của smart camera phụ thuộc rất nhiều vào môi trường mà nó
được triển khai Nhưng các nhà sản xuất luôn trang bị một số tính năng cơ bản
giúp hạn chê hư hỏng của smart camera như chông nước, chông va đập, chông
24
Trang 35bụi Hình 2.11 giới thiệu smart camera HANET AI CAMERA của Việt Nam
có tính năng nhận diện khuôn mặt, nhận diện hình dáng người vào ban đêm,
thích hop sử dụng dé cham công nhân viên trong công ty hoặc sử dụng làm
camera an ninh.
Hình 2.11 Smart camera HANET AI CAMERA
Kha năng kết nối: Mỗi smart camera đều được trang bị các cổng giao tiếp giúpkết nối hoặc điều khién các thiết bị khác trong hệ thống, truyền nhận dữ liệu
một cách dé dang hơn Hình 2.12 giới thiệu một vài cổng kết nối I/O, cổng
Ethernet, công USB, đèn tín hiệu
Hình 2.12 Một sô công kết nôi trên smart camera
25
Trang 36Khả năng đưa ra quyết định: Ngày nay, các smart camera có thé có đủ mọi
hình dạng, kích thước và hiệu suất nhưng tất cả chúng đều có một thuộc tính chung
là khả năng xử lý ảnh và đưa ra quyết định Chính việc đưa ra quyết định làm cho
một chiếc máy ảnh bình thường trở nên thông minh hơn Ngoài ra, smart camera
còn giúp tiết kiệm chi phí, dễ tích hợp và mang lại hiệu suất cao nên nó luôn là mộtlựa chọn hàng đầu cho các ứng dụng về thị giác máy tính
2.6 OpenCV
Open Source Computer Vision Library là một tập các thư viện mã nguồn mở
dành cho thị giác máy tinh, máy học và xử lý anh OpenCV được thiết kế dé hỗ trợhiệu quả về tính toán và chuyên dùng cho các ứng dụng real-time (thời gian thực)
Nếu được viết trên C/C++ tối ưu, thư viện này có thé tận dụng được bộ xử lý đa lõi
(multi-core processing) OpenCV có một cộng đồng người dùng khá hùng hậu hoạtđộng trên khắp thế giới bởi nhu cầu cần đến nó ngày càng tăng theo xu hướng chạy
đua về sử dụng computer vision của các công ty công nghệ.
OpenCV có cấu trúc module, nghĩa là gói bao gồm một số thư viện liên kết
tinh (static libraries) hoặc thư viện liên kết động (shared libraries) Một số module
phô biên có săn như:
s* Core functionality (core) — module nhỏ gọn đê xác định câu trúc dữ liệu cơ
bản, bao gôm mảng đa chiêu dày đặc và nhiêu chức năng cơ bản được sử dụng bởi tât cả các module khác.
* +* Image Processing (imgproc) — module xử lý hình ảnh gồm cả lọc hình ảnh
tuyến tính và phi tuyến (linear and non-linear image filtering), phép biến đổi
hình học (chỉnh size, afin và warp phối cảnh, ánh xạ lại dựa trên bảng chung),
chuyên đổi không gian màu, biểu đồ, và nhiều cái khác
s* Video Analysis (video) — module phân tích video bao gồm các tinh năng ước
tính chuyền động, tách nén, và các thuật toán theo dõi vật thé
® Camera Calibration and 3D Reconstruction (calib3d) — thuật toán hình học đa
chiêu cơ bản, hiệu chuân máy ảnh single và stereo (single and stereo camera
26
Trang 37calibration), dự đoán kiểu dáng của đối tượng (object pose estimation), thuật
toán thư tín âm thanh nổi (stereo correspondence algorithms) và các yếu tố tái
tạo 3D.
» 2D Features Framework (features2d) — phát hiện các đặc tính nổi bật của bộ
nhận diện, bộ truy xuất thông SỐ, thông số đối chọi.
% Object Detection (objdetect) — phát hiện các đối tượng và mô phỏng của các
hàm được định nghĩa sẵn — predefined classes (vd: khuôn mặt, mắt, cốc, con
người, xe hoi, ).
# High-level GUI (highgui) — giao diện dé dùng dé thực hiện việc giao tiếp UI
đơn giản.
s* Video I/O (videoio) — giao điện dễ dùng dé thu và mã hóa video
“ GPU - Các thuật toán tăng tốc GPU từ các module OpenCV khác
2.7 FFmpeg
FEmpeg là một framework hàng đầu về đa phương tiện (xử lý audio, video).
Nó có thể decode (giải mã), encode (mã hóa), transcode (chuyên mã), mux (ghép
kênh), demux (phân kênh, tách kênh), stream (ví dụ như livestream trên youtube,
facebook, ), filter (lọc) và play (chạy, phát video) rất nhiều thứ mà con người hay
máy móc tạo ra.
FFmpeg hỗ trợ hầu hết các định dang Và nó khá là linh hoạt, có thé compile,run và chạy trên nhiều nền tảng như Linux, Mac OS X, Microsoft Windows, BSD,
Solaris, va ở trên nhiêu môi trường, kiên trúc khác nhau.
Hình 2.13 mô tả quy trình xử lý video bang FFmpeg Video đầu vào sẽ được
phân tách thành dữ liệu hình ảnh và dữ liệu âm thanh, trải qua các quá trình decode,
encode sau đó được gộp lại thành video hoàn chỉnh ở đầu ra
27
Trang 38Hình 2.13 Quy trình xử lý video bang FFmpeg
2.7.1 Cac công cu xử ly audio, video của FFmpeg
FFmpeg cung cấp sẵn cho người dùng những tiện ích là: ffmpeg, ffserver,
ffplay và ffprobe.
e ffmpeg: Tiện ích dựa trên command line giúp người sử dụng chuyên đôi định
dạng tệp tin (hỗ trợ rất nhiều định dạng khác nhau)
e ffserver: Server cho việc streaming.
e ffplay: Một chương trình đơn giản giúp chạy, phát video dựa trên thư viện
SDL và ffmpeg.
e ffprobe: Một chương trình đơn giản giúp phân tích việc stream các tệp tin da
phương tiện.
2.7.2 Các gói thư viện của Ffmpeg
FFmpeg có chứa các thư viện libavcodec, libavutil, libavformat, libavfilter,
libavdevice, libswscale và libswresample có thé sử dụng bởi các ứng dụng Bảng2.1 mô tả chỉ tiết các thư viện mà FFmpeg hỗ trợ
28
Trang 39Bảng 2.1 Các thư viện của FFmpeg Thư viện Mô tả
libavutil Một thư viện chứa các ham cho việc đơn giản chương trình,
bao gồm việc sinh ra số ngẫu nhiên, cấu trúc dữ liệu, chương
trình toán học, tiện ich đa phương tiện cơ bản,
libavcodec Một thư viện chứa bộ encoder (mã hóa) và decoder (giải mã)
cho audio/video.
libavformat Thư viện chứa bộ demuxer (phân kênh) và muxer (ghép kênh)
cho những định dạng đa phương tiện.
libavdevice Thư viện chứa những thiết bị đầu vào và đầu ra cho việc lây
vào hay xuất ra nội dung đa phương tiện với những phần mềmphô biến như Video4Linux, Video4Linux2, VfW, and ALSA
libavfilter Thu vién cho viéc loc videolibswscale Thư viện cho việc tối ưu hóa ảnh về co dan, mau sắc,
libswresample Thư viện cho việc tối ưu hóa về việc lay mẫu lai audio,
2.8 SSH Tunnel
Secure Shell (SSH) là một giao thức mã hoá thường được sử dụng dé truy nhập
vào các máy chủ từ xa (đặc biệt là các máy chu Linux) Hau hêt các máy chu Linux
đều được cài đặt mặc định một chương trình SSH Server như OpenSSH hay
Dropbear, sẵn sàng phục vụ các kêt nôi tới công mặc định 22 Nó cung câp một cách
dé bảo mật luồng dữ liệu của ứng dụng bằng cách sử dung port forwarding, về cơ bản
là tạo một đường ham cho bat kỳ port TCP/IP nào thông qua SSH Điều này có nghĩa
là luồng dữ liệu bên trong kết nối SSH được mã hoá dé không thé bị nghe trộm hoặc
bị chặn lại trên đường truyền.
SSH tunneling là một phương pháp vận chuyền dữ liệu mang tùy ý qua kết nốiSSH được mã hóa Nó có thé được sử dụng để thêm mã hóa cho các ứng dụng kế
29
Trang 40thừa Nó cũng có thé được sử dụng dé triển khai VPN (Mạng riêng ảo) và truy cập
các dịch vụ mạng nội bộ qua tường lửa.
Hình 2.14 thé hiện tong quan về SSH tunneling Kết nối an toàn qua mạng
không tin cậy được thiết lập giữa máy khách SSH và máy chủ SSH Kết nối SSH nàyđược mã hóa, bảo vệ tính bí mật và tính toàn vẹn, đồng thời xác thực các bên giao
tiép với nhau.
APPLICATION SERVER
SSH SERVER =>
<—=
Hình 2.14 Tổng quan về SSH Tunneling
2.9 Streaming video
Thuật ngữ Streaming video lần đầu tiên được sử dụng vào năm 1990 được mô
tả là một kỹ thuật giúp thu thập đữ liệu từ camera sau đó truyền dữ liệu video đó sang
một hoặc nhiều thiết bị nhận thông qua mạng Internet, được ứng dụng rộng rãi trongthực tế như: các phần mềm (media player, web browser, ) trên các máy khách truy
cập và cho phép xem video từ các máy chủ theo mô hình server/client.
Ngay từ khi ra đời, kỹ thuật streaming video đã được áp dụng vào các phầnmềm phục vụ nhu cầu giải trí, những ứng dụng hỗ trợ cho việc hội họp trực tuyến,giám sát an ninh, thị giác máy trong công nghiệp, robot, hệ thống nhà thông minh,
quan lý và điều khiến trong các doanh nghiệp, cơ quan, tổ chức trở nên dé dàng và
hiệu quả hơn Đặc biệt là các ứng dụng được xây dựng dựa trên các hệ thống nhúng
trên phân cứng.
Đây là kỹ thuật cho phép bat kỳ nội dung video nào được vận chuyên thôngqua mang Internet Các nội dung này có thé là chương trình TV, phim ảnh, video
30