Thưa hóa mạng học sâu và ứng dụng

  • 56 trang
  • file .pdf
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
LUẬN VĂN THẠC SĨ
Thưa hóa mạng học sâu và ứng dụng
DƯƠNG VIỆT HÙNG
[email protected]
Ngành Công nghệ thông tin
Giảng viên hướng dẫn: TS. Đinh Viết Sang
Chữ ký của GVHD
Viện: Công nghệ thông tin và truyền thông
HÀ NỘI, 04/2021
Lời cảm ơn
Lời đầu tiên, em xin được gửi lời cảm ơn chân thành đến các thầy cô trong trường
Đại học Bách Khoa Hà Nội cũng như các thầy cô trong Viện Công nghệ thông tin
và Truyền thông đã truyền dạy cho em những kiến thức và kinh nghiệm quý báu
trong suốt quá trình học tập và tu dưỡng trong thời gian qua. Em xin được gửi lời
cảm ơn chân thành tới thầy giáo, TS. Đinh Viết Sang đã hướng dẫn, chỉ bảo và tận
tình giúp đỡ em trong suốt quá trình nghiên cứu và hoàn thiện luận văn.
Tóm tắt nội dung luận văn
Luận văn tập trung vào hai vấn đề chính là phương pháp thưa hóa trong mạng học
sâu và ứng dụng của chúng cụ thể trong bài toán phát hiện đối tượng. Phương pháp
thưa hóa được nghiên cứu trong luận văn là phương pháp dropout biến phân
(Variational Dropout-VD), các mô hình học sâu phát hiện đối tượng được sử dụng
gồm có Yolov3, Yolov4 và Yolov5. Sau khi áp dụng kĩ thuật thưa hóa mạng học
sâu dùng dropout biến phân vào ba mô hình trên, kết quả và độ chính xác sẽ được
đánh giá trên hai bộ dữ liệu phát hiện người và phát hiện phương tiện. Về phần
mềm và phần cứng luận văn sử dụng các bộ công cụ được nêu ở phần 4.1. Sau các
thí nghiệm kết quả luận văn cho thấy tính hiệu quả khi áp dụng phương pháp thưa
hóa mạng học sâu dropout biến phân vào các mô hình phát hiện đối tượng. Từ đó
cho thấy tính khả thi khi ứng dụng các mô hình mạng học sâu phát hiện đối tượng
vào thực tế, việc tối ưu mô hình mạng học sâu với phần cứng hỗ trợ sẽ giúp tăng
tốc độ thực thi các mô hình trong khi không làm giảm quá nhiều độ chính xác.
MỤC LỤC
CHƯƠNG 1. MỞ ĐẦU ........................................................................................ 1
1.1 Giới thiệu ....................................................................................................... 1
1.2 Khái niệm thưa hóa mạng .............................................................................. 1
1.3 Ứng dụng của việc thưa hóa DNN ................................................................. 2
1.4 Giải pháp định hướng .................................................................................... 2
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT .................................................................... 4
2.1 Giới thiệu học sâu .......................................................................................... 4
2.2 Mạng nơ-ron nhân tạo .................................................................................... 5
2.2.1 Tổng quan về mạng nơ-ron .................................................................. 6
2.2.2 Kiến trúc mạng nơ-ron ......................................................................... 6
2.2.3 Tính toán các tham số trong mạng nơ-ron ........................................... 8
2.3 Mạng nơ-ron tích chập ................................................................................... 9
2.3.1 Tổng quan............................................................................................. 9
2.3.2 Kiến trúc mạng nơ-ron tích chập (CNN) ............................................. 9
2.4 Thưa hóa mạng nơ-ron................................................................................. 11
CHƯƠNG 3. THƯA HÓA MẠNG HỌC SÂU TRONG BÀI TOÁN PHÁT
HIỆN ĐỐI TƯỢNG ........................................................................................... 13
3.1 Các mạng học sâu phổ biến cho bài toán phát hiện đối tượng .................... 13
3.1.1 Tổng quan........................................................................................... 13
3.1.2 Các mô hình phân loại đối tượng phổ biến ........................................ 13
3.1.3 Từ Yolov1 đến Yolov3 ...................................................................... 14
3.1.4 Yolov4 ................................................................................................ 20
3.1.5 Yolov5 ................................................................................................ 27
3.2 Các phương pháp thưa hóa mạng phổ biến ................................................. 28
3.2.1 Dropout biến phân .............................................................................. 29
3.2.2 Cắt tỉa theo biên độ (magnitude pruning) .......................................... 30
3.3 Mô hình đề xuất ........................................................................................... 30
3.3.1 Mô hình mạng nơ-ron đều xuất cho bài toán phát hiện đối tượng ..... 30
3.3.2 Áp dụng phương pháp dropout biến phân để thưa hóa mạng học sâu31
CHƯƠNG 4. KẾT QUẢ VÀ ĐÁNH GIÁ ........................................................ 37
4.1 Môi trường thực nghiệm .............................................................................. 37
4.1.1 Cấu hình thực nghiệm ........................................................................ 37
4.1.2 Thư viện Pytorch ................................................................................ 37
4.1.3 TensorRT............................................................................................ 37
4.2 Dữ liệu thực nghiệm .................................................................................... 38
4.3 Phương pháp đánh giá ................................................................................. 38
4.4 Kết quả thực nghiệm .................................................................................... 40
4.5 Đánh giá kết quả .......................................................................................... 47
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ........................................................ 48
TÀI LIỆU THAM KHẢO ................................................................................. 49
DANH MỤC HÌNH VẼ
Hình 2.1 Giới thiệu học sâu ................................................................................... 4
Hình 2.2 Cấu trúc một nơ-ron ................................................................................ 6
Hình 2.3 Cấu trúc mạng nơ-ron cơ bản .................................................................. 7
Hình 2.4 Kiến trúc mạng nơ-ron tích chập .......................................................... 10
Hình 2.5 Lớp tích chập ......................................................................................... 10
Hình 2.6 Max-Pooling .......................................................................................... 11
Hình 3.1 Phát hiện đối tượng hai giai đoạn.......................................................... 13
Hình 3.2 Phát hiện đối tượng một giai đoạn ........................................................ 14
Hình 3.3 Yolov1 ................................................................................................... 15
Hình 3.4 Kiến trúc Yolov1 ................................................................................... 16
Hình 3.5 Dự đoán đường bao ............................................................................... 18
Hình 3.6 Kiến trúc Yolov2 ................................................................................... 18
Hình 3.7 Kiến trúc Yolov3 ................................................................................... 20
Hình 3.8 Kiến trúc DenseNet ............................................................................... 20
Hình 3.9 So sánh DenseNet với CSPNet ............................................................. 21
Hình 3.10 Một số kiến trúc Neck phổ biến .......................................................... 21
Hình 3.11 Kiến trúc PAN trong Yolov4 .............................................................. 22
Hình 3.12 Kiến trúc Yolov4 ................................................................................. 23
Hình 3.13 Một số hàm kích hoạt .......................................................................... 24
Hình 3.14 DIoU .................................................................................................... 25
Hình 3.15 Một số kĩ thuật gia tăng dữ liệu .......................................................... 25
Hình 3.16 Kĩ thuật Mosaic data augmentation .................................................... 26
Hình 3.17 Hiệu năng Yolov4 ............................................................................... 27
Hình 3.18 Hiệu năng Yolov5 ............................................................................... 28
Hình 3.19 So sánh các mô hình phát hiện đối tượng ........................................... 31
Hình 3.20 Các bước huấn luyện ........................................................................... 35
Hình 4.1 TensorRT............................................................................................... 38
Hình 4.2 IoU......................................................................................................... 39
Hình 4.3 AUC ...................................................................................................... 40
Hình 4.4 Thưa hóa trên bộ dữ liệu phát hiện người ............................................. 43
Hình 4.5 Thưa hóa trên bộ dữ liệu giao thông ..................................................... 44
Hình 4.6 Thưa hóa Yolov3................................................................................... 45
Hình 4.7 Thưa hóa Yolov5................................................................................... 45
Hình 4.8 Thưa hóa Yolov4................................................................................... 46
Hình 4.9 So sánh tốc độ sau khi lượng tử hóa ..................................................... 47
DANH MỤC BẢNG BIỂU
Bảng 3.1 Tham số bước 1 .................................................................................... 35
Bảng 3.2 Tham số bước 2 .................................................................................... 36
Bảng 3.3 Tham số bước 3 .................................................................................... 36
Bảng 4.1 Độ chính xác mô hình trước khi thưa hóa ............................................ 41
Bảng 4.2 Độ chính xác mô hình sau khi thưa hóa 50% ....................................... 41
Bảng 4.3 Độ chính xác mô hình sau khi thưa hóa 80% ....................................... 42
Bảng 4.4 Độ chính xác mô hình sau khi thưa hóa 90% ....................................... 42
Bảng 4.5 Độ chính xác mô hình sau khi thưa hóa 95% ....................................... 42
Bảng 4.6 Độ chính xác mô hình sau khi thưa hóa 98% ....................................... 42
Bảng 4.7 Độ chính xác mô hình sau khi tối ưu .................................................... 46
CHƯƠNG 1. MỞ ĐẦU
1.1 Giới thiệu
Vào năm 1998, Yann LeCun công bố mô hình mạng LeNet-5 [1]. Kể từ đó đến nay
lĩnh vực học sâu ngày càng được biết đến nhiều hơn. Những năm gần đây với sự phát
triển của năng lực tính toán cùng lượng dữ liệu dồi dào và ngày càng nhiều người
nghiên cứu lĩnh vực học sâu hơn, các mô hình mạng mới đã liên tục được ra đời. Vào
năm 2012, AlexNet [2] với những phát hiện về hàm Sigmoid và Dropout trong mạng
học sâu đã tạo nên một bước ngoặt mới cho hướng nghiên cứu này. Tiếp theo đó, hai
mô hình GoogleNet [3] và VGGNet [4] là hai cột mốc tiếp theo trong lĩnh vực mạng
nơ-ron nhân tạo, hai mô hình này là cơ sở cho rất nhiều bài báo nghiên cứu và ứng
dụng sau này. Hai mô hình đã chứng minh được việc sử dụng càng nhiều lớp tích
chập, tăng cường độ sâu của mạng sẽ đem lại kết quả tốt hơn. Tuy nhiên việc tăng độ
sâu của mạng mang đến một vấn đề khác, đó là gradient disappearance và gradient
explosion. Mô hình ResNet [5] ra đời năm 2015 đã giải quyết vấn đề này với một
kiến trúc mới được gọi là Residual block. Tiếp theo đó hàng loạt các mô hình khác
được sáng tạo ra nhằm mục đích tối giản mạng nơ-ron, giảm năng lực tính toán cũng
như lưu trữ của mạng như ShufffleNet và MobileNet [6].
Ngày nay công nghệ học máy, học sâu đã không còn xa lạ với mọi người. Học sâu
đang ngày một chứng minh được khả năng vượt trội của mình trong các bài toán như
xử lý ảnh, xử lý ngôn ngữ tự nhiên, xử lý tiếng nói. Để đạt được các kết quả ấn tượng
đó kích thước mô hình cũng ngày một lớn lên, cộng thêm với lượng dữ liệu ngày một
dồi dào. Số lượng tham số của các mô hình học sâu trong xử lý ảnh hiện nay có thể
lên tới cả trăm triệu tham số, với mô hình xử lý ngôn ngữ tự nhiên có thể lên tới 175
tỉ tham số như mô hình GPT-3 [7]. Điều này khiến cho tài nguyên tính toán để huấn
luyện cũng như ứng dụng các mô hình trên vào thực tế ngày càng trở nên tốn kém
hơn. Thưa hóa mạng trong những năm gần đây đang là một phương pháp rất hiệu quả
để giải quyết vấn đề trên.
1.2 Khái niệm thưa hóa mạng
Thưa hóa mạng là một trong nhiều kĩ thuật tối ưu hóa. Mục tiêu của việc tối ưu là
giúp giảm kích thước mô hình và tăng tốc độ xử lý.
Thưa hóa mạng là phương pháp làm cho một phần lớn các số lượng tham số trong
mạng về giá trị 0, từ đó có thể đưa những tham số này ra khỏi mạng trong khi không
làm ảnh hưởng quá nhiều tới độ chính xác của mô hình. Nhờ đó mô hình học sâu có
thể bỏ qua nhiều kết nối trong mạng, giảm được dung lượng lưu trữ, cùng với việc
hỗ trợ từ phần cứng [8] sẽ giúp mô hình tăng tốc đáng kể. Điều này rất có ý nghĩa
trong việc ứng dụng các mô hình học sâu vào thực tế, khi chi phí cũng như tài nguyên
tính toán là hạn chế.
Thưa hóa mạng có thể chia thành hai loại, thưa hóa có cấu trúc (structured sparsity)
và thưa hóa không có cấu trúc (unstructured sparsity). Thưa hóa có cấu trúc tập trung
vào việc xóa bỏ toàn bộ lớp mạng hay khối trong cấu trúc tham số; trong khi đó thưa
1
hóa không có cấu trúc có tính linh hoạt hơn, chỉ xóa bỏ các tham số đơn lẻ, không
cần thiết trong mạng. Do đó thưa hóa không có cấu trúc sẽ giúp cho mô hình không
bị ảnh hưởng về độ chính xác quá nhiều, nhưng sẽ làm giảm tính hiệu quả trong tính
toán song song cũng như việc hỗ trợ của các thư viện học sâu cũng bị hạn chế.
1.3 Ứng dụng của việc thưa hóa DNN
Ngày nay các mô hình mạng học sâu đang ngày càng chính xác hơn và đạt được nhiều
kết quả rất ấn tượng. Kéo theo đó kích thước các mô hình cũng đang ngày một lớn
hơn, đòi hỏi cần nhiều năng lực tính toán, xử lý và lưu trữ. Phương pháp thưa hóa mô
hình mạng học sâu trong những năm gần đây đang được tập trung nghiên cứu nhiều
hơn như một giải pháp cho vấn đề trên. Thưa hóa mạng giúp cho các mô hình học
sâu giảm được kích thước, tăng tốc độ xử lý, tối ưu tài nguyên phần cứng trong khi
độ chính xác của mô hình giảm không đáng kể. Các hãng phần cứng cũng như phần
mềm trong những năm gần đây đang tập trung khá nhiều nguồn lực cho bài toán này.
• Google gần đây cho ra mắt TensorFlow Model Optimization Toolkit, một
công cụ hỗ trợ chuyên biệt cho pruning mô hình và lượng tử hóa mô hình. Với
pruning mô hình hiện tại công cụ này mới chỉ ở mức giảm kích thước mô hình,
còn vấn đề cải thiện tốc độ hiện vẫn đang trong lộ trình.
• Xillinx đã mua lại một công ty khởi nghiệp của Trung Quốc chuyên về nén
mô hình học sâu là Deephi. Xillinx hiện đang cung cấp DNNDK™ (Deep
Neural Network Development Kit) để chuyển đổi và triển khai các mô hình
mạng học sâu lên chip FPGA của hãng. Công cụ này cũng bao gồm cả phần
thưa hóa và nén mô hình mạng, vừa giảm kích thước mô hình, vừa tăng tốc
tính toán.
• NVIDIA cũng cung cấp tính năng thưa hóa và nén mạng học sâu qua bộ công
cụ NVIDIA Transfer Learning Toolkit. Dòng chip GPU [8] Ampere thế hệ
mới của hãng cũng đã được thiết kế và hỗ trợ tăng tốc xử lý cho các mạng thưa
hóa.
1.4 Giải pháp định hướng
Từ những lợi ích lớn mà việc thưa hóa đem lại, trong phạm vi luận văn này sẽ trình
bày một số phương pháp thưa hóa mạng nổi bật. Đề xuất phương pháp thưa mạng
hóa mạng phù hợp cho bài toán nhận diện đối tượng. Áp dụng và đánh giá hiệu quả
thực tế của phương pháp thưa hóa mạng đem lại.
Cụ thể luận văn bao gồm bốn chương chính. Ở chương 2 luận văn tập trung vào trình
bày cơ sở các lý thuyết sử dụng, các khái niệm về mạng học sâu, mạng tích chập,
thưa hóa mạng. Chương 3 sẽ trình bày việc áp dụng kĩ thuật thưa hóa mạng học sâu
trong bài toán phát hiện đối tượng. Ở chương này luận văn tập trung giới thiệu các
mạng học sâu phổ biến trong bài toán phát hiện đối tượng, các phương pháp thưa hóa
mạng học sâu phổ biến; so sánh đánh giá các phương pháp này từ đó đưa ra mô hình
và phương pháp đề xuất cho bài toán. Chương 4 sẽ trình các kết quả đạt được bao
gồm môi trường thực nghiệm, dữ liệu thực nghiệm, phương pháp đánh giá và kết quả
2
thực nghiệm; sau đó là đánh giá nhận xét kết quả đạt được. Chương 5 luận văn sẽ ra
các kết luận đạt được của nghiên cứu cũng như các hướng nghiên cứu tiếp theo của
bài toán.
3
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu học sâu
Trong những năm qua, thuật ngữ "deep learning" (học sâu) đã dần len lỏi trong các
cuộc hội thảo khi bàn về trí tuệ nhân tạo (AI), dữ liệu lớn (Big Data) và phân tích
(Analytics). Đây là một cách tiếp cận đầy hứa hẹn tới AI khi phát triển các hệ thống
tự trị, tự học, những thứ đang cách mạng hóa nhiều ngành công nghiệp.
Hình 2.1 Giới thiệu học sâu
Nếu coi ta học máy (machine learning) là công nghệ tiên tiến nhất, thì học sâu là "tiên
tiến của tiên tiến". Học máy lấy một vài ý tưởng cốt lõi của trí tuệ nhân tạo và tập
trung vào việc giải quyết các vấn đề thế giới thực với các mạng thần kinh được thiết
kế để bắt chước khả năng đưa ra quyết định của chúng ta. Học sâu, đúng như tên gọi
của nó, đi sâu hơn nữa vào một tập hợp các công cụ và kỹ thuật học máy, từ đó áp
dụng chúng để giải quyết bất kỳ vấn đề nào đòi hỏi "khả năng tư duy" – con người
hay nhân tạo.
Về cơ bản, học sâu là cho một hệ thống máy tính tiêu thụ rất nhiều dữ liệu, để chúng
có thể sử dụng và đưa ra các quyết định về những dữ liệu khác. Dữ liệu này được nạp
thông qua các mạng thần kinh, tương tự như học máy. Những mạng lưới này – các
cấu trúc logic yêu cầu một loạt các câu hỏi đúng/sai, hoặc trích xuất một giá trị số,
của mỗi bit dữ liệu đi qua chúng và phân loại theo các câu trả lời nhận được.
Vì công việc của học sâu là tập trung phát triển những mạng lưới này, chúng đã trở
thành "mạng thần kinh sâu" – những mạng logic phức tạp cần thiết để xử lý các bộ
dữ liệu lớn, như thư viện hình ảnh của Google hay Instagram.
Với các bộ dữ liệu toàn diện như vậy, và các mạng logic phức tạp để xử lý phân loại
chúng, việc một chiếc máy tính lấy một hình ảnh và nhận dạng với độ chính xác cao
trở nên "quá đỗi bình thường".
4
Các hình ảnh là ví dụ tuyệt vời nhất về cách thức hoạt động của học sâu, vì chúng có
chứa nhiều yếu tố khác nhau và để hiểu rõ được làm thế nào để máy tính, với não bộ
một chiều chủ yếu dựa trên sự tính toán, có thể học cách giải thích chúng giống như
con người. Tuy vậy, học sâu có thể được áp dụng cho bất kỳ hình thức dữ liệu nào –
âm thanh, video, lời nói, chữ viết,... – để đưa ra những kết luận như thể do con người
thực hiện với tốc độ rất nhanh. Chúng ta hãy thử xem xét một số ví dụ thực tiễn.
Giả sử một hệ thống được thiết kế để tự động ghi nhận và báo cáo có bao nhiêu chiếc
xe của một mẫu xe nhất định đã đi ngang qua một con đường. Trước tiên, nó sẽ được
quyền truy cập vào một cơ sở dữ liệu khổng lồ về các loại xe, bao gồm hình dáng,
kích thước và thậm chí là tiếng của động cơ. Điều này có thể được biên soạn theo
cách thủ công hoặc, trong các điều kiện tiên tiến hơn, được thu thập tự động bởi hệ
thống nếu như nó được lập trình để tìm kiếm trên internet và lấy dữ liệu mà nó tìm
thấy ở đó. Tiếp theo, nó sẽ lấy dữ liệu cần được xử lý – dữ liệu trong thế giới thực có
chứa thông tin chi tiết cần nắm bắt, trong trường hợp này là bởi các thiết bị thu hình
và âm thanh bên đường. Bằng cách so sánh dữ liệu từ cảm biến với những dữ liệu mà
nó đã "học được", nó có thể phân loại, với một độ chính xác nhất định, từng loại xe
đã đi qua con đường đó.
Trên đây là một ví dụ cụ thể, ngoài ra học sâu còn có thể ứng dụng ở trong rất nhiều
các lĩnh vực khác như:
• Cung cấp khả năng điều hướng cho xe tự lái: Với hệ thống cảm biến và phần
mềm phân tích trên buồng lái, các xe tự lái có thể học cách nhận dạng những
chướng ngại vật có trên đường và có giải pháp xử lý thích hợp bằng cách sử
dụng học sâu.
• Phục chế màu cho ảnh đen trắng: thông qua việc dạy cho máy tính cách nhận
biết các vật thể và cách mà mắt người nhìn chúng, các hình ảnh và video đen
trắng sẽ có thể được tái hiện lại với đầy đủ các màu sắc phù hợp.
• Dự đoán kết quả của các thủ tục pháp lý: Một nhóm các nhà nghiên cứu người
Anh và Mỹ đã có thể dự đoán chính xác kết quả của một phiên tòa, sau khi hệ
thống máy tính của họ được nạp sẵn những thông tin cơ bản của vụ án.
• Thuốc đặc trị: Các kỹ thuật học sâu hiện đang được dùng để phát triển các loại
thuốc đã được chỉnh sửa sao cho phù hợp với bộ gen của bệnh nhân.
• Phân tích và báo cáo tự động: Các hệ thống có thể phân tích dữ liệu và báo
cáo những thông tin chi tiết của chúng dưới dạng âm thanh tự nhiên hoặc ngôn
ngữ của con người.
• Chơi trò chơi: Các hệ thống học sâu đã và đang được dạy cách chơi (và giành
chiến thắng) các trò chơi rất phức tạp như cờ vây, các trò chơi của Atari hay
đến các trò chơi cực kì phức tạp Starcraft, Dota2.
2.2 Mạng nơ-ron nhân tạo
Mạng nơ-ron nhân tạo (Artificial Neural Network) đã bắt đầu được nghiên cứu từ
những năm 1980 và sau đó bùng nổ vào cuối những năm 2000. Ý tưởng của hướng
5
nghiên cứu này là mô phỏng lại cách thức hoạt động của các mạng nơ-ron trong não
bộ con người, từ cách xử lý thông tin đến cách thức kết nối các nơ-ron trong mạng.
2.2.1 Tổng quan về mạng nơ-ron
Thần phần chính cấu tạo lên mạng nơ-ron là các nút nơ-ron, các nút này nhận rất
nhiều giá trị đầu vào và trả về một giá trị ở đầu ra. Cấu trúc của một mạng nơ-ron cơ
bản được mô tả ở Hình 2.2.
Hình 2.2 Cấu trúc một nơ-ron 1
Với nơ-ron bên trên các đầu vào là 𝑥𝑥1 , 𝑥𝑥2 , 𝑥𝑥3 ,… , b được gọi là bias. Giá trị đầu ra
được tính theo công thức:
3
𝑇𝑇
𝑦𝑦𝑘𝑘 = 𝑓𝑓(𝑾𝑾 𝒙𝒙) = 𝑓𝑓 �� 𝑊𝑊𝑖𝑖 𝑥𝑥𝑖𝑖 + 𝑏𝑏� PT 2.1
𝑖𝑖=1
Trong đó W là một vector các trọng số, hàm f được gọi là hàm kích hoạt (activation
function). Các hàm kích hoạt thông thường hay được lựa chọn là Sigmoid, Tanh,
ReLu, …
2.2.2 Kiến trúc mạng nơ-ron
Một mạng nơ-ron được cấu thành từ nhiều đơn vị nơ-ron. Cấu trúc một mạng nơ-ron
đơn giản được miêu tả như Hình 2.3
1
https://thebeautyofml.wordpress.com/2016/03/25/in-nutshell-nơ-ron-networks/
6
Hình 2.3 Cấu trúc mạng nơ-ron cơ bản 2
Trên Hình 2.3 là kiến trúc của một mạng nơ-ron cơ bản gồm ba lớp: đầu vào (input),
đầu ra (hidden) và đầu ra (output).
(𝑙𝑙)
Ở mạng nơ-ron, đầu ra của một nơ-ron là đầu vào cho các nơ-ron phía sau. Gọi 𝑧𝑧𝑖𝑖 là
(𝑙𝑙)
input của nơ-ron thứ i của lớp mạng thứ l, 𝑎𝑎𝑖𝑖 là đầu ra của nơ-ron thứ i của lớp mạng
(1)
thứ l, khi 𝑙𝑙 = 1, 𝑎𝑎𝑖𝑖 = 𝑥𝑥𝑖𝑖 ; đầu ra ℎ𝑾𝑾,𝒃𝒃 của mạng được tính theo công thức:
(2) (1) (1) (1) (1)
𝑧𝑧1 = 𝑊𝑊11 𝑥𝑥1 + 𝑊𝑊12 𝑥𝑥2 + 𝑊𝑊13 𝑥𝑥3 + 𝑏𝑏1
(2) (2)
𝑎𝑎1 = 𝑓𝑓�𝑧𝑧1 �
(2) (1) (1) (1) (1)
𝑧𝑧2 = 𝑊𝑊21 𝑥𝑥1 + 𝑊𝑊22 𝑥𝑥2 + 𝑊𝑊23 𝑥𝑥3 + 𝑏𝑏2
(2) (2) PT 2.2
𝑎𝑎2 = 𝑓𝑓�𝑧𝑧2 �
(2) (1) (1) (1) (1)
𝑧𝑧3 = 𝑊𝑊31 𝑥𝑥1 + 𝑊𝑊32 𝑥𝑥2 + 𝑊𝑊33 𝑥𝑥3 + 𝑏𝑏3
(2) (2)
𝑎𝑎3 = 𝑓𝑓�𝑧𝑧3 �
(2) (2) (2) (2) (2) (2) (2)
ℎ𝑾𝑾,𝒃𝒃 (𝑥𝑥) = 𝑓𝑓�𝑊𝑊11 𝑎𝑎1 + 𝑊𝑊12 𝑎𝑎2 + 𝑊𝑊13 𝑎𝑎3 + 𝑏𝑏1 �
Các bước trên còn được gọi là quá trình lan truyền xuôi, luồng dữ liệu được lan truyền
từ lớp đầu vào của mạng đến các nơ-ron đầu ra. Trên Hình 2.3 là cấu trúc của một
mạng nơ-ron cơ bản, mở rộng hơn một mạng nơ-ron có thể gồm nhiều lớp mạng ẩn
kết nối với nhau.
2
https://en.wikipedia.org/wiki/Neural_network
7
2.2.3 Tính toán các tham số trong mạng nơ-ron
Tương tự như các bài toán học máy khác thì quá trình học vẫn là tìm lấy một hàm
mất mát để đánh giá và tìm cách tối ưu hàm lỗi đó để được kết quả hợp lý nhất có
thể. Đối với một mạng nơ-ron như ở mục 2.2.2 hàm mất mát được định nghĩa như
sau:
1 2
𝐽𝐽(𝑾𝑾, 𝒃𝒃; 𝒙𝒙, 𝑦𝑦) = �ℎ𝑾𝑾,𝒃𝒃 (𝒙𝒙) − 𝑦𝑦� PT 2.3
2
Trong đó, m là số dữ liệu huấn luyện ��𝒙𝒙(1) , 𝑦𝑦 (1) �, … , �𝒙𝒙(𝑚𝑚) , 𝑦𝑦 (𝑚𝑚) ��.
Để tránh việc mô hình bị overfit, một ràng buộc nữa được bổ sung vào hàm mất mát.
Ta được hàm mất mát mới có công thức:
𝑚𝑚
1
𝐽𝐽(𝑾𝑾, 𝒃𝒃) = � � 𝐽𝐽�𝑾𝑾, 𝒃𝒃; 𝒙𝒙(𝑖𝑖) , 𝑦𝑦 (𝑖𝑖) ��
𝑚𝑚
𝑖𝑖=1
𝑛𝑛𝑙𝑙 −1 𝑠𝑠𝑙𝑙 𝑠𝑠𝑙𝑙+1 PT 2.4
λ 2
+ � � ��𝑾𝑾𝑙𝑙𝑖𝑖𝑖𝑖 �
2
𝑙𝑙=1 𝑖𝑖=1 𝑗𝑗=1
Ta cần phải tìm kiếm các tham số W và b để hàm mất mát 𝐽𝐽(𝑾𝑾, 𝒃𝒃) đạt giá trị nhỏ
nhất. Đầu tiên các tham số sẽ được khởi tạo một cách ngẫu nhiên, sau đó tính toán
xuôi để tìm ra các giá trị ℎ𝑾𝑾,𝒃𝒃 (𝒙𝒙) và giá trị hàm mất mát. Để tính toán đạo hàm của
hàm mất mất, ta sử dụng một giải thuật gọi là lan truyền ngược (back propagration)
[9]. Về cơ bản phương pháp này được dựa theo quy tắc chuỗi đạo hàm của hàm
hợp và phép tính ngược đạo hàm để thu được đạo hàm theo tất cả các tham số cùng
lúc chỉ với hai lần duyệt mạng. Công thức cập nhật các tham số W, b sử dụng đạo
hàm ngược được biểu diễn như sau:
(𝑙𝑙) (𝑙𝑙) ∂
𝑊𝑊𝑖𝑖𝑖𝑖 = 𝑊𝑊𝑖𝑖𝑖𝑖 − α (𝑙𝑙)
𝐽𝐽(𝑾𝑾, 𝒃𝒃)
∂ 𝑊𝑊𝑖𝑖𝑖𝑖
PT 2.5
(𝑙𝑙) (𝑙𝑙) ∂
𝑏𝑏𝑖𝑖 = 𝑏𝑏𝑖𝑖 − α (𝑙𝑙) 𝐽𝐽(𝑾𝑾, 𝒃𝒃)
∂ 𝑏𝑏𝑖𝑖
Trong đó, α là hệ số học. Lan truyền ngược giúp tính đạo hàm ngược từ lớp mạng
cuối cùng đến lớp mạng đầu tiên. Lớp mạng cuối cùng được tính toán trước vì nó
gần hơn với lớp đầu ra. Việc tính toán đạo hàm của các lớp mạng trước được thực
hiện dựa trên một quy tắc quen thuộc có tên là chain rule, tức đạo hàm của hàm hợp.
∂ ∂
Cụ thể hơn công thức (𝑙𝑙) 𝐽𝐽(𝑾𝑾, 𝒃𝒃) và (𝑙𝑙) 𝐽𝐽(𝑾𝑾, 𝒃𝒃) được biểu diễn như sau:
∂ 𝑊𝑊𝑖𝑖𝑖𝑖 ∂ 𝑏𝑏𝑖𝑖
8
𝑚𝑚
∂ 1 ∂ (𝑙𝑙)
(𝑙𝑙)
𝐽𝐽 ( 𝑾𝑾, 𝒃𝒃 ) = � � (𝑙𝑙)
𝐽𝐽�𝑾𝑾, 𝒃𝒃; 𝒙𝒙(𝑖𝑖) , 𝑦𝑦 (𝑖𝑖) �� + λ𝑊𝑊𝑖𝑖𝑖𝑖
∂ 𝑊𝑊 𝑚𝑚 ∂ 𝑊𝑊
𝑖𝑖𝑖𝑖 𝑖𝑖=1 𝑖𝑖𝑖𝑖 PT 2.6
𝑚𝑚
∂ 1 ∂
(𝑙𝑙)
𝐽𝐽(𝑾𝑾, 𝒃𝒃) = � (𝑙𝑙) 𝐽𝐽�𝑾𝑾, 𝒃𝒃; 𝒙𝒙(𝑖𝑖) , 𝑦𝑦 (𝑖𝑖) �
∂ 𝑏𝑏𝑖𝑖 𝑚𝑚 ∂ 𝑏𝑏
𝑖𝑖=1 𝑖𝑖
2.3 Mạng nơ-ron tích chập
2.3.1 Tổng quan
Khái niệm mạng nơ-ron tích chập bắt đầu được biết đến từ những năm 1980-1990
[1]. Trong mạng nơ-ron, mô hình mạng nơ-ron tích chập (Convolutional Neural
Networks) là một trong những mô hình để nhận dạng và phân loại hình ảnh. Trong
đó, xác định đối tượng và nhận dạng khuôn mặt là một trong số những lĩnh vực mà
CNN được sử dụng rộng rãi.
LeNet-5 do LeCun tạo ra là mô hình mạng nơ-ron tích chập đầu tiên được biết đến.
Từ sau những năm 2000, với sự phát triển của học sâu, khả năng tính toán của máy
tính được tăng cường, mạng nơ-ron tích chập được phát triển một cách nhanh chóng
và được sử dụng trong rất nhiều lĩnh vực từ xử lý ảnh đến xử lý ngôn ngữ tự nhiên.
Rất nhiều các mô hình nơ-ron tích chập nổi bật được huấn luyện trên bộ dữ liệu
ImageNet [10]. Việc ra đời của mạng nơ-ron tích chập đã giải quyết được nhiều vấn
đề của mô hình mạng kết nối đầy đủ:
• Mất mát thông tin khi biến đổi từ ảnh thành vector.
• Mô hình bị overfit khi số lượng các tham số quá lớn.
• Giảm khối lượng tính của mô hình đi nhiều lần so với mô hình mạng kết nối
đầy đủ.
2.3.2 Kiến trúc mạng nơ-ron tích chập (CNN)
Mạng nơ-ron tích chập gồm 5 thành phần chính: lớp đầu vào, lớp tích chập, lớp kích
hoạt, lớp pooling và lớp kết nối đẩy đủ. Một mạng nơ-ron tích chập hoàn chỉnh sẽ
được tạo ra bằng việc ghép các lớp này lại với nhau. Trong đó hai lớp quan trọng nhất
của mạng nơ-ron tích chập là lớp tích chập và lớp pooling. Nhiệm vụ của lớp tích
chập là trích xuất các đặc trưng của ảnh, lớp pooling chó nhiệm vụ tóm tắt tóm lược
lại các đặc trưng gốc, giảm số lượng các tham số và tránh cho mô hình bị overfitting.
Kiến trúc một mạng mạng nơ-ron tích chập đơn giản được miêu tả dưới Hình 2.4
9
Hình 2.4 Kiến trúc mạng nơ-ron tích chập 3
2.3.2.1. Lớp tích chập
Lớp tích chập là lớp đầu tiên để trích xuất các đặc trưng từ hình ảnh đầu vào, được
tính toán bằng cách dịch chuyển từng ô một các nhân tích chập trên lớp mạng trước
đó. Các tham số trên nhân tích chập tương tự với các tham số trên mô hình nơ-ron
truyền thống. Tổng của tích các nhân tích chập với các giá trị điểm ảnh tương ứng ở
lớp mạng trước đó chính là giá trị của lớp tích chập tiếp theo. Có thể có nhiều nhân
trên mỗi lớp tích chập, mỗi nhân tương ứng với các đặc trưng khác nhau. Các giá trị
của các nhân này được cập nhật trong quá trình huấn luyện mạng. Hình 2.5 mô tả
cách thức hoạt động của một lớp tích chập.
Hình 2.5 Lớp tích chập 4
2.3.2.2. Lớp pooling
Sau khi trích xuất được các đặc trưng từ lớp tích chập, chúng ta có thể sử dụng các
đặc trưng để huấn luyện các lớp phân loại, nhưng khối lượng tính toán sẽ rất lớn và
hiện tượng overfitting cũng sẽ rất dễ xảy ra. Để giải quyết vấn đề này chúng ta sẽ sử
dụng pooling trên các lớp tích chập để giảm khối lượng các tham số cần tính toán khi
huấn luyện. Có hai phương pháp pooling phổ biến nhất là Max-Pooling (Hình 2.6) và
Average-Pooling. Với phương pháp Max-Pooling ta sẽ lấy giá trị lớn nhất trong một
cửa số nhất định, còn Average-Pooling sẽ lấy giá trị trung bình của các giá trị trong
cửa số đó.
3
https://stanford.edu/~shervine/l/vi/teaching/cs-230/cheatsheet-convolutional-nơ-ron-networks
4
https://en.wikipedia.org/wiki/Neural_network
10
Hình 2.6 Max-Pooling 5
2.3.2.3. Lớp kết nối đẩy đủ
Lớp kết nối đẩy đủ trong mạng nơ-ron tích chập tương tự như các lớp ẩn trong mô
hình mạng nơ-ron truyền thống. Các lớp này sẽ liên kết các lớp tích chập trước đó
với các lớp kết nối đẩy đủ phía sau. Các đặc trưng sẽ được mở rộng thành các dạng
vector ở lớp kết nối đẩy đủ và sau đó được truyền vào các hàm kích hoạt.
Đối với lớp tích chập và lớp pooling trong mạng nơ-ron tích chập có chức năng trích
xuất các đặc trưng từ ảnh đầu vào. Trong khi đó lớp kết nối đẩy đủ giúp tổng hợp lại
các đặc trưng đã trích xuất được thành đầu ra. Đối với một số mạng nơ-ron tích chập
lớp kết nối đẩy đủ còn có chức năng như một lớp pooling toàn cục.
2.3.2.4. Đầu ra lớp mạng
Đầu ra lớp mạng là lớp phía sau lớp kết nối đẩy đủ, trả về kết quả tùy thuộc với từng
loại bài toán. Với các bài toán phân loại ảnh, lớp đầu ra thường là lớp phân loại nhãn
sử dụng các hàm kích hoạt phổ biến như soft-max. Với bài toán nhận dạng đối tượng,
lớp đầu ra được thiết kế để trả về các thông số như tọa độ, kích thước, tâm của đối
tượng và phân loại đối tượng. Ở bài toán khoanh vùng ảnh lớp đầu ra sẽ trả về kết
quả phân loại lớp trên từng điểm ảnh.
2.4 Thưa hóa mạng nơ-ron
Một mạng nơ-ron thưa hóa là một mạng nơ-ron gồm rất nhiều trọng số có giá trị là 0,
điều này giúp ta có thể bỏ qua nhiều kết nối trong mạng trong quá trình tính toán.
Mạng có độ thưa hóa càng cao thì càng nhiều trọng số mạng có giá trị là 0, năng lực
tính toán của mạng sẽ càng giảm đi và do đó dung lượng lưu trữ cũng giảm theo tương
ứng. Có rất nhiều hướng tiếp cận với bài toán thưa hóa mạng học sâu, ý tưởng đơn
giản nhất là xóa bỏ những trọng số có giá trị gần với 0 trong mạng nơ-ron nhiều nhất
có thể trong khi độ chính xác bị giảm thiểu ít nhất có thể ([11], [12]). Một vài kĩ thuật
khác thì sử dụng thống kê Bayesian để thưa hóa mạng nơ-ron ([13], [14], [15], [16]).
5
https://stanford.edu/~shervine/l/vi/teaching/cs-230/cheatsheet-convolutional-nơ-ron-networks
11
Các kĩ thuật này đạt được tỉ lệ nén mạng rất cao trong khi vẫn giữ được độ chính xác
của mô hình. Trong đó nổi bật nhất là kĩ thuật dropout biến phân [16] do Molchanov
cũng đồng nghiệp công bố năm 2017, nhóm tác giả đã sử dụng kĩ thuật này thưa hóa
thành công một số mạng CNN cho bài toán phân loại ảnh đơn giản như LeNet [1] và
VGG [4]. Nhóm tác giả đã chứng minh được kĩ thuật dropout biến phân đem lại kết
quả tốt nhất cho thưa hóa mạng ở các lớp kết nối đầy đủ và lớp tích chập, số lượng
các tham số mạng được giảm đi đến 280 lần với LeNet và 68 lần ở mô hình mạng
VGG với độ chính xác gần như không thay đổi.
12
CHƯƠNG 3. THƯA HÓA MẠNG HỌC SÂU TRONG BÀI TOÁN PHÁT
HIỆN ĐỐI TƯỢNG
3.1 Các mạng học sâu phổ biến cho bài toán phát hiện đối tượng
3.1.1 Tổng quan
Phát hiện đối tượng là một trong những bài toán phổ biến và nhiều thách thức nhất
trong lĩnh vực thị giác máy tính, có ứng dụng rất nhiều trong thực tế như nhận dạng
người, nhận dạng phương tiện giao thông, nhận dạng biển số xe, … Những năm gần
đây với sự xuất hiện của mô hình học sâu đã giúp phần làm cho bài toán phát hiện
đối tượng đạt được nhiều bước tiến lớn, thậm chí đã vượt cả con người trong một số
bài toán nhất định. Mục tiêu của bài toán phát hiện đối tượng là khoanh vùng và phân
loại các đối tượng thực thể nhất định. Kết quả đầu ra gồm các thông số tọa độ để định
vị các đối tượng trong khung hình và phân loại các đối tượng đó thuộc lớp nào.
3.1.2 Các mô hình phân loại đối tượng phổ biến
Có hai hướng tiếp cận chính cho bài toán này là một giai đoạn và hai giai đoạn. Các
thuật toán phát hiện đối tượng hai giai đoạn (two-stage object detector) điển hình như
RCNN [17], Fast-RCNN [18], Faster-RCNN [19] , Mask-RCNN [20] (Object detect
+ Instance segmentation), ... Việc gọi là hai giai đoạn là do cách mô hình xử lý để lấy
ra được các vùng có khả năng chứa vật thể từ bức ảnh. Ví dụ, với Faster-RCNN thì
trong bước một, ảnh sẽ được đưa ra một mạng con gọi là RPN (Region Proposal
Network) với nhiệm vụ trích xuất các vùng trên ảnh có khả năng chứa đối tượng dựa
vào các anchor. Sau khi đã thu được các vùng đặc trưng từ RPN, mô hình Faster-
RCNN sẽ thực hiện tiếp việc phân loại đối tượng và xác định vị trí nhờ vào việc chia
làm hai nhánh tại phần cuối của mô hình (phân loại đối tượng và dự đoán đường bao).
Hình 3.1 Phát hiện đối tượng hai giai đoạn 6
6
https://hackernoon.com/understanding-yolo-f5a74bbc7967
13
Một cách tiếp cận khác là các thuật toán một giai đoạn với một số mô hình điển hình
như: SSD [21], Yolo [22] , RetinaNet [23], EfficientDet [24]. Gọi là một giai đoạn vì
trong việc thiết kế mô hình hoàn toàn không có phần trích chọn các vùng đặc trưng
(các vùng có khả năng chứa đối tượng) như RPN của Faster-RCNN. Các mô hình
một giai đoạn coi phần việc định vị đối tượng (object localization) như một bài toán
hồi quy (với bốn tọa độ offset, ví dụ x, y, w, h) và cũng dựa trên các đường bao tiêu
chuẩn được định nghĩ trước gọi là anchor-box để làm việc đó. Các mô hình dạng này
thường nhanh hơn tuy nhiên độ chính xác của mô hình thường kém hơn so với thuật
toán hai giai đoạn. Tất nhiên, một số mô hình một giai đoạn vẫn tỏ ra vượt trội hơn
một chút so với hai giai đoạn như RetinaNet [23], Yolo [22], EfficientDet [24] với
việc thiết kế mạng theo FPN (Feature Pyramid Network) kết hợp cùng Focal Loss và
nhiều cải tiến khác.
Hình 3.2 Phát hiện đối tượng một giai đoạn 7
Trong số các mô hình phát hiện đối tượng một giai đoạn nổi bất nhất là Yolo [22].
Với sự cải tiến liên tục trong những năm gần đây qua nhiều phiên bản khác nhau Yolo
[22] (2016), Yolov2 [25] (2017), Yolov3 [26] (2018), Yolov4 [27] (2020) và Yolov5
(2020) khiến Yolo đang là một trong những mô hình phát hiện đối tượng có độ chính
xác và hiệu năng cao nhất. Nội dung luận văn sẽ tập trung vào đánh giá và thử nghiệm
trên ba mô hình Yolo mới và tốt nhất hiện nay là Yolov3, Yolov4 và Yolov5.
3.1.3 Từ Yolov1 đến Yolov3
Yolo - You Only Look Once là một trong những mô hình phát hiện vật thể tốt nhất ở
thời điểm hiện tại. Dù đều được gọi là Yolo, các phiên bản của mô hình này đều có
những cải tiến rất đáng kể sau mỗi phiên bản. Sau 3 phiên bản (Yolo [22], Yolov2
[25], Yolov3 [26]) của tác giả chính Joseph Redmon, tính đến thời điểm hiện tại có
thêm một mô hình YOLOv4 [27] của tác giả Alexey Bochkovskiy được phát triển
tiếp từ repository gốc của tác giả Joseph Redmon 8 và YOLOv5 9 đang được phát triển
bởi công ty Ultralytics.
7
https://hackernoon.com/understanding-yolo-f5a74bbc7967
8
https://github.com/pjreddie/darknet
9
https://github.com/ultralytics/yolov5
14