TRƯỜNG ĐẠI HỌC LẠC HỒNG
KHOA CÔNG NGHỆ THÔNG TIN
-----
----
BÁO CÁO
NGHIÊN CỨU KHOA HỌC
ĐỀ TÀI:
XÂY DỰNG CÔNG CỤ NÂNG CAO CHẤT
LƯỢNG ẢNH DỰA TRÊN KERAS
Nguyễn Đăng Khoa
BIÊN HÒA, THÁNG 11/2018
TRƯỜNG ĐẠI HỌC LẠC HỒNG
KHOA CÔNG NGHỆ THÔNG TIN
----- -----
BÁO CÁO
NGHIÊN CỨU KHOA HỌC
ĐỀ TÀI:
CỤ NÂNG CAO CHẤT
XÂY DỰNG CÔNG
LƯỢNG ẢNH DỰA
TRÊN KERAS
Sinh viên thực hiện: Nguyễn Đăng Khoa
Giáo viên hướng dẫn: Th.S Tạ Nguyễn
BIÊN HÒA, THÁNG 11/2018
I
LỜI CẢM ƠN
Sau khoảng thời gian học tập và rèn luyện ở trường Đại Học Lạc Hồng. Em
đã học được rất nhiều thứ bổ ích cũng như cách sống bên cạnh những kiến thức
mà thầy cô đã chỉ dậy. Bằng sự biết ơn và kính trọng, em xin gửi lời cảm ơn chân
thành đến ban giám hiệu, các thầy cô trong trường và đặc biệt là các thầy cô trong
khoa Công Nghệ Thông Tin đã luôn tạo cho em một môi trường học tập tốt nhất.
Em xin gửi lời cảm ơn đến Th.S Tạ Nguyễn, là giáo viên hướng dẫn cho em.
Thầy đã luôn theo sát, hướng dẫn cũng như động viên em trong quá trình làm đề
tài.
Ngoài ra em cũng xin gửi lời cảm ơn đến gia đình và bạn bè của em, những
người đã luôn theo sát và động viên em trong quá trình học tập.
Mặc dù đã cố gắng rất nhiều, nhưng bài luận không tránh khỏi những thiếu
sót. Em rất mong nhận được sự thông cảm, chỉ dẫn, giúp đỡ và đóng góp ý kiến
của ban giám hiệu và các quý thầy cô.
Em xin chân thành cảm ơn
Biên Hòa, tháng 11 năm 2018
Sinh viên thực hiện
Nguyễn Đăng Khoa
II
MỤC LỤC
LỜI CẢM ƠN ................................................................................................................................ I
MỤC LỤC ..................................................................................................................................... II
DANH MỤC HÌNH ...................................................................................................................... V
PHẦN MỞ ĐẦU ............................................................................................................................ 1
1. Lý do chọn đề tài ............................................................................................... 1
2. Tình hình nghiên cứu ......................................................................................... 1
2.1. Ngoài nước ..................................................................................................... 1
2.2. Trong nước ..................................................................................................... 2
3. Mục tiêu nghiên cứu .......................................................................................... 2
4. Đối tượng và phạm vi nghiên cứu ..................................................................... 2
4.1. Đối tượng nghiên cứu ..................................................................................... 2
4.2. Phạm vi nghiên cứu ........................................................................................ 3
5. Phương pháp nghiên cứu ................................................................................... 3
6. Những đóng góp mới của đề tài và những vấn đề mà đề tài chưa thực hiện được
........................................................................................................................ 3
6.1. Những đóng góp mới ...................................................................................... 3
6.2. Những vấn đề chưa thực hiện được ................................................................ 3
7. Kết cấu của đề tài............................................................................................... 3
Chương 1 : Cơ sở lý thuyết ..................................................................................... 5
1.1. Tổng quan về học máy ................................................................................ 5
1.1.1. Học máy là gì? ..................................................................................... 5
1.1.2. Các phương pháp học máy................................................................... 5
1.1.3. Tại sao phải học máy ........................................................................... 6
1.1.3.1. Trường hợp không ai biết câu trả lời ........................................... 6
1.1.3.2. Trường hợp chúng ta biết cách thực hiện nhưng không thể diễn
giải để máy tính có thể thực hiện lại được......................................................... 6
1.1.3.3. Trường hợp dữ liệu thay đổi liên tục, ta không thể thường xuyên
lập trình lại chức năng đó .................................................................................. 7
1.1.3.4. Trường hợp ta không thể lập trình cụ thể cho từng người dùng do
giới hạn về nhân lực .......................................................................................... 7
1.1.4. Ứng dụng của học máy hiện nay.......................................................... 7
1.2. Thư viện Keras ............................................................................................ 8
III
1.2.1. Thư viện Keras là gì? ........................................................................... 8
1.2.2. Tại sao lại sử dụng Keras ..................................................................... 8
1.2.3. Một số thuật ngữ trong học máy và trong Keras ................................. 9
1.2.3.1. Deep Learning.............................................................................. 9
1.2.3.2. Layer ............................................................................................ 9
1.2.3.3. Model ........................................................................................... 9
1.2.3.4. Train ............................................................................................. 9
1.2.3.5. Data ............................................................................................ 10
1.2.3.6. Sequential model........................................................................ 10
1.2.3.7. Custom model ............................................................................ 10
1.2.3.8. Fit ............................................................................................... 10
1.2.3.9. Compile ...................................................................................... 10
1.2.3.10. Predict ...................................................................................... 10
1.2.3.11. Test........................................................................................... 10
1.2.3.12. Overfitting ................................................................................ 11
1.2.3.13. Features .................................................................................... 11
1.2.3.14. Convolution ............................................................................. 11
1.2.4. Một số layer chính trong Keras .......................................................... 12
1.2.4.1. Convolution Layer ..................................................................... 12
1.2.4.2. Conv2D Transpose .................................................................... 13
1.2.4.3. Pooling Layer ............................................................................. 13
1.2.4.4. Fully-Connected Layer .............................................................. 13
1.2.5. Quy trình làm việc của Keras: ........................................................... 13
1.3. Ngôn ngữ lập trình và các thư viện khác dùng trong đề tài ...................... 14
1.3.1. Python 3.6.3 ....................................................................................... 14
1.3.2. Thư viện OpenCV .............................................................................. 14
1.3.3. Thư viện Tensorflow .......................................................................... 14
1.3.4. Thư viện Numpy ................................................................................ 15
1.4. Mô hình CNN ............................................................................................ 15
1.4.1. Tầng Convolution (Conv) .................................................................. 15
1.4.2. Tầng Pooling ...................................................................................... 16
1.4.3. Tầng Relu ........................................................................................... 17
1.4.4. Tầng Fully-connected ........................................................................ 18
IV
1.4.5. Kết luận .............................................................................................. 18
1.5. Mô hình SRCNN ....................................................................................... 19
1.6. Tiểu kết ...................................................................................................... 20
Chương 2 : Xây dựng công cụ cải thiện chất lượng ảnh dựa trên Keras .............. 21
2.1. Tìm hiểu .................................................................................................... 21
2.2. Chọn phương pháp học máy...................................................................... 21
2.3. Thu thập kiến thức từ nhiều nguồn ........................................................... 22
2.4. Cài đặt môi trường làm việc và một số thư viện cần thiết ........................ 22
2.4.1. Cài đặt chương trình Atom ................................................................ 22
2.4.2. Cài đặt Python .................................................................................... 22
2.4.3. Cài đặt thư viện OpenCV ................................................................... 22
2.4.4. Cài đặt thư viện Tensorflow trên windows ........................................ 23
2.4.5. Cách cài đặt Keras trên windows: ...................................................... 23
2.4.6. Cài đặt thư viện numpy ...................................................................... 23
2.5. Xử lý data và xây dựng mô hình học máy ................................................ 23
2.5.1. Vài nét về data.................................................................................... 23
2.5.2. Xử lý data ........................................................................................... 23
2.5.3. Xây dựng mô hình học máy ............................................................... 25
2.5.4. Quá trình học máy .............................................................................. 26
2.5.5. Giao diện của công cụ ........................................................................ 27
2.6. Tiểu kết ...................................................................................................... 27
Chương 3 : Thử nghiệm và đánh giá kết quả ........................................................ 28
3.1. Kiểm chứng mô hình ................................................................................. 28
3.2. Đánh giá công cụ ....................................................................................... 31
3.3. Tiểu kết ...................................................................................................... 31
KẾT LUẬN .................................................................................................................................. 32
TÀI LIỆU THAM KHẢO ............................................................................................................ 33
V
DANH MỤC HÌNH
Hình 1-1: Phân loại học máy. ........................................................................6
Hình 1-2: Keras đứng thứ 2 trong bảng xếp hạng về độ phổ biến trên GibHub.
.................................................................................................................................8
Hình 1-3: Minh họa về lớp convolution 2D. ................................................12
Hình 1-4: Quy trình làm việc của Keras. .....................................................13
Hình 1-5: Phép tính trong tầng convolution. ...............................................16
Hình 1-6: Kết quả thu được sau khi tính toán. .............................................16
Hình 1-7: Phép tính trong tầng Pooling. ......................................................17
Hình 1-8: Kết nối các neural. .......................................................................18
Hình 1-9: Hình ảnh minh họa về mô hình CNN. .........................................19
Hình 1-10: Minh họa về tăng kích thước ảnh vẫn giữ được độ nét. ............20
Hình 2-1: Mô hình học máy có giám sát......................................................22
Hình 2-2: Cách trích xuất data. ....................................................................24
Hình 2-3: Mô hình học máy của đề tài. .......................................................25
Hình 2-4: Quá trình học máy của Keras. .....................................................26
Hình 2-5: Giao diện của công cụ. ................................................................27
Hình 3-1: Kết quả kiểm chứng. ....................................................................30
1
PHẦN MỞ ĐẦU
1. Lý do chọn đề tài
Photoshop hiện nay có lẽ là công cụ được đề cập đến đầu tiên trong vấn đề xử
lý nâng cao chất lượng ảnh. Việc nâng cao chất lượng một tấm ảnh là việc khá dễ dàng
đối với những những ai đã thành tạo photoshop. Tuy nhiên với những người chưa biết
gì về công cụ này cũng như họ không muốn mất thời gian để tìm hiểu và sử dụng nó
thì phải làm sao. Đó chính là lý do tác giả xây dụng một công cụ giúp nâng cao chất
lượng ảnh tự động dựa vào học máy.
Những bài báo cáo và nghiên cứu hiện nay về Computer Vision hay cụ thể hơn
là Image Super-Resolution đều đang rất được quan tâm ở trên thế giới. Việc cải thiện
chất lượng ảnh có thể giúp nhiều vấn đề như: giúp những cơ quan điều tra, kiểm soát
bằng camera tốt hơn, cải thiện hình ảnh từ những ảnh chất lượng thấp trong điện thoại
của bạn hay tuyệt vời hơn là cải thiện chất lượng của những tấm ảnh đã quá hạn sử
dụng.
Ở Việt Nam các trường đại học cũng đã bắt đầu đưa xử lý ảnh làm môn học
chuyên ngành của sinh viên các ngành công nghệ thông tin.
2. Tình hình nghiên cứu
2.1. Ngoài nước
Việc nâng cao chất lượng ảnh hiện đang là một bài toán rất được chú ý trên
toàn thế giới, bằng chứng cho điều đó là vào năm 2017 cuộc thi “New Trends in
Image Restoration and Enhancement workshop and challenge on Image superresolution” được tổ chức cùng với The Conference on Computer Vision and
Pattern Recognition – CVPR 2017 (đây là một trong những hội nghị lớn nhất cho
Machine learning và Computer Vision) đã cho thấy tiềm năng đầy hứa hẹn trong
tương lai của mình.
Trong đề tài của các tác giả Yifan Wang, Lijun Wang, Hongyu Wang, Peihua
Li có tên “End-to-End Image Super-Resolution via Deep and Shallow
Convolutional Networks” đã sử dụng keras để tạo model học máy giúp cho việc
tăng kích thước ảnh lên nhưng vẫn giữ được độ nét của hình ảnh [13].
2
Ngoài ra bài toán về nâng cao chất lượng ảnh còn được ứng dụng trong một
trang website khá nổi tiếng là trang letsenhance.io: là một trong những website
miễn phí cho phép người dùng tận dụng mạng nơ-ron, hoặc nói cách khác là AI để
cải thiện và nâng cao chất lượng hình ảnh mà các công cụ như Photoshop không
thể làm được.
2.2. Trong nước
So với các nước phát triển khác thì tình hình nghiên cứu trong nước ta có thể
nói là ít sôi động hơn. Dưới đây là một vài đề tài nổi bật liên quan đến xử lý và
nâng cao chất lượng ảnh.
Đề tài của tác giả Nguyễn Xuân Cường về nghiên cứu các kỹ thuật xử lý ảnh
phục vụ việc nâng cao chất lượng nhận dạng tiếng Việt. Ở đề tài này tác giả sử
dụng OpenCV để tăng độ nét, tăng độ tương phản, loại bỏ phông nền, loại bỏ
nhiễu… [14].
Đề tài của tác giả Phạm Ngọc Quảng về các phương pháp dùng để nâng cao
chất lượng ảnh sử dụng trong y học như tăng giảm độ sáng, tách ngưỡng, bó cụm,
cân bằng histogram… [15].
3. Mục tiêu nghiên cứu
Đề tài thực hiện với các mục tiêu:
Nghiên cứu về thư viện Keras và thư viện OpenCV.
Tìm hiểu và tạo ra một mô hình học máy phù hợp.
Tìm và xây dựng tập data dành cho quá trình học.
Xây dựng công cụ giúp tăng gấp đôi kích thước ảnh và cải thiện được độ
nét so với phóng to gấp đôi bình thường.
Kiểm tra và đánh giá công cụ.
4. Đối tượng và phạm vi nghiên cứu
4.1. Đối tượng nghiên cứu
Phương pháp học máy.
Thư viện học máy Keras.
3
Thư viện xử lý ảnh OpenCV.
4.2. Phạm vi nghiên cứu
Phạm vi nghiên cứu là những tấm ảnh có độ phân giải thấp (Vd: 300x200,
400x205)
5. Phương pháp nghiên cứu
Sử dụng mô hình CNN (Convolutional Neural Network) để cải thiện chất lượng
ảnh và giảm thiểu việc vỡ điểm ảnh khi phóng to lên.
Ngôn ngữ lập trình được sử dụng là Python phiên bản 3.6.3.
Sử dụng thư viện Keras để xây dựng mô hình.
Sử dụng Tensorflow làm nền tảng cho Keras.
Sử dụng tập Dataset của DIV2K gồm 900 ảnh độ phân giải lớn (800 Train, 100
Valid).
6. Những đóng góp mới của đề tài và những vấn đề mà đề tài chưa thực hiện
được
6.1. Những đóng góp mới
Đơn giản hóa quá trình nâng cao chất lượng ảnh.
Giúp phổ biến các bài toán về học máy cũng như xử lý ảnh ở Việt Nam.
6.2. Những vấn đề chưa thực hiện được
Chưa tạo được một công cụ thân thiện nhất với người sử dụng.
Không xử lý được các tấm ảnh có độ phân giải cao.
7. Kết cấu của đề tài
Luận văn được chia làm ba phần: phần mở đầu, phần nội dung và phần kết
luận.
Phần mở đầu
Nêu lý do chọn đề tài, tổng quan tình hình phát triển trong nước lẫn ngoài
nước, mục tiêu nghiên cứu đề tài, đối tượng, phạm vi, phương pháp nghiên cứu
4
cũng như những đóng góp mới của đề tài. Cũng chỉ ra mặt hạn chế mà đề tài chưa
thực hiện được để có thể tiếp tục phát triển đề tài.
Phần nội dung chính: gồm 3 chương
Chương 1: Cơ sở lý thuyết
Trong chương này tác giả sẽ trình bày tổng quan về Machine Learning và
Deep Learning, các phương pháp đào tạo học máy giám sát, học máy không
giám sát…. Đồng thời sẽ giới thiệu về thư viện học máy Keras và một số thư viện
mà tác giả đã sử dụng trong đề tài cùng với chức năng của những thư viện đó.
Chương 2: Xây dựng công cụ cải thiện chất lượng ảnh dựa trên Keras
Trong chương này tác giả trình bày chi tiết về các bước mà tác giả đã làm
để hoàn thành được đề tài này.
Chương 3: Thử nghiệm và đánh giá kết quả
Trong chương này tác giả đã nêu ra phương pháp để thử nghiệm và đánh
giá được kết quả mà công cụ này đem lại.
Phần kết luận
Đưa ra những kết luận và kiến nghị về chương trình đã xây dựng.
Commented [TMD1]: Viết hoa tên riêng
5
Chương 1 : CƠ SỞ LÝ THUYẾT
1.1. Tổng quan về học máy
1.1.1. Học máy là gì?
Machine Learning là hướng nghiên cứu trong AI, tập trung vào việc tạo ra các cỗ
máy có khả năng học hỏi mà không cần phải được lập trình một cách cụ thể. Học
hỏi là một kỹ năng quan trọng bậc nhất đối với sự hình thành trí tuệ con người,
do đó nếu chúng ta muốn xây dựng các hệ thống AI có trí tuệ như con người thì
chúng ta trước hết phải tạo ra các cỗ máy có khả năng tự học hỏi dựa trên các
kinh nghiệm mà chúng thu thập được trong suốt quá trình hoạt động.
Machine Learning khác với hướng nghiên cứu cổ điển về AI, trong đó các lập
trình viên sẽ tạo ra các quy tắc để máy móc từng bước làm theo thay vì cho phép
chúng tự nghiên cứu, khám phá để bổ sung kiến thức cho chính mình. Tất nhiên,
Machine Learning vẫn bao gồm phương thức lập trình cổ điển nêu trên, và còn
kết hợp các quy tắc cổ điển với kiến thức mà máy móc thu thập được để trở nên
thông minh hơn [2].
1.1.2. Các phương pháp học máy
Có 4 phương pháp học máy như bên dưới:
Học có giám sát (supervised learning) cần có các dữ liệu dùng để
"học", và phải đưa ra được một kết quả nhất định.
Học không giám sát (unsupervised learning) cũng cần có các dữ liệu
dùng để "học", nhưng không phải đưa ra các kết quả cụ thể nào.
Học bán giám sát (semi-supervised learning) cũng cần có các dữ liệu
dùng để "học", và có thể đưa ra được một vài kết quả khác nhau.
Học củng cố (reinforcement learning) là một cách "học" đang trở nên
vô cùng phổ biến hiện nay. Trong học củng cố, AI sẽ được thưởng dựa
trên những gì nó làm được. Học củng cố có thể giúp máy móc đạt
được những khả năng như hiểu được làm sao để chơi một game máy
tính thông qua một quá trình thử và lỗi (trial-and-error), dựa trên việc
nghiên cứu làm cách nào để tăng điểm số của mình.
6
Hình 1-1: Phân loại học máy.
1.1.3. Tại sao phải học máy
Dưới đây là 4 trường hợp khiến chúng ta phải cần dùng đến học máy [3]:
1.1.3.1. Trường hợp không ai biết câu trả lời
Đây là trường hợp con người không thể nhưng máy tính có thể. Trong ngành
y học, các nhà khoa học đã tiến hành hàng trăm cuộc thí nghiệm để tìm ra loại
thuốc có khả năng kháng lại virus HIV. Nhưng cho đến hiện nay, chúng ta vẫn
chưa thể tìm ra được câu trả lời vì giới hạn thời gian không cho phép chúng ta tiến
hành tất cả hàng triệu phép thử để tìm ra loại thuốc hữu hiệu nhất. Thật là tốt biết
mấy, nếu chúng ta có thể sử dụng sức mạnh của máy tính. Ta sẽ lấy tất cả dữ liệu
của các loại thuốc hiện có. Sau đó, xác định xem đâu là loại thuốc có khả năng
kháng lại virus HIV. Nhờ vậy mà ta đã thu hẹp và giới hạn lại thí nghiệm của mình
giúp tiết kiệm rất nhiều thời gian.
1.1.3.2. Trường hợp chúng ta biết cách thực hiện nhưng không thể diễn
giải để máy tính có thể thực hiện lại được
Đây là trường hợp con người có thể nhưng máy tính không thể. Cho một tấm
hình có kí tự viết tay, xác định xem tấm hình đó chứa kí tự gì nằm trong bảng chữ
cái ABC. Quả thật với khả năng của con người, ta có thể nhận biết ngay đó là kí
tự gì chỉ trong vài giây. Nhưng ngược lại, đối với máy tính, ta khó có thể diễn giải
được tại sao chúng ta có thể làm được như vậy.
7
1.1.3.3. Trường hợp dữ liệu thay đổi liên tục, ta không thể thường xuyên
lập trình lại chức năng đó
Trong chứng khoán, ta luôn muốn phân tích dữ liệu 10 ngày trước đó, để có
thể đưa ra quyết định cho giá trị chứng khoán ngày hiện tại. Do dữ liệu thay đổi
liên tục, ta cần một hệ thống có thể tự cập nhật và phân tích để hỗ trợ đưa ra quyết
định có độ chính xác cao nhất.
1.1.3.4. Trường hợp ta không thể lập trình cụ thể cho từng người dùng
do giới hạn về nhân lực
Làm sao ta biết được thói quen của từng người dùng khi mua sản phẩm online
để có thể gợi ý họ mua những sản phẩm tương ứng với những sản phẩm họ đã mua
trước đó. Amazon hay Youtube là những ví dụ cho các hệ thống có khả năng xác
định thói quen và xu hướng của người dùng để có thể đưa ra những gợi ý chính
xác giúp nâng cao trải nghiệm của người dùng.
1.1.4. Ứng dụng của học máy hiện nay
Học máy hiện diện trong các bộ lọc thư rác (spam) mà các hệ thống email sử
dụng để phân loại email hữu ích và email rác. Để thực hiện việc lọc thư, các bộ lọc
sẽ được các lập trình viên trang bị những quy tắc ban đầu, sau đó trong quá trình
hoạt động nó sẽ tự động học để thêm vào các quy tắc khác mà nó nghĩ sẽ giúp lọc
ra được những email hữu ích cho người dùng.
Ngoài ra học máy còn được ứng dụng vào các trường hợp sau:
Phát hiện gian lận.
Các kết quả tìm kiếm trên web.
Quảng cáo theo thời gian thực trên các trang web và các thiết bị di
động.
Phân tích tình cảm dựa trên văn bản.
Điểm số tín dụng và lời mời chào tiếp theo tốt nhất.
Dự đoán những hư hỏng của thiết bị.
Những mô hình định giá mới.
8
Phát hiện xâm nhập mạng.
Nhận dạng qua pattern (mẫu) và hình ảnh.
1.2. Thư viện Keras
1.2.1. Thư viện Keras là gì?
Keras là một Framework Machine Learning được viết bằng Python nhằm
giảm thiểu thời gian giữa việc lên các ý tưởng và giai đoạn thực hiện chúng. Nó
bao gồm hai API high-level: Keras Sequential và Keras Functional [16]. Ngoài ra
Keras cũng cho phép người dùng linh hoạt thay đổi Tensorflow và Theano (C++)
làm backend.
Như đã nêu trên, sức mạnh của Keras nằm ở việc dễ dàng triển khai các mô
hình học sâu cấp cao, nên đó là lý do tôi sẽ sử dụng Keras với Tensorflow backend
để phát triển mô hình của đề tài này.
Commented [TMD2]: Tham khảo ở đâu?
Commented [TMD3]: Nguồn tham khảo?
Hình 1-2: Keras đứng thứ 2 trong bảng xếp hạng về độ phổ biến trên GibHub (17).
1.2.2. Tại sao lại sử dụng Keras
Phổ biến: Là thư viện được khá nhiều người dùng nên các tài liệu hướng dẫn
rất chi tiết và dễ dàng tìm được.
Ngôn ngữ Python: Dù thư viện Caffe hay Theano cũng có cú pháp sử dụng
khá đơn giản nhưng ở Keras lại có một ưu điểm khá quan trọng đó chính là được
viết bằng ngôn ngữ Python. Python hỗ trợ khá nhiều thư viện giúp lập trình dễ
dàng và nhanh chóng.
9
1.2.3. Một số thuật ngữ trong học máy và trong Keras
1.2.3.1. Deep Learning
Deep Learning là một chi 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 biến
đổi phi tuyến.
Học sâu là một phần của một họ các phương pháp học máy rộng hơn dựa trên
đại diện học của dữ liệu. Một quan sát (ví dụ như, một hình ảnh) có thể được biểu
diễn bằng nhiều cách như một vector của các giá trị cường độ cho mỗi điểm ảnh,
hoặc một cách trừu tượng hơn như là một tập hợp các cạnh, các khu vực hình dạng
cụ thể, vv. Một vài đại diện làm khiến việc học các nhiệm vụ dễ dàng hơn (ví dụ,
nhận dạng khuôn mặt hoặc biểu hiện cảm xúc trên khuôn mặt) từ các ví dụ. Một
trong những hứa hẹn của học sâu là thay thế các tính năng thủ công bằng các thuật
toán hiệu quả đối với học không có giám sát hoặc nửa giám sát và tính năng phân
cấp. [18]
1.2.3.2. Layer
Là các lớp xử lý dữ liệu trong model.
Khi đi qua các lớp này giá trị output sẽ thay đổi theo các tham số truyền vào.
Có thể có nhiều layer trong model càng nhiều layer, model càng phức tạp.
Các layer được sử dụng trong đề tài này: Convolutional Layer, Activation
Layer.
1.2.3.3. Model
Hiểu đơn giản thì nó là kết quả của quá trình training. Bạn có thể tưởng tượng
nó như một hộp đen sẽ cung cấp cho một đầu ra nhất định khi bạn đưa một đầu
vào vào, và quá trình training chỉ là một số phương pháp để điều chỉnh hộp đen đó
sao cho tìm được kết quả đầu ra mong muốn.
1.2.3.4. Train
Là quá trình dạy cho chương trình cách tạo ra một số đầu ra dựa trên đầu vào
và đầu ra đã biết, cũng có thể tưởng tượng giống như con người khi học cách chơi
Commented [TMD4]: Nguồn tham khảo?
10
cờ vua từ kinh nghiệm vì vậy mà ta có thể đánh bại đối thủ tiếp theo dựa vào kinh
nghiệm đã thắng đối thủ trước đó. Đối với máy tính, quá trình này thường được
gọi là training và kinh nghiệm chính là từ bộ dữ liệu đã có sẵn.
1.2.3.5. Data
Data là dữ liệu có được sau khi thu tập có thể là dữ liệu hình ảnh, dãy số...
1.2.3.6. Sequential model
Là một cách để tạo model trong Keras.
Có thể tạo các lớp của mô hình bằng cách truyền vào danh sách các
lớp hoặc cũng có thể dùng phương pháp add để thêm các lớp vào
model.
Sequential model dữ liệu sẽ được đi tuần tự qua các lớp của model.
1.2.3.7. Custom model
Custom model cũng là một cách để tạo model trong Keras.
Custom model cho phép người dùng có thể tùy chỉnh được luồng đi
của dữ liệu.
1.2.3.8. Fit
Dùng để đưa data vào training để tìm tham số model.
1.2.3.9. Compile
Sau khi xây dựng model xong thì compile có tác dụng là biên tập lại toàn bộ
model mà chúng ta đã xây dựng.
1.2.3.10. Predict
Predict là thuật ngữ chỉ hàm mà ta sử dụng để chạy model.
1.2.3.11. Test
Quá trình đánh giá kết quả training tốt thế nào bằng cách sử dụng tập dữ liệu
bên ngoài tập dữ liệu đã biết được sử dụng trong quá trình training. Giống như
trong thực tế, mục đích của một người tập chơi cờ vua là để đối mặt với một đối
thủ mới chứ không chỉ là đối thủ đã gặp trong quá trình training. Mục tiêu chính
là đánh bại bất kỳ ai ngay cả khi không được tập chơi với họ, do đó để kiểm tra
11
những gì mà bạn đã training thì cần phải dùng bộ dữ liệu hoàn toàn không có trong
bộ dữ liệu training, Đó là lý do tại sao chúng tôi lại chia dữ liệu thành bộ test và
bộ train. vì chúng ta cần phải biết là mô hình học máy tốt thế nào khi nó đối mặt
với đầu vào bên ngoài dữ liệu đã biết.
1.2.3.12. Overfitting
Giống như một người đánh bại mọi người trong quá trình training nhưng nực
cười là lại không đánh thắng bất cứ một ai ngoài quá trình training cả. Model học
máy cũng có thể thực hiện tốt trong quá trình training nhưng lại kém trên dữ liệu
thử nghiệm và thực tế. Điều này là do dữ liệu thử nghiệm là một dữ liệu mới và
mày không bao giờ phải gặp trước đây. Trong thuật ngữ, overfitting là điều kiện
mà máy không tổng quát hóa mô hình và chỉ tạo ra một mô hình chuyên nghiệp
cho quá trình training.
1.2.3.13. Features
Đó là biểu diễn đầu vào dưới dạng số, mảng hoặc bất kỳ thứ gì mà máy tình
có thể xử lý được. Mục tiêu chính của việc sử dụng biểu diễn feature là tạo ra dữ
liệu duy nhất và được tính bằng máy. Ví dụ, nếu dữ liệu đưa vào là một hình ảnh,
chắc chắn chúng ta cần phải chuyển nó thành mảng màu. Trong trường hợp này,
feature mày đỏ sẽ thế nào? màu xanh thế nào? và mày xanh thì thế nào? hoặc
RGB. Trong ví dụ khác, nếu input là text, máy tính cũng không thể tính toán văn
bản, vì vậy cần một phương thức để biểu diễn dữ liệu như kỹ thuật Word2Vec và
bow. Nếu chúng ta sử dụng bow, feature thì sẽ thường là một từ trong một câu,
trong khi đó nếu ta sử dụng word2vec thì feature sẽ thường là cột trong matrix.
1.2.3.14. Convolution
Convolution là kỹ thuật quan trọng trong xử lý ảnh, được sử dụng chính yếu
trong các phép toán trên ảnh như: đạo hàm ảnh, làm trơn ảnh, trích xuất biên cạnh
trong ảnh.
12
1.2.4. Một số layer chính trong Keras
1.2.4.1. Convolution Layer
Convolutional Layer được sử dụng cho việc bóc tách các đặc điểm của ảnh
để nó có thể hiểu rõ hơn về cách bố trí và bố cục các pixel giữa các data và label
[4].
Có 3 loại convolution:
Convolution 1D: Tích chập 1 chiều sẽ chỉ cho phép hàm filter di chuyển theo
1 chiều, (nghĩa là image của ta phải convert về dạng vector) chính là độ dài của
vector
Convolution 2D: Tích chập 2 chiều sẽ cho phép hàm filter di chuyển theo 2
chiều (theo cả width và height). Đây cũng là lớp convolution mà tác giả sử dụng
trong đề tài mình.
Hình 1-3: Minh họa về lớp convolution 2D.
Convolution 3D: Tương tự ta cũng có tích chập 3 chiều là khi hàm filter có
thể di chuyển thêm cả chiều sâu của ảnh nữa.
Ngoài việc lựa chọn filter của ta slide được theo những chiều nào, ta còn có
thể kiểm soát được tốc độ slide của filter. Ta có thể điều chỉnh tốc độ này trên từng
chiều của convolution. Nếu như tốc độ trượt cao, có thể một số nội dung của bức
ảnh sẽ không được filter “nhấn mạnh”, nhưng bù lại giúp tốc độ tính toán nhanh
hơn (vì số lượng phần ảnh thực hiện tích chập ít đi). Với những bức ảnh lớn, chiều
dài và rộng lớn, việc tăng slide sẽ giúp giảm thiểu chi phí tính toán mà data không
bị mất mát nhiều. Sau khi tính tích chập với filter, ta chỉ cần cho kết quả đi qua
hàm ReLU để loại bỏ hết những số âm.
13
1.2.4.2. Conv2D Transpose
Thông thường khi qua một lớp layer kích thước input thường bị thay đổi theo
chiều hướng nhỏ hơn hoặc giữ nguyên, nhưng đây là bài toán tạo ra một output có
kích thước lớn hơn, nên Conv2Dtranspose sẽ giúp tăng kích thước của output.
1.2.4.3. Pooling Layer
Pooling layer trong mạng CNN thực hiện công việc loại bỏ bớt những thông
tin không cần thiết sau khi thực hiện tích chập. Điều này rất hữu ích khi ta sử dụng
mạng cho ảnh có kích cỡ lớn (dimentional reduction). Tuy nhiên nếu lạm dụng loại
layer này cũng có thể khiến data đi qua bị mất dữ liệu.
1.2.4.4. Fully-Connected Layer
Cũng như khi sử dụng mạng ANN truyền thống để xử lý những data có dạng
matrix như image. Ta cần flatten data về dạng vector, sau đó đưa vào ANN như
bình thường. Hay nói cách khác phần Fully-Connected Layer (FC Layer) chính là
một mạng NN được gắn vào phần cuối của CNNs. Phần FC-Layer này chính là
nơi từ các feature được extract bởi phần convolution và pooling tạo ra kết quả cuối
cùng (Classification hoặc Regression).
1.2.5. Quy trình làm việc của Keras:
Quy trình làm của Keras trải qua 4 quá trình:
Xây dựng dữ liệu để đào tạo.
Xây dựng model .
Cấu hình lại model.
Train model.
Hình 1-4: Quy trình làm việc của Keras.
- Xem thêm -