Kết quả đạt được của luận văn đạt được một số kết quả sau: Hiểu được các kỹ thuật học sâu, các khái niệm cơ bản liên quan đến mạng ron, mạng nơ-ron tích chập, các mô hình học sâu phổ b
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG
LÃ HẢI PHONG
ỨNG DỤNG THUẬT TOÁN YOLO TRONG XÂY DỰNG
HỆ THỐNG HỖ TRỢ PHÂN TÍCH HÌNH ẢNH TỰ ĐỘNG TẠI PHÒNG KỸ THUẬT HÌNH SỰ - CÔNG AN TỈNH KHÁNH HÒA
LUẬN VĂN THẠC SĨ
KHÁNH HÒA - 2020
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG
LÃ HẢI PHONG
ỨNG DỤNG THUẬT TOÁN YOLO TRONG XÂY DỰNG
HỆ THỐNG HỖ TRỢ PHÂN TÍCH HÌNH ẢNH TỰ ĐỘNG TẠI PHÒNG KỸ THUẬT HÌNH SỰ - CÔNG AN TỈNH KHÁNH HÒA
Phòng Đào tạo Sau Đại học:
KHÁNH HÒA - 2020
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan mọi kết quả của đề tài: “Ứng dụng thuật toán YOLO trong
xây dựng hệ thống hỗ trợ phân tích hình ảnh tự động tại Phòng Kỹ thuật hình sự - Công an tỉnh Khánh Hòa” là công trình nghiên cứu của cá nhân tôi và chưa từng
được công bố trong bất cứ công trình khoa học nào khác cho tới thời điểm này
Khánh Hòa, tháng 4 năm 2020
Tác giả luận văn
Lã Hải Phong
Trang 4LỜI CẢM ƠN
Để hoàn thành luận văn này, tôi đã nhận được nhiều sự hỗ trợ, giúp đỡ của nhiều tổ chức và cá nhân Với tình cảm chân thành và sâu sắc, tôi xin được bày tỏ lòng biết ơn đến tất cả các tổ chức và cá nhân đã tạo điều kiện giúp đỡ trong quá trình học tập và nghiên cứu đề tài
Trước hết tôi xin gửi tới các thầy cô Khoa Công nghệ thông tin, Trường Đại học Nha Trang lời cảm ơn sâu sắc Với sự quan tâm, dạy dỗ, chỉ bảo tận tình, chu đáo của các thầy cô để tôi có thể hoàn thành khóa học
Đặc biệt tôi xin gửi lời cảm ơn chân thành nhất tới TS Đinh Đồng Lưỡng, thầy
đã quan tâm, giúp đỡ, truyền cảm hứng và hướng dẫn tôi về kiến thức chuyên môn để
hoàn thành tốt luận văn: “Ứng dụng thuật toán YOLO trong xây dựng hệ thống hỗ trợ
phân tích hình ảnh tự động tại Phòng Kỹ thuật hình sự - Công an tỉnh Khánh Hòa”
Tôi cũng bày tỏ lòng biết ơn đến lãnh đạo Trường Đại học Nha Trang, Phòng Đào tạo sau đại học đã trực tiếp và gián tiếp giúp đỡ tôi trong suốt quá trình học tập và nghiên cứu đề tài
Cuối cùng, tôi xin gửi lời cảm ơn chân thành đến gia đình, đặc biệt là vợ tôi và tất cả bạn học viên cao học công nghệ thông tin đã giúp đỡ, động viên tôi trong suốt quá trình học tập và thực hiện đề tài
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế, luận văn này không thể tránh được những thiếu sót Rất mong nhận được sự chỉ bảo, đóng góp ý kiến của các thầy cô để tôi có điều kiện bổ sung, nâng cao kiến thức của mình
Tôi xin chân thành cảm ơn!
Khánh Hòa, tháng 4 năm 2020
Tác giả luận văn
Lã Hải Phong
Trang 5MỤC LỤC
LỜI CAM ĐOAN iii
LỜI CẢM ƠN iv
MỤC LỤC v
DANH MỤC CHỮ VIẾT TẮT vii
DANH MỤC BẢNG viii
DANH MỤC HÌNH ix
TRÍCH YẾU LUẬN VĂN xi
CHƯƠNG 1: TỔNG QUAN 1
1.1 Lý do chọn đề tài 1
1.2 Mục tiêu nghiên cứu của đề tài luận văn 2
1.3 Đối tượng nghiên cứu 2
1.4 Phạm vi nghiên cứu 2
1.5 Phương pháp nghiên cứu 2
1.6 Cấu trúc luận văn 2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 4
2.1 Giới thiệu về học sâu 4
2.1.1 Trí tuệ nhân tạo 4
2.1.2 Học máy 4
2.1.3 Học sâu 6
2.2 Mạng nơ-ron 10
2.2.1 Perceptron 10
2.2.2 Mô hình mạng nơ-ron 14
2.2.3 Lan truyền tiến 15
2.2.4 Hàm mất mát của mạng nơ-ron 16
2.2.5 Tối ưu hóa hàm mất mát 17
2.3 Mạng nơ-ron tích chập 18
2.3.1 Tích chập 20
Trang 62.3.2 Lớp tích chập 23
2.3.3 Lớp kích hoạt 24
2.3.4 Lớp hợp nhất 25
2.3.5 Lớp kết nối đầy đủ 26
CHƯƠNG 3: PHÁT HIỆN ĐỐI TƯỢNG TRONG VIDEO SỬ DỤNG THUẬT TOÁN YOLO 27
3.1 Giới thiệu về bài toán phát hiện đối tượng và một số phương pháp phát hiện đối tượng 27
3.1.1 Nhóm các bộ phát hiện đối tượng hai giai đoạn 28
3.1.2 Nhóm các bộ phát hiện đối tượng một giai đoạn 32
3.2 Thuật toán phát hiện đối tượng YOLOV3 32
3.2.1 Kiến trúc mạng YOLOV3 33
3.2.2 Hộp neo 37
3.2.3 Chỉ số IoU 38
3.2.4 Thuật toán Non-maximum Suppression 39
3.2.5 Hàm mất mát của thuật toán 40
CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG VÀ THỬ NGHIỆM 42
4.1 Xây dựng cơ sở dữ liệu 42
4.1.1 Dữ liệu Microsoft COCO 42
4.1.2 Dữ liệu hình ảnh súng từ hệ thống Camera quan sát 42
4.2 Huấn luyện mô hình 45
4.3 Thử nghiệm nhận dạng 46
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 48
TÀI LIỆU THAM KHẢO 50
Trang 7DANH MỤC CHỮ VIẾT TẮT
DIỄN GIẢI
KÍ HIỆU
AI Artificial Intelligence Trí tuệ nhân tạo
ANNs Artificial Neural Networks Mạng nơ-ron nhân tạo CNNs Convolutional Neural Networks Mạng nơ-ron tích chập COCO Common Object in Context
FCN Fully Connected Neural Network Mạng nơ-ron kết nối đầy
đủ GPU Graphics Processing Unit Bộ xử lý đồ họa
HOG Histogram of Oriented Gradients
IoU Intersection over Union
ML Machine Learning Học máy
NMS Non-maximum Suppression
R-CNN Region-based Convolutional Neural Network
ReLU Rectified Linear Unit Đơn vị tuyến tính chỉnh
lưu RNNs Recurrent Neural Networks RNNs
RoI Region of Interest
RPN Region Proposal Network
SIFT Scale-Invariant Feature Transform
SSD Single Shot Detector
SVM Support Vector Machine
YOLO You Only Look Once
Trang 8DANH MỤC BẢNG
Bảng 2.1: Một số hàm kích hoạt phổ biến trong mạng nơ-ron 12 Bảng 2.2: Ví dụ một số kernel trong xử lý ảnh 22
Trang 9DANH MỤC HÌNH
Hình 2.1: Khác biệt giữa học máy và lập trình truyền thống 5
Hình 2.2: Minh họa mối quan hệ giữa DL, ML và AI 6
Hình 2.3: Các miêu tả từ dữ liệu được học bởi một mô hình học sâu 7
Hình 2.4: Mạng nơ-ron với là các trọng số là tham số ở các lớp 8
Hình 2.5: Mô tả ý nghĩa của hàm mất mát trong để điều chỉnh các trọng số mô hình 9
Hình 2.6: Mô tả cấu trúc của một nơ-ron sinh học 10
Hình 2.7: Mô tả một nơ-ron đơn lẻ trong mạng nơ-ron 10
Hình 2.8: Mô hình toán học của một nơ-ron đơn lẻ trong mạng nơ-ron 12
Hình 2.9: Mô hình mạng nơ-ron với một lớp ẩn 14
Hình 2.10: Mô phỏng thuật toán Gradient Descent 17
Hình 2.11: Mô hình mạng nơ-ron thông thường với 2 lớp ẩn 19
Hình 2.12: Minh họa phép tính tích chập 20
Hình 2.13: Hình ví dụ ma trận X với stride=1, padding=1 (hình bên trái) và stride =2, padding=1 (hình bên phải) 21
Hình 2.14: Phép tính tích chập trên ảnh màu 23
Hình 2.15: Ảnh minh họa phép tính tích chập trên ảnh màu 23
Hình 2.16: Ảnh mô tả hoạt động của một lớp hợp nhất (pooling layer) 25
Hình 2.17: Minh họa mô hình mạng CNNs 26
Hình 3.1: Minh họa về kết quả phát hiện các đối tượng trên ảnh 27
Hình 3.2: Phát hiện đối tượng trên ảnh ở nhiều tỉ lệ sử dụng thuật toán HOG+SVM 28
Hình 3.3: Minh họa ảnh được xử lý qua thuật toán Selective Search 29
Hình 3.4: Mô hình mạng R-CNN 29
Hình 3.5: Mô hình mạng Fast R-CNN 30
Hình 3.6: Mô hình mạng Faster R-CNN 31
Hình 3.7: Mô hình mạng SSD 32
Hình 3.8: Ví dụ các đối tượng phát hiện bởi thuật toán YOLOV3 33
Hình 3.9: Mô hình Darknet-53 34
Trang 10Hình 3.10: Minh họa về đường nối tắt trong Resnet 34
Hình 3.11: Kiến trúc mạng YOLOV3 35
Hình 3.12: Ảnh mô tả véc-tơ đặc trưng của một hộp chứa dự đoán 36
Hình 3.13: Mô tả cách tính tọa độ hộp chứa từ giá trị dự đoán của mô hình 37
Hình 3.14: Mô tả hộp neo (Anchor box) 38
Hình 3.15: Hình mô tả hộp chứa dự đoán và hộp chứa đối tượng thực tế 38
Hình 3.16: Công thức tính chỉ số IoU 39
Hình 3.17: Minh họa thuật toán NMS 39
Hình 4.1: Một số hình ảnh về súng được thu thập từ hệ thống camera quan sát 44
Hình 4.2: Gán nhãn cho dữ liệu bằng phần mềm LabelImg 44
Hình 4.3: Một số hình ảnh súng ngắn trong tập đánh giá được nhận dạng bởi mô hình được huấn luyện 47
Hình 4.4: Một số hình ảnh nhận dạng phương tiện giao thông được nhận dạng bởi mô hình sử dụng tệp tin trọng số đã được huấn luyện trên tập dữ liệu MS COCO 47
Trang 11TRÍCH YẾU LUẬN VĂN
Ngày nay, với sự bùng nổ của cuộc cách mạng công nghiệp lần thứ tư, trí tuệ nhân tạo (Artificial Intelligence), máy học (Machine learning) đang được quan tâm nghiên cứu và áp dụng trong nhiều lĩnh vực của đời sống xã hội Điển hình là lĩnh vực thị giác máy tính sử dụng các thuật toán học sâu ứng dụng vào giải quyết các bài toán thuộc lĩnh vực như y tế, giáo dục, giao thông, an ninh v.v Xuất phát từ yêu cầu công việc, là một cán bộ đang công tác trong lĩnh vực Giám định tại Phòng Kỹ thuật hình sự Công an tỉnh Khánh Hòa, tôi mong muốn ứng dụng các thành tựu của lĩnh vực Công nghệ thông tin vào trong việc của mình để góp phần nâng cao hiệu quả công tác của bản thân nói riêng và của đơn vị nói chung Đề tài nghiên cứu cho Luận văn của tôi có
tên là “Ứng dụng thuật toán YOLO trong xây dựng hệ thống hỗ trợ phân tích hình
ảnh tự động tại Phòng Kỹ thuật hình sự - Công an tỉnh Khánh Hòa” Nội dung
nghiên cứu của Luận văn gồm các nội dung chính sau:
Tìm hiểu các kiến thức liên quan đến học sâu và một số mô hình học sâu tiêu biểu
Tìm hiểu thuật toán YOLOV3 và nắm rõ các bước để huấn luyện thuật toán nhận dạng các đối tượng đặc thù theo yêu cầu
Xây dựng ứng dụng hỗ trợ phân loại hình ảnh tự động dựa trên thuật toán YOLOV3
Kết quả đạt được của luận văn đạt được một số kết quả sau:
Hiểu được các kỹ thuật học sâu, các khái niệm cơ bản liên quan đến mạng ron, mạng nơ-ron tích chập, các mô hình học sâu phổ biến được áp dụng trong bài toán phân loại đối tượng
nơ- Ứng dụng lý thuyết và mô hình YOLOV3 để giải quyết bài toán phát hiện đối tượng trong video
Thực hiện việc thu thập và xử lý dữ liệu ban phục vụ huấn luyện, thiết lập môi trường chạy thuật toán, thiết lập mô hình và cuối cùng là huấn luyện mô hình YOLOV3 để có thể nhận dạng các đối tượng đặc thù theo yêu cầu thực tế
Chỉ ra được một điểm cần lưu ý trong quá trình thu thập dữ liệu và huấn luyện
mô hình
Xây dựng ứng dụng dựa trên thuật toán YOLOV3, có giao diện người dùng thân thiện, để thực hiện việc hỗ trợ phân loại hình ảnh tự động trong video
Trang 12Từ những kết quả đạt được ở trên, luận văn cũng đưa ra một số hướng phát triển như sau:
Thu thập nhiều hơn dữ liệu hình ảnh về súng từ hệ thống camera quan sát ở nhiều bối cảnh khác nhau để làm đa dạng hơn nữa tập dữ liệu và cải thiện chất lượng
mô hình
Tìm hiểu các phương pháp cải tiến phần cứng, thuật toán YOLOV3 để có thể nâng cao khả năng phát hiện các đối tượng có kích thước nhỏ, cải thiện độ chính xác của thuật toán
Xây dựng thêm các chức năng hữu ích cho ứng dụng hỗ trợ phân loại hình ảnh
tự động
Từ khóa: YOLOV3, Object detection, Pytorch
Trang 13CHƯƠNG 1: TỔNG QUAN
1.1 Lý do chọn đề tài
Ngày nay, sự bùng nổ của cuộc cách mạng công nghiệp lần thứ tư, trí tuệ nhân tạo (Artificial Intelligence), máy học (Machine learning) đang được nghiên cứu và áp dụng trong nhiều lĩnh vực của đời sống xã hội Chúng có thể kể đến các ứng dụng như
xe tự hành của Google, hệ thống tự gợi ý gắn thẻ khuôn mặt của Facebook, các ứng dụng trợ lý ảo của Apple, Amazon, Google, Samsung …
Thị giác máy tính (Computer vision) là một trong những lĩnh vực đang được quan tâm và ứng dụng nhiều nhất hiện nay Các hệ thống nhận dạng thông qua hình ảnh là một minh chứng cụ thể cho lĩnh vực này Quá trình nhận dạng dựa trên hình ảnh bao gồm các thao tác như phát hiện đối tượng, thu nhận, xử lý, phân tích, lưu trữ và nhận dạng, v.v Trong đó, phát hiện đối tượng (Object Detection) là một bài toán quan trọng trong thị giác máy tính
Object detection đề cập đến khả năng phát hiện đối tượng của hệ thống máy tính và phần mềm để định vị các đối tượng có trong ảnh và xác định từng đối tượng Object detection đã được sử dụng rộng rãi để phát hiện khuôn mặt, phát hiện xe, đếm
số người đi bộ, hệ thống bảo mật và xe không người lái và qua đó nó đã giúp tạo ra các ứng dụng hữu ích, phục vụ tốt cho cuộc sống của con người
Trước đây, Object detection sử dụng các phương pháp cổ điển có ưu điểm là cần năng lực tính toán thấp, mô hình đơn giản, tốc độ xử lý nhanh Nhưng trong quá trình xử lý làm mất đi nhiều thông tin giá trị của hình ảnh như màu sắc, độ sắc nét, dẫn tới độ chính xác không cao Tuy nhiên, từ năm 2012 ứng dụng sử dụng phương pháp học sâu được phát triển nhờ khả năng tính toán song song tốc độ cao của GPU, rất nhiều thuật toán và phương pháp phát hiện đối tượng chính xác và tốc độ cao đã ra đời như R-CNN, Fast-CNN, Faster-RCNN, SSD (Single Shot MultiBox Detector) và YOLO (You only look once) Trong đó, thuật toán YOLO là một trong những thuật toán phát hiện đối tượng được đánh giá tốt nhất và nhanh nhất hiện nay
Bên cạnh đó, với sự phát triển của khoa học và công nghệ, các hệ thống Camera quan sát đang được sử dụng nhiều trong cuộc sống của chúng ta, đặc biệt là lĩnh vực
an ninh, quốc phòng Hơn thế nữa, với việc Bộ luật tố tụng hình sự 2015 có hiệu lực từ ngày 01/01/2018 quy định dữ liệu điện tử cũng được coi là một nguồn chứng cứ, vì vậy các dữ liệu video được thu nhận từ các hệ thống camera quan sát lại càng trở nên
Trang 14quan trọng và được quan tâm trong các vụ án Bản thân tôi, là một cán bộ đang công tác tại Phòng Kỹ thuật hình sự - Công an tỉnh Khánh Hòa, phân tích dữ liệu video là một phần của lĩnh vực Giám định kỹ thuật số, điện tử và là một trong những mảng công tác của tôi
Chính vì vậy, tôi rất mong muốn áp dụng các thành tựu của Công nghệ thông tin vào lĩnh vực công tác của mình nhằm nâng cao hơn nữa hiệu quả công việc của bản thân nói riêng và của đơn vị tôi đang công tác nói chung để góp phần phục vụ đắc lực cho công tác điều tra, truy tố, xét xử thuận tiện và chính xác hơn
1.2 Mục tiêu nghiên cứu của đề tài luận văn
Phương pháp Object detection trong video, các nghiên cứu liên quan
Tìm hiểu về Deep Learning, mạng Nơ-ron và thuật toán phát hiện đối tượng YOLO, bộ dữ liệu hình ảnh COCO dataset
Ứng dụng thuật toán phát hiện đối tượng YOLO trong xây dựng hệ thống hỗ trợ phân tích hình ảnh tự động
1.3 Đối tượng nghiên cứu
Tìm hiểu một số thuật toán Object detection
Thuật toán phát hiện đối tượng YOLO
Phương pháp tổng hợp: Nghiên cứu, tổng hợp các tài liệu liên quan
1.6 Cấu trúc luận văn
Luận văn gồm 4 chương:
Chương 1: Tổng quan về đề tài
Chương này giới thiệu và xác định các vấn đề nghiên cứu, mục tiêu nghiên cứu, câu hỏi nghiên cứu, đối tượng và phạm vi nghiên cứu, ý nghĩa của nghiên cứu và cấu trúc của luận văn
Chương 2: Cơ sở lý thuyết
Giới thiệu về kỹ thuật học sâu, các khái niệm liên quan đến mạng nơ-ron, mạng nơ-ron tích chập
Trang 15Chương 3: Phát hiện đối tượng trong video sử dụng thuật toán YOLOV3
Chương này trình bày và phân tích bài toán phát hiện đối tượng và một số phương pháp phát hiện đối tượng Trình bày thuật toán phát hiện đối tượng YOLOV3
Chương 4: Xây dựng ứng dụng và thử nghiệm
Chương này tập trung trình bày việc thu thập dữ liệu và thực hiện huấn luyện
mô hình trên bộ dữ liệu đã thu thập được Sử dụng một số thư viện để cài đặt hệ thống
hỗ trợ phân tích hình ảnh tự động
Chương 5: Kết luận và hướng phát triển
Trang 16CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu về học sâu
2.1.1 Trí tuệ nhân tạo
Trí tuệ nhân tạo (Artificial Intelligence – AI) ra đời từ khoảng năm 1950, khi một số ít người tiên phong từ lĩnh vực khoa học máy tính non trẻ tự đặt câu hỏi là liệu máy tính có thể được tạo ra để “suy nghĩ” giống như con người không, một câu hỏi mà đến ngày nay, chúng ta vẫn đang tiếp tục khám phá để làm rõ câu hỏi này
Định nghĩa về lĩnh vực trí tuệ nhân tạo có thể được hiểu đơn giản là những nỗ lực của máy móc nhằm đưa ra quyết định và thực hiện tự động các nhiệm vụ thay thế cho những suy nghĩ của con người Ban đầu khái niệm trí tuệ nhân tạo quan tâm đến các luật, quy luật, các mẹo giúp cho máy tính có thể ra quyết định giống con người Trong một thời gian khá dài, nhiều chuyên gia đã tin rằng trí tuệ nhân tạo có thể đạt được bằng suy nghĩ, trí tuệ con người bằng cách sử dụng nhiều lập trình viên để tạo thủ công một bộ các quy tắc đủ lớn để xử lý và tạo ra tri thức Cách tiếp cận này được biết đến như là trí tuệ nhân tạo tượng trưng (symbolic AI), và mô hình này là mô hình chi phối trong lĩnh vực trí tuệ nhân tạo từ khoảng những năm 50 đến cuối những năm
80 Và nó phổ biến nhất trong khoảng thời gian bùng nổ của các hệ thống chuyên gia vào khoảng những năm 80 [2]
Mặc dù trí tuệ nhân tạo tượng trưng tỏ ra phù hợp để giải quyết các vấn đề logic được xác định cụ thể chẳng hạn như chơi cờ, nhưng thực ra nó lại không thể hiểu được các quy tắc rõ ràng để giải quyết nhiều vấn đề phức tạp hơn như phân loại hình ảnh, nhận dạng giọng nói và dịch ngôn ngữ Từ hạn chế đó, một cách tiếp cận mới đã xuất hiện và thay thế vị trí của trí tuệ nhân tạo tượng trưng, đó chính là học máy tức là máy móc
có thể học được những kinh nghiệm từ các tập dữ liệu huấn luyện đó chính là học máy
2.1.2 Học máy
Học máy (Machine Learning) xuất phát từ câu hỏi liệu một chiếc máy tính có thể vượt ra khỏi những gì chúng ta biết về vấn đề làm thế nào để ra lệnh cho nó thực hiện và tự học cách thực hiện một nhiệm vụ cụ thể Liệu một máy tính có thể làm cho chúng ta ngạc nhiên? Thay vì lập trình viên phải tạo ra các quy tắc xử lý dữ liệu một cách thủ công thì liệu một máy tính có thể tự động học các quy tắc này bằng cách nhìn vào dữ liệu? Câu hỏi này đã mở ra cánh cửa cho một mô hình lập trình mới Trong lập trình truyền thống, với mô hình trí tuệ nhân tạo tượng trưng, con người nhập vào các
Trang 17luật và dữ liệu được xử lý tương ứng với các luật này để đưa ra câu trả lời Với học máy, con người nhập vào dữ liệu cũng như câu trả lời mong muốn từ dữ liệu đó để từ
đó đưa ra được các luật Những luật này sau đó có thể được áp dụng trên dữ liệu mới
để đưa ra các câu trả lời
Hình 2.1: Khác biệt giữa học máy và lập trình truyền thống
Một hệ thống học máy sẽ được huấn luyện thay vì được lập trình rõ ràng Hệ thống học máy sẽ được đưa vào các dữ liệu liên quan đến vấn đề cần giải quyết, sau đó
nó sẽ phân tích cấu trúc thống kê của các dữ liệu này để từ đó đưa các luật để tự động hóa việc giải quyết vấn đề Chẳng hạn như việc gắn thẻ ảnh đi du lịch của bạn, bạn có thể đưa vào hệ thống học máy các ảnh đã được gắn thẻ bởi bạn để hệ thống sẽ tìm hiểu các quy tắc thống kê để từ đó liên kết các ảnh với các thẻ cụ thể [2]
Để định nghĩa học sâu và hiểu được sự khác biệt giữa học sâu và các phương pháp học máy khác, chúng ta cần hiểu ý tưởng của các thuật toán học máy là gì Để thực hiện học máy, chúng ta cần quan tâm ba điều:
Một là, các điểm dữ liệu đầu vào, chẳng hạn như nếu là nhiệm vụ là nhận dạng giọng nói thì các điểm dữ liệu này có thể là các tệp tin ghi âm thanh của người nói, nếu nhiệm vụ là gắn thẻ hình ảnh thì các điểm dữ liệu có thể là hình ảnh
Hai là, các đầu ra mong muốn, chẳng hạn như nếu là nhiệm vụ là nhận dạng giọng nói thì đầu ra có thể là các bản dịch tập tin âm thanh do con người tạo ra, nếu
Trang 18nhiệm vụ là nhận dạng hình ảnh thì đầu ra mong muốn có thể là các thẻ “chó”, “mèo”,
“ô tô”, v.v
Ba là, phương pháp để xác định xem liệu thuật toán đang chọn có giải quyết tốt nhiệm vụ của bài toán hay không? Phương pháp này sẽ đi đo khoảng cách hay sự sai khác giữa đầu ra của mô hình học máy và kết quả đầu ra mong muốn Phép đo sẽ được
sử dụng như là một tín hiệu phản hồi để điều chỉnh cách thức hoạt động của thuật toán Bước điều chỉnh này là những gì mà chúng ta gọi là học hay huấn luyện
Một mô hình học máy sẽ biến đổi dữ liệu đầu vào thành các đầu ra có ý nghĩa, sau đó là một quá trình học từ các mẫu đã biết về đầu vào và đầu ra Do đó, vấn đề quan trọng trong học máy chính là việc biến đổi dữ liệu thành những đặc trưng sao cho
có ý nghĩa, hay nói cách khác là tìm kiếm cách biểu diễn dữ liệu thành các đặc trưng đầu vào sao cho cách biểu diễn này có thể dẫn chúng ta đến gần hơn với kết quả đầu ra mong muốn Đây là công việc không hề đơn giản để tìm ra những đặc trưng tốt nhất của các đối tượng có hình thái tương tự nhau Để khắc phục hạn chế này, gần đây nhờ
sự phát triển của phần cứng cũng như nhu cầu học máy ngày càng tăng, khái niệm học sâu (Deep Learning – DL), học từ nhiều đặc trưng của đối tượng đang là chủ đề nóng trong vấn đề trí tuệ nhân tạo
2.1.3 Học sâu
Học sâu (DL – Deep Learning) là một phần của học máy, đồng thời học máy cũng là một phần của trí tuệ nhân tạo, điều này được thể hiện rõ trong Hình 2.2
Hình 2.2: Minh họa mối quan hệ giữa DL, ML và AI
Học sâu là một cách tiếp cận mới trong việc học các mô tả từ dữ liệu, trong đó tập trung vào việc học hỏi thông qua nhiều lớp liên tiếp nhau nhằm tăng ý nghĩa của
mô tả Chữ “sâu” trong phương pháp tiếp cận này dùng để chỉ nhiều lớp mô tả liên tiếp nhau Số lượng các lớp trong mô hình dữ liệu được gọi là độ sâu của mô hình Vì vậy
Trang 19học sâu có thể còn được hiểu là học thông qua sự mô tả theo lớp hoặc học thông qua
sự mô tả có phân cấp Các mô hình học sâu hiện đại thường bao gồm đến hàng chục hoặc hàng trăm lớp mô tả liên tiếp nhau và tất cả các lớp này đều học hỏi tự động thông qua dữ liệu huấn luyện Trong khi đó, các cách tiếp cận khác đối với học máy trước khi có cách tiếp cận này đều có xu hướng tập trung vào việc chỉ học từ một hoặc hai lớp mô tả từ dữ liệu, nên đôi khi chúng ta còn gọi là học nông [2]
Trong học sâu, cách mô tả theo lớp này được học theo kiểu mạng nơ-ron, được cấu trúc theo đúng nghĩa đen là các lớp xếp chồng lên nhau và thuật ngữ mạng nơ-ron
là một thuật ngữ trong sinh học thần kinh Mặc dù một số khái niệm trọng tâm trong học sâu được xây dựng dựa trên những hiểu biết của chúng ta về bộ não, nhưng các
mô hình của học sâu không phải là mô hình của bộ não Học sâu là một bộ khung toán học với mục đích học các mô tả từ dữ liệu Các mô tả từ dữ liệu được học bởi thuật toán học sâu có thể hình dung thông qua Hình 2.3
Hình 2.3: Các miêu tả từ dữ liệu được học bởi một mô hình học sâu [2]
Trong Hình 2.3, mạng nơ-ron đã biến đổi hình ảnh chữ số thành các mô tả ngày càng khác với hình ảnh gốc ban đầu và cung cấp nhiều thông tin để đưa ra kết quả cuối cùng Qua đó, ta có thể thấy mạng học sâu như là một hoạt động chưng cất thông tin nhiều giai đoạn, nơi mà thông tin đi qua các bộ lọc liên tiếp nhau và cuối cùng chỉ còn lại những thông tin chắt lọc nhất và hữu ích nhất ở đầu ra
Trang 20Những biến đổi cụ thể của một lớp đối với dữ liệu đầu vào được chỉ rõ và lưu trữ trong các trọng số (weights) của lớp hay nói cách khác, các biến đổi được thực hiện bởi một lớp được tham số hóa bởi các trọng số của lớp đó Quá trình học sâu trong mạng
sẽ được hiểu là quá trình là tập hợp các giá trị cho các trọng số của tất cả các lớp trong mạng sao cho mạng học sâu sẽ ánh xạ chính xác các mẫu dữ liệu đầu vào (chẳng hạn như các hình ảnh) với đầu ra liên quan đến chúng (chẳng hạn như nhãn “ô tô”, “xe máy”)
Tuy nhiên, vấn đề phức tạp ở đây đó là một mạng học sâu có thể chứa hàng chục triệu tham số Do đó, việc tìm kiếm giá trị chính xác cho tất cả các tham số là một nhiệm vụ cực kỳ khó khăn, đặc biệt là khi việc sửa đổi giá trị của một tham số sẽ ảnh hưởng đến tất cả các tham số khác
Hình 2.4: Mạng nơ-ron với là các trọng số là tham số ở các lớp
Để kiểm soát đầu ra của một mạng nơ-ron trong học sâu, chúng ta cần phải đo được khoảng cách giữa đầu ra tiên đoán với đầu ra mà chúng ta mong muốn Việc này được thực hiện thông qua hàm mất mát của mạng (loss function) hay còn gọi là hàm mục tiêu (objective function) mô tả chi tiết trong Hình 5 Hàm mất mát sẽ nhận kết quả
Trang 21tiên đoán của mạng và mục tiêu đúng (là đầu ra mà chúng ta mong muốn từ mạng) và tính toán khoảng cách để cho ra giá trị mất mát Điểm mấu chốt trong mạng học sâu đó
là sử dụng giá trị mất mát này như là tín hiệu phản hồi để thực hiện các điều chỉnh nhỏ đối với giá trị của các trọng số theo chiều hướng làm cho giá trị lỗi đạt cực tiểu Việc điều chỉnh này là công việc của trình tối ưu hóa với cốt lõi là thuật toán “lan truyền ngược” (backpropagation) – thuật toán trung tâm của các mô hình học sâu [2]
Hình 2.5: Mô tả ý nghĩa của hàm mất mát trong để điều chỉnh các trọng số mô hình
Ban đầu, các trọng số của mạng được gán giá trị ngẫu nhiên Do đó, giá trị mất mát ban đầu thường rất cao và kết quả dự đoán thường sẽ khác xa so với kết quả mong muốn Nhưng sau đó, với mỗi mẫu dữ liệu được đưa vào để mạng nơ-ron xử lý, các trọng số sẽ được điều chỉnh một chút theo đúng hướng để làm giảm giá trị mất mát Quá trình này chính là quá trình huấn luyện lặp đi lặp lại với mục tiêu tìm ra các trọng
số phù hợp để hàm mất mát đạt giá trị nhỏ nhất (đồng nghĩa với kết quả dự đoán sẽ gần với kết quả mong muốn)
Trang 222.2 Mạng nơ-ron
2.2.1 Perceptron
Mạng nơ-ron là một hệ thống tính toán lấy cảm hứng từ sự hoạt động của các nơ-ron trong hệ thần kinh Một mạng nơ-ron được cấu thành bởi các nơ-ron đơn lẻ còn được gọi là Perceptron Bộ não có đơn vị tính toán cơ bản là nơ-ron và có khoảng 86
tỷ tế bào thần kinh có thể được tìm thấy trong hệ thống thần kinh của con người và chúng được kết nối với khoảng 1014 đến 1015 khớp thần kinh
Hình 2.6: Mô tả cấu trúc của một nơ-ron sinh học [14]
Trong Hình 6, mỗi nơ-ron sinh học sẽ nhận tín hiệu từ đuôi gai của nó và tạo tín hiệu đầu ra dọc theo sợi trục đơn (axon) của nó Sợi trục đơn này tiếp tục được phân nhánh và kết nối thông qua các khớp thần kinh với sợi nhánh của các tế bào thần kinh khác Dựa trên nguyên tắc trên, ta có thể thấy rằng một nơ-ron đơn lẻ có thể nhận được nhiều đầu vào và cho ra một kết quả duy nhất Hình 7
Hình 2.7: Mô tả một nơ-ron đơn lẻ trong mạng nơ-ron
Trang 23Một nơ-ron đơn lẻ sẽ nhận một hoặc nhiều đầu ra vào dạng nhị phân và cho
ra kết quả ở dạng nhị phân duy nhất Các đầu vào được điều phối tầm ảnh hưởng
bởi các trọng số tương ứng của nó Kết quả đầu ra được quyết định dựa vào một
ngưỡng quyết định nào đó
Đặt , ta có thể viết lại thành:
Nếu đặt , ta có thể viết gọn lại thành:
Tuy nhiên, với đầu vào và đầu ra dạng nhị phân, ta rất khó để thực hiện những thay đổi nhỏ đối với đầu vào để đầu ra cũng thay đổi nhỏ Để có thể điều chỉnh sự thay đổi ở đầu ra được uyển chuyển hơn, ta có thể sử dụng một số hàm kích hoạt (activation function) để chuẩn hóa đầu ra của mỗi nơ-ron đơn lẻ, giống như trong mô hình
nơ-ron sinh học, các xung thần kinh được truyền qua sợi trục đơn với một tỉ lệ nào đó
Đặt , công thức tổng quát tính giá trị đầu ra của mỗi nơ-ron đơn lẻ có
sử dụng hàm kích hoạt sẽ như sau:
Bằng cách biểu diễn như trên, một nơ-ron sinh học sẽ được biểu diễn thông ra
mô hình toán học như hình dưới đây
Trang 24Hình 2.8: Mô hình toán học của một nơ-ron đơn lẻ trong mạng nơ-ron [14]
Với hàm kích hoạt là hàm sigmoid với công thức: thì mỗi nơ-ron
đơn lẻ được gọi là sigmoid nơ-ron và mỗi sigmoid nơ-ron này tương tự như một bộ phân loại tuyến tính (hồi quy logistic) bởi xác suất
Ngoài hàm Sigmoid, một số hàm kích hoạt phổ biến hay được sử dụng trong mạng nơ-ron là hàm ReLU, Leaky ReLU, Tanh, Softmax, … [15]:
Bảng 2.1: Một số hàm kích hoạt phổ biến trong mạng nơ-ron
Hàm Sigmoid: Hàm này nhận đầu vào là một số thực và chuyển thành một giá trị
trong khoảng (0,1) Đầu vào là một số thực âm rất nhỏ sẽ cho đầu ra tiệm cận với 0, ngược lại, nếu đầu vào là một số thực dương lớn sẽ cho đầu ra tiệm cận với 1
Công thức:
Đồ thị:
Hàm Tanh: Hàm này nhận đầu vào là một số thực và chuyển thành một giá trị trong
khoảng (-1,1)
Trang 25Hàm Leaky ReLU: Hoạt động tương tự hàm ReLU nhưng thay vì trả về giá trị 0 với
các đầu vào < 0 thì Leaky ReLU tạo ra một đường xiên có độ dốc nhỏ
Công thức:
Cách biểu diễn khác là:
Với là hằng số nhỏ
Đồ thị:
Hàm Softmax: Hàm này là một hàm kích hoạt rất đặc biệt bởi vì nó không chỉ chuyển
các giá trị đầu vào thành các giá trị đầu ra nằm trong đoạn [0,1] và các giá trị đầu ra này có tổng bằng 1 Do đó đầu ra của hàm này là một phân phối xác suất Hàm Softmax chỉ được sử dụng cho lớp đầu ra của các mạng nơ-ron có mục đích là phân loại đầu vào thành nhiều loại
Trang 26ron với các hàm kích hoạt tuyến tính chỉ đơn giản là một mô hình hồi quy tuyến tính,
nó không đủ khả năng để xử lý các dữ liệu phức tạp và đưa ra các dự đoán chính xác
Trang 27 Lớp ẩn (Hidden layer): Là lớp nằm giữa lớp đầu vào và lớp đầu ra, thể hiện cho việc suy luận logic của mạng
Mỗi mô hình mạng nơ-ron sẽ luôn có một một lớp đầu vào, một lớp đầu ra, có thể có hoặc không có lớp ẩn Tổng số lớp trong mô hình mạng nơ-ron được quy ước là tổng số lớp -1 (không tính lớp đầu vào)
Tại mỗi nút trong lớp ẩn và lớp đầu ra:
Sẽ liên kết với tất các nút ở lớp trước đó với các trọng số w riêng
Có hệ số b (bias – độ lệch) riêng
Thực hiện việc tính tổng và áp dụng hàm kích hoạt phù hợp
2.2.3 Lan truyền tiến
Tất cả các nút mạng (nơ-ron) được kết hợp đôi một với nhau theo một chiều duy nhất từ lớp đầu vào tới lớp đầu ra Tức là mỗi nút ở một lớp nào đó sẽ nhận đầu vào là tất cả các nút ở lớp trước đó mà không suy luận ngược lại Hay nói cách khác,
việc suy luận trong mạng nơ-ron là lan truyền tiến (feedforward):
Trong đó:
là số lượng nút tương ứng với lớp
là nút mạng thứ j của lớp
là trọng số của đầu vào đối với nút mạng thứ i của lớp
là độ lệch (bias) của nút mạng thứ i của tầng
Đầu ra của nút mạng thứ i của lớp được biểu diễn bằng ứng với
hàm kích hoạt
Riêng ở lớp đầu vào cũng chính là các đầu vào x của mạng
Trang 28Để tiện tính toán, ta coi là một đầu vào và là trọng số của
đầu vào này Lúc này, ta có thể viết lại công thức trên dưới dạng véc-tơ:
Nếu nhóm các trọng số của mỗi lớp thành một ma trận có các cột tương ứng trọng số mỗi nút mạng thì ta có thể thực hiện tính toán cho toàn bộ các nút trong một tầng bằng véc-tơ:
2.2.4 Hàm mất mát của mạng nơ-ron
Quá trình học của mạng nơ-ron là quá trình tìm lấy một hàm mất mát để đánh giá và tìm cách tối ưu hàm mất mát đó để đạt được kết quả mong muốn Mỗi nút mạng của mạng nơ-ron có thể coi là một bộ phân loại tuyến tính với hàm mất mát như sau:
Trong đó m là số lượng dữ liệu huấn luyện, y(i) là đầu ra thực tế của dữ liệu thứ
i trong tập huấn luyện, kết quả ước lượng được ứng với dữ liệu thứ i
Với mạng nơ-ron có thể có nhiều nút đầu ra, giả sử số nút đầu ra là K, yk là đầu
ra thực tế của nút thứ k và là kết quả ước lượng của nút thứ k Công thức của hàm
mất mát sẽ như sau:
Các trọng số được tính toán lúc này không chỉ trên một ma trận, mà là tập tất cả các ma trận trọng số ứng với các lớp của mạng nơ-ron và được biểu diễn bằng tập hợp
Trang 292.2.5 Tối ưu hóa hàm mất mát
Để tối ưu hàm lỗi của mạng nơ-ron ta sử dụng phương pháp đạo hàm Gradient Descent Để tìm tham số nhằm mục đích tối thiểu hóa hàm lỗi , đầu tiên ta
sẽ đặt tại điểm bất kì nào đó Sau đó, giải thuật Gradient Descent được thực hiện
bằng cách cập nhật dần các tham số ngược với hướng của đạo hàm tại điểm hiện tại cho tới khi hàm này hội tụ về điểm nhỏ nhất Tại mỗi bước cập nhật, ta sẽ dịch tham số bằng một lượng với mật độ học (learning rate) :
[1]
Với là ký hiệu cho tham số tại bước cập nhật thứ k khi thực hiện giải thuật
Gradient Descent
Hình 2.10: Mô phỏng thuật toán Gradient Descent
Để tính đạo hàm của hàm mất mát trong mạng nơ-ron, ta sử dụng một giải thuật được gọi là thuật toán lan truyền ngược (backpropagation) [14] Nhờ có giải thuật này mà mạng nơ-ron đã hoạt động hiệu quả hơn và được ứng dụng ngày càng nhiều cho đến tận ngày nay Thuật toán này dựa theo quy tắc chuỗi đạo hàm của hàm hợp (chain rule) và phép tính ngược đạo hàm để thu được đạo hàm của tất cả các tham
số cùng lúc chỉ với 2 lần duyệt mạng
Trang 30Giải thuật lan truyền ngược được thực hiện như sau [1]:
Bước 1: Lan truyền tiến
Lần lượt tính các với theo công thức
Trong đó chính bằng giá trị đầu vào x của mạng
Bước 2: Tính đạo hàm theo z ở tầng ra với và tính được ở bước 1
Bước 3: Lan truyền ngược
Tính đạo hàm theo z ngược lại từ theo công thức:
Với tính được ở bước 1 và tính được ở vòng lặp ngay trước
Bước 4: Tính đạo hàm
Tính đạo hàm theo tham số w bằng công thức:
Với tính được ở bước 1 và tính được ở bước 3
Việc tính được đạo hàm riêng của hàm mất mát đối với các trọng số
2.3 Mạng nơ-ron tích chập
Mạng nơ-ron tích chập (CNNs - Convolutional Neural Networks) là một trong hai mô hình lớn của học sâu (mô hình còn lại là mạng nơ-ron hồi quy – Recurrent Neural Networks) Nó là một mô hình học sâu tiên tiến, đã được ứng dụng để triển
Trang 31khai các hệ thống nhận dạng thông minh với độ chính xác cao, chẳng hạn như như hệ thống xe tự hành của Google, Amazon, hệ thống tự gợi ý gắn thẻ khuôn mặt của Facebook… Mạng nơ-ron tích chập thường được sử dụng trong bài toán với dữ liệu đầu vào là ảnh với mục đích là nhận dạng các đối tượng trong ảnh
Trong mô hình mạng nơ-ron thông thường, mỗi nút trong các lớp ẩn ở giữa (hidden layer) được kết nối tới tất cả các nút trong lớp trước Nên mỗi lớp ẩn trong mạng nơ-ron thông thường được gọi là một lớp kết nối đầy đủ (fully connected layer)
và cả mô hình được gọi là mạng nơ-ron kết nối đầy đủ (fully connected neural network – FCN) [14]
Hình 2.11: Mô hình mạng nơ-ron thông thường với 2 lớp ẩn
Tuy nhiên, có một vấn đề hạn chế của mạng nơ-ron kết nối đầy đủ trong xử lý ảnh cụ thể như sau:
Với một ảnh màu đầu vào có kích thước 32x32x3 (dài 32, rộng 32 và có 3 kênh màu) Để có thể biểu thị hết nội dung của ảnh thì cần truyền vào mạng nơ-ron ở lớp đầu vào tất cả là 32x32x3= 3072 điểm ảnh Giả sử lớp ẩn đầu tiên có 1000 nút, thì số lượng trọng số W giữa lớp đầu vào và lớp ẩn đầu tiên sẽ là 3072x1000= 3072000 và số lượng bias b là 1000, tổng số tham số sẽ là 3073000 tham số Ở đây mới chỉ là số lượng tham số xét đến lớp ẩn đầu tiên, nếu trong mô hình có nhiều lớp ẩn hơn và đồng thời kích thước ảnh đầu vào tăng lên chẳng hạn như 1920x1080x3 thì tổng số tham số
sẽ tăng lên cực kỳ nhanh Từ vấn đề này, chúng ta có thể thấy mạng nơ-ron thông thường không phù hợp với các hình ảnh kích thước lớn và chúng ta cần một giải pháp tốt hơn