Nhóm muốn sử dụng nên tang System on Chip dé xây dựng một hệ thống smart camera streaming hình ảnh qua kết nối không dây với độ trễ thấp và tiệm cận được với thời gian thực.. Việc áp dụn
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
NGUYEN TIEN BAO NGUYEN PHAN HOANG DUC
KHOA LUAN TOT NGHIEP
BO TANG TOC AI TICH HOP TREN ULTRA96-V2 CHO
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
NGUYEN TIEN BẢO - 18520492 NGUYEN PHAN HOANG DUC - 18520614
KHOA LUAN TOT NGHIEP
BO TANG TÓC AI TÍCH HOP TREN ULTRA96-V2 CHO
SMART CAMERA
AI ACCELERATION ON FPGA ULTRA96-V2 FOR SMART
CAMERA
KỸ SƯ NGANH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN TIEN Si NGUYEN MINH SON
TP HO CHi MINH, 2022
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 528/QD-DHCNTT
ngày 19 tháng 07 năm 2022 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LOI CAM ON
Lời đầu tiên chúng em xin gửi lời cảm ơn chân thành va sự tri ân sâu sắc với
quý thầy cô đang công tác tại trường Đại học Công Nghệ Thông Tin — Dai Hoc Quốc Gia TP Hồ Chí Minh, đặc biệt là quý thầy cô trong khoa Kỹ Thuật Máy Tính
đã tận tình giảng dạy, truyền đạt những kiến thức quý giá cho chúng em trong thời
gian qua.
Đặc biệt, chúng em xin chân thành cảm ơn thầy Tiến sĩ Nguyễn Minh Sơn đã
hướ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 dé chúng em có thé hoàn
thành khoá 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ị, bạ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 tinh than cũng như thé chat 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 04 tháng 08 năm 2022
Sinh viên thực hiện
Nguyễn Tiến Bảo Nguyễn Phan Hoàng Đức
Trang 5MỤC LỤC
Chương l GIỚI THIỆU DE TÀI -cccc:¿5222cvvvevrtrrrrrrrecee 2 1.1 Lý do chọn đề tài 222-2222 2222122222111122221122211112222111 E111 cerrree 2 1.2 Một số nghiên cứu liên quan -2+++222Vvv+++etttEEEvvvrrrrrrtrrrrrrree 3
1.2.1 _ Nghiên cứu ngoài nưỚC - + 5+ srrterrkskekrkrkrkrrreree 3 1.2.2 Nghiên cứu trong nưỚC -¿- +5 sksevEkrekerekekrkrrkrrrreree
13 Mục tiêu đề tài cute 5 1.4 Giới hạn để tài -:-22222c 2222112222111 2222111122211112211112.21111 1111 cce 6 1.5 Kết quả mong muốn -:-++++22E2++222EES++22222E22221111222211 222L 6
1.6 Bố cục luận văn -2¿-22222+2222E+22221111222211222111122221111 21.11 cerrrve 6
2.3.2 Cấu trúc phần cứng của một SoC - : -c+ssc+cz+scee 4
2.4 Smart CaI€TA óc 11h ST H1E1211 1 TH HH Hư 6
Trang 62.5 áo 04909 722 d- 20 2.5.1 Batch normalization.
2.5.2 High resolution clasSifIer -¿- set 20
2.5.3 Kiến trúc Anchor Box.
2.5.4 K-means cÏus(€ring 6S ngư 21 2.5.5 Direction location prediction.
2.5.6 Fime-grained ÍeatUre cv giờ 22 2.5.7 Multi-scale training
2.5.8 Light-weight backbone ee eseesesesesteseseetsesteneseeneeaees 23 2.6 Open 0 000+++-s sgt gers anagc GO .ssssscscseescsssssssssousesssssoseeees 25
2.7 Streaming videO 6c St St St t2 E2 2191011121212101.1411 1.1 de 26 2.8 FEmpeg ⁄ ie Mr x£ LH Hyun 27
2.8.1 Các công cụ xử lý audio, video của FFmpeg - -‹-+-«- 28 2.8.2 Các gói thư viện của FÏmpeg ¿- -ccccscecxseseersre 28 2.9 SSH Tunnel - 5c 2 2S 1912 11212121 1112111211111 re 29
Chương 3 THIẾT KE HỆ THÓNG -¿:2+++222++z++2cvvvrrsrrvrree 31 3.1 Ý tưởng dé xuất cho hệ thống . ¿¿£©2++++22E++vrttvvvvrrsrrrsrrrrrr 31 3.2 Thiết kế tổng quát của hệ thống -.-.-c:¿¿-222©cvvv+eettrrrrrrrrrrrrrrrrr 31 3.3 Hệ thống SoC tích hợp IP YOLO2_FPGA trên Vivado 2019.2 32
3.4 Cải tiến tốc độ của khối YOLOv2 và hệ thống SoC Smart Camera 33 3.5 Xây dựng luồng streaming cho Smart Camera z c2 Al
3.5.1 Streaming phạm vi local đối với camera hình ảnh thường 41 3.5.2 Streaming phạm vi local đối với camera hình ảnh xử lý YOLOv2 43 3.5.3 Streaming phạm vi Internet đối với camera hình ảnh thường 43
Trang 73.5.4 Streaming phạm vi Internet đối với camera hình ảnh xử lý YOLOv2
45
3.6 Xây dựng chương trình thực thi bằng công cụ Vitis 2019.2 46 Chương4 HIỆN THỰC, THỰC NGHIỆM VÀ ĐÁNH GIA KET QUA 48
4.1 Zynq UltraScale+ MPSoC
4.2 FPGA Ultra96-V2 Set H122 49 4.3 Petalinux 2019.2
4.4 Kịch bản thực nghiệm và phương pháp đánh giá - - 5555 58
44.1 Kịch bản thực nghiệm
44.2 Phương pháp đánh giá - St setekererrrrrirerrrereek 58
4.5 Két quả thực nghiém
4.5.1 Kết quả nhận diện 22¿c5222++teccvvrreetrrvrrerrrrrrrrrr 59 4.5.2 Tốc độ nhận diện cccccscccckrreerirtrtrrrrrrrrrrrrrrer 59 4.5.3 Kết quả thực nghiệm khi streaming phạm vi Local 60 4.5.4 Kết quả thực nghiệm khi streaming phạm vi Internet 62
4.6 Đánh giá hệ thống 22¿-22222222222111122221112212111222111 E1 ccrrkeg 63
Trang 8DANH MỤC HÌNH
Hình 2.1: Kiến trúc cơ bản của FPGA cccc tri 9
Hình 2.2: Mô hình cơ bản của một hệ thống nhúng 2 25 + s2 s+£s25+2 11
Hình 2.3: Phan cứng của một hệ thống nhUing oo essessessessessesessessessessessesseeee 13Hình 2.4: Kiến trúc cơ bản của một SOC - - + kk‡EE+E+EEEEEEEEEEEEEkeErkererrrrs 16Hình 2.5: Sơ đồ khối của MOt SMALE CaIT€TA - 2c <5 52232221 E£+++eeveessssse 17
Hình 2.6: Smart camera HANET AI CAMERA .- - cc SH re, 19
Hình 2.7: Một số công kết nối trên smart camera :- ¿2£ 5z2++2£++2s++zsz 19
Hình 2.8: Dự đoán bounding box của YOUOV2 5 3 + seeresereersrrrre 22
Hình 2.9: Kiến trúc YOLOV2 22+c222vx2221 t2 tri 22
Hình 2.10: Kỹ thuật Reorg trong YOLOV2 - 5 111k tr, 23
Hình 2.12: WordTree trong YOLQV2 - <1 199 1 HH kg nh 24
Hình 2.13: Kiến trúc cơ bản của streaming video - 2 2 s+x+zxz+£z+zxsrxzsz 27
Hình 2.14: Quy trình xử lý video bằng FEmpeg - 2-2 2+2 +szx+zx+rserszsez 28
Hình 2.15: Tổng quan về SSH Tunneling 2 2 s2 +2 +2 £+E£+Ee£Eerxerxzrszxez 30Hình 3.1: Mô hình trực quan của hệ thống 31Hình 3.2: Thiết kế tong quát của hệ thong cceccccscessesssesssesssecssesseessecssecsseeseessecsseess 32Hình 3.3: Sơ đồ khối SoC tích hợp IP YOLOv2 trên FPGA -2-5¿ 33Hình 3.4: Kết quả sau khi generate bitstream của nhóm tác giả [I] . 35Hình 3.5: Cau hình strategy mặc định cho quá trình Synthesis - - 37Hình 3.6: Cấu hình strategy mặc định cho quá trình Implementation - 37
Hình 3.7: Worst Negative Slack (WNS) có giá tri âm - -«cc«csscssssessee 38
Hình 3.8: Cau hình strategy mới cho quá trình Synthesis -¿ 5¿ 5+ 38Hình 3.9: Cau hình strategy mới cho quá trình Implementation 39Hình 3.10: Kết quả sau khi generate bitstream của nhóm s22 s2 40
Hình 3.11: Năng lượng tiêu thụ của nhóm tác giả [1] -+-s<++<<++see+ssss+ 40 Hình 3.12: Năng lượng tiêu thụ của nhóm - ¿+ + *+k+veereeeeeeerereere 41
Trang 9Hình 3.13: Mô hình xử ly streaming bằng ffmpeg -¿-cs¿©cscc+cc++ 42
Hình 3.14: Streaming thông qua giao thức SFTP ở phạm vi local 43
Hình 3.15: Mô hình streaming lên zoneminer bằng ffmpeg - 44
Hình 3.16: Streaming hình ảnh xử lý YOLOv2 phạm vi Internet 45
Hình 3.17: Chương trình xử lý YOLOv2 trên FPGA - c5 c2 <+sssssee 46 Hình 3.18: File smart_camera.elf trong thư mục sd_ card - « -s«++sss++ 47
Hình 4.1: Các khối chức năng trong Zynq UltraScale+ MPSoC -.- 48Hình 4.2: Các thành phan chính trên board Ultra96-V2 2 s¿+css++c++ 50Hình 4.3: Sơ đồ khối của board Ultra96-V2 -¿-cc+ecrrrkkkerrrrtriirerrriie 51
Hình 4.4: Config hardware đ€SCTIDIOH - ó5 S13 vn ng ngư 52 Hình 4.5: Image packaging COnÍiØUT8fIOI <5 + E1 1E E+EESeeEeeeeeeeeeereere 53
Hình 4.6: Boot image setting - SG 1121111211111 21H TH HH ng net 53 Hình 4.7: USB Gadget Support cece eee 2112 93 1 HT Hư 54 Hình 4.8: Enable Debug Tweaks - - + kg HH HH giết 55
Hình 4.9: Wilc module bitbake - - - s3 11 91 931 9119 1 vn ng ng tr 55
Hình 4.10: Khai báo reserved Memory :.ceccceesccesseeeseeeeeeeseecececeaeeesaeeeseeeenessaes 56
Hinh 4.11: Két quả nhận diện của Smart Camera Ultra96-V2 - «+ s«++<s+ 59
Hình 4.12: Tốc độ nhận diện của nhóm tác fea ee à S2 S2 sSSsseeersseeesereeere 60Hình 4.13: Tốc độ nhận diện của nhóm - 2 + x+£EE+E++E£EE+E£EE+EeExererxererxrrs 60Hình 4.14: Ảnh chụp khi streaming hình ảnh thường 2- ¿525252 61Hình 4.15: Ảnh chụp khi streaming hình ảnh xử lý YOLOv2 - 61Hình 4.16: Ảnh chụp khi streaming hình ảnh thường 2 ¿5 52 s52 +2 62Hình 4.17: Ảnh chụp khi streaming hình ảnh xử lý YOLOv2 2: 5+ 63Hình 4.18: Đóng gói sản phẩm -¿- 2-22 5¿+EE+2EE£EEE2EEE2EEE2EEE2EESEErrrrerrrsree 68Hình 4.19: Đóng gói sản phẩm ¿- 2-22 S222 2EE2EEE2EE22EE2EEEEEESEErrrkrrkrcree 68
Trang 10DANH MỤC BANG
Bảng 2.1: Các thư viện của FÏFmp€Ø -c + c 3111391113911 E1 EeErreerere 29
Bảng 3.1: Tần số ước lượng của nhóm tác giả [ ] -: -¿-2©5z2-x++cx+zs+e=s+ 34Bảng 3.2: Tài nguyên sau khi tổng hợp YOLO2_FPGA của nhóm tác giả [1] 34
Bang 3.3: Timing report của nhóm tac gia [ Ï] - - 56 + £++vE+seEseeeeeseeesee 35
Bảng 3.4: Tần số ước lượng của IP YOLO2_FPGA mới -. ¿- 55552 36
Bảng 3.5: Tài nguyên ước lượng sau khi tổng hop IP mới s52 s2 36
Bảng 3.6: Timing report Của nhÓim - - + + 1113911391119 11 911 9 ve 39
Bang 4.1: Luông thiết kế petalinux - +: 5c 5£2S£+EE+EE£EE+2EE+EEeEEerkerrkrrkerkeree 51
Bảng 4.2: Các thư viện cai đặt trên PetaÌinuxX - - - 5c + *+k+kEseeeserssrsee 56
Bảng 4.3: Kết quả streaming phạm vi local - 2-2 s2£2£+£x+£xezE+zzzrxerxezez 64
Bảng 4.4: Kết quả streaming phạm vi Internet -¿- 5c ©s©sz+zx2z++zxesrsz 65
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
00019)1151009:101201 10Ẻ 110077 65
Bang 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 ở phạm Vi ÏOCaÌL - 6 6 + 3 x1 x1 1 1n ng ng tư 66
Bảng 4.7: Kết quả dựa trên khoảng cách kết nối khi streaming camera hình ảnh
thường ở phạm Vi Ïnf€TTK - c2 3211311311121 111 11119311111 11T 1 HH ng rưy 66
Bang 4.8: Kết qua dựa trên khoảng cách kết nối khi streaming camera hình ảnh xử
lý YOLOv2 ở phạm vi ÍT(€TTIGK - G1 1121118910111 1119 11 9 11g ng ng krry 67
Bang 4.9: Đánh giá FPS giữa xem trực tiếp và xem lại video streaming 67Bảng 5.1: Tông kết và so sánh với một số nghiên cứu trước đó trong nước 69
Trang 11DANH MỤC TỪ VIET TAT
Từ viết tắt Tên đầy đủ
AHB Advanced High performance Bus
Al 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
CCI 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
Trang 12FPGA 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
LPDDR4 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
Trang 13RISC-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 14TOM TAT 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 cameracũng là một phần 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ườnghọ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 đó là độ chính xác, tốc độ thu nhận và truyền dữ
liệu, năng lượng tiêu tôn và giá thành sản phâm.
Trong đề tài này, nhóm đặc biệt quan tâm đến các vấn đề ảnh hưởng đến tốc
độ của một hệ thống smart camera Nhóm muốn sử dụng nên tang System on Chip
dé xây dựng một hệ thống smart camera streaming hình ảnh qua kết nối không dây
với độ trễ thấp và tiệm cận được với thời gian thực Smart camera sẽ tích hợp thêm
thuật toán YOLOv2 xử lý ảnh trên phần cứng FPGA, kết hợp bộ xử lý core ARM
và một số module khác dé điều khién và truyền dit liệu Người dùng có thé xem kếtquả trên màn hình hiển thị thông qua một Wifi Access Point modem
Nhóm đề xuất thiết kế hệ thống smart camera trên bộ công cụ phần mềmVivado phiên bản 2019.2 của Xilinx (bao gồm: Vivado HLS, Vivado Design Suite,Petalinux, Vitis), sử dung board Ultra96-V2 trên nền tảng Zynq UltraScale+
MPSoC của nhà phát hành Avnet Tần số hoạt động mong muốn của hệ thống đạt300MHz và có thé đáp ứng được tỉ lệ khung hình full HD ở độ trễ thấp nhất
Trang 15Chương 1 GIỚI THIỆU DE TÀI
1.1 Lý do chọn đề tài
Ngày nay, với sự phát triển ngày càng nhanh của công nghệ, các ứng dụng
thông minh hỗ trợ con người trong công việc ngày càng được quan tâm nghiên cứu.
Các hệ thống này mô phỏng dựa trên các giác quan của con người để tạo ra các hệ
thống thông minh Trong đó kênh thông tin thị giác của con người được sử dụngnhiều nhất để xây dựng những hệ thống nhận dạng và tìm kiếm các đối tượng Do
đó smart camera đã trở thành đề tài thu hút được nhiều sự quan tâm từ các nhómnghiên cứu, trường đại học và nhiều ngành công nghiệp Khác với máy ảnh thôngthường, nó không chỉ thực hiện việc chụp ảnh mà còn phân tích hình ảnh để 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 anhtrự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âydựng dựa trên những tiễn bộ dat được trong công nghệ bán dẫn, kỹ thuật thị giácmáy tính và được thúc đây bởi các yếu tố kinh tế - xã hội như độ an toàn, bảo mậtgiúp tăng năng suất và tiết kiệm chi phí
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óm muốn nghiên cứu và cải tiễn các vấn đề ảnh hưởng đến tốc độ của một hệthống smart camera bao gồm tốc độ thuật toán xử lý và kỹ thuật video streamingcho smart camera dé có thé truyền hình ảnh streaming (bao gồm hai chế độ: camerahình ảnh thường và camera xử lý thuật toán nhận dạng vật thể) thông qua WifiAccess Point, với một độ trễ thấp và có khả năng đáp ứng khung hình Full HD
Trang 161.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 dai 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ễ đàng tìm được các bà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 [4] “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 su dung module camera Micron MT9POO1 trên FPGA Xilinx Virtex-5 ML506 áp
dụng thuật toán Histogram đã thu được anh với tốc độ 30 FPS và độ phângiả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ều thời gian tính toán
để có thé xác định được đối tượng đang cần theo dõi
“+ Bài báo [5] “DreamCam: A modular FPGA-based smart camera ,
architecture” của nhóm tác gia Merwan Birem, Francois Berry vào năm 2014
sử dung module camera MT9M031, EV76C560 trên FPGA Altera Cyclone
III đã thu được ảnh với tốc độ 42 FPS va độ phân giải 800 x 1024 Ưu điểmcủ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à tổng 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 để 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 [2] “The Research And Implementation Of CNNAlgorithm On Zedboard Zyng-7000” của nhóm sinh viên Phan Tuấn Thành, Vũ
Hoàng Hy năm 2020 sử dụng thuật toán YOLOv2 trên FPGA 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 so với một số thuật toán xử lý ảnh khác
Trang 17Nhược điểm của dé tài này là chưa thé 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 [6] “Thiết kế và hiện thực IP camera trên Zynqg-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 để thu thập hình ảnh và truyền hình ảnh đến người xem 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ớitốc độ khung hình khi streaming én định ở mức 5.5-6 FPS Nhược điểm là dé tàinày chưa thé tích hợp thuật toán xử lý AI vào dé nhận dạng được người có trong
khung ảnh.
Luận văn tốt nghiệp [3] “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 tính toán dé dang, tốc độ xử lý khá nhanh(vì dữ 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 mat mát (vì nhóm tác giả sử dụng anh màu chuyên sang ảnh xám grayscale, sau
đó chạỹ thuật toán nhận dạng trên dữ liệu ảnh xám, rồi mới lấy kết quả nhận dạng
từ ảnh 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 [1] “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ử
dụng 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 để xử lý hình ảnh lấy từ smartcamera Hệ thong đã nhận diện được vat thé với độ chính xác cao (64 - 96%) ở độ
phân giải 1280x960, với độ trễ trung bình khi streaming P2P là 19.26 giây Ở đây
nhóm tác giả đã sử dụng bộ YOLOv2 có san dé tích hợp lên kiến trúc SoC của
smart camera và không quan 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
Trang 181.3 Mục tiêu đề tài
Ở luận văn nay, nhóm tập trung vào việc tìm hiểu các phương pháp giúp tăng
tốc độ xử lý của khối YOLOv2 tích hợp trên smart camera, nhóm cũng nghiên cứu
các công nghệ giúp nâng cao khả năng streaming video cua smart camera trên SoC
Ultra96-V2 thông qua đường truyền internet theo thời gian thực giữa hai hay nhiều
thiệt bị nhận Dé đáp ứng được các yêu câu như trên, nhóm dé ra những mục tiêu cụ
Nhóm sẽ kế thừa lại bộ CNN YOLOv2 từ luận văn [1] “Thiết kế tích hợp
trên Ultra96-v2 cho Smart Camera” của nhóm tác giả Bùi Nguyễn Phát và Lê
Minh Huy dé nghiên cứu, phục vụ cho việc cải tiễn tốc độ của hệ thong
smart camera.
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ộ công cụ Xilinx Vivado (bao gồm Vivado HLS, Vitis, Vivado DesignSuite) để dùng cho việc tông hợp IP YOLOv2 và cài đặt bộ CNN YOLOv2
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 bằng công cụ Petalinux của Xilinx phát hành dé điều khiển hoạt
động của cả hệ thống
Tiếp theo nhóm nghiên cứu các yếu tố phần cứng ảnh hưởng đến tốc độ thuậttoán để tìm ra phương pháp cải tiến tốc độ xử lý của hệ thống
Tiếp theo nhóm tìm hiểu các công nghệ hỗ trợ như FFmpeg, OpenCV và một
sỐ giao thức truyền dữ liệu như UDP, RTP, SFTP để thực hiện truyền hìnhảnh streaming thông qua mạng internet đạt được độ trễ thấp nhất
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 hệ thống, đánh giá và đưa ra các kết luận dựa
trên các kết quả thử nghiệm
Trang 191.4 Giới hạn đề tài
Do thời gian hạn chế trong quá trình làm luận văn nên đối với việc streaminghình ảnh xử lý YOLOv2, nhóm sẽ thực hiện truyền từng frame hình ảnh chứ chưa
thé truyền luồng dữ liệu bit, điều này sẽ gây thêm 1 khoảng độ trễ cho việc lưu
frame ảnh thành file JPEG Ngoài ra, việc tích hợp xử lý camera hình ảnh YOLOv2
với tốc độ hoạt động toàn bộ hệ thống có thé thấp hơn các hệ thống smart camera sử
dụng các thuật toán AI khác.
1.5 Kết quả mong muốn
Ở đề tài này nhóm sẽ tập trung vào việc cải tiến tốc độ của hệ thống smart
camera khi thực hiện streaming hình ảnh trong trường hợp có xử lý AI và không xử
lý AI thông qua mạng Internet sau đó gửi dữ liệu hình ảnh lên một cloud server có
sẵn Người dùng có thê xem trực tiếp kết quả bằng cách nhập địa chỉ ip của server
trên trình duyệt web, hoặc dùng công cụ hỗ trợ xem video như VLC Media Player
để lấy luồng video streaming về coi Đối với camera hình ảnh thường, độ trễ mongmuốn trên thiết bị nhận nhỏ hơn 5 giây, tốc độ hién thị khung hình trung bình lớnhơn 2 fps đối với độ phân giải full HD 1920 x 1080 Đối với camera hình ảnh xử lýYOLOv2, nhóm mong muốn có thể tăng tốc độ xử lý của thuật toán lên trên300MHz, độ trễ khi streaming video ở độ phân giải full HD 1920 x 1080 trên thiết
bị đầu cuối nhỏ hơn 30 giây và tốc độ hiển thị khung hình trên 0.25fps
1.6 Bô 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 dau tiên sẽ giới thiệu tông quan vê dé 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ả thực hiện mà nhóm đạt được.
Chương 2: Cơ sở lý thuyết
Trang 20Chương này trình bày những cơ sở lý thuyết được sử dụng có liên quan đến
nộ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ệunhóm tìm kiếm được trên Internet, tham khảo các tài liệu có sẵn trên website củakhoa KTMT cũng như những góp ý của các thầy cô, anh chị bao gồm: kiến thứcchung về FPGA, smart camera, tìm hiểu về các kỹ thuật streaming video dé từ đó cóthé chon ra kỹ thuật phù hợp nhất với mục tiêu đề ra ban đầu của đề tài, cuối cùng
sẽ đưa ra các đề xuất phù hợp nhất
Chương 3: Thiết kế hệ thống
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 nay 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: Hiện thực, 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ển
Chươ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àynhó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 21Chương2 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ấtphú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ên thư viện logic thì FPGA không đạt được mức độ tối ưu như những loại này vàcòn hạn chế trong khả năng thực hiện những tác vụ đặc biệt phức tạp Tuy vậyFPGA ưu việt hon ở 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 chỉ 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 (con 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 cau hình (Logic
Trang 22Blocks hoặc Configurable Logic Blocks - CLB) Các khối CLB được tổ chức sắpxếp theo mảng với 2 hướng doc và ngang như Hình 2.1.
Lo
Hình 2.1: Kiến trúc co bản của FPGA
Khối CLB: thực thi các chức năng logic, cung cấp các tính toán và phan tử
nhớ cơ bản được sử dụng trong hệ thống số CLBs là phần tử cơ bản cấu thànhFPGA, là nguồn tài nguyên logic chính tạo nên các mach 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ựchiệ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ủa mỗ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ực tiếp hay thông qua phần tử nhớ flip-flop Ngoài khối logic cơ bản đó,nhiều chip FPGA 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ể, chăng 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,
Trang 23câu hình bộ nhớ được sử dụng trên tât cả các khôi logic được dùng đê điêu khiên
các chức năng cụ thé của mỗi phan tử bên trong khối đó.
Khối kết nối (Interconnections): dùng dé liên kết các khối logic và I/O lại với
nhau dé tạo thành một thiết kế hoàn chỉnh Mạng liên kết trong FPGA được cấuthà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ối vớ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útchuyê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 dụng) 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ối với một “I/O Cell” bên trong FPGA, được cấp bởi các chân Vcc I/O(/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
e 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
¢ 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 tric FPGA cơ ban đã được phát triển nhiều hon
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 va thậm chí là bộ vi xử lýnhúng được thêm vào do nhu cầu của các nguồn tài nguyên cho một ứng dụng Kếtqua là nhiều FPGA ngày nay có nhiều nguồn tài nguyên hơn so với các FPGA trước
đó.
10
Trang 242.2 Hệ thống nhúng
2.2.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 dữ liệu trong các hệ thống thiết bịđiện tử khác nhau Các hệ thống nhúng là sự kết hợp giữa phần cứng và phần mềm,
ở đây phần mềm được nhúng vào phần 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ờigian 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ànthiện và thuận tiện hơn Vì thế, các hệ thống nhúng thường được tích hợp trong rấtnhiều thiết bị từ đơn giản đến phức tạp Hình 2.2 mô tả mô hình cơ bản 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 hayfirmware Phần mềm nhúng là một chương trình được viết, biên dịch trên máy tính
và nạp vào một hệ thong khác bao gom một hoặc nhiều bộ vi xử lý đã được cài đặt
san 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ần
cứng khác Phân mêm nhúng là phân mêm tạo nên phân hôn, phân trí tuệ của các
lãi
Trang 25sản phâm nhúng Phân mêm nhúng ngày càng có giá tri cao trong các sản pham nhúng.
2.2.3 Phần cứng của một hệ thống nhúng
Hệ thống nhúng sử dụng nên tang 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 đữ liệu Về cơ bản, một hệ thống nhúngthường bao gồm:
e_ Bộ cung cấp năng lượng
e Bộnhớ
e Đầu ra/ bảng mạch dau ra
e Cổng giao tiếp nỗi tiếp
e SASC (System application specific circuits — Các mach ứng dụng cho
một hệ thống cụ thé nào đó)
12
Trang 26Input devioss Interfacing! Diver Circuits
~_——~— — _ _—
Hình 2.3: Phần cứng của một hệ thống nhúng2.2.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éptí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
Tấ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àinguyên Số liệu thiết kế là thước đo dé đánh giá việc xây dựng các tinh năng như độ
lớn, công suất, chi 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 để tăng tuôi thọ của pin Một số hệ thống nhúng phải tươngtác liê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ời gian thực với độ trễ cực thấp hoặc hầu như không có
13
Trang 27Hệ 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 phan 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 Hệ thống SoC (System on Chip)
2.3.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ầnthiế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 và 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ế SoCthường tiê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 sosánh cùng mộ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ất nhiều ứng dụng xử lý âm thanh, hình ảnh, giải mã tín hiệu,
2.3.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:
“+ 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ụ quản 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ữacá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:
e Lõi CPU ARM dùng tập lệnh ARM và là sản phẩm của hãng ARM.
14
Trang 28e 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.
* Bus hệ thống (System BUS): Bus hệ thống là có nhiệm vụ kết nối thông suốt
*
>
>
>
các thành phan chức năng khác nhau trong vi xử ly Bus hệ thống giống như
những con đường dé vận chuyền dữ liệu giữa các thành phan trong SoC Một
số cau trúc bus hệ thống:
e AMBA (AXI, AHB, APB) là chuan 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é phân biệt với
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à:
e 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
Thành phan điều khiến nội (Internal block): là thành phần 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ư:
e©_ 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
e Khối tao 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
15
Trang 29e 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 dé 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, ví dụ như:
e UART: truyền nhận dữ liệu nối tiếp bat đồ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é
Smart camera đã được ứng dụng trong công nghiệp được hơn 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ễ
16
Trang 30tiế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ật ngữ smart camera có nhiều định nghĩa khác nhau, tuy nhiên mọi người
đều thống nhấ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 cơ bản được biêu diễn ở Hình 2.5.
On-board Memory
Power |
Lighting USB Controller
Encoder Input Digital I/O Display Out
Hình 2.5: So đô khôi của một smart camera
Tuy 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 dé chỉnh sửa các hiệu ứng, loại bỏ các phần thừa, nhận diện khuônmặ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 hau hết các máy anh 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ần phải truyền sang máy tính hoặc các thiết bị khác Thay vào đó, kết quả
17
Trang 31củ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 diém cơ bản sau:
,
> 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 phần 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 ảnh: Bản 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
Phần mềm: Hầu hết các smart camera ngày nay đều được cài đặt các phầnmề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 bụi Hình 2.6 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 hợp 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.
18
Trang 32Hình 2.6: 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úp kế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.7 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.7: Một sô công két nôi trên smart camera
19
Trang 33“+ Kha 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ấtcao nên nó luôn là một lựa chọn hàng đầu cho các ứng dụng về thị giác máy
tính.
2.5 Thuật toán YOLOv2
'YOLOV2 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) Cải 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.5.1 Batch normalization
Kỹ thuật Batch Normalization được đưa vào sau tat cả các lớp convolution
của YOLOv2 Kỹ thuật này không những giảm được thời gian huấn luyện mà còn
có tác dụng tăng tính phổ quát (generalize) cho mạng Ở YOLOv2, Batch
Normalization giúp tăng mAP lên khoảng 2% Mạng cũng không cần sử dụng thêmDropout dé tăng tính phổ quát
2.5.2 High resolution classifier
YOLOv2 được huấn luyện với hai pha Pha đầu sẽ huấn luyện một mang
classifier với ảnh đầu vào có kích thước nhỏ (224x224) và pha sau sẽ loại bỏ lớp
fully connected và sử dụng mang classifier này như phan khung xương (backbone)
để huấn luyện mạng detection Ảnh đầu vào kích thước nhỏ cũng thường được sửdụng dé huấn luyện các mang classifier, sau đó sẽ được sử dụng như một pretrained
model cho phần backbone của các mạng detection khác Ở pha sau, YOLOv2 sẽ
finetube mang backbone dưới ảnh đầu vào có kích thước lớn hơn là 448x448 trước
20
Trang 34tiê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 này giúp tăng mAP (mean Average
Precision) của YOLOv2 lên khoảng 4%.
2.5.3 Kiến trúc Anchor Box
Trong YOLOv2, lớp fully connect ở giữ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ủabounding 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.5.4 K-means clustering
Thay vì phải chọn anchor box bằng tay, YOLOv2 sử dụng thuật toán
K-means dé đưa ra các lựa chọn anchor box tốt nhất cho mạng Việc này giúp tạo ramean Intersection Over Union tốt hơn
2.5.5 Direction location prediction
YOLOv1 không có các hạn chế trong việc dự đoán vi trí cua 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 ở bất
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í
cua grid cell.
YOLOv2 sử dung ham sigmoid (c) dé hạn chế giá trị 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 6n định hon trong quá trình huấn luyện YOLOv2 đã có thêm 5% mAP khi áp
dụng phương pháp này Hình 2.8 mô tả dự đoán bounding box của YOLO.
21
Trang 35Hình 2.8: Dự đoán bounding box của YOLOv2 2.5.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 tang 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 hop feature map
26x26 lấy từ đoạn gần cuối với feature map 13x13 ở cuối để đư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ụng cho các dự đoán Hình 2.9 mô tả kiến trúc của YOLOv?2
Trang 36Thô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 dai Và để có thé concatenate được với nhau thi
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ành 13x13 với chiều sâu lớn hơn đề có thé thực hiện phép concatenate với featuremap 13x13 ở cuối Hình 2.10 mô tả kỹ thuật Reorg trong YOLOv2
IDIDILS
ie [ee [6 lim |
Hình 2.10: Kỹ thuật Reorg trong YOLOv2
Hình 3.9 là một lát cắt (chanel) của feature map kích thước 4x4 Đề đưa vềkích thước 2x2 thì phải giảm chiều rộng đi 2 lần và chiều dài đi 2 lần, ta táchchannel của feature map 4x4 thành 4 ma trận ứng với 4 channel chiều sâu của
feature map 2x2 mới Vi trí các giá trị trong mỗi channel của feature map 2x2 mới
sẽ lay thưa thớt trên feature map 4x4 ban đầu với stride bằng 2 theo hai trục dài và
rộng.
2.5.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ác
lớ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 YOLOv?2 với đa dạng kích thước anh.
2.5.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.11 mô tả Darknet- 19.
23
Trang 37Type Filters | Size/Stride Output Convolutional 32 3x3 224 x 224
Convolutional 128 1x1 28x28 Convolutional 256 3x3 28x28
Maxpool 2x 2/2 14x 14
Convolutional 512 3x3 14 x 14 Convolutional 256 1x1 14 x 14 Convolutional 512 3x3 14x 14
Ngoài ra, YOLOv2 còn đư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ới
COCO/PASCAL (100 classes) thì ta phải dựa vào WordNet dé xay dung quan hé
giữa các class, từ đó có thé huấn luyện mạng nhận dang các class có quan hệ với
nhau Hình 2.12 giới thiệu WordTree trong YOLOv?.
WordTree
physical object
animal i natural object phenomenon
tabby Persian
biplane jet airbus stealth golden potato felt sea American
fighter fern fern fern lavender twinflower
Hinh 2.12: WordTree trong YOLOv2
24
Trang 382.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 tính, máy học và xử lý ảnh 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
pho biến có sẵn như:
Core functionality (core) — module nhỏ gon dé xác định cấu trúc dữ liệu co
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 ảnhtuyến tính và phi tuyến (linear and non-linear image filtering), phép biến đổihình học (chỉnh size, afin va warp phối cảnh, ánh xạ lại dựa trên bảngchung), chuyên đổi không gian màu, biéu đồ, và nhiều cái khác
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 stereocamera calibration), 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
25
Trang 39>* 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.
# Video I/O (videoio) — giao diện dé dùng đề 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 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 dữ 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ãitrong thự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ần
mề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,quản lý và điều khiển trong các doanh nghiệp, cơ quan, tô chức trở nên dé dang 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ệ thong nhúng
Trang 40Streaming Server Client / Receiver
Hình 2.13: Kiến trúc cơ bản của streaming video
Hình 2.13 mô tả kiến trúc cơ bản của streaming video Về bản chất,streaming video trực tiếp qua Internet bao gồm một camera ghi lại nội dung, sự kiện
cần phát sau đó sử dụng các bộ mã hóa dé số hóa các nội dung này, một streamer
server sẽ đóng vai trò là nơi truyền dữ liệu qua mạng Internet đến một mạng lưới
phân phôi nội dung đê phân phôi và cung câp nội dung đên với người xem.
2.8 FFmpeg
FFmpeg 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, và ở trên nhiêu môi trường, kiên trúc khác nhau.
Hình 2.14 mô tả quy trình xử lý video bằng 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