1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế và hiện thực mạng nơ ron tích chập trên FPGA sử dụng kiến trúc Xception

74 2 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 74
Dung lượng 26,83 MB

Nội dung

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 3

THONG 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 4

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

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

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

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

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

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

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

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

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

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

ReLU Rectified Linear Unit

Reg Register

SD Secure Digital

Trang 15

cứ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 16

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

1.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 18

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

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

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

Bat 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 22

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

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

Virtex 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 25

IP 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 26

Mụ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 27

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

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

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

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

mm -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 32

Từ đó 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 33

S(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 34

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

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

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

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

Ngày đăng: 03/11/2024, 19:13

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN