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: Nghiên cứu và hiện thực IP ShuffleNet

103 0 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

Tiêu đề Nghiên Cứu Và Hiện Thực IP ShuffleNet
Tác giả Trần Đăng Hậu, Lê Quang Phong
Người hướng dẫn ThS. Trương Văn Cương
Trường học Đại học Quốc gia Tp. Hồ Chí Minh
Chuyên ngành Kỹ thuật máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2024
Thành phố Tp Hồ Chí Minh
Định dạng
Số trang 103
Dung lượng 32,92 MB

Nội dung

Một kiếntrúc CNN chuẩn bao gồm một số lớp tích chập và lớp phân loại, điều này đòi hỏi lênđến hàng tỷ phép toán cho mỗi ảnh đầu vào, vì vậy việc sử dụng GPU dé hỗ trợ quátrình huấn luyện

Trang 1

ĐẠI HOC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TINH

TRAN ĐĂNG HẬU - 20521302

LÊ QUANG PHONG - 20521744

KHÓA LUẬN TÓT NGHIỆP

NGHIÊN CỨU VA HIỆN THỰC IP SHUFFLENET

RESEARCH AND DESIGN IP SHUFFLENET

CU NHAN KY THUAT MAY TINH

GIANG VIEN HUONG DAN THS TRUONG VAN CUONG

TP HO CHÍ MINH, 2024

Trang 2

LỜI CẢM ƠN

Đầu tiên em muốn cảm ơn các thầy, cô tại Đại học Công nghệ Thông tin — Đại

học Quốc gia Thành phó Hồ Chí Minh đã giúp đỡ và chỉ day tận tình trong quá trìnhhọc tập và làm việc tại trường Từ đó, em nhận được những kiến thức, kinh nghiệmcũng như có những trải nghiệm quý báu trong thời gian học đại học cũng như để tiếp

bước cho cuộc sông sau này.

Tiếp theo, em xin cảm ơn các thầy cô thuộc Khoa Kỹ thuật Máy tính đã giúp đỡ,

chỉ bảo tận tình trong quá trình học tập và làm việc tại khoa Đặc biệt trong quá trình

thực hiện khóa luận tốt nghiệp đã nhận được sự quan tâm, giúp đỡ từ các thầy, cô dé

giúp hoàn thiện đề tài một cách tốt nhất Đề có thể hoàn thành tốt khoá luận tốt nghiệpnày, em xin cảm ơn thay Trương Văn Cương đã luôn giúp đỡ, chỉ day tận tình dé giúp

em có được những kinh nghiệm về chuyên môn cũng như kỹ năng mềm giúp ích cho

quá trình làm khóa luận cũng như cuộc sông sau này.

Sau cùng, em muôn gửi lời cảm ơn đên gia đình và bạn bẻ đã luôn ủng hộ, tin

tưởng, động viên nhiệt tình dé em có thé yên tâm, hoàn thành tốt khóa luận tốt nghiệp

Tp Hồ Chí Minh, ngày 02 tháng 08 năm 2024

Sinh viên thực hiện

Trần Đăng Hậu Lê Quang Phong

Trang 3

MỤC LỤC

Chương 1 GIGI THIEU TONG QUAN 2-2222 E+2E£2£E+EEZEEEEkerrerrkrres 2

1.1 - Giới thiệu để ti eee eccsseeecessnnecessneccessneccesnnscessnsscesnnsceesanecesnneeeesnneeeesens 2

1.2 Cac nghiên cứu liÊn Qua1 - Ă c 3331831183313 1118 11 811 111 1 kg 2

1.3 Tổng quan d6 tài ©-+-©2++22t22k22112211221211 2112111211122 crerreg 41.4 Mục tiêu để tài ch nhieu 4Chương 2 CO SỞ LÝ THUYÊẾT 2-2 2+SE+EE+EE2EE2EEEEE2EEEEEEEEEEEEErkerrerree 5

2.1 Mơ hình mạng ShuffleNet v2 - - - c1 HS HH ng HH rệt 5 2.2 Convolution Layer — Lớp tích Chap - +5 * + xssveseeeresersrres 8 2.3 Depthwise Separable ConvỌufIOT - - << s ke ksikseekeesereeeee 9

2.10 Lượng tử hĩa L- Ăn TH HH ngư 15

2.11 Tap dữ liệu hình ảnh ImageÌNet - 5 S5 + sseersseerreeree 17

Chương 3 MO HÌNH THIET KÊ - 2-2 ©5¿+<+EE+E£+EE£EE++EEerxerxezrxerxee 19

3.1 Hién thực lượng tử HO eee eeceeeneeesceceeeceeeeeaeceaceeeeeceaeceseeceeeeseeeenees 19

3.2 Kiến trúc tổng Quam oecceceecceceescssessessessessessessessessessessessesscssesuessesscsscsseaveaeeaee 213.3 Thiết kế bộ đệm dữ liệu +-¿-++++trtEkkrtttkkirttrirrrriiierrirree 233.4 Khối Convolution c+-+©+++ctEEkrtttrkkrrttrtirrtrrirrrrrirerrrrre 24

3.4.1 Khối conv_controller -: 5e 5z se St SEeE+ESESESESESESEEEEEEEEErererersrssee 26

Trang 4

3.442 Khối PC_CONV_IMAC 11177 293.5 Khối Depthwise Convolution -¿ s¿©+2++2x++£x++zx++rxesrxrsrxrrrxee 36

3.5.1 Khối DWconv_controller c+cc++crerkkerrtrkkrrrrrkrrrre 373.52 Khối 0 588À9/,9ià 08:12 1177 383.6 Khối 1x1 Convolution ::++++2cxxttttkttrtrrrtrrttrtrrrrrrrrrrrrrrree 40

3.6.1 Khối cnn_controller _convlxI -. c+c+s+k+s+E+E+szszssessrsressrssse 423.6.2 Khối pe_convlxI_ ma -©¿+-<+k+£Et2EE£EEtEEE+EEerkerrserkrree 433.7 Khối Pooling :- ket ke xEE1E1121111121121121111 1.1.1 xe 44

3.7.1 Khối cnn_controller_pOỌITIE - - << **+£++eExeeeeeeeseeereeexs 463.7.2 Khối pe_poolingsecccecceccsscessessessecsecsessecseeseesessessessessessessessesssssssssssesseess 473.8 Khối Linear G/,sếco À À 49

3.8.1 Khối linear_controller -¿-¿ 5: cs+E+E+E+ESESESEtEtErErErerererersrssee 513.8.2 Khối IS00115208012 8n Tẽn a 513.9 Khối Channel Shuffle csccssesccssseessseecsssecessseecessneeesssneecssneeessnesessseess 53Chương 4 KIEM TRA VÀ ĐÁNH GIÁ THIET KỂ -: -¿52©55+¿ 55

4.1 Kiểm tra khối Convolution -.-:-+¿22xvtttxxvrsrtrtersrrrtrrrrrrrrrrrk 57

4.1.1 Chạy behavioral simulafIOI - «xxx Ektskeerskrskesrske 58

4.1.2 Tài nguyên sau khi tổng hợp -: + ©++2x++cx++zx+zrxrzrxrzrxee 594.1.3 So sánh kết quả mơ phỏng phan cứng so với phần mềm 604.2 Kiểm tra khối MaxPOol : 5cctc2+vttEExtrtttkrtrtrtrtrrrrtrrrrtrrrrrrre 61

4.2.1 Chạy behavioral simulafIOT - <5 5s **xEsseEEeeereeeeereeree 61

4.2.2 Tai nguyên sau khi tong hợpp -¿- + ++++x+£x++zxvrxerrszrxeres 61

4.2.3 Chạy post-synthesis simulÌafIOT 5 52c + sekEseeseeerreeree 62

4.2.4 So sánh kết quả mơ phỏng phan cứng so với phần mềm 63

Trang 5

4.3 Kiểm tra khối 3x3 DWCONV S2- SE St St SESEEESEEEEEEEEEEEESErrrrrrererrree 64

4.3.1 Chạy behavioral simulafIONI - c5 SE **EsskEeekeserseers 64

4.3.2 Tai nguyên sau khi tong hop cccccscsssescsssessessessessessesessssssssseeseeseseess 654.3.3 So sánh kết quả mô phỏng phần cứng so với phần mềm 664.4 Kiểm tra khối IXICOnV -s+t222xvttEExtrtttktrrrttrrrrrtrrrrrtrrrrrr 67

4.4.1 Chạy behavioral simulatIOn <6 5s * SE sseeEseereeeeereeree 67

4.4.2 Tài nguyên sau khi tong hOp scccscsssesssesssesssecssecssecssecssecsssesessseesseesses 68

4.4.3 Chạy post-synthesis simulÌafIOI - 5 + ScS + svkseeseeerreeree 68

4.4.4 So sánh kết quả mô phỏng phan cứng so với phần mềm 694.5 Kiểm tra khối ShuffleUnit Spatial down sampling - 70

4.5.1 Chạy behavioral simulatIOn s5 5 3+ **xEsseeeseeeeeeeeeeeree 70

4.5.2 Tai nguyên sau khi tong hợp - 2-5 2 + ++££+££+£z£zEzrzrszes 71

4.5.3 Chạy post-synthesis sImulÌafIOI - 5 5+5 + +kkseeseeeereeres 72

4.6 Kiểm tra khối ShuffleUnit basic -.-¿ cc+©cc+eeecxverrrrreerrre 72

4.6.1 Chạy behavioral simulafIOTI - «5 5+ + + +*E£+kEesEeeeeseeeeers 72

4.6.2 Tai nguyên sau khi tong hợp -¿- + + ++++£++x++xzxzxzrezrsces 73

4.6.3 Chạy post-synthesis simulafiOI - -c- s xxx sseeerersrskrske 74

4.6.4 So sánh kết quả mô phỏng phan cứng và phần mềm - 744.7 Kiểm tra khối Global Pool c-c-c+c+c++ttttvrrtrrtrrrrrrkrrrrrtrrrrre 75

4.7.1 Chạy behavioral simulafIOII 5 5< + + sEeeersereeres 75

4.7.2 Tai nguyên sau khi tổng hợp -2- 2 2 + ++£++£++EzEzEzrzrszes 76

4.7.3 Chạy post-synthesis sImulafiOH - - 5 5S +*seseeEeesseeseee 77

4.7.4 So sánh kết quả mô phỏng phan cứng và phần mềm 774.8 Kiểm tra khối Fully connected - 5 s+cs+s++x++x++E+rzrzrxrrxrrerreee 79

Trang 6

4.8.1 Tài nguyên sau khi tong hợp -¿- 2 2 s+++£++£++Ezxzxzrszrezes 79

4.8.2 Chạy post-synthesis sImulafIOH 5+ 5 + + + ‡*+sskEeeesereeees 79

4.8.3 So sánh kết quả mô phỏng phần cứng và phần mềm 794.9 Kiểm tra mô hình ShuffleNet v2 -ccccccccxeerrrrrrirrrrrrirrree 81

4.9.1 Chạy behavioral simulafIOTI - 5 5 + SE Ereeesrrerre 81

4.9.2 Tai nguyên sau khi tong hợp - 2-2 2 ++£+£++E++E++EzEzrzrezes 84

4.9.3 Chay post-synthesis simulafiOI s5 + xe rrkt 85

Chương 5 TONG KẾT -:- 2 S2+S<+SE+EE9EE2EEEEE2E12E1211211211212212 1 eeU 86

5.1 Gt Ua occ eeccceeeescsssseecesssneeesssneeeecsssneeseesnnseesessnneecessnnnesessnneeseesnneseessnes 86

5.2 Khó khăn gap phat ce ccceccecceseeseceseeecceececceseceeeeseceseeeeeseeeeeeseeeeeeeeeees 87

5.3 Hướng phat triển đề tai cccecccccccccccsscesessessessessessessessessessessessesscsseseesseseeaee 87

Trang 7

DANH MỤC HÌNH

Hình 2.1 (a) Shuffle Basic Unit; (b) Shuffle Unit spatial down sampling 7

Hình 2.2 Tổng quan kiến trúc của khối ShuffleNet v2 0.5Šx cecccccsssessesssessessessessesseesees 8

Hình 2.3 Pháp tích chập với kích thước bộ lọc là 3, Stride = 1, Padding = 1 9 Hình 2.4 Depthwise Separable COTIVỌIẨÏORN 5 << SE VE+*eEEeeeEeeeeeeeeresexs 10

Hình 2.5 Channel Shuffle trong ShuffleNet[ ] ] «+sc+svksseksseessseessees 10

Hình 2.6 Pooling với kích thước bộ lọc = 2, Stride = 2 «.cc+ssceesss 11

Hình 2.7 Ví du lớp Fully Connected với dau vào là 3 và đâu ra là 5 - 12Hình 2.8 Đồ thị hàm kích hoạt ĐeLU -c5ccesccE+terrrtrkteerrrrtrrrrrrie 12Hình 2.9 Do thị hàm kích hoạt sigiOid - +: 2-55 £+E£+EE+E‡E£EEE+Errrrrreres 13Hình 2.10 Biểu đơ sai số của phương pháp PLAINỊL19] - 2©cs+ce+cc+cczeezecres 14

Hình 2.11 Biểu đồ hàm Sojf†jMaxx - S252 E5 StSEEEEEEkEEEEerkerrkerkerrrkereee 15

Hình 2.12 Ví dụ về lượng tử hĩa từ số Floating Point sang số Integer 8 15

Hình 2.13 Dyamic Quantization Của PfOTCH - s«ssss+ss‡‡+++vEV+seeeExeeeeesssssxs 16 Hình 2.14 Static Quantization CUA PfOFCH ằẶ sec + S+sekEteeeereeeeessssesrs 16 Hình 2.15 Static Quantization Aware TTaÏHHÌNG c5 555555 3+ + s+ 17

Hình 2.16 Một số hình ảnh của tập dữ liệu ImageÌNet[ 2 Ï ] « «<=+<s«+++ 17Hình 3.1 Sơ đơ khối tích chập với số nguyên 8 Dit -©cc©cz+ce+cxccccscscces 21Hình 3.2 Kiến trúc tổng quan mơ hình phân 2711-280088n០22Hình 3.3 Khối ShuffleNet IP - - + <+k+EE‡E£EEEEEEEEEEE21E11E111E11211111111 11x11 xe 23Hình 3.4 Thiết kế khối ĐuƒÏ€F +- + ©tSE+E‡Sk‡EE+ESEEEEEEEEEEEEEEEEEEEEEEEEEEEEErkrrrrkerkes 24Hình 3.5 Kiến trúc khối ConnVỌHIiOH ccccecsesssessesssessessesssessesssessessesssessecsssssessessseesees 25Hình 3.6 Sơ do chuyển trạng thái ứng với padding != 0 và stride = 1 27Hình 3.7 Sơ do chuyển trạng thái ứng với padding != 0 và stride > 1 27Hình 3.8 Kiến trúc của khối conv_confrolÏeF cocceccscscsssescsesssssssssesesessvscscscssssscscsesesens 28Hình 3.9 Ví dụ về hình ảnh cĩ kích thước 7x7 và vùng đệm pPADDING = 1 28Hình 3.10 Kiến trúc khối D€_ COTIV_ THH(C co 000.0 29Hình 3.11 Kiến trúc khối 2/08/1772, n 30Hình 3.12 Kiến trúc khối pe_conv_ mac _ AfqJOdfÏ, - s cs<ss+sskk+sekkeseseeeee 30

Trang 8

Hình 3.13 Cau trúc cơ bản của DSP48E2[22] coccscsssessesssessesssessessesssesseesesssessesssessecs 31

Hình 3.14 Các bước thực hiện 2 phép nhân ac và bc trên DSP[23] - 32

Hình 3.15 Kiến trúc khối Asp_uall Mult 80000n8 a 33Hình 3.16 Kiến trúc khối Adder Tree i.esssssssssssssssessssssesseessssesesssusessesssnesseannieseen 33Hình 3.17 Kiến trúc khối D€_ COTV_ ĐIH̓€T _ OHÍ 5< SE EESsekkeseesrekeree 35

Hình 3.18 Mơ tả tích chập depthwise s5 - <5 xxx ki kvkesvke 36

Hình 3.19 Khối Depthwise Convolution - 5S 1E key 36Hình 3.20 Kiến trúc controller của khối DWW€onV -s-©cz©5s+cs+csc>csecsees 38Hình 3.21 Kiến trúc khối ;88141-4/-8,/777PEE0007575AAee 38Hình 3.22 Kiến trúc khối D€_COHVIDẨWW, TC 5 c5 3+3 ESSEEESreeekseeeererseereee 39

Hình 3.23 Minh họa cho cách tích chập của lớp IxÏCOPVW «.« «<< << <<<++ 40

Hình 3.24 Kiến trúc khối 1X1 COn ecccccccccc:ccccccccxvtisrcxvrerrtrrrrrrtrrrrrrvee 4IHình 3.25 Sơ đồ chuyển trạng thái của khối xÏconV -s©-secce5ceecsee: 43Hình 3.26 Khối 2/06 708,., 00nẺn 43

Hình 3.27 Minh họa pool Kernel 3X3 - c5 SE +EEESeeeeeseeerseeerssreesrs 44

Hình 3.28 Kiến trúc khối PoOliHg - 2-52 52+St+EE‡EE‡EE+EE+EEEEErrrrrrerreres 46Hình 3.29 Sơ đồ chuyển trạng thái FSM của khối controller pooling . 46Hình 3.30 Kiến trúc cnn_controller Z72071ẺẼ5 46Hình 3.31 Kiến trúc khối pe_poolifig :- ¿52 5s+S++EE‡EE+EE+EE+EEEEErErrrrrreree 47Hình 3.32 Kiến trúc chỉ tiết của avg_pooÏifg c-c- s+ce+k+c+kerkexrkererereereee 48

Hình 3.33 Kiến trúc chỉ tiết của mỉn_pooÌing - s s+ce+xe+x+Ek+x+kerrrxrreres 48Hình 3.34 Kiến trúc chỉ tiết của IHAX_ DOỌÏH SG SE ng ke 48

Hình 3.35 Kiến trúc khối Liner cescecsesscessessesssessesssessessssssessesssessessesssessecsusssessessseeses 50Hình 3.36 Kiến trúc khối linear Controller ceccccccccccccscscscssssssssssvesesesevscscscssssscssscscsess 51

Hinh 3.38 Khoi Pe_linear_MaC_AAtaPAth ccccccccccccsccccessceeseesesseeeeseeeseeeesesseeeesneees 52Hình 3.39 Vi dụ Channel Shuffle với g = 3, số kênh đâu vào là 6 . - 53Hình 3.40 Khoi Channel Shuffle c.cceccesscsssesscsssessesssessessesssessessssssessesssessecsusssessesseeeses 54

Hình 4.1 Quy trình verify trong VÏVQO 5c SxvESESeeESeeekeserseeekeeereree 55

Trang 9

Hình 4.2 Tổng quan phương thức verify thiết kế - + 5s s+c+ec+eczeereerreres 56

Hình 4.3 a) Hình ảnh ban dau; b) Hình ảnh sau khi tiền xử lí - 57

Hình 4.4 Tín hiệu load_weight cho phép nạp trọng số vào mô hình 58

Hình 4.5 Tín hiệu en cho phép đưa pixel ảnh vào tính tOđH ««<<s«<+ 58

Hình 4.6 Tín hiệu done cho biết khối tích chập đã tinh toán xong - 58Hình 4.7 Tai nguyên khối Convolution sau khi Systhesis c.cccccccescescscsscsseesesseseeseeees 59Hinh 4.8 Tai nguyén khối Convolution sau khi Implementation, - 59Hình 4.9 Báo cáo timing của khối CONVOLUTION esscscsessesssessessesssessessessessesssessessiessee 59Hình 4.10 Tài nguyên khối max pool sau khi Systhesis -.:©25-555cc5ccccscc: 62Hình 4.11 Tài nguyên khối max pool sau khi Implementation 5: 62Hình 4.12 Báo cáo timing của khối MAX ĐOOlL - 25+ 5s+52+E+E£+E££E+EE+Eererereereee 62Hình 4.13 Tín hiệu valid cho biết dữ liệu dau ra sẵn SỒHI Ăn, 63Hình 4.14 Kết quả đặc trưng đầu ra lớp maxpool từ phân mễMm - 63Hình 4.15 Kết quả đặc trưng đầu ra lớp maxpool từ Phan cứng - 64Hình 4.16 Nạp trọng số hoàn tat sau đó tín hiệu en = 1 -scscs+s+ecssz 64Hình 4.17 Tín hiệu en cho phép dua các điểm ảnh vào thực hiện tính toán 65Hình 4.18 Tín hiệu done báo hiệu khối thực hiện tính toán XOI Ă cà Si 65Hình 4.19 Kết quả khối 3x3 DWConv sau khi ŠystÏieSiS -2- 2-52 525252+52+s2 66Hình 4.20 Kết quả khối 3x3 DWConv sau khi Implementation -:-2-52-5s 66Hình 4.21 Báo cáo timing của khối 3x3 DWWCOnv -5-525Ss+c+esrerereereee 66

Hình 4.22 Kết quả đặc trưng dau ra lớp 3x3 DWConv từ phan mm 67Hình 4.23 Kết quả đặc trưng dau ra lớp 3x3 DWConv từ phan cứng - 67

Hình 4.24 Tài nguyên khối IxIConv sau khi SysthesiS :©25-555cc5ccccscc: 68Hình 4.25 Tài nguyên khối 1x1 Conv sau khi Implementatioh 5-5:-: 68Hình 4.26 Báo cáo timing của khối IxCOIV 2-52-525252+c+£+Eczezeezeres 68Hình 4.27 Nạp trọng số vào Khối TXT CONV vesessessssssessesssessesssessessesssecsessessessessseeses 69Hình 4.28 Tín hiệu done cho biết khối thực hiện tính toán xong - 69Hình 4.29 Kết quả đặc trưng đâu ra lóp 1xIConv từ Phan mễMm -. - 70Hình 4.30 Kết quả đặc trưng đâu ra lóp 1x1 Conv từ phần cứng - 70

Trang 10

Hình 4.31 Kết quả khối ShuffleUnit stage2 sau khi SysthesiS 5-55-5552 71Hình 4.32 Tài nguyên khối ShuffleUnit stage 2 sau khi Implementation 71Hình 4.33 Báo cáo timing của khối ShuffleUnit stage? eccccecccsscessesssessessesssessesseessee 71Hinh 4.34 Tin hiéu en = 1 dé dua giá trị vào tính toán sau khi nap trong SỐ 72Hình 4.35 Giá trị đầu ra hợp lệ khi valid = l 2 2©55cs+cc+ec+eczeezeczrres 72Hình 4.36 Khối ShuffleUnit basic được nap trong TU 73Hình 4.37 Tài nguyên sau khi tổng NOP SYHẨÏ€SÏS SG Hit 73Hình 4.38.Tài nguyên sau khi tổng hop lmplermentatiOn - 2-52 25e 2+ce+ss 73Hình 4.39 Báo cáo timing của khối ShuffleUnit -.-©-2©2555c©c>c+ecxczceccseei 73

Hình 4.40 Delay giữa xung clock và tín hiệu VdÏHở - - 55 s+<<sss++ss++ss+ 74

Hình 4.41 Biểu đồ thé hiện chênh lệch giữa phần mém và phần cứng 74Hình 4.42 Tín hiệu en được bật để đưa pixed vào khói để tính toán . 75Hình 4.43 Tín hiệu en cho phép đưa dit liệu vào khối pool -z -s+-: 75Hình 4.44 Tín hiệu valid cho biết dữ liệu đầu ra SGN sàng -2 2- 25252 76Hình 4.45 Tài nguyên khối GlobalPool sau khi tong hợp Synthesis 76Hình 4.46 Tài nguyên khối GlobalPool sau khi tong hop implementation 76Hình 4.47 Báo cáo timing khối GlobalPool -+- + s+s++x+++z+erxezreerseei 76Hình 4.48 Bảng so sánh kết quả giữa software và hardware (avgpool) 78Hình 4.49 Biểu đô thể hiện sự chênh lệch qua tắt cả các kênh đầu ra (avgpool) 78Hình 4.50 Tài nguyên khối FullyConnected sau khi Šynthesis - 55-55: 79

Hình 4.51 Báo cáo timing của khối FullyConnieef€d - 55-5 5e+St+E+E+EzEeres 79Hình 4.52 Bảng so sánh kết quả giữa software và hardware (fC) «‹ 80

Hình 4.53 Biểu đô thể hiện sự chênh lệch qua tat cả các kênh đầu ra (ƒc) 80

Hình 4.54 Reset IP ShU[fl€ÌN@[ - «ch ng HH HH ng 81

Hình 4.55 Nap trọng số cho IP ShuffleNet ccccccccccsscsscescsssssssssssssssesessesesessesseeseesvees 81Hình 4.56 Sau khi IP đã nạp xong tất cả trong SỐ . -©cc©cc+ccccccrrcereeres 82

Hình 4.57 Đưa dữ liệu ảnh vào IP ShuƒƒleÌN©f cẶSĂ Khi, 82

Hình 4.58 Một số hình ảnh được sử dụng dé kiểm tra IP ShuffleNet 83Hình 4.59 Kết quả kiểm tra IP ShuffleNet c.ccecccsscsssessesssessessssssessesssessessesssessessseesecs 83

Trang 11

Hình 4.60 Kết quả model ShuffleNet v2 sau khi Systh€SiS -s« «<< cssccss

Hình 4.61 Báo cáo timing cua model ShuffleNet v2

Trang 12

DANH MỤC BANG

Bang 2.1: Kiến trúc tong thé của mơ hình ShuffleNet v2 - 2 e+ce+c+ee+eerxeei 5

Bang 2.2: So sánh các phương pháp Sigmoid trên FPGA[19] - «<<««+s 13 Bảng 2.3: Cơng thức tính hàm Sigmoid theo phương pháp PLANJI9] - 14

Bảng 3.1: Kết quả lượng tử hĩa mơ hÌnh 2-55 ©5£5+e2S++£+eExczx+rxerxrzreersees 19

Bảng 3.2: Các tín hiệu của khối M7122 PẼẼẺe -(‹(‹(‹((‹1Õ- 23

Bảng 3.3: Các tín hiệu của khối CONVOLUTION oecsesscsscsssessessesssessessesseessecsesssessesssessee 24Bảng 3.4: Các tham số cầu hình khối ConvoÏMiOn ©-2- 5c ©5e+cs+cscc+csccss 25Bảng 3.5: Các tín hiệu khối CONV_CONKIOLLED ceccccccccsssscsvscscscsvsvscscscscssscsssssssesssereseseees 26Bang 3.6: Cac tham số cầu hình khối conv_confrolÏer -: se se se sstsEsEstsessssa 26Bảng 3.7: Số lượng trong số khối ConnVOÌufÏOH - 5-55 2+£+S++E£+E+E+EeEEeEzEerkeree 35

Bang 3.8: Các tín hiệu cua khối Depthwise Convolution «s55 <ss+++s + 36

Bang 3.9: Các tham số cau hình khối Depthwise Convolution -:-2-5s 37

Bang 3.10: Số lượng trọng số của 3x3DWConv -5-©52©c<+cc+cscsrtezresrseei 39Bang 3.11: Các tín hiệu của khối XI COND -5-©22-55c©522c<+£tec£+rertezreerseei 41

Bảng 3.12: Các tham số cầu hình khối 1X1 CONV cecessescsssesssssssssstessessessssssssessesseessees 42Bảng 3.13: Số lượng trọng số khối 1X] Convolution ccccceccessesssecsesssessessessvessessessseeses 44Bảng 3.14: Các tín hiệu cua khối POỌÏT1Đ KH rc 44Bang 3.15: Các tham số cầu hình cho khối POỌÏH s5 ni, 45Bảng 3.16: Các tín hiệu của khối LiTi€AF - 5-52 52+s+EE+E+E+EE+EeEEeE+Eerkerrkereee 49Bảng 3.17: Các tham số cầu hình cho khối LiH€AF + 52 s+s+e+E+£s+£eztecsez 50

Bảng 5.1: Tĩm tắt kết quả đạt được hiỆn TqiÌ cv ksitssrkesrrssersse 86

Trang 13

DANH MỤC TU VIET TAT

CNN Convolutional Neural Network

FPGA Field Programmable Gate Arrays

SoCs Systerm on Chips

ASIC Application-specific Integrated circuit GPU Graphics Processing Unit

ARM Advanced RISC Machine

HDL Hardware Description Language

VHDL VHSIC Hardware Description Language

FIFO First In, First Out

DSP Digital Signal Processing

ReLU Rectified Linear Unit

FSM Finite State Machine

MAC Multiply - Accumulate

Trang 14

TÓM TẮT KHÓA LUẬN

Trong đề tài nhóm tập trung nghiên cứu và thiết kế các khối có trong mô hìnhmạng ShuffleNet bằng ngôn ngữ đặc tả phần cứng Systerm Verilog Các khối này cóthé cấu hình nhiều thông số khác nhau và kết nối dé có thé tạo thành nhiều mô hìnhmạng khác nhau Mô hình mạng ShuffleNet được thiết kế dé giảm bớt chi phí tínhtoán và bộ nhớ phù hợp cho thiết bi di động và nhúng có tài nguyên hạn chế nên nhóm

sử dụng kỹ thuật lượng tử hóa (quantization) dé tối ưu tài nguyên sử dụng, tăng tốc

độ xử lý mà vẫn đảm bảo được độ chính xác của mô hình.

Sau khi thiết kế phần cứng, tiến hành kiểm tra và đánh giá thiết kế dựa trên kết

quả mô phỏng So sánh cho thấy mô hình phần cứng hoạt động đúng như mong đợi,đảm bảo được tính chính xác cao tương ứng như mô hình phần mềm

Kết quả tóm tắt của khóa luận bao gồm:

s* Thiết kế được các khối trong mô hình mạng có thê thay đổi được tham sé

s* Các khói thiết kế phan cứng chạy được ở tan số 142 MHz

s* Kiểm tra các khối hoạt động đúng chức năng theo mô hình mạng

Trang 15

Chương 1 GIỚI THIỆU TONG QUAN

1.1 Giới thiệu dé tài

Mạng Nơ-ron Tích Chập, hay CNNs, đã trở thành một phần quan trọng trong cácứng dụng liên quan đến thị giác máy tính, xử lí ảnh, nhận diện đối tượng, phân đoạnhình ảnh, nhận diện biển báo và chữ viết, phân tích cảm xúc cho đến phát hiện khuônmặt [1][2] Việc triển khai CNN đòi hỏi một lượng lớn tài nguyên vi cả dữ liệu trunggian và trọng số đều cần không gian lưu trữ lớn và quá trình tính toán phức tạp Trongthập kỷ vừa qua, sự đa dạng về đữ liệu và cấu trúc mạng được cải thiện dẫn đến độchính xác của các giải thuật dựa trên CNN đã được nâng cao hon rất nhiều Một kiếntrúc CNN chuẩn bao gồm một số lớp tích chập và lớp phân loại, điều này đòi hỏi lênđến hàng tỷ phép toán cho mỗi ảnh đầu vào, vì vậy việc sử dụng GPU dé hỗ trợ quátrình huấn luyện và suy luận trở nên phô biến [3] Tuy nhiên, mức tiêu thụ năng lượngcủa chúng (>100 W) quá cao, điều này đặt ra van dé với các ứng dụng nhúng, nơi mà

ở đó tiêu chuẩn hiệu quả năng lượng là cực kỳ quan trọng Do đó, các giải pháp về

bộ tăng tốc phần cứng dựa trên FPGA, SoCs, và ASICs đã được đề xuất như mộtphương án thay thế [4][5][6] Các bộ tăng tốc dựa trên FPGA được đánh giá cao vì

khả năng tái cau hình, thời gian chuyên đổi nhanh (so với ASICs), hiệu suất tốt và

tiêu thụ năng lượng ưu việt (so với GPU).

1.2 Các nghiên cứu liên quan

Các thiết bị nhúng như drone, smartphone, robot, có tài nguyên bị hạn chếnhưng lại đòi hỏi tốc độ cao Vậy nên có nhiều mô hình mạng nơ-ron được phát triển

để có thé đáp ứng được yêu cầu trên song cũng đạt được hiệu suất tốt Ví dụ,GoogLeNet [7] tăng độ sâu của mạng với độ phức tạp thấp hơn nhiều so với việc xếpchồng các lớp tích chập đơn giản SqueezeNet [8] giảm đáng ké các tham số và tínhtoán trong khi vẫn duy trì độ chính xác ResNet [9][10] sử dụng cấu trúc bottleneckhiệu qua dé đạt được hiệu suất ấn tượng SENet [11] giới thiệu một đơn vị kiến trúcgiúp nâng cao hiệu suất với chi phí tính toán thấp Mô hình NASNet di động được đề

Trang 16

xuất đạt được hiệu suất tương đương với mô hình ShuffleNet (26,0% @ 564 MFLOPs

so với 26,3% @ 524 MFLOPs đối với lỗi phân loại ImageNet)

Một mô hình đã đạt được nhiều thành tích trong xu hướng này phải kế đếnMobileNet [12], mô hình này sử dụng kiến trúc Depthwise Separable Convolution

Depthwise Separable Convolution được giới thiệu lần đầu trong [12], nó bao gồm haiphần theo thứ tự là: Depthwise Convolution (Có ý tưởng tương tự grouped

convolution, nhưng khác ở chỗ nó chia features map đầu vào thành các nhóm có sốkênh cố định bằng 1) và Pointwise Convolution (Sau khi thực hiện DepthwiseConvolution, thì nhân tích chập tiếp với 1x1 Convolution để có thể tùy chỉnh số lượngkênh theo mong muốn) Kiến trúc này cực kỳ hiệu quả so với tích chập tiêu chuẩn.Tuy nhiên nó chỉ áp dụng bộ lọc với các kênh đầu vào chứ không kết hợp chúng détạo ra các đặc trưng mới Vì vậy, cần có một lớp bồ sung đề tính toán sự kết hợp tuyếntính đầu ra của tích chập theo chiều sâu thông qua | x 1 convolution dé tao ra các đặctrưng mới này MobileNet sử dụng các phép tích chập có thê phân tách theo chiều

sâu 3 x 3, sử dung tính toán ít hơn từ 8 đến 9 lần so với các phép tích chập tiêu chuẩn

và độ chính xác chỉ giảm một chút.

Sau đó, vào năm 2017 kiến trúc CNN tính toán cực kỳ hiệu quả được giới thiệu

có tên ShuffleNet [13], được thiết kế đặc biệt cho các thiết bị đi động có khả năng

tính toán rất hạn chế (ví dụ: 10-150 MFLOPs) Các thử nghiệm về phân loại ImageNet

và phát hiện đối tượng MS COCO chứng minh hiệu suất vượt trội của ShuffleNet so

với các câu trúc khác, vi dụ: lỗi top-1 thấp hơn (tuyệt đối 7,8%) so với MobileNet

[12] gần đây trong nhiệm vụ phân loại ImageNet, với ngân sách tính toán là 40 MFLOPs Trên thiết bị di động dựa trên ARM, ShuffleNet đạt được tốc độ thực tế

gấp ~13x so với AlexNet trong khi vẫn duy trì độ chính xác tương đương Dé hiệnthực thiết kế phần cứng hiện nay có nhiều hướng tiếp cận khác nhau, theo cách truyềnthống, HDL, giỗng như VHDL va Verilog, được sử dung dé mô tả một thiết kế Tuynhiên, đây là một quá trình tốn nhiều thời gian và lâu dài, đòi hỏi kiến thức chuyên

sâu về phân cứng cơ bản.

Trang 17

Bài báo [14] đã triển khai mô hình ShuffleNet trên FPGA theo hướng sử dụngngôn ngữ lập trình mức cao bằng việc sử dụng framework OpenCL Sử dụng các

phương pháp mô hình song song được đề xuất, bài báo đã thiết kế bộ tăng tốc FPGA

song song cho ShuffleNet Khả năng tăng tốc FPGA bằng cách tính toán theopipeline, cơ chế kênh, đọc tổng hợp và vector hóa kernel Hưởng lợi từ những cáchtiếp cận này, kết quả thử nghiệm cho thấy bộ tăng tốc ShuffleNet FPGA song songcủa bài báo thé hiện mức độ song song mô hình cao trong khi vẫn duy trì độ chính

xác Khi sử dụng hai FPGA, nó đạt được tốc độ cao hơn 1,42x va mức tiêu thụ điệnnăng khoảng 20 W, đồng thời giảm 34% dung lượng bộ nhớ.

1.3 Tổng quan đề tài

Trong đề tài này, nhóm tập trung nghiên cứu về cách mà pytorch lượng tử hoá

mô hình, từ đó đề xuất ý tưởng thiết kế phần cứng Tiến hành thiết kế các lớp có trong

s* Hiểu cách hoạt động của mô hình mạng, cách truyền dt liệu

s* Thiết kế các khối có trong mô hình mạng ShuffleNet v2 (Convolution, Group

Convolution, Depthwise Separable Convolution, Pooling, Fully Connected,

Channel Shuffle, hàm kích hoạt ReLu) có thé thay đổi được tham số

s* Thiết kế mô hình chạy ở tần số > 100 Mhz.

Trang 18

Chương2 CƠ SỞ LÝ THUYET

Trong bối cảnh ngày càng phát triển của học sâu và trí tuệ nhân tạo, việc tối ưu

mô hình mạng tích chập cho thiết bị di động ngày càng cấp thiết Thiết bị di độngthường gặp phải những hạn chế về tài nguyên tính toán và năng lượng, khiến việctriển khai một mô hình CNN phức tạp trở thành thách thức lớn

ShuffleNet ra đời là một giải pháp tối ưu đề giải quyết vấn đề này Mô hình nàykhông chỉ duy trì hiệu suất cao mà còn giảm thiểu đáng kể chi phí tính toán và yêucầu tài nguyên phần cứng, giúp nó trở thành sự lựa chọn lý tưởng cho các thiết bị di

động.

Nhóm áp dụng thêm kỹ thuật lượng tử hóa mô hình học dé trién khai cho mô hìnhhọc sâu Lượng tử hóa là kỹ thuật thực hiện tính toán và lưu trữ các trọng số theo kiểu

dữ liệu có số lượng bit thấp hơn số cham động Kỹ thuật lượng tử hóa giúp cho việc

xử lý phép tính nhanh hơn, tốn ít tài nguyên hơn, song độ chính xác của mô hình vẫn

được đảm bảo.

2.1 M6 hình mạng ShuffleNet v2

ShuffleNet v2[15] là một mạng kiến trúc mạng tích chập được thiết kế nhằm mụcđích giảm thiểu độ phức tạp tính toán nhưng vẫn duy trì được sự chính xác cao Mộtđặc điểm mau chốt dé ShuffleNet v2 đảm bao được điều ấy chính là khối ShuffleUnit, một khối cơ bản dé giúp các kênh có thé tăng cường khả năng truyền tải thôngtin giữa các phần khác nhau trong mạng Shuffle Unit được lặp lại ở các giai đoạnkhác nhau (Stage2, Stage3, Stage4) dé cải thiện khả năng biểu diễn và việc học của

mạng Việc lặp lại này giúp mô hình giúp mô hình học được các đặc trưng phức tạp

hơn và cải thiện hiệu suất nhận dạng hình ảnh

Bang 2.1: Kiến trúc tổng thể của mô hình ShuffleNet v2

Output Channel

Layer Output KSize | Stride | Repeat P

Size 0.5x 1x 1.5x 2x

Image | 224x224 | 3 3 3 3

Trang 19

nhánh có thể giữ nguyên đầu vào, trong khi nhánh kia thực hiện phép tính convolution

phức tạp hơn điều này giúp giảm tông số phép tính cần thiết Khi hai nhánh thực hiệnhai nhiệm vụ khác nhau, tài nguyên phần cứng cũng được sử dụng hiệu quả hơn, đặcbiệt là những phần cứng có tài nguyên hạn chế như thiết bị di động

Sự kết hợp khéo léo giữa các kỹ thuật này không chỉ giúp giảm số lượng phép

tính toán mà còn duy trì độ chính xác cao trong việc nhận dạng và phân loại hình ảnh.

Với những ưu điểm vượt trội này, ShuffleNet v2 đã nhanh chóng được ứng dụng rộngrãi trong các lĩnh vực yêu cầu tính toán trên thiết bị di động, chăng hạn như nhận diện

khuôn mặt, phân loại ảnh và các ứng dụng AI khác.

Trang 20

Hinh 2.1 (a) Shuffle Basic Unit; (b) Shuffle Unit spatial down sampling

ShuffleNet v2 không chỉ tập trung vào việc giảm thiêu số lượng phép tính toán

mà còn chú trọng về việc duy trì độ chính xác cao trong việc nhận dạng và phân loạihình ảnh Điều này được thực hiện thông qua kỹ thuật ChannelShuffle, giúp trộn lẫn

các kênh đâu vào đê tôi ưu việc học và xử lý thông tin của mạng.

Với mô hình mạng ShuffleNet v2 trên nhóm đã xây dựng kiến trúc phần cứng

như Hình 2.2 dưới đây:

Trang 21

Shuffle Unit (b)

Output size 112x112x24

Output size 7x7x1024

Output size 1x1x1024

Output size 56x56x24 Output size

14x14x96

Output size

Hình 2.2 Tổng quan kiến trúc của khối ShuffleNet v2 0.5x

2.2 Convolution Layer - Lớp tích chap

Phép tích chập là một phép trượt qua các điểm trong tat cả điểm của hình anh détìm ra các đặc trưng của hình ảnh băng cách sử dụng các bộ lọc (kernel) Các bộ lọc

là một ma trận nhỏ thường có kích thước là 3x3 hoặc 5x5 được trượt qua các dữ liệu

đầu vào dé thực hiện phép toán convolution Phép tích chập còn có hai tham số Stride

và Padding Bộ lọc sẽ trượt qua từng điểm ảnh, các bước nhảy của điểm ảnh phụ

thuộc vào tham số Stride, đồng thời đữ liệu đầu ra cũng bị ảnh hưởng tới tham số này

Việc thực hiện phép toán convolution với bộ lọc kernel thông thường sẽ làm giảm

Trang 22

kích thước nên tham số Padding sẽ tạo các điểm ảnh bằng 0 xung quanh dữ liệu đầuvào dé duy trì kích thước của ảnh.

Hình 2.3 Phép tích chập với kích thước bộ lọc là 3, Stride = 1, Padding = 1

Đầu ra của các lớp convolution được gọi là feature map, nó đại diện cho các đặctrưng đã học Các đặc trưng thường là những đặc trưng về cạnh, góc, hoặc có các mẫu

phức tạp hơn.

2.3 Depthwise Separable Convolution

Depthwise Separable Convolution là một kỹ thuật tối ưu hóa trong các mạng

nơ-ron tích chập, kỹ thuật này được chia thành hai bước chính:

s* Depthwise Convolution: Trong bước này, mỗi kênh (channel) của đầu vào

được tích chập với một bộ lọc riêng biệt và giữ nguyên số kênh đầu ra bằng

số kênh đầu vào Điều này có nghĩa là mỗi bộ lọc chỉ xử lý một kênh riêng lẻ,không phải toàn bộ kênh như trong tích chập truyền thống Mục đích là tríchxuất đặc trưng cho từng kênh một cách độc lập, giảm thiểu số lượng phép toán

tích chập so với phương pháp thông thường.

*

>~ Pointwise Convolution (1x1 Convolution): Ap dụng các bộ loc có kích thước

1x1 vào các kênh đầu ra của Depthwise Convolution giúp tổng hợp các kênh

đầu ra và thường làm thay đổi độ sâu của ảnh, cho phép mô hình học các biểu

diễn phức tạp hơn và tăng cường khả năng phân loại và nhận dạng hình ảnh.

Trang 23

Separable Convolution).

Shuttle |

Hình 2.5 Channel Shuffle trong ShuffleNet[13]

10

Trang 24

2.5 Pooling Layer - Lớp tổng hop

Ham pooling layer làm giảm kích thước của feature map bang cách chọn các giátrị lớn nhất (max pooling), giá trị nhỏ nhất (min pooling), giá trị trung bình (averagepooling) của ảnh giúp giảm số lượng tính toán của dữ liệu, nhưng vẫn giữ được độsâu của ảnh Hơn nữa, lớp này còn lọc được những đặc trưng nỗi trội giúp mô hìnhhuấn luyện tốt hơn, đóng vai trò trong việc cải thiện hiệu suất và hiệu quả của môhình Lớp tổng hợp cũng có hai thông số Stride và Padding, Stride được định nghĩa

< a; —

` AVG POOLING(

Hình 2.6 Pooling với kích thước bộ loc = 2, Stride = 2

giống với Stride ở lớp tích chập

2.6 Fully Connected Layer - Lớp kết nối tổng hợp.

Lớp Fully Connected là một thành phần quan trọng của mô hình CNN Lớp nàythường ở cuối mô hình Chức năng chính của lớp này là chuyên đổi các feature mapđược tạo ra từ các lớp tích chập và pooling trước đó thành đầu ra cuối cùng phù hợp

với nhiệm vụ của mô hình, chảng hạn như phân loại, phát hiện vật thể hoặc nhận dạng

hình ảnh.

Đầu vào của lớp sẽ được làm phẳng thành ma trận một chiều, và tất cả các điểm

của ma trận được nhân với | trọng số để được 1 nốt đầu ra Hình 2.7 mô tả lớp Fully

Connected với 3 nôt đâu vào và 5 not dau ra.

11

Trang 25

Input Output

Hình 2.7 Ví dụ lớp Fully Connected với dau vào là 3 và dau ra là 5

2.7 Ham kích hoạt ReLU

Hàm kích hoạt là một phần quan trọng trong mạng nơ-ron, giúp giới thiệu tính

phi tuyến tính vào mô hình, điều này là cần thiết dé mô hình có thé học và biểu diễncác quan hệ phi tuyến giữa các đầu vào và đầu ra

Một trong những hàm kích hoạt phổ biến nhất là ReLU (Rectified Linear Unit),được áp dụng nhiều trong các mô hình mạng tích chập Hàm ReLU có công thức đơngiản và dễ tính toán, giúp giảm thiêu thời gian tính toán của mô hình Công thức hàm

Trang 26

2.8 Ham kích hoạt Sigmoid

Ham kích hoạt Sigmoid là hàm nhận một giá trị thực và chuyền nó thành một giá

trị trong khoảng (0;1) Hàm kích hoạt Sigmoid có công thức như sau:

1

ƒŒœ) = (2.2)

D6 thi ham kich hoat Sigmoid:

Hinh 2.9 Do thi ham kich hoat sigmoidHiện nay có nhiều phương pháp dé hiện thực ham Sigmoid trên FPGA như Look-

up Table, A-law approximation, Alipi and Storti-Gajani Approximation [16], PLAN

approximation [17], Piecewise second-order approximation [18] Mỗi phương pháp

có những ưu và nhược điểm khác nhau được tổng hợp trong [19] với kết qua như sau:

Bang 2.2: So sánh các phương pháp Sigmoid trên FPGA[19]

Phương pháp | Maximum error(%) | Mean error(%) Số lượng gate

Trang 27

Có thé thấy, phương pháp PLAN cho ra sai số ít cũng như tài nguyên sử dụng

khá ít.

Hình 2.10 Biểu do sai số của phương pháp PLAN[19]

Trên Hình 2.10 biểu thị sai số khi sử dụng fixed point 32 bit (16 bit phần thậpphân) chỉ có sai số khoảng 0.02 Vì vậy, nhóm sử dụng phương pháp PLAN để hiện

thực hàm sigmoid với công thức như sau:

Bang 2.3: Công thức tính hàm Sigmoid theo phương pháp PLAN[19]

PLAN(X) Điều kiện

1 IXI>5 0.03125IXI + 0.84375 2,375 <IXI< 5 0.0125IXI + 0.625 1 <IXI < 2.375

Trang 28

Lượng tử hóa là kỹ thuật thực hiện tính toán và lưu trữ các đặc trưng bang kiéu

dữ liệu có độ chính xác thấp hơn so với độ chính xác của kiểu dữ liệu số cham động

Một mô hình được lượng tử hóa thực hiện tính toán trên số nguyên thay vì số chấmđộng trên một số giai đoạn tính toán hoặc cả quá trình của mô hình Điều này cho

phép lưu trữ mô hình nhỏ gọn hơn và thực hiện các phép toán vector hiệu quả hơn

trên nhiều loại phần cứng Kỹ thuật này đặc biệt hữu ích trong quá trình xử lý, vì nó

giảm thiểu chi phí tính toán rất nhiều mà không làm giảm độ chính xác của kết quả

quá nhiêu.

FP32 Quantization INT8

Hình 2.12 Ví dụ về lượng tử hóa từ số Floating Point sang số Integer 8

Kỹ thuật lượng tử hóa là việc ánh xạ từ một số Floating Point (Xfloat) thành một

số nguyên (xint) Công thức toán hoc của quá trình lượng tử hóa dữ liệu:

Xfloat = (ine — Z) * S (2.4)

Xing = RE + Z (2.5)

15

Trang 29

Với S và Z lần lượt là hệ số Scale và Zero Point Hiện nay các thư viện lớn về

lĩnh vực AI đã hộ trợ kỹ thuật lượng tử hóa và giúp người dùng lượng tử hóa mô hình

học sâu và tìm ra các hệ số S, Z cho người dùng

Hiện nay có 3 phương pháp lượng tử hóa[20]:

** Dyamic Quantization: trong phương pháp nay chỉ tập trung vào việc

chuyên đồi trọng của mô hình trong khi giữ các giá trị kích hoạt ở độ chính

xác ban đầu Các hệ số Scale và Zeropoint bị thay đổi theo dữ liệu ảnh đầu

Next layer fp32

ao.

Previos layer fp32 Convolution fp32

Hinh 2.13 Dyamic Quantization cua Pytorch

s* Static Quantization: hay con được gọi là Post Training Quantization,

không giống với Dynamic Quantization các hệ số Scale va Zero Pointđược tinh trước và có giá trị cố định tai mỗi tang Các hệ số được tinh

chỉnh bằng cách xử lý một lượng lớn dữ liệu trong quá trình lượng tử hóa

Phương pháp này có ưu điểm là giảm kích thước trọng số là giảm số lượngphép tính tuy nhiên vì các hệ số Scale là Zero Point lúc này là cô định với

Next layer int8

mọi dau vào nên làm giảm độ chính xác.

Previos layer int8 Convolution int8

Weight int8

Hình 2.14 Static Quantization cua Pytorch

*

>* Static Quantization Aware Trainning: không giống với hai phương pháp

trên, phương pháp này được thực hiện trong quá trình huấn luyện mô hình

học sâu Sau khi huấn luyện mô hình băng số chấm động 32 bit sau đó ta

chèn các lớp Fake Quantization vào đê làm tròn các sô châm động gan

16

Trang 30

băng với sô nguyên dé đạo hàm cho các hàm mat mát Các hệ sô Scale và

Zero Point ở dạng sô nguyên và được cô định từng kênh với mọi đâu vào.

Do đó, phương pháp này mang lại độ chính xác cao hơn hai phương pháp

Convolution fp32 Next layer fp32

phương pháp này bởi đảm bảo độ chính xác của mô hình sau khi lượng tử hóa và kích

thước mô hình được giảm đáng kẻ

atte BlRfos (ii mammal —- placental ——- carnivore canine — oo —Wiorlionditg — Imix

H5 iets cab es Boni was

1m.

craft —- watercraft — sailingvessel ———~ sailboat — trimaran

Hình 2.16 Một số hình ảnh của tập dữ liệu ImageNet[21]

17

Trang 31

ImageNet là cở sở cho nhiều mô hình học sâu nổi tiếng như AlexNet, VGG,ResNet và ShuffleNet Các mô hình này đã đạt được thành tựu đáng kê trong việcnhận dạng hình ảnh và được áp dụng rộng rãi trong thực tế.

Trong thiết kế và quá trình huấn luyện mô hình như ImageNet đóng vai trò quan

trọng trong việc cung cấp dữ liệu phong phú và đa dạng để đảm bảo mô hình học

được những đặc trưng và đạt được hiệu suất cao trong quá trình nhận dạng hình ảnh

18

Trang 32

Chương 3 MÔ HÌNH THIẾT KE

Thiết kế ShuffleNet bao gồm cả phần mềm và phần cứng Trên phần mềm,ShuffleNet được triển khai bằng các thư viện học sâu phổ biến như Pytorch, giúp dễdàng tiếp cận Về phần cứng, mô hình được tối ưu hóa đề chạy trên các thiết bị FPGA

sử dụng ngôn ngữ đặc tả phần cứng Systerm Verilog dé thực hiện các phép tính song

song và giảm thiêu độ trễ cho mô hình.

3.1 Hiện thực lượng tử hóa

Nhóm quyết định chọn mô hình ShuffleNet_v2_x0.5 dé triển khai, hiện Pytorch

có cung cấp sẵn mô hình đã lượng tử hóa Kết quả độ chính xác sau khi lượng tử hóa

bằng kỹ thuật quantization-aware training được trình bày trong bảng bên dưới

Bảng 3.1: Kết quả lượng tử hóa mô hình

Acc@] Acc@S Total params | File size

32-bit float 60.552 81.746 1366792 5.3MB

8-bit quant 57.972 79.78 1366792 1.5MB

Có thé thấy việc chuyền từ số floating point 32-bit xuống số nguyên 8-bit nhưng

độ chính xác của mô hình không bị giảm quá nhiều Kiến trúc phần cứng của nhómthiết kế sẽ phần lớn sử dụng các phép tính trên số nguyên 8-bit cho việc nhân tíchchập Tính toán số thực fix point (16-bit phan nguyén va 16-bit phan thap phan) trén

các tính toán quantize, bias, dequantize, va ham kích hoạt.

Trong quá trình huấn luyện và lượng tử hóa bằng phương pháp StaticQuantization Aware Trainning, các trọng số sẽ được làm tròn đến các giá trị lượng tử

hóa, nhưng phép tính thực tế vẫn được thực hiện ở dạng floating-point Khi đó, thực

hiện phép tích chập trên phần cứng ở dạng số nguyên cần phải có bước chuyền đổitrọng số về dạng số fixed-point dé thực hiện

19

Trang 33

Gọi X,, X; là pixel ảnh, S, và Z, là scale và zeropoint của đặc trưng anh đầu ra

từ lớp trước Yị, Y là giá tri weight, Sy va Zz là scale và zeropoint của lớp hiện tai.

X,, Xz, Yị, Yo ở dạng số nguyên 8-bit, xị, x2, yị, y; ở dang số thực floating point

32-bít.

Xa Sth, (3.1) Yast, (3.2)

Ä;= +Zi (3.3) Y= 2+5; (3.4)

Nếu tính toán tích chập thông thường trên số floating point thì phương trình nhân

tích chập như sau:

X‡.ÿ¡ + X;.y;+::=a (3.5)

Phép tích chập được thực hiện số nguyên 8-bit sẽ có phương trình như sau:

X1.¥, + X;.Y¿ + =A (3.6)

Bây giờ, can tìm môi quan hệ và biên đôi từ A sang a, thực hiện phép biên đôi

trên phương trình số nguyên ta được:

Trang 34

Sau khi biến đổi, giá trị thực a có thé được chuyền đổi bởi những tham số hiện

có khi làm việc với tính toán tích chập SỐ nguyên 8-bit Dựa vào biểu thức (3.12) sẽxây dựng được kiến trúc cho khối dequantize như Hình 3 1

convolutional 8 bit

MAC kernel

Zero_point (feature_map)

di đúng thứ tự mà không bị mất đi trong quá trình xử lý

21

Trang 36

Tin hiéu ƯO Mô tả

clk I | Tín hiệu xung clock

rst I | Tín hiệu reset tích cực mức cao

en I Tín hiệu cho phép khối convolutional hoạt

động

load_ weight I | Tín hiệu cho phép nạp trọng số

weight_addr[31:0] I | Dia chỉ của trọng s6

weight_data[63:0] I | Dữ liệu trong SỐ

data_in [8*3-1:0] L | Dữ liệu đầu vào

data_out [31:0] O | Dữ liệu đầu ra

valid O | Tín hiệu thông báo kết quả dau ra sẵn sàng

3.3 Thiết kế bộ đệm dữ liệu

Trước khi thực hiện tích chập thì dữ liệu pixel phải đảm bảo đủ số lượng và cóthứ tự chính xác, nhóm thiết kế một bộ đệm có hình dạng mô phỏng tương tự như bêndưới Cấu tạo gồm các D Flip Flop nối tiếp nhau theo dạng shift register, ở đây sốlượng DFF có thé thay đổi dựa trên các tham số pKERNEL SIZE va

pDATA_ WIDTH Chính vì vậy việc sử dung kernel có kích thước 3x3 hay 5x5,

có thê được đáp ứng bởi thiết kế này

23

Trang 37

Hình 3.4 Thiết kế khối buffer

Sau khi có đầy đủ dữ liệu, ta tiến hành thực hiện phép tích chap

3.4 Khối Convolution

Khối tích chập thực hiện chức năng của tầng tích chập trong mạng mô hình học

sâu Khôi tích chập của nhóm bao gôm những tín hiệu sau:

Bảng 3.3: Các tín hiệu của khói Convolution

Tín hiệu VO Mô tả

clk I | Tín hiệu xung clock

rst I | Tín hiệu reset tích cực mức cao

en I Tín hiệu cho phép khôi convolutional hoạt

động

rd_en O | Tín hiệu dé đọc dữ liệu từ FIFO

data_valid I Tin hiệu trả lại từ FIFO báo dữ liệu đầu vào

đã san sang

load_weight I | Tín hiệu cho phép nạp trọng số

weight_addr[31:0] I | Dia chỉ của trọng sỐ

weight_data[63:0] I | Dữ liệu trọng số

ie “pIN_CHANNEL-1:0) | 1 | Piligu đầu vào

8 pIN_ CHANNEL" g} | O | Dữ leu dau ra

valid O | Tín hiệu thông báo kết qua đầu ra sẵn sàng

24

Trang 38

Đề sử dụng khối tích chập, ta cần phải cấu hình những tham số sau:

Bang 3.4: Các tham số cau hình khối Convolution

Tham số Mô tảpINPUT_WIDTH Chiều rộng đặc trưng đầu vàopINPUT_HEIGHT Chiêu cao đặc trung đầu vàopIN CHANNEL Số lượng kênh đầu vào

pOUT_CHANNEL Số lượng kênh đầu ra

pKERNEL_SIZE Kích thước bộ loc pPADDING Kích thước vùng đệm pSTRIDE Bước nhảy

pOUTPUT_PARALLEL Số lượng kênh đầu ra tính cùng một lúcpWEIGHT_DATA_WIDTH | Chiều rộng của trọng số

pWEIGHT_ADDR Địa chỉ trọng số

pACTIVATION Hàm kích hoạt Relu

Thanh phan khối Convolution bao gồm một khối cnn_buffer dé đệm dữ liệu đầuvào, một khối thực hiện phép tích chập (pe_conv_mac) và một khối điều khiển(conv_controller) dé điều khiên hai khối trên

Trang 39

3.4.1 Khối conv_controller

Khôi điêu khiên cnn_controller có những tín hiệu sau:

Bảng 3.5: Các tín hiệu khối conv_controller

Tín hiệu ƯO Mô tả

clk I | Tín hiệu xung clock

rst I | Tin hiệu reset tích cực mức cao

en I | Tín hiệu cho phép khối controller hoạt động

Tín hiệu thông báo hoạt động của khối

pe_ready I

pe_conv_mac

rd_en O | Tín hiệu doc dữ liệu từ FIFO

is_padding 0 Tin hiệu đê dựa chọn dữ liệu đệm hay đặc

trưng đâu vào buffer en O | Tín hiệu cho phép buffer hoạt động

pe_en O Tin hiệu cho phép khôi pe_conv_mac hoạt

động

Các tham sô của khôi conv_controller là:

Bảng 3.6: Các tham số cấu hình khối conv_controller

pINPUT_ WIDTH Chiều rộng đặc trưng đầu vào

pINPUT_ HEIGHT Chiêu cao đặc trung đâu vào

pKERNEL_SIZE Kích thước bộ lọc

pPADDING Kích thước vùng đệm

Vi khôi controller có những tham sô có thê câu hình theo nhu câu của người dùng

nên máy trang thái có thé thay đồi tùy theo cấu hình như Hình 3.6 và Hình 3.7 mô ta.Khối conv_controller sẽ có 2 trạng thái hoạt động chính:

26

Trang 40

++ Trang thái IDLE: ở trạng thái này, các giá tri padding (nếu có) và giá trị pixel

đọc từ fifo sẽ được đưa vào khối cnn_buffer cho đến khi đủ dit liệu để phục

vụ cho việc trượt kernel nhân tích chập Việc này được xác định dựa trên hai

bộ đêm col_cntr_r và row_cntr_r.

pPADDING != 0 pSTRIDE ==

l(col_cntr_r == pKERNEL_ SIZE -1 &&

row_cntr_r >= pKERNEL_SIZE-1 && l((pe_cntr_r == pOUTPUT_WIDTH-1) &&

pe_ready pe_ready)

col_cntr_r == pKERNEL_SIZE -1 &&

row_cntr_r >= pKERNEL_SIZE-1 &&

pe_ready

S1 (COMPUTATION)

row_cntr_r >= pKERNEL_SIZE-1 && !((pe_cntr_r == pOUTPUT_WIDTH)

pe_ready && stride_row_cntr_r == 0) && pe_ready)

col_cntr_r == pKERNEL_SIZE -1 &&

row_ cntr_r >= pKERNEL_SIZE-1 &&

pe_ready && stride row_ cntr_r ==

S1 (COMPUTATION)

computation = 1

pe_en =

computation = 0

pe_en=0

(pe_cntr_r == pOUTPUT_WIDTH) computation &&

&& pe_ready stride_col_cntr_r ==0 &&

stride_row_cntr_r == 0

Hình 3.7 Sơ do chuyển trạng thái ứng với padding != 0 va stride > 1

s* Trạng thai COMPUTATION: sau khi có đủ dữ liệu thì tín hiệu computation

bật lên 1, tín hiệu pe_en sẽ được quyết định không chỉ dựa vào computation

mà còn phụ thuộc stride_col_cntr_r, stride_row_cntr_r (hai tín hiệu này giúp

cho việc xác định kernel đang trượt theo stride nào) Khi pe_en băng một, cho

phép toàn bộ khối pe_conv_ mac hoạt động.

27

Ngày đăng: 23/12/2024, 23:51