Kết quả sẽ được đánh giá theo các tiêu chí: * Tinh chính xác của thuật toán, kết quả sẽ được đánh giá dựa vào kết quả tính toán ở cơ sở lý thuyết và so sánh với kết quả model đã mô phỏng
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
Bùi Nguyễn Tuấn Kiệt
Nguyễn Minh Nhân
KHÓA LUẬN TÓT NGHIỆP
THIET KE VÀ HIỆN THỰC MẠNG NO RON TÍCH
CHAP TREN FPGA SỬ DỤNG KIÊN TRÚC XCEPTION
DESIGN AND IMPLEMENTATION OF CONVOLUTIONAL
NEURAL NETWORK ON FPGA USING XCEPTION
ARCHITECTURE
KỸ SU NGANH KY THUAT MAY TÍNH
TP HO CHi MINH, 2022
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TÍNH
Bùi Nguyễn Tuấn Kiệt - 18520959Nguyễn Minh Nhân — 18521177
KHÓA LUẬN TOT NGHIỆP
THIET KE VÀ HIỆN THỰC MẠNG NO RON TÍCH
CHẬP TRÊN FPGA SỬ DỤNG KIÊN TRÚC XCEPTION
DESIGN AND IMPLEMENTATION OF CONVOLUTIONAL
NEURAL NETWORK ON FPGA USING XCEPTION
ARCHITECTURE
KỸ SƯ NGANH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN
TS Nguyén Minh Son
TP HO CHi MINH, 2022
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm 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 4LỜI CẢM ƠN
Đầu tiên, nhóm muốn cám ơn các quý thay, cô và các giảng viên đã và đang giảngdạy tại trường Đại học Công nghệ Thông tin — Đại học Quốc gia Thành phố Hồ Chí
Minh đã góp công xây dựng trường của chúng ta ngày hôm nay.
Trong quá trình học tập và rèn luyện tại trường, em nhận được sự chỉ bảo tận tình,
nhận được những kiến thức, kinh nghiệm quý báu của các thay, cô, các anh chi trợgiảng, bạn bè trên lớp đã giúp chúng em có được kiến thức chuyên môn, sâu rộng
như ngày hôm nay Ngoài ra, nhóm còn được trang bị kỹ năng mềm trong quá trìnhtheo học tại trường qua các hoạt động ngoại khoá bổ ích giúp chúng em có thé bước
vững trong cuộc sống và trong tương lai
Tiếp theo, nhóm xin cám ơn các thầy cô thuộc Khoa Kỹ thuật máy tính đã giúp đỡ
trong những lúc khó khăn về học vụ, đăng ký học phần và hỗ trợ hết mình để nhóm
có thể mượn thiết bị trong lúc làm khoá luận
Dé có thé hoàn thành khoá luận này, chúng em xin cám ơn thầy Nguyễn Minh Sơn
đã tận tình hướng dẫn từ lúc nhóm em vừa mới bắt đầu là sinh viên năm ba và đã
tận tình hỗ trợ nhóm em trong suốt quá trình làm luận văn
Em cũng muốn gửi lời cảm ơn đặc biệt đến anh Huỳnh Vĩnh Phú, bạn Phạm Mạnh
Tiến cùng với các trang dạy về máy học cơ bản, các bài báo khoa học và các trangblog đã đăng tải và truyền đạt những kiến thức và chính xác có liên quan đến đề tài
Sau cùng, nhóm muốn gửi lời cảm ơn đến gia đình và bạn bè luôn là hậu phương
vững chắc, là chỗ dựa tinh thần giúp nhóm có thể hoàn thành khoá luận
Thành phố Hỗ Chí Minh, tháng 8 năm 2022
Nhóm sinh viên thực hiện
Nguyễn Minh Nhân
Bùi Nguyễn Tuan Kiệt
Trang 5MỤC LỤC
TOM TAT KHOA LUẬN 2222-22222222222221122222221111222221112 22211112 212211 ccee 1
Chương 1 LỜI MỞ ĐẦU -222-©2222222+222EEE522222221511222221112222121112 2222112 2
1.1 Lý do chọn đề tài
1.2 Mục tiêu nghiên cứu đề tài
1.3 Đối tượng
1.4 Phạm vi nghiên cứu
Chương 2 TONG QUAN DE TÀII ©222222¿22222222122222112122222112222271112ccrrer 4
2.1 Giới thiệu chung về mạng CNN - 2222¿++22222+2+tEE22E11222211122 2E 4
2.2 Xác nhận mặt người cĩ hoặc khơng cĩ mang khẩu TATĐ, cá ccccseceree 42.2.1 Xác nhận khuơn mặt khơng đeo khâu trang -z¿©cc+z2 4
2.2.2 Xác nhận khuơn mặt khơng đeo khẩu trang hoặc khác - 52.3 Dấu chấm động độ chính xác don (Single precision Floating Point) 5
2.3.1 Định ng hĩa - + SE E111 11111 HH HH Hiến 5
2.3.2 Dau cham động chuẩn IEEE~754 cc++¿£2222222v2vvvvvccrrrrrrrrrrrr 62.3.3 Cấu trúc biểu diễn trong máy tính
2.3.4 Ưu điểm
2.3.5 Nhược điểm 8Chương 3 LÝ THUYET VỀ KIÊN TRÚC XCEPTION sssccssssssssssessssssseesssessseeeeees 93.1 Tổng quan kiến trúc mạng Xception : 2222+2z++22EEEE++rttEEErveerrrrrrkee 9
3.2 Hướng xây dựng kiến trÚc +222+++++2222+++++tttEEEErrrrtrrrkrrrrrrrres 0
3.3 Kiến trúc nhĩm sử dụng -+++++22EEE+2++22E2E112222221112222221122ecrrrkk 2
3.4 Lớp tích chập (Convolution) cece ¿5+ + SSk‡k#EkEkekEE E1 gu 4
3.5 Lớp tổng hợp (Pooling) -.:-: 222+++22222+22+2222211212222211122222111 cccrrkk, 53.6 Lớp kết nĩi đầy đủ (Fully-Connected) -:-22c++2222vszcrrtrrrsrrcrrrres 5
3.7 Separable ConVỌUfiOT - «+ + tk E1 111 1111 131101 11101 11 1g 6 3.7.1 Depthwise Convolution
3.7.2 Pointwise Convolution
3.7.3 Tại sao lại là Separable Convolution
3.8 Các hàm kích hoạt.
Trang 63.8.1 ReLU (Rectified Linear UnIt) - ¿5c St SxSsvxvEvEvxrrrrrrrrrrrkrree 18 ko 18 3.9 Stride (Bước nhảy/TTƯỢT) St St SEkEErkkrirrkkrkrkkkkrkrkrkrkrkrkrek 19
Chương 4 CHI TIẾT VE THIẾT KE CAC MODULE XCEPTION 20
“co na 204.2 Thiết kế khối Convolution 3x3 stride 2 padding 0
4.2.1 Kernel 3x3 stride 2 padding 0 .22 4.2.2 Convolution Core 3x3 23
4.3 Thiết kế khối Convolution 3x3 stride 1 padding 0
4.3.1 Kernel 3x3 stride 1 padding Ú -c-cttketetEekekekerrekrrrerrrree 25
4.4 Thiết kế khối Convolution 3x3 stride 1 padding 1 - Depthwise 26
4.4.1 Kernel 3x3 stride 1 padding Ì - 5< c‡cscsketerrkererekeree 26
4.5 Thiết kế khối Convolution 1x1 stride 1 padding 1 - Pointwise 27
4.5.1 Kernel 1x1 stride 1 padding 1 - Pointwise - 5-cecccc+cccce+ 28 4.5.2 Convolution Core 1X Lice ceceseeeeeseeneseereeeesteeeseseanseeeseeeeeeseneees 29
4.6 Thiết kế khối Convolution 1x1 stride 2 padding 0 :: -+ 30
4.6.1 Kernel 1x1 stride 2 padding Ú esses eseeeeseesesesteneseeneeeeenes 31
4.7 Thiết kế khối Convolution tông quát
iN 8 Thiết kế kị hối ReLu
4.9 Thiết kế khối Max Pooling 3x3
4.9.1 Kernel 3x3 stride 2 padding Ì ¿- - 5+ +‡tsekerrkekerrkerree 35
4.9.2 Khối tính giá trị maX : -222+222EV22++222222312222221121 2122111 22v 364.10 Thiết kế khối Global Average Pooling -2222vvvvvvcccrrrrrrrrr 374.11 Thiết kế khối Dense -:+¿+-£2222222VE222222+tE212222211111212 Errrrrir 384.12 Thiết kế khối Sigmoid -22222222222++++2222222121212221 2212211111112 xe 394.13 Thiết kế khối Batch Normalization -. -ccc:::++222222vvvvvvrrrrrrrrrrrrrer 39Chương 5 LAY GIA TRI TRỌNG SỐ 22: 2222222222222122222221222222212Xe+ 4I5.1 Tổng quan về nhận diện khuôn mặt đeo khẩu trang :-: - 415.2 Gia tri trong số Convolution
5.3 Giá trị trọng số Separable Convolution
5.4 Giá trị trọng số Batch Normalization
Trang 75.5 Giá trị trong 1?” 43
Chương 6 HIỆN THỰC THIẾT KÊ 22 ©22222¿22EEE2222E2EE22E22+222222222rrrkk 44
6.1 Hiện thực thiết kế mạng CNN sử dụng kiến trúc Xception -.- 44
T8) nh 6.1.2 Controller
6.2 Mô phỏng các thiết
6.2.1 Mô phỏng thiết kế khối Convolution 3x3 stride 2 padding 0 466.2.2 Mô phỏng thiết kế khối Separable Convolution 486.2.3 Mô phỏng thiết kế khố
6.2.4 Mô phỏng thiết kế khối Max Pooling ¿©22cz+2222vvzeczzer 496.2.5 Mô phỏng thiết kế khối Dense ¿c::¿¿£©222VV2222v2c+zcreerrrrrrrrx 50
6.2.6 Mô phỏng thiết kế khối Datapath 2c¿2222v2z++c222vvvrrrrrrrs 51
6.2.7 Mô phỏng thiết kế khối SigmOid ccccscsssssesessesssseseessssseeessessseessseessseeeeees 52
Chương 7 KET LUẬN - : 2222222222222222222222111122222111122221112 22111 cccrrkkx 547.1 Tổng hợp tài nguyÊn : 22222+222222222222211112222211122222211 12111 ccrrrk, 547.2 Kết quả dat AUQC cceccscsssssseesessossssesscssssssssecsssssuseesssssunessessssssesessssneseecssssneeees 56
7.3 Khé khiin 4a Ge \)Ì mm 57
7.4 Hướng phát trién
7.5 Giải pháp đề xuất cho hướng phát triển
TÀI LIỆU THAM KHẢO
Trang 8DANH MỤC HÌNH VE
Hình 2.1 Hình mô tả tổng quát về mô hình mang CNN - 4
Hình 2.2 Mô tả tra cứu khuôn mặt không đeo khẩu trang - 4Hình 2.3 M6 tả tra cứu khuôn mặt có đeo khẩu trang -: -e+ 5
Hình 2.4 Mô tả tra cứu khác : :5+5+cccxererrerrrtrrrerrrrrerrerrrrer 5
Hình 3.1 Mô tả diagram của kiến trúc Xception với kích cỡ ảnh
Hình 3.6 Mô tả convolution có output = 8x8x1
Hình 3.7 Mô tả quá trình convolution: 12x12x3 - (5x5x3x256)
= ĐxÐX25Ố H122 112111 14
Hình 3.8 Mô tả khối Max-Pooling và Average-Pooling 15 Hình 3.9 Mô tả hoạt động của khối Fully-Connected - ‹ - 15 Hình 3.10 Mô tả Depthwise Convolution dùng 3 kernel để chuyển ảnh
12x12x3 thành 8x8x3 tu 16
Hình 3.11 Mô tả Pointwise Convolution chuyển 3 channel ảnh thành 1
Hình 3.12 M6 tả Pointwise Convolution với 256 kernel có output ảnh là
256 channel - 5-5513 22x22 22 2121210111101101101111 0.1.1.1 re 17
Trang 9Hình 3.13 Mô tả hàm phi tuyến tính ReLU ¿-55¿5c++ccssxvsc+2 18
Hình 3.14 Mô tả biểu diễn hàm Sigmoid trên trục Oxy - - 18
Hình 3.15 Mô tả công thức tính của hàm Sigmoid -. - 19
Hình 3.16 Mô tả bước stride 1 với ảnh đầu vào 6x6 và kernel 2x2 19 Hình 3.17 Mô tả bước stride 2 với ảnh đầu vào 6x6 và kernel 2x2
Hình 4.1 Mô tả sơ đồ khối Line Buffer -©55c+2ccccccccrrerre 21 Hình 4.2 Mô tả sơ đồ khối Convolution 3x3 stride 2 padding 0 22 Hình 4.3 Mô tả cách lấy giá trị của khối Kernel 3x3 stride 2 padding 0 23 Hình 4.4 Mô tả cách nhân tích chập các input của khối 24 Hình 4.5 Mô tả sơ đồ khối Convolution Core 3x3 -+ 24 Hình 4.6 Mô tả sơ đồ khối Convolution 3x3 stride 1 padding 0 25
Hình 4.7 Mô tả cách lấy giá trị của khối Kernel 3x3 stride 1 padding 0 26 Hình 4.8 Mô tả cách lấy giá trị của khối Kernel 3x3 stride 2 padding 1 27 Hình 4.9 Mô tả sơ đồ khối Convolution 1x1 stride 1 padding 1 28
Hình 4.10 Mô tả cách lấy giá trị của khối Kernel 1x1 stride 1 padding 1 29 Hình 4.11 Mô tả sơ đồ khối Convolution Core 1x1 -‹«-++ 30 Hình 4.12 Mô tả sơ đồ khối Convolution 1x1 stride 2 padding 0 30 Hình 4.13 Mô tả cách lấy giá trị của khối Kernel 1x1 stride 2 padding 0 31 Hình 4.14 Mô tả sơ đồ khối Kernel 1x1 stride 2 padding 0 32
Hình 4.15 Mô tả sơ đồ khối Convolution tổng quát - - 33
Hình 4.16 M6 tả cách thực thi của hàm kích hoạt Relu 34
Hình 4.17 Mô tả sơ đồ khối ReLU Activation . -ccccccccccrrcex 34 Hình 4.18 Mô tả sơ đồ khối của Max Pooling 3x3 stride 2 35
Trang 10Hình 4.19 Mô tả cách lấy giá trị của khối Kernel 3x3 stride 2 padding 1 36
Hình 4.20 Mô tả sơ đồ khối tinh giá trị max -5c+c+c+cvcersrers 37 Hình 4.21 Mô tả sơ đồ khối Global Average Pooling -: 38
Hình 4.22 M6 tả sơ đồ khối Dense ¿5252522 +txvxexsxstetrrrrrrsee 38
Hình 4.23 Mô tả công thức tính của hàm kích hoạt Sigmoid 39
Hình 4.24 Mô tả sơ đồ khối Sigmoid 5 +c+cexexexekekerererererrree 39 Hình 4.25 Mô tả công thức tính của khối Batch Normalization 40
Hình 4.26 Mô tả interface sơ đồ khối Batch Normalization 40 Hình 5.1 Mô tả các thông số khi train các ảnh -:-:-:-+++s++++5+2 42
Hình 5.2 Mô tả các lớp layer nhỏ bên trong Batch Normalization trong quá
trình lấy trọng SỐ - ¿2:2 2121121111121 11111 1111111111111 111111111 xe 43 Hình 6.1 Tổng quan quy trình thiết kế kiến trúc Xception - 44 Hình 6.2 Mô tả sơ đồ khối Datapath chỉ tiết ¿- ¿555 +5+5<cxss52 45 Hình 6.3 Mô ta interface các port khối ControlÌer -+-e-e++ 46 Hình 6.4 Mô tả giá trị ảnh đầu vào 7Xx7x - +: scsscsxsxsesererererexes 47
Hình 6.5 Mô tả giá trị ma tran kernel 3x3 - 555cc sssesersersee 47
Hình 6.6 Mô tả kết quả thực tế khi nhân tích chập ma trận 3x3 47
Hình 6.7 Kết quả mô phỏng khối Convolution 3x3 Stride 2 Padding 0 48 Hình 6.8 Mô tả mô phỏng thiết kế khối Separable với input ảnh đầu vao.48
Hình 6.9 Mô tả mô phỏng thiết kế khối Separable với output ảnh đầu ra.48 Hình 6.10 Mô tả kết quả mô phỏng khối ReLU ¿2-5552 5+ 49
Hình 6.11 Mô tả mô phỏng khối Max Pooling quá trình nạp input ảnh 50 Hình 6.12 Mô tả mô phỏng khối Max Pooling quá trình xuất output ảnh 50
Trang 11Hình 6.13 Mô tả quá trình thực hiện nhân Kernel và cộng tổng các giá trị
Hình 6.15 Mô tả kết quả mô phỏng của khối Dense - - -: 52
Hình 6.16 Mô tả kết quả Verilog với đối tượng đeo khẩu trang và đối
Trang 12DANH MỤC BẢNG
Bảng 2.1 Mô tả các kiểu dấu chấm động ¿-¿- ¿2525252 S+s+x+x++ssvs+ 8
Bảng 4.1 Mô tả tín hiệu interface của các khối chung thiết kế 20
Bảng 7.1 Kết quả sau khi tổng hợp IP Xception ¿-¿ ¿55c scsxsx>s 54
Bảng 7.2 Mô tả so sánh tài nguyên khi xử lý ảnh 47x47 và 127x127 55
Bảng 7.3 Mô tả so sánh tài nguyên khi xử lý tuần tự và song song 56
Trang 13DANH MỤC TU VIET TAT
Al Artificial Intelligence
AXI Advanced Extensible Interface
CNN Convolutional Neural Network
CNNs Convolutional Neural Networks
CPU Central Processing Unit
DL Deep Learning
DSP Digital Signal Processor
FPGA Field Programmable Gate Array
LUT Look Up Table
LUTRAM Look Up Table Random Address Memory
Trang 14ReLU Rectified Linear Unit
Reg Register
SD Secure Digital
Trang 15cứng Verilog Kiến trúc mạng có thé thay đổi được các trọng số đầu vào, có thé
thay đổi đối tượng nhận diện mong muốn
Đồng thời nhóm tiến hành tối ưu tài nguyên dé có thể đáp ứng được cho board sử
dụng là Virtex-7 VC707.
Kết quả sẽ được đánh giá theo các tiêu chí:
* Tinh chính xác của thuật toán, kết quả sẽ được đánh giá dựa vào kết quả tính
toán ở cơ sở lý thuyết và so sánh với kết quả model đã mô phỏng thử trên
Python.
* M6 phỏng và hiện thực: Thành công thiết kế, tối ưu, va synthesis từng
module nhỏ đến module Xception tông hợp thành một IP thống nhất đề tiễn
hành xây dựng tài nguyên và hệ thống trên FPGA
+ Tai nguyên phần cứng: Việc đánh giá các thông số này sẽ được thực hiện
trên các phân mêm của Xilinx.
Trang 16Chương 1 LỜI MỞ ĐÀU
1.1 Lý do chọn đề tài
Máy học là một trong những ứng dụng của công nghệ AI cung cấp cho các
hệ thống khả năng tự động học hỏi và cải thiện từ kinh nghiệm mà không cần lậptrình rõ ràng đóng vai trò rất lớn trong thời đại 4.0 hiện nay Trong đó học sâu DLmột chỉ của ngành máy học là tập hợp các thuật toán để có gắng mô hình dữ liệu
trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý với cấu trúc phức tạphoặc bằng nhiều cách khác Trong đó Mạng nơ-ron thần kinh tích chập là CNN
Đây là một trong những mô hình của DL.
Với việc phát triển của AI đi theo đó ta cần những phần cứng cần được phát
triển để có thể giúp cho việc vận hành của AI dé dàng nhanh chóng hơn Từ đó việc
ứng dụng mô hình mạng Nơ-ron tích chập trên FPGA sẽ giúp tối ưu hóa hơn về thờigian, không phụ thuộc quá nhiều vào server đồng thời giúp ta có thé dé dàng kiểm
soát tốt hơn về tài nguyên sử dụng Dựa trên lý do đó nhóm muốn nghiên cứu và
phát triển lõi IP CNN xử lý trên số dấu chấm động độ chính xác đơn precision Floating Point) và có thê nạp được trên board FPGA
(Single-Tình hình dịch COVID-19 hiện nay trên thế giới nói chung và Việt Nam nói
riêng tuy đã có cải thiện rõ rệt Qua trận đại dịch vừa rồi cho thấy được các căn
bệnh truyền nhiễm qua đường hô hấp đang có xu hướng gia tăng qua từng năm.Tương lai vẫn có thé xuất hiện các căn bệnh truyền nhiễm khác mà ta không thé ngờ
tới.
Do đó việc đeo khẩu trang ở nơi công cộng là không thé thiếu và điều đó đã
và đang trở thành điều bắt buộc ở một số nước có không khí bị ô nhiễm Với đề tạiđược chọn này nhóm mong muốn hoàn thành mục tiêu có thể hiện thực thành công
mạng CNN sử dụng kiến trúc Xception để nhận diện khuôn mặt người có hoặckhông đeo khẩu trang từ đó có thé giúp giải quyết được nhiều van dé cần thiết trong
xã hội với vấn đề dịch bệnh nhằm hạn chế sự tác động của con người
Trang 171.2 Mục tiêu nghiên cứu đề tài
Nghiên cứu, tìm hiểu, phân tích về các thành phần trong mô hình mạng nơ
ron tích chập CNN.
Nghiên cứu, tìm hiểu, thiết kế được lõi IP có thể hiện thực được mô hình
mạng nơ ron tích chập sử dụng Verilog.
Hiện thực thiết kế cho mạng nhận diện được 2 đối tượng riêng biệt
Mô phỏng, kiểm tra, so sánh kết quả xử lý giữa Verilog và Python
Tìm hướng cải thiện tài nguyên, tốc độ, có gắng hiện thực IP trên kit FPGA
cụ thé là board Virtex-7 VC707
1.3 Đối tượng
Thuật toán CNN nhóm lựa chọn dé nghiên cứu là Xception dùng để nhận
diện 2 đối tượng:
> Đối tượng có đeo khẩu trang
> Đối tượng không đeo khẩu trang / Đối tượng khác
1.4 Phạm vi nghiên cứu.
Tìm hiểu được tổng quan về mạng CNN, tài liệu và các bài báo khoa học uytin, có độ chính xác cao liên quan đến thiết kế hệ thống CNN trên FPGA
Khóa luận về các mô hình CNNs đã từng được thực hiện trên FPGA
Các mô hình mạng CNN trên Python, Keras, Tensorflow.
Các khối đã có góp phan tạo nên IP CNN trên phan cứng
Mô phỏng thiết kế IP Xception bằng phần mềm Vivado Design Suite của
Xilinx và đánh giá thiết kế
Trang 18Chương 2 TONG QUAN DE TÀI
2.1 Giới thiệu chung về mạng CNN
Mạng Nơ-ron tích chập CNN hay ConvNets bao gồm lớp đầu vào và lớp đầu
ra, bên trong là những lớp an (hidden layers)
Các lớp ấn của mạng bao gồm nhiều lớp tích chập (Convolutional), lớp tổng
hop (Pooling), lớp kết nối đầy đủ (Fully Connected), và theo sau các lớp an là các
hàm kích hoạt (ReLU, Sigmoid, )
Feature maps
Subsampling Convolutions Subsampăng Fully connected
Hình 2.1 Hình mô tả tổng quát về mô hình mang CNN2.2 Xác nhận mặt người có hoặc không có mang khẩu trang
2.2.1 Xác nhận khuôn mặt không đeo khẩu trangĐối với nhận diện khuôn mặt không đeo khâu trang, kết quả trả về có output
là “1” tương ứng phát hiện người đó đang không đeo khẩu trang
Hình 2.2 Mô tả tra cứu khuôn mặt không đeo khẩu trang
Trang 192.2.2 Xác nhận khuôn mặt không đeo khẩu trang hoặc khácĐối với nhận diện khuôn mặt có đeo khâu trang, kết quả trả về có output là
“0” tương ứng phát hiện người đó có đeo khâu trang
Hình 2.3 Mô tả tra cứu khuôn mặt có đeo khâu trang
Đối với tra cứu khác nằm ngoài phạm vi nhận diện khuôn mặt có hoặc
không đeo khẩu trang, kết quả trả về cũng sẽ là “0” tương đương với xác nhận
khuôn mặt có đeo khẩu trang
2.3 Dấu chấm động độ chính xác don (Single precision Floating Point)
2.3.1 Định nghĩa
Dau cham động được dùng dé biéu diễn một số hữu ti, theo chuẩn IEEE-754trong đó sử dụng một chuỗi chữ số (hay bit) đề biểu diễn một số hữu tỉ
Trang 202.3.2 Dấu chấm động chuẩn IEEE-754Hiệp hội IEEE đã chuan hóa cho việc biểu diễn số dấu phẩy động nhị phân
trong máy tính bằng cách đưa ra chuẩn IEEE 754 Ngày nay hầu hết các máy tínhđều tuân thủ theo chuẩn này
Một số trường hợp ngoại lệ như máy tính lớn IBM và máy vector Cray Loại
máy tính lớn IBM ngoài định dạng thập phân và nhị phân IEEE 754 còn có một định dạng riêng của IBM.
Còn với máy vector Cray thì họ T90 có một phiên bản IEEE nhưng máy SV1
vẫn còn dùng định dang dau phây động của chính Cray
Chuẩn IEEE 754 đưa ra nhiều định dạng rất gần nhau, chỉ khác nhau ở một ítchỉ tiết Năm trong số những định dạng này được gọi là định dạng cơ bản, và hai
trong chúng đặc biệt được dùng rộng rãi trong cả phần cứng máy tính và ngôn ngữ
lập trình:
> Độ chính xác đơn, được gọi bằng tên là "float" trong họ ngôn ngữ lập trình C
và tên là "real" hay "real*4" trong ngôn ngữ Fortran Đây là định dạng nhị
phân chiếm 32 bits (4 bytes) và phần định trị của nó có độ chính xác 24 bit
(tương đương với khoảng 7 chữ số thập phân)
> Độ chính xác kép, được gọi bằng tên là "double" trong họ ngôn ngữ lập trình
C và tên là "double precision" hay "real*8" trong ngôn ngữ Fortran Day là
định dạng nhị phân chiếm 64 bit (8 byte) và phần định tri của nó có độchính xác 53 bit (tương đương với khoảng 16 chữ số thập phân)
Các định dạng khác là nhị phân với độ chính xác bậc bốn (128 bit), cũng như
là dau phây động thập phân (64 bit) và dau phay động thập phân "kép" (128 bit)
Các định dạng ít thông dụng hơn:
> Định dạng độ chính xác mở rộng, mỗi số chiếm 80 bit
> Định dạng bán chính xác cũng gọi là dau phẩy động 16, mỗi số chiếm 16 bit
Trang 21Bat kỳ một số nguyên nao có giá trị tuyệt đối nhỏ hơn hay bằng 224 đều cóthể biểu diễn một cách chính xác bằng định dạng độ chính xác đơn, và bất kỳ số
nguyên nào có giá trị tuyệt đối nhỏ hơn hay bằng 253 cũng có thé biéu diễn một
Một dự án nhằm mục đích sửa đồi chuẩn IEEE 754 đã được khởi động trongnăm 2000 (xem IEEE 754 sửa đổi Dự án này đã hoàn thành và được công nhận vào
tháng 6 năm 2008.
Nó bao gồm các định dạng dâu phây động thập phân và định dạng dấu phây
động 16 bit ("nữa") Định dang 16 bit nhị phân có cùng cấu trúc và quy luật như các
định dang cũ khác với 1 bit dấu, phan mũ 5 bit và 10 bit phần định trị
Dinh dang này hiện đang được sử dụng trong ngôn ngữ đồ họa Cg củaNVIDIA, và có mặt trong chuẩn mở EXR
2.3.3 Cấu trúc biểu diễn trong máy tính
Thông thường thì các sé đấu phay động được thé hiện trong bộ nhớ máy tính
theo thứ tự từ trái sang phải gồm bit dấu, phần mũ, rồi đến phần định trị
Với định dạng nhị phân IEEE 754 chúng thường được biểu diễn bằng các
phan sau trong bảng Bang 2.1
Trang 22Bảng 2.1 Mô tả các kiểu dấu cham độngKiểu Dấu Phần Mũ Phan định trị | Tong số bit
dạng khác.
Trang 23Chương 3 LÝ THUYET VE KIEN TRÚC XCEPTION
3.1. Tổng quan kiến trúc mạng Xception
Tổng quan về kiến trúc mạng Xception gồm 3 phần:
> Entry flow
> Middle flow
> Exit flow
Với input Ảnh 299x299x3 (3 kênh màu RGB) có output là n lớp với n là số
lớp vật thể cần nhận diện, tổng số lớp layer hơn 100 và số parameter sử dụng
Hình 3.1 Mô ta diagram của kiến trúc Xception với kích cỡ ảnh 299x299x3
Trong quá trình thiết kế và xây dựng lại thuật toán Xception, nhóm đã phân
tích và xác định cũng như lược bỏ những chỉ tiết không quan trọng cũng như tối ưu
tài nguyên trong khả năng có thể để có thể đủ tài nguyên phần cứng cho board
Trang 24Virtex 7 VC707 để có thể hiện thực được thành công thuật toán Xception bằngngôn ngữ lập trình phần cứng Verilog.
Vi vậy nhóm đã rút gọn lại thuật toán nhưng vẫn giữ được nét đặc trưng vốn
có của Xception với chỉ tiết như sau:
> Input: Ảnh 127x127x1 (1 kênh màu xám) được chuyền đổi thành 16129
Entry Flow Middle Flow Exit Flow
Hư Fiza 8x83704 features maps 8x8x704 features maps
Conv a2 5x3 sindas2 ReLU [ReLU
6 ISeparable 704, 3x3 [ReLu
Con na IReLU [Eonv Taz] [Separate 704 3x3
ISeparable 704, 3x3 |&ndes2_ | [ReLU
Hình 3.2 Mô ta Diagram của kiến trúc Xception với anh đầu vào 127x127
3.2 Hướng xây dựng kiến trúc
10
Trang 25IP Xception có thể xây dựng theo hai hướng là xử lý tuần tự và xử lý song
song.
Khi xử lý tuần tự, IP Xception sẽ sử dụng cố định một số lượng bộ
Convolution Các layer ảnh kết quả sẽ được lưu trữ trong BRAM và xử lý thông
qua lặp lại sử dụng các bộ Convolution này ở bước tiếp theo như hình 3.3 bên
704 layer 32bộ
am Conv
Hình 3.3 Mô tả kiến trúc Xception xử lý tuần tựKhi xử lý song song, IP Xception sẽ sử dụng rất nhiều bộ Convolutionkhác nhau Kết quả output layer ảnh của bộ Convolution này sẽ là input layer ảnh
của bộ Convolution tiếp theo
Quá trình chạy thé hiện thông qua hình 3.4 bên dưới
11
Trang 26Mục tiêu của nhóm nhắm tới xây dựng và tối ưu tài nguyên phần cứng cho
IP Xception để đáp ứng được cho một board FPGA Do đó nhóm thiết kế IP
Xception theo hướng xử lý tuần tự
Qua quá trình phân tích do sự lặp đi lặp lại ở khối Middle flow dẫn đến khối
lượng parameter lớn đồng thời kéo theo lượng tài nguyên cần dùng cũng sinh ratheo cấp số nhân, vì vậy nhóm thiết kế lại việc lặp đi lặp lại ở bước Middle flow là
2 lần so với 8 lần ở bản Xception gốc và số lượng channel ở khối Pooling cuối cùng
là 1024 thay vì 2048.
Mặc khác, nhóm đã tiếp tục tiến hành tối ưu thiết kế để có thể đáp ứng đượctài nguyên cho board Virtex-7 VC707 đồng thời giảm thời gian thực thi thi qua kết
qua train và đánh giá so với thuật toán dùng ảnh 127x127xI thi với thuật toán nhóm
đã tối ưu mang lại kết quả khả quan tuy có phần không chính xác với việc nhận diện
20 ảnh và trả về 3 ảnh sai, thuật toán cụ thể như hình 3.5 bên dưới:
12
Trang 27Entry Flow Middle Flow Exit Flow
Image 47x47x1 3x3x704 features maps 3x3x704 features maps
Conv 32 3x3 strides 2 ReLU ReLU
Separable 704, 3x3 ReLU
Do ng ReLU Separable 704 3x3
Separable 704, 3x3 ReLU ReLU
'Separable 704 3x3
Separable 1024 3x3
|Maxpooling 3x3 strides 2 Separable 128, 3x3
ReLU Separable 128, 3:3 + Maxpooling 3x3 strides 2
ReLU Separable 704 3x3 ReLU
— 3x3x704 features maps Separable 1024 3x3
'Separable 256 3x3
ReLU Repeat 2 times
Separable 256 3x3 IMaxpooling 3x3 strides 2
GlobalAveragePooling
:
Sigmoid
Hình 3.5 Mô tả khối thiết kế Xception với anh đầu vào 47x47x1
Chỉ tiết thuật toán dùng ảnh đầu vào 47x47x1 sau khi rút gọn như sau:
> Input: Ảnh 47x47x1 (1 kênh màu xám) được chuyền đổi thành 2209 data 32
bit FP.
> Số lớp layer: 62
> Tổng số Parameter sử dụng: Khoảng 6,570,336
Với thuật toán này, việc giảm kích cỡ ảnh xuống thành 47x47x1 và loại bỏ
khối Convolution 1x1 vẫn đảm bảo khả năng nhận diện ảnh chính xác tuy có sai sốnhưng vẫn ở mức cho phép, từ đó cho thấy đem lại kết quả khả quan cho quá trình
phát triển sau này là nạp xuống board Virtex-7 VC707
13
Trang 283.4 Lớp tích chập (Convolution)
Gia sử có một input ảnh có kích thước 12x12x3, bây giờ sẽ thực hiện 1
Convolution 5x5 lên input ảnh với padding 0 và stride 1 Nếu chỉ xét trên width và
height của ảnh thì quá trình convolution sẽ là: 12x12 — (5x5) — >8x8 Kernel 5x5
lướt qua toàn bộ ảnh, mỗi lần thực hiện 25 phép nhân và trả về 1 output, vì là
padding 0 nên sẽ nhận được (12-5+1) = 8x8 pixels ảnh đầu ra
Tuy nhiên với input có 3 channels thì phải thực hiện Convolution trên cả 3 channels
này Tức là cần 75 phép nhân mỗi lần dịch chuyền kernel
Tương tự với chiều không gian hai chiều, với không gian ba chiều cũng thựchiện phép nhân ma trận vô hướng trên tất cả 25 pixels và trả về 1 số Sau khi kernel
5x5x3 lướt qua toàn bộ ảnh, 12x12x3 ảnh sẽ trở thành 8x8x1 như hình 3.6 bên dưới.
Hình 3.6 Mô tả convolution có output = 8x8x1
Nếu tăng số channels output thành 8x8x256 Như vậy sẽ phải tạo ra 256
kernel 5x5x3, sau khi tất cả kernel thực hiện xong sẽ tiến hành gop tất cả cácoutput lại để thu được 8x8x256 pixel ảnh đầu ra
Hình 3.7 Mô tả quá trình convolution: 12x12x3 — (5x5x3x256) = 8x8x256
14
Trang 293.5 Lớp tong hợp (Pooling)
Tầng pooling là một phép downsampling, thường được sử dụng sau tầng tích
chập, giúp tăng tính bất biến không gian Cụ thể, Max pooling và Average pooling
là những dạng pooling đặc biệt, mà tương ứng là trong đó giá trị lớn nhất và giá trị
trung bình được lấy ra
100] 25 | 12
3.6 Lớp kết nối đầy đủ (Fully-Connected)
Tầng kết nối đầy đủ FC nhận đầu vào là các dữ liệu đã được làm phẳng, màmỗi đầu vào đó được kết nối đến tat cả neuron Trong mô hình mạng CNNs, các
tầng kết nối đầy đủ thường được tìm thấy ở cuối mạng và được dùng để tối ưu hóa
mục tiêu của mạng ví dụ như độ chính xác của lớp.
Lớp kết nối đầy đủ tổng hợp lại các ảnh được lọc từ các khối Convolution vàPooling sau đó chuyền thành các phiếu bau Giá trị phiếu bầu chọn riêng lẻ tượng
trưng cho hình ảnh được xác định, lớp kết nối đầy đủ được miêu tả như hình 3.9 bên
dưới:
fully connected layers Nx binary classification
Hình 3.9 Mô tả hoạt động của khối Fully-Connected
15
Trang 303.7 Separable Convolution
Separable Convolution chia một kernel thành hai kernel riêng biệt là
Depthwise Convolution và Pointwise Convolution để thực hiện lần lượt hai
convolutions.
3.7.1 Depthwise Convolution
Đầu tiên sẽ thực hiện convolution trên input ảnh mà không làm thay đổi số
lượng channels của ảnh, bằng cách sử dụng 3 kernel 5x5x1
Sau khi có output ảnh 8x8x3 thu được từ Depthwise Convolution trên, tiếp
theo cần tăng số lượng channels lên dé thu được 8x8x256 bằng cách sử dụng kernel
1x1 để thực hiện phép convolution với từng điểm dữ liệu Kernel sẽ có số lượngchannels bằng với số lượng channel của ảnh đầu vào với mục đích thu được 1channel của ảnh đầu ra Ở đây kernel sẽ là 1x1x3, sau khi Convolution ảnh 8x8x3
—(1x1x3) => 8x8x1 cụ thể như hình 3.11 bên dưới
16
Trang 31mm -C#)- m›
8 8 F
Hình 3.11 Mô tả Pointwise Convolution chuyên 3 channel ảnh thành | channel
Tiếp theo, tao ra 256 kernel 1x1x3 sẽ có được ảnh đầu ra là 8x8x256 như
hình 3.12 bên dưới.
Hình 3.12 Mô tả Pointwise Convolution với 256 kernel có output ảnh là 256
channel
Kết luận lại cách mà Depthwise Separable Convolution thực hiện có thể tóm
tắt lại quy trình như sau: 12x12x3 - (5x5x1x1) => (1x1x3x256) => (8x8x256)
3.7.3 Tại sao lại là Separable Convolution
Separable Convolution cũng đưa ra kết quả giống như Convolution nhưng cóđiểm nồi bật hơn Cách tiếp cận là tính xem số lượng phép nhân cần phải thực hiện,
với Convolution thực hiện Convolution 256 kernel 5x5x3 lên 8x8 của ảnh đầu vào,
nghĩa là 256x3x5x5x8x8=1,228,800 phép nhân.
Với Separable Convolution: Ban đầu với khối Depthwise Convolution có 3
kernel 5x5x1 dịch chuyển 8x8 lần, nghĩa là 3x5x5x1x8x8 = 4,800 phép nhân CònPointwise Convolution có 256 kernel Ixlx3 dich chuyển 8x8 lần tức
256x1x1x3x8x8 = 49,152 phép nhân, tổng cộng thành 53,952 phép nhân tat cả
17
Trang 32Từ đó cho thấy sử dụng Separable Convolution trong thuật toán sẽ giúp môhình mạng nhẹ hơn, thực hiện nhanh hơn rất nhiều so với phép Convolution thông
thường.
3.8 Các hàm kích hoạt
3.8.1 ReLU (Rectified Linear Unit)
Tầng ReLU là một hàm g kích hoạt được sử dung trên tất cả các thành phan.Mục đích của nó là tăng tính phi tuyến tính cho mạng
ReLU
g(z) max(0, z)
Hình 3.13 Mô tả ham phi tuyến tính ReLU
3.8.2 Sigmoid
Bước Sigmoid có thể được coi là một ham logistics tổng quát được thé hiện
trong hình bên dưới:
0.5
Hình 3.14 Mô tả biểu diễn hàm Sigmoid trên trục Oxy
Cách tính hàm sigmoid được định nghĩa bằng công thức như hình 3.15 bên
dưới:
18
Trang 33S(z) = = -(@) = ee ea
Hình 3.15 Mô tả công thức tính của ham Sigmoid
Trong thuật toán này, hàm Sigmoid có tác dụng phân biệt các lớp đưa ra kết
quả 0 hoặc 1 về các đối tượng, cụ thé là 1 đối với đối tượng không đeo khẩu trang
và 0 đối với người có đeo khẩu trang hoặc trường hợp nhận diện khác
3.9 Stride (Bước nhảy/Trượt)
Stride là bước nhảy trong quá trình lọc lay data ảnh đầu vào chuẩn bị cho
bước nhân tích chập Thường được sử dụng là stride 1 và stride 2.
Với mỗi lần nhảy, sẽ là lần nhân tích chập tương ứng giữa ma trận ảnh với sốKernel cố định được đặt sẵn
Mô tả chỉ tiết các bước nhảy như hình 3.16 và 3.17 dưới đây miêu tả biểudiễn bước nhảy Stride:
Hình 3.17 Mô tả bước stride 2 với ảnh đầu vào 6x6 va kernel 2x2
19
Trang 34Chương 4 CHI TIẾT VE THIET KE CÁC MODULE XCEPTION
Bảng 4.1 Mô tả tín hiệu interface của các khối chung thiết kế
Tín hiệu VO | Số bit Mô tả
clk I 1 Xung clock hệ thông, kích cạnh lên
rst I 1 Reset bất đồng bộ tích cực thấp
Kernel I 1 Giá trị trọng số từ file python
Valid In I 1 Tin hiệu báo có dữ liệu đi vào
Data In I 32 Dữ liệu đầu vào
IData_Out O 32 IDữ liệu kết quả sau khi thực hiện chức
Inăng của module
Valid_Out O 1 Tin hiệu cho biết có dữ liệu đầu ra.
4.1 Thiết kế Line buffer
Line buffer là kỹ thuật được dùng trong thiết kế đường ống (pipeline), dùng
để trích xuất ma trận trong nhân tích chập Bản chất Line buffer là một FIFO hoặc
đơn giản là tập hợp những D Flip-flop liên tiếp nhau, có kích thước bằng 32 bits
Sơ đồ khối tổng quát được miêu tả như hình 4.1 bên dưới
20
Trang 35Hình 4.1 Mô tả sơ đồ khối Line Buffer4.2 Thiết kế khối Convolution 3x3 stride 2 padding 0
Khối Convolution 3x3 stride 2 padding 0 là khối lớn kết hợp từ hai khối
kernel 3x3 stride 2 padding 0 và Convolution Core 3x3 Bao gồm 9 data ảnh và 9data kernel được đưa vào input Data ảnh được phân tích ở khối Kernel 3x3 stride 2
padding 0 dé lọc ra các giá trị cần được nhân tích chập Khối Convolution Core 3x3
sẽ nhân 9 giá trị input kernel và 9 giá trị kết quả của bộ Kernel 3x3 stride 2 padding
0, sau đó cộng tổng kết quả 9 phép nhân và cho ra kết quả ở output
Khối này là khối bắt đầu của toàn bộ kiến trúc Xception Nó sẽ được thực thi
32 lần tạo ra 32 lớp ảnh có kích thước bằng 1 nửa kích thước ảnh ban đầu
Sơ đỗ khối tổng quát của khối Convolution 3x3 stride 2 padding 0 cụ thể như
hình 4.2 bên dưới.
21
Trang 36Hình 4.2 Mô tả sơ đồ khối Convolution 3x3 stride 2 padding 0
4.2.1 Kernel 3x3 stride 2 padding 0
Nhiệm vụ của khói Kernel 3x3 stride 2 padding 0 quét và lọc ra những giá
trị cần sử dụng cho phép nhân tích chập trong tổng số data ảnh đầu vào theo 1 ma
trận 3x3 Giá trị đầu ra là kết quả 9 giá trị của bước lọc này và có bước nhảy
stride là 2.
Ví dụ ma trận ảnh 5x5 với khối kernel 3x3 stride 2 padding 0 lấy data theo
ma trận 3x3 đầu tiên Sau đó nhảy qua phải 2 giá trị để lấy data tiếp theo Lan
lượt tiến hành theo hàng ngang cho đến giá trị cuối cùng, sau đó nhảy 2 ô xuốnghàng đọc và lặp lại, mô tả cụ thể theo hình 4.3 bên dưới
22
Trang 37Hình 4.3 Mô tả cách lấy giá trị của khối Kernel 3x3 stride 2 padding 0
4.2.2 Convolution Core 3x3
Khối Convolution Core 3x3 là khối có chức năng nhân tích chập 3x3 inputdata và 3x3 input kernel Bản chất của khối này là 9 bộ nhân FP 32 bits và 1 bộ
cộng 9 input FP 32 bits 9 input data sẽ được nhân tương ứng với 9 input kernel.
Sau đó kết quả của 9 bộ nhân được đưa qua bộ cộng 9 input và cộng tổng lạithành 1 output đầu ra, miêu ta cụ thé theo hình 4.4 bên dưới
23