ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
DƯƠNG THỊ DỊU
ỨNG DỤNG KỸ THUẬT HỌC SÂU TRONG PHÁT HIỆN
VÀ ĐẾM LƯU LƯỢNG XE MÁY
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Đà Nẵng - Năm 2019
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
DƯƠNG THỊ DỊU
ỨNG DỤNG KỸ THUẬT HỌC SÂU TRONG PHÁT HIỆN VÀ
ĐẾM LƯU LƯỢNG XE MÁY
Chuyên ngành: Khoa học máy tính
Mã số: 8480101
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. HUỲNH HỮU HƯNG
Đà Nẵng - Năm 2019
i
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn
trực tiếp của TS. Huỳnh Hữu Hưng.
Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên
công trình, thời gian, địa điểm công bố.
Mọi sao chép không hợp lệ, vi phạm quy chế huấn luyện, hay gian trá, tôi xin chịu
hoàn toàn trách nhiệm.
Tác giả
Dương Thị Dịu
ii
MỤC LỤC
LỜI CAM ĐOAN .............................................................................................................. i
MỤC LỤC........................................................................................................................ii
DANH MỤC CÁC TỪ VIẾT TẮT ................................................................................... vi
DANH MỤC CÁC BẢNG .............................................................................................. vii
DANH SÁCH HÌNH ẢNH ............................................................................................ viii
MỞ ĐẦU .......................................................................................................................... 1
1. Lý do chọn đề tài ...................................................................................................... 1
2. Mục tiêu và nhiệm vụ ............................................................................................... 1
2.1. Mục tiêu ............................................................................................................. 1
2.2. Nhiệm vụ............................................................................................................ 1
3. Đối tượng và phạm vi nghiên cứu ............................................................................ 2
3.1. Đối tượng ........................................................................................................... 2
3.2. Phạm vi nghiên cứu ........................................................................................... 2
4. Phương pháp nghiên cứu.......................................................................................... 2
4.1. Phương pháp nghiên cứu tài liệu ....................................................................... 2
4.2. Phương pháp thực nghiệm ................................................................................. 2
5. Ý nghĩa khoa học và thực tiễn.................................................................................. 2
6. Bố cục luận văn ........................................................................................................ 2
CHƯƠNG 1: TỔNG QUAN ............................................................................................ 4
1.1. Đặt vấn đề ............................................................................................................. 4
1.2. Những nghiên cứu liên quan ................................................................................. 5
1.3. Kỹ thuật học sâu .................................................................................................... 6
1.3.1. Tổng quan về học sâu .................................................................................... 6
1.3.2. Mạng nơ-ron tích chập – Convolutional neural network (CNN) ................ 10
1.4. Các kỹ thuật liên quan đến xử lý ảnh và nhận diện đối tượng. ........................... 14
1.4.1. Tổng quan về xử lý ảnh ............................................................................... 14
1.4.2. Các vấn đề cơ bản trong xử lý ảnh .............................................................. 15
iii
1.4.3. Nhận diện và phân loại ảnh ......................................................................... 15
1.5. Kết luận chương 1 ............................................................................................... 16
CHƯƠNG 2: GIẢI PHÁP TRIỂN KHAI ....................................................................... 17
2.1. Mô hình giải quyết bài toán ................................................................................ 17
2.2. Các công cụ và môi trường triển khai đề tài ....................................................... 19
2.2.1. Công cụ xử lý hình ảnh OpenCV ................................................................. 19
2.2.2. Công cụ đánh nhãn hình ảnh LabelImage .................................................... 19
2.2.3. Thư viện học máy YOLO ............................................................................. 20
2.3. Ngôn ngữ lập trình Python .................................................................................. 24
2.4. Bản triển khai DarkFlow ..................................................................................... 24
2.5. Thư viện TensorFlow .......................................................................................... 24
2.6. Thuật toán RCNN - DeepLearning ..................................................................... 27
2.7. Kết luận chương 2 ............................................................................................... 28
CHƯƠNG 3: TRIỂN KHAI THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ .................... 29
3.1. Các bước thực hiện.............................................................................................. 29
3.1.1. Thu thập dữ liệu ............................................................................................ 30
3.1.2. Gán nhãn ....................................................................................................... 31
3.1.3. Cài đặt Darkflow ........................................................................................... 35
3.1.4. Xây dựng cây thư mục .................................................................................. 36
3.1.5. Tìm một mô hình được huấn luyện trước ..................................................... 37
3.2. Quá trình huấn luyện ........................................................................................... 37
3.3. Tạo file để test video ........................................................................................... 40
3.4. Xử lý video và đếm xe ........................................................................................ 41
3.5. Kiểm tra lại kết quả nhận được ........................................................................... 42
3.6. Kết quả thực nghiệm ........................................................................................... 42
3.6.1. Nhận dạng xe máy ........................................................................................ 42
3.6.2. Đếm số lượng xe máy ................................................................................... 43
3.7. Nhận xét kết quả.................................................................................................. 44
3.7.1. Nhận dạng xe máy ........................................................................................ 44
iv
3.7.2. Đếm số lượng xe máy ................................................................................... 45
3.8. Kết luận chương 3 ............................................................................................... 45
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ........................................................................ 46
1.1 Kết luận ................................................................................................................ 46
1.2 Hướng phát triển .................................................................................................. 46
TÀI LIỆU THAM KHẢO ............................................................................................... 47
v
ỨNG DỤNG KỸ THUẬT HỌC SÂU TRONG PHÁT HIỆN VÀ ĐẾM
LƯU LƯỢNG XE MÁY
Học viên: Dương Thị Dịu
Mã số: 8480101
Khóa: 35
Chuyên ngành: Khoa học máy tính
Trường Đại học Bách khoa - ĐHĐN
Tóm tắt - Ngày nay, các vấn đề trong giao thông đô thị ngày càng trở nên cấp bách, đặc
biệt ở các thành phố đông dân cư. Việc nghiên cứu xử lý hình ảnh video hỗ trợ quan sát,
thống kê, dự báo trong lĩnh vực giao thông ngày càng có ý nghĩa quan trọng. Trong luận
văn này, tôi đề xuất giải pháp đếm lưu lượng xe máy tại một số tuyến đường trong nội
thành thành phố Đà Nẵng. Quá trình xử lý bao gồm các bước: (1) xây dựng cơ sở dữ liệu
đầu vào; (2) sử dụng công cụ gán nhãn hình ảnh; (3) huấn luyện cơ sở dữ liệu đã gán
nhãn bằng kỹ thuật học sâu. Kết quả thực nghiệm trên các video giao thông quan sát được
gắn trên địa bàn thành phố Đà Nẵng mang lại kết quả hứa hẹn.
Từ khóa: phát hiện xe, đếm xe, học sâu.
APPLICATION OF DEEP LEARNING IN MOTO DETECTION AND
COUNTING
Abstract - Nowadays, the problems in urban transport are becoming increasingly urgent,
especially in densely populated cities. Researching and processing video images to
support observation, statistics and forecasting in the field of delivery is increasingly
important. In this essay, I propose a solution to count motor traffic at some roads in the
inner city of Da Nang. Processing process includes the following steps: (1) building input
database; (2) use image labeling tool; (3) training labeled databases with deep learning
techniques. Experimental results on observed traffic videos attached to the locality of Da
Nang bring promising results.
Key words: vehicle detection, vehicle couting, deep learning.
vi
DANH MỤC CÁC TỪ VIẾT TẮT
DNN
Deep Neural Network
CNN
Convolutional Neural Network
SVM
Support Vector Machine
CUDA
Compute Unified Device Architecture
GPU
Graphics Processing Unit
ReLU
Rectified Linear Unit
YOLO
You Only Look Once
CPU
Central Processing Unit
vii
DANH MỤC CÁC BẢNG
Số hiệu
Tên bảng
Trang
3.1
Thống kê kết quả hiệu suất nhận dạng xe máy
43
3.2
Thống kê kết quả hiệu suất đếm xe máy
44
viii
DANH SÁCH HÌNH ẢNH
Số hiệu
Tên hình vẽ
Trang
1.1
Ùn tắc giao thông ở Việt Nam
4
1.2
Nơ-ron sinh học
7
1.3
Perceptron
7
1.4
Hàm sigmoid
8
1.5
Mạng nơ-ron nhân tạo
9
1.6
Quá trình tích chập (Convolutional)
10
1.7
Mô hình chung mạng neural tích chập
11
1.8
Một bức ảnh thông qua nhiều góc nhìn khác nhau (các
feature map)
12
1.9
Minh họa max pooling
13
1.10
Minh họa average pooling
13
1.11
Drop-out thực hiện loại bỏ một số neural trong quá trình tính
toán
13
1.12
Sơ đồ tổng quát hệ thống xử lý ảnh [13]
14
2.1
Mô hình đề xuất
17
2.2
Những vùng sáng lên trong video được nhận diện là vật thể
18
2.3
OpenCV
19
2.4
Công cụ LabelImage
20
2.5
Mỗi ô chỉ dự đoán một đối tượng
21
2.6
Mỗi ô dự đoán số lượng cố định các hộp ranh giới
21
2.7
YOLO bỏ sót những vật thể ở quá gần nhau
22
2.8
YOLO thực hiện SxS dự đoán với B hộp ranh giới
22
2.9
Quá trình dự đoán thống nhất
23
2.10
Kiến trúc mạng mô hình YOLO
24
2.11
TensorFlow
25
2.12
Ví dụ minh họa về Tensor
26
ix
Số hiệu
Tên hình vẽ
Trang
2.13
Ví dụ minh họa về RCNN
28
3.1
Quy trình giải quyết bài toán
29
3.2
Trang web camera giao thông thành phố Đà Nẵng
30
3.3
Thư mục ảnh được cắt ra từ video
31
3.4
Công cụ LabelImage
31
3.5
Open Directory
32
3.6
Change Save Directory
32
3.7
Create RectBox
33
3.8
Object’s name
33
3.9
New Object Created
34
3.10
Các file XML thu được sau khi gán nhãn
34
3.11
Cấu trúc file .xml chứa nhãn hình ảnh các đối tượng
35
3.12
Cấu trúc thư mục project
36
3.13
Cấu trúc thư muc train
36
3.14
File chạy project
36
3.15
Tệp config YOLO
37
3.16
Tệp nhãn YOLO
37
3.17
Đang trong quá trình huấn luyện
38
3.18
“Checkpoint” sau step 125
38
3.19
Kết thúc sau 3266 bước
39
3.20
Loss của quá trình huấn luyện
39
3.21
Sơ đồ training
39
3.22
Các file checkpoint sau khi train xong
40
3.23
4 file checkpoint được sử dụng để nhận dạng
40
3.24
Đoạn lệnh option
40
3.25
Đoạn lệnh đưa video muốn nhận diện
41
3.26
Đoạn lệnh lấy tọa độ và vẽ khung
41
x
Số hiệu
Tên hình vẽ
Trang
3.27
Đường Line để đếm xe
42
3.28
Kết quả nhận dạng
43
3.29
Kết quả hiển thị số lượng xe lên video
44
1
MỞ ĐẦU
1. Lý do chọn đề tài
Giao thông luôn là vấn đề lớn đối với các đô thị lớn ở các nước và ở Việt Nam
nói chung. Trong những năm gần đây, cùng với sự phát triển kinh tế - xã hội, nhiều công
trình giao thông đã và đang được xây dựng trên khắp Việt Nam để đáp ứng nhu cầu đi
lại, đồng thời đáp ứng sự gia tăng không ngừng số lượng các phương tiện tham gia giao
thông. Chúng ta đang phải đối mặt với những vấn đề cấp bách trong giao thông, đặc biệt
là tai nạn giao thông và ùn tắc giao thông tại nhiều thành phố lớn. Để giải quyết vấn đề
này, chúng ta đang cố gắng từng bước xây dựng một hệ thống giao thông đồng bộ và áp
dụng khoa học kỹ thuật mới trong hệ thống điều khiển giao thông. Xử lý và nhận dạng
là một lĩnh vực từ lâu được nhiều người quan tâm, được ứng dụng trong nhiều lĩnh vực
như:
- Trong y học, cải thiện ảnh X-quang và nhận dạng đường biên mạch máu
từ ảnh chụp bằng tia X, ứng dụng vào các xét nghiệm lâm sàng như phát hiện và nhận
dạng u não, nội soi cắt lớp …
- Trong thiên văn học, hệ thống chụp hình gắn trên tàu vũ trụ hạn chế về
kích thước và trọng lượng, do đó chất lượng hình ảnh nhận được bị giảm, ảnh bị mờ méo
hình học và nhiễu nền.
- Trong các lĩnh vực công nghiệp, người máy ngày càng đóng vai trò quan
trọng. Chúng giúp con người thực hiện các công việc nguy hiểm, đòi hỏi có tốc độ và
độ chính xác cao vượt quá khả năng con người. Người máy sẽ trở nên tinh vi hơn và thị
giác máy tính đóng vai trò quan trọng hơn. Người ta sẽ không chỉ đòi hỏi người máy
phát hiện và nhận dạng các bộ phận công nghiệp mà còn phải “hiểu” được những gì
chúng “thấy” và đưa ra hành động phù hợp.
Xuất phát từ yêu cầu thực tiễn tôi đã chọn đề tài “Ứng dụng kỹ thuật học sâu trong
phát hiện và đếm lưu lượng xe máy”.
Dù đã cố gắng hoàn thành báo cáo nhưng không thể tránh khỏi những sai sót vì
vậy tôi rất mong nhận được ý kiến đánh giá của các thầy cô và các bạn để tôi có thể hoàn
thiện đề tài của mình một cách tốt nhất.
2. Mục tiêu và nhiệm vụ
2.1. Mục tiêu
Mục tiêu chính của luận văn là ứng dụng kỹ thuật học sâu để phát hiện và đếm
xe máy trong video giao thông.
2.2. Nhiệm vụ
Từ mục tiêu của đề tài, luận văn tập trung nghiên cứu các nhiệm vụ sau:
2
-
Tìm hiểu kỹ thuật học sâu;
Tìm hiểu các bộ thư viện cài đặt cho mô hình học sâu;
Sử dụng công cụ đánh nhãn để đánh nhãn xe máy trong video giao thông;
Huấn luyện và xây dựng mô hình nhận dạng, đếm xe máy.
3. Đối tượng và phạm vi nghiên cứu
3.1. Đối tượng
- Dữ liệu thu được từ camera hoặc các bộ dữ liệu tự xây dựng;
- Các phương pháp huấn luyện học máy;
- Các phương pháp nhận dạng xe máy.
3.2. Phạm vi nghiên cứu
- Nghiên cứu phân tích dữ liệu từ camera hoặc từ dữ liệu có sẵn, phát hiện xe máy
và đếm xe.
4. Phương pháp nghiên cứu
4.1. Phương pháp nghiên cứu tài liệu
- Tìm hiểu các kỹ thuật xử lý ảnh;
- Tìm hiểu các tài liệu hiện có về phát hiện và đếm xe.
4.2. Phương pháp thực nghiệm
- Xây dựng dữ liệu;
- Thực nghiệm mô hình;
- Phân tích, đánh giá kết quả.
5. Ý nghĩa khoa học và thực tiễn
- Về khoa học: Áp dụng phương pháp học sâu để phát hiện và đếm xe máy.
- Về thực tiễn: Hỗ trợ xác định lưu lượng xe máy đang tham gia giao thông trên
đường, giúp giải quyết một số vấn đề trong giao thông.
6. Bố cục luận văn
Nội dung của luận văn được trình bày với các phần chính như sau:
Chương 1 - Tổng quan
Trong chương này, tác giả giới thiệu về các nghiên cứu liên quan về nhận dạng
và phát hiện đối tượng; tổng quan về kỹ thuật học sâu, mạng CNN và xử lý ảnh.
Chương 2 – Giải pháp triển khai
Trong chương này, tác giả đề xuất mô hình giải quyết bài toán nhận dạng và đếm
xe; đề xuất công cụ nhận dạng hình ảnh OpenCV, công cụ đánh nhãn LabelImage, thư
viện Tensorflow, thư viện Học máy YOLO.
3
Chương 3 – Triển khai thực nghiệm và đánh giá kết quả
Trong chương này, tác giả giới thiệu các bước giải quyết bài toán, miêu tả kết
quả thực nghiệm trên một video mẫu được trích xuất từ camera giao thông tại một đoạn
đường cụ thể trong nội thành Đà Nẵng.
Kết luận và hướng phát triển.
4
CHƯƠNG 1: TỔNG QUAN
1.1. Đặt vấn đề
Nước ta hiện nay có một số lượng lớn phương tiện xe máy, xe gắn máy đang lưu
thông. Tình hình ùn tắc giao thông thường xuyên xảy ra ở nhiều nơi. Vậy làm sao để
phân tích lưu lượng xe trên các đoạn đường, từ đó đưa ra các giải pháp tránh ùn tắc như
điều chỉnh thời gian đèn báo giao thông dựa vào lưu lượng xe, là một trong những giải
pháp để hạn chế vấn đề ùn tắc. Việc nhận diện được xe là bước đầu tiên trong việc thu
thập dữ liệu để lập nên giải pháp cho vấn đề nan giải này.
Hình 1.1: Ùn tắc giao thông ở Việt Nam.
Bài toán đặt ra là khi chúng ta đưa vào một video giao thông - có các phương tiện
xe máy, thì đầu ra sẽ đưa ra kết quả nhận diện xe máy trên đường. Từ đó chúng ta có thể
áp dụng cho các bài toán lớn hơn.
5
1.2. Những nghiên cứu liên quan
Trong những năm gần đây, hệ thống phát hiện và nhận dạng đối tượng đã được
áp dụng vào nhiều lĩnh vực hệ thống thông minh như siêu thị thông minh, máy bán hàng
tự động, hệ thống giám sát an ninh, tương tác người - máy thông minh và nhiều ứng
dụng công nghiệp khác. Trong lĩnh vực nghiên cứu về giao thông, đã có một số nghiên
cứu về việc giám sát và nhận dạng phương tiện giao thông. Trong phạm vi luận văn, tác
giả xin giới thiệu một số nghiên cứu sau:
Luo-Wei Tsai và cộng sự [1], phát hiện phương tiện sử dụng màu sắc được chuẩn
hóa và bản đồ biên. L. Tsai đã đưa ra phương pháp biến đổi mới để tìm “màu xe” từ
hình ảnh để định vị các ứng viên một cách nhanh chóng. Họ còn trình bày hệ thống phát
hiện từ phía sau theo thời gian thực sử dụng các phương pháp dựa trên độ dốc và phân
loại Adaboost cho các ứng dụng ACC. Các kết quả thực nghiệm cho thấy phương pháp
này thực hiện rất hiệu quả trên ảnh tĩnh với độ chính xác trung bình là 94.5%. Độ chính
xác của phát hiện phương tiện trên di chuyển còn chưa cao.
A. Khammari và cộng sự [2] phát hiện phương tiện kết hợp phân tích độ dốc và
phân loại AdaBoost. A. Khammari đã giới thiệu hệ thống phát hiện từ phía sau theo thời
gian thực sử dụng các phương pháp dựa trên độ dốc và phân loại Adaboost cho các ứng
dụng ACC. Thuật toán phát hiện bao gồm hai bước chính: tạo giả thuyết dựa trên độ dốc
và xác minh giả thuyết dựa trên ngoại hình. Tạo giả thuyết sử dụng ngưỡng phụ thuộc
phạm vi thích ứng và đối xứng để định vị tối đa độ dốc. Xác thực giả thuyết dựa trên sử
dụng AdaBoost để phân loại với các phân loại độc lập với độ sáng. Hệ thống một mắt
được thử nghiệm theo các kịch bản giao thông khác nhau (ví dụ: đường cao tốc có cấu
trúc đơn giản, môi trường đô thị phức tạp, điều kiện ánh sáng khác nhau), kết quả hiệu
suất tốt. Hệ thống thường không nhận diện được phương tiện cách xa quá 60m.
Zhiquan Ren cùng công cụ [3] phát hiện phương tiện dựa sử dụng smartphone
Android R. Zhiquan v.v. đã trình bày một công nghệ di động sử dụng điện thoại thông
minh để phát hiện chiếc xe đi trước. Công nghệ này sử dụng camera phía sau của
smartphone Android để chụp ảnh cảnh lái xe, sau đó sử dụng thuật toán thị giác máy
tính tiên tiến để phát hiện và theo dõi chiếc xe đi trước. Với tài nguyên tính toán hạn chế
của điện thoại thông minh, thuật toán đạt được tốc độ lấy mẫu cao khoảng 7Hz, đủ nhanh
cho các ứng dụng thực tế.
Denis Kleyko và cộng sự [4] so sánh các kỹ thuật học máy để phân loại xe bằng
cảm biến bên đường. D. Kleyko v.v. đã đưa ra sự so sánh các thuật toán học máy khác
nhau để phân loại phương tiện. Tập dữ liệu của họ bao gồm 3074 mẫu. Hồi quy logistic,
mạng nơ ron và máy vector hỗ trợ đã được sử dụng để phân loại. Theo kết quả của [10]
hồi quy logistic cho thấy hiệu suất tốt nhất trong số các phương pháp học máy khác với
tỷ lệ phân loại trung bình trên bộ dữ liệu xác nhận đạt 93,4%. Vấn đề chính gặp phải là
6
tập dữ liệu. Nó lệch khá nhiều đối với một trong các lớp và gây khó khăn cho việc phân
tích về việc phân loại.
Zezhi Chen và cộng sự [5] so sánh các hệ thống phân loại, chỉ ra cách phân loại
xe bằng cách sử dụng các thông số về kích thước và hình dạng. Phân loại dùng cho bốn
loại phương tiện (xe máy, xe tải, xe buýt và xe đạp/ xe máy) và nó được thực hiện theo
hai cách tiếp cận khác nhau: hai phân loại dựa trên tính năng (SVM và rừng ngẫu nhiên
(Random Forest - RF)) và phương pháp dựa trên mô hình. Nghiên cứu cho thấy rằng
SVM luôn vượt trội so với RF, với độ chính xác phân loại cuối là 96,26%. Số lượng các
phân loại sai sót cao nhất xảy ra giữa xe và xe tải, trong đó đặc điểm kích thước và hình
dạng thể hiện sự tương đồng đáng kể.
Muhammad Asif Manzoor cùng cộng sự [6] đã đề xuất một phương pháp dựa
trên máy vectơ hỗ trợ (SVM) tuyến tính để giải quyết vấn đề này. Việc trích xuất các
đặc điểm và hiển thị các điểm đặc trưng thì phép biến đổi đặc điểm không phụ thuộc
phạm vi (SIFT) được sử dụng. Mô hình túi từ được sử dụng để phân loại. Phương pháp
đề xuất được thử nghiệm dựa trên bộ dữ liệu NTOUMMR và cho thấy tỷ lệ chính xác
trung bình là 89%. Bộ dữ liệu chứa hình ảnh xe trực diện.
Qua những nghiên cứu trên, ta thấy các phương pháp, kết quả nghiên cứu trên có
ý nghĩa thực tiễn với độ chính xác tương đối, tuy nhiên mỗi phương pháp đều có hạn
chế nhất định và tốn nhiều tài nguyên. Vì vậy, cần một phương pháp có tốc độ xử lý
nhanh và độ chính xác tốt hơn bằng cách ứng dụng kỹ thuật Học sâu để nhận dạng và
đếm xe máy.
1.3. Kỹ thuật học sâu
1.3.1. Tổng quan về học sâu
Học sâu (deep learning) là một nhánh của ngành máy học, dựa trên một tập hợp
các thuật toán để cố gắng mô hình dữ liệu để trừu tượng hóa ở mức cao bằng cách sử
dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bằng cách khác bao gồm nhiều lớp biến
đổi phi tuyến để trích tách đặc trưng và chuyển đổi [12]. Mỗi lớp kế tiếp dùng đâu ra
của lớp trước làm đầu vào. Các thuật toán này có thể được giám sát hoặc không cần
giám sát và các ứng dụng bao gồm các mô hình phân tích (không giám sát) và phân loại
(giám sát).
Các thuật toán học sâu dựa trên các đại diện phân phối. Giả định tiềm ẩn đằng
sau các đại diện phân phối là các dữ liệu được quan sát là được tạo ra bởi sự tương tác
của các yếu tố được tổ chức theo lớp. Học sâu thêm giả định rằng các lớp của các yếu
tố này tương ứng với các mức độ trừu tượng hay theo thành phần. Các con số khác nhau
của các lớp và kích thước của lớp có thể được sử dụng để quy định các lớp trừu tượng
khác. Học sâu khai thác ý tưởng thứ bậc các yếu tố giải thích này ở cấp cao hơn, những
khái niệm trừu tượng hơn được học từ các cấp độ thấp hơn.
7
Một trong những phương pháp học sâu thành công nhất là mô hình mạng nơ-ron
nhân tạo (Arificial Neural Network) [12]. Mạng nơ-ron nhân tạo được lấy cảm hứng từ
các mô hình sinh học năm 1959 được đề xuất bởi người đoạt giải Nobel David H. Hubel
& Torsten Wiesel, 2 người đã tìm thấy hai loại tế bào trong vỏ não thị giác chính: các tế
bào đơn giản và các tế bào phức tạp. Nhiều mạng nơ-ron nhân tạo có thể được xem như
là các mô hình ghép tầng của các tế bào lấy cảm hứng từ những quan sát sinh học. Nhưng
không giống như bộ não sinh học mà bất kỳ nơ-ron nào có thể kết nối với bất kỳ nơ-ron
nào khác trong một cách nhất định, các mạng nơ-ron nhân tạo này có các lớp, kết nối và
hướng riêng biệt để truyền dữ liệu. Mỗi tế bào thần kinh được gán một trọng số cho đầu
vào của nó, kết quả cuối cùng sau đó được xác định bằng tổng số trọng số đó.
Hình 1.2: Nơ-ron sinh học
Như hình trên, ta có thể thấy một nơ-ron có thể nhận nhiều đầu nào và cho ra một
kết quả duy nhất. Một nơ-ron đơn lẻ như vậy được gọi là perceptron
Hình 1.3: Perceptron
Ví dụ: Một perceptron sẽ nhận một hoặc nhiều đầu vào x dạng nhị phân và cho
kết quả đầu ra o 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 tham số lượng tương ứng w của nó, kết quả đầu ra được quyết định vào một
ngưỡng quyết định b nào đó:
Đặt b = - threshold, ta có thể viết lại thành:
8
Với đầu vào và đầu ra dạng nhị phân, ta rất khó có thể điều chỉnh một lượng nhỏ
đầu vào để đầu ra thay đổi chút ít, nên để linh động ta có thể mở rộng ra cả khoảng [0,
1].
Lúc này đầu ra được quyết định bởi một hàm sigmoid [10] σ(w x) có công thức
Đồ thị của hàm này cũng cân xứng thể hiện được mức độ công bằng của các tham
số:
Hình 1.4: Hàm sigmoid
Đặt z = WTX thì công thức của perceptron lúc này sẽ có dạng:
Tới đây thì ta có thể thấy rằng mỗi hàm sigmoid cũng tương tự như một bộ phân
loại tuyến tính(logistic regression) bởi xác suất P(yi=1|xi;w)= σ(w x).
Ngoài hàm sigmoid ra ta còn có một số hàm khác như tanh, ReLU[10] để thay
thế hàm sigmoid bởi dạng đồ thị của nó cũng tượng tự như sigmoid[10]. Một cách tổng
quát, hàm perceptron được biểu diễn qua một hàm kích hoạt (activation function) f(z)
như sau:
Mạng nơ-ron nhân tạo là sự kết hợp của các tầng perceptron hay còn gọi là
perceptron đa tầng (multilayer perceptron) như hình bên dưới:
9
Hình 1.5: Mạng nơ-ron nhân tạo
Kiến trúc chung của mạng nơ-ron nhân tạo bao gồm thành phần: Lớp đầu vào,
Lớp ẩn và Lớp đầu ra.
Lớp đầu vào (Input layer): Là nơi để nạp dữ liệu vào. Mỗi nơ-ron tương
ứng với một thuộc tính (attribute) hoặc đặc trưng (feature) của dữ liệu đầu vào.
Lớp ẩn (Hidden layer): Là nơi xử lý dữ liệu trước khi đưa ra output.
Thường là hàm tổng (Summation function) để đưa ra giá trị của một nơ-ron tại hidden
layer. Có thể có nhiều hơn một hidden layer. Khi đó đầu ra của một hidden layer sẽ là
đầu vào cho hidden layer tiếp theo.
Lớp đầu ra (Output layer): Là giá trị đầu ra của mạng nơ-ron. Sau khi đi
qua hidden layer cuối cùng, dữ liệu sẽ được chuyển hóa bằng một hàm số được gọi là
hàm kích hoạt (Activation function) và đưa ra output cuối cùng. Hàm chuyển đổi thường
là hàm tanh(x), sigmoid(x) hoặc softmax(x) [12].
Trong mạng nơ-ron nhân tạo, mỗi nơ-ron đóng vai trò như một đơn vị xử lý thông
tin. Giữa các nơ-ron được đánh trọng số, gọi là các trọng số liên kết (Connection
Weight), thể hiện độ quan trọng của thông tin của mỗi nơ-ron trước với nơ-ron sau. Quá
trình học của mạng nơ-ron cũng chính là việc điều chỉnh những tham số này sao cho
phù hợp nhất.
Thông tin của mỗi nơ-ron đi qua mỗi layer sẽ được áp dụng hàm tổng và hàm
kích hoạt trước khi trở thành thông tin đầu vào của nơ-ron tiếp theo.
Hàm tổng:
Trong đó:
- 𝑥𝑗: Giá trị đầu ra của nơ-ron thứ j
- 𝑤𝑖𝑗: Trọng số liên kết giữa nơ-ron thứ j ở layer trước và nơ-ron thứ i ở
layer sau
Thông tin ở hidden layer cuối cùng trước khi tới output sẽ phải qua một hàm kích
hoạt (Activation function). Việc sử dụng hàm kích hoạt có hai mục đích: Một là những
10
thông tin qua hàm tổng có thể sẽ lớn, vì vậy hàm chuyển đổi sẽ khiến giá trị đầu ra bị
chặn. Ví dụ đầu ra của hàm sigmoid sẽ nằm trong khoảng [0, 1] còn tanh thì là [-1, 1].
Hai là hàm tổng là một hàm tuyến tính, giá trị đầu ra sẽ không “mượt”, hàm kích hoạt
sẽ “mượt hóa” kết quả của hàm tổng để kết quả đầu ra có thể chính xác hơn. Hàm kích
hoạt thường sử dụng là hàm softmax, tanh, sigmoid [12] hay chỉ đơn thuần là một
ngưỡng để quyết định giá trị cho output.
- Hàm softmax:
n: là tổng số nơ-ron ở output layer
x: là giá trị từ hidden layer cuối cùng sau khi đi qua hàm tổng
- Hàm Sigmoid:
- Hàm tanh:
1.3.2. Mạng nơ-ron tích chập – Convolutional neural network (CNN)
Convolutional Neural Network (CNN – Mạng nơ-ron tích chập) là một trong
những mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ
thống thông minh với độ chính xác cao như hiện nay như hệ thống xử lý ảnh lớn như
Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng thông
minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng
tự động. CNN được sử dụng nhiều trong các bài toán phát hiện các object trong ảnh. Để
tìm hiểu tại sao thuật toán này được sử dụng rộng rãi cho việc phát hiện (detection),
chúng ta hãy cùng tìm hiểu về thuật toán này.
Convolutional là một cửa sổ trượt (sliding windows) trên một ma trận.
Hình 1.6: Quá trình tích chập (Convolutional)
Các convolutional layer có các parameter (kernel) đã được học để tự điều chỉnh
lấy ra những thông tin chính xác nhất mà không cần chọn các feature. Trong hình ảnh
ví dụ trên, ma trận bên trái là một hình ảnh trắng đen được số hóa. Ma trận có kích thước
11
5x5 và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm của dòng và cột. Convolution hay
tích chập là nhân từng phần tử trong ma trận 3x3.
Sliding Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận
có kích thước nhỏ như trong ví dụ trên là 3x3. Convolution hay tích chập là nhân từng
phần tử bên trong ma trận 3x3 với ma trận bên trái. Kết quả được một ma trận gọi là
Convoled feature được sinh ra từ việc nhận ma trận Filter với ma trận ảnh 5x5
bên trái.
Cấu trúc của mạng CNN
Hình 1.7: Mô hình chung mạng neural tích chập
Mạng neural tích chập (Convolutional Neural Network - CNN) hiện nay là một
trong những phương pháp thông dụng nhất trong nhận diện hình ảnh (Image
recognition), liên quan mật thiết với thị giác máy tính (Computer Vision) khởi nguồn từ
những năm 1980 khi Kunihiko Fukushima đề xuất một cấu trúc mạng neural mới lấy
cảm hứng từ cơ quan thị giác của mèo và khỉ.
Những thuật toán ở thời điểm đó có thể nhận diện một số cấu trúc của hình ảnh
tuy nhiên khi chúng được biến đổi như bị dịch chuyển ra cạnh của ảnh, bị lật ngược hoặc
bị che khuất thì độ chính xác giảm đi nhiều. Cấu trúc được đề xuất bởi Fukushima có
thể tổng quát hóa hình ảnh cũng như loại bỏ những vật thể thừa, tránh được tình trạng
over-fitting của mạng neural truyền thống khi tính toán rất tốt những ảnh mà nó đã học
nhưng thể hiện rất tệ đối với những ảnh chúng chưa từng gặp bằng cách giảm thiểu số
lượng tham số của mạng neural.
Năm 1998, LeCun và cộng sự xây dựng mạng neural chồng chập LeNet-5 nhằm
nhận dạng chữ số viết tay với kích thước ảnh 32x32. Tuy nhiên vì sự hạn chế của phần
cứng máy tính lúc đó nên không thể phát triển cho ảnh có độ phân giải cao hơn.
Đến năm 2005, tại Hội nghị quốc tế về Phân tích và Nhận dạng tài liệu ICDAR,
Dave Steinkraus và cộng sự đề xuất giải pháp sử dụng GPU cho các giải thuật học máy
và đã được áp dụng thành công trên các cơ sở dữ liệu ảnh lớn như MNIST, ImageNet
vào năm 2012.
12
Các layer trong mạng neural tích chập:
Convolutional layer
Convolutional layer (gọi tắt là lớp conv) chứa các “dây thần kinh” của mạng
neural được gọi là feature map. Các feature map này có nhiệm vụ tính toán các dữ liệu
input (đối với lớp conv đầu tiên thì là giá trị của sample trong dataset, đổi với các lớp
conv khác là output của các hidden layer liền trước nó) thông qua phép tích chập.
Feature map thể hiện khả năng nhận biết các đặc trưng của input. Các feature
map tựa như các góc độ quan sát của con người khi nhìn vào một bức ảnh, càng quan
sát dưới nhiều góc độ, khả năng phát hiện các đặc điểm nhận diện càng cao. Đây cũng
chính là điểm vượt trội so với mạng neural kinh điển chỉ xét bức ảnh hoặc dữ liệu dưới
một góc độ duy nhất.
Hình 1.8: Một bức ảnh thông qua nhiều góc nhìn khác nhau (các feature map)
Quá trình train mạng neural tích chập thực chất là quá trình update các tham số
của các feature map (các weight và bias).
ReLU layer
ReLU layer thực chất là một activation function định nghĩa output của
convolutional layer liền trước nó. Activation function có nhiệm vụ chuẩn hóa ouput này
vào một khoảng nhất định chẳng hạn như [-1, 1] hoặc [0, 1], …Đối với ReLU, output sẽ
được chuẩn hóa thành số không âm và nằm trong khoảng [0, x] với x là giá trị của output.
ReLU mang ý nghĩa quan trọng đối với khả năng học của mạng neural tích chập.
Pooling layer
Mục đích của pooling rất đơn giản là làm giảm số parameter mà ta cần phải tính
toán, từ đó giảm thời gian tính toán, tránh overfitting. Loại pooling ta thường gặp nhất
13
là max pooling, lấy giá trị lớn nhất trong một pooling window. Pooling hoạt động gần
giống với convolution, nó cũng có 1 cửa sổ trượt gọi là pooling window, cửa sổ này trượt
qua từng giá trị của ma trận dữ liệu đầu vào (thường là các feature map trong
convolutional layer), chọn ra một giá trị từ các gía trị nằm trong cửa sổ trượt (với max
pooling ta sẽ lấy giá trị lớn nhất). Ngoài max pooling còn có average pooling, thay vì
lấy giá trị lớn nhất ta sẽ tính giá trị trung bình cộng trong cửa số trượt pooling window.
Hình 1.9: Minh họa max pooling
Hình 1.10: Minh họa average pooling
Drop-out layer
Drop-out là một kĩ thuật Regularization để chống lại vấn đề overfitting. Dropout
layer là cách thức chúng ta giả định một phần dữ liệu bị ẩn đi theo tỉ lệ định sẵn trong
quá trình training. Drop-out giúp cho mạng neural network có khả năng nhận diện mang
tính tổng quát và khách quan hơn, tránh tình trạng học vẹt và quá phụ thuộc vào bộ train
dẫn đến việc sai lệch tính toán khi áp dụng vào thực tế.
Hình 1.11: Drop-out thực hiện loại bỏ một số neural trong quá trình tính toán