You are on page 1of 43

BỘ CÔNG AN

TRƯỜNG ĐẠI HỌC KỸ THUẬT - HẬU CẦN CAND

PHẠM THÀNH HIỀN

ĐỀ TÀI KHOA HỌC SINH VIÊN

NGHIÊN CỨU ỨNG DỤNG THUẬT TOÁN HỌC SÂU ĐỂ


LÀM RÕ ẢNH MỜ, PHỤC VỤ CÔNG TÁC NGHIỆP VỤ
ĐIỀU TRA CỦA LỰC LƯỢNG CẢNH SÁT

MÃ SỐ: ĐTSV.2019……..

Bắc Ninh, năm 2019


BỘ CÔNG AN
TRƯỜNG ĐẠI HỌC KỸ THUẬT - HẬU CẦN CAND

ĐỀ TÀI KHOA HỌC SINH VIÊN

NGHIÊN CỨU ỨNG DỤNG THUẬT TOÁN HỌC SÂU ĐỂ


LÀM RÕ ẢNH MỜ, PHỤC VỤ CÔNG TÁC NGHIỆP VỤ
ĐIỀU TRA CỦA LỰC LƯỢNG CẢNH SÁT

MÃ SỐ: ĐTSV.2019……..

(Nhóm) Sinh viên thực hiện: Phạm Thành Hiền - B1D5


Lê Thị Oanh – B3D5
Lê Đình Tùng – B1D6
Trần Viết Thiện – B2D6
Nguyễn Hoài Nam – B2D6

Giáo viên hướng dẫn: Trung tá, PGS.TS Hoàng Việt Long

Bắc Ninh, năm 2019


Chủ nhiệm: Phạm Thành Hiền – Lớp B1D5
Thành viên: Lê Thị Oanh – Lớp B3D5
Lê Đình Tùng – Lớp B1D6
Trần Viết Thiện – Lớp B2D6
Nguyễn Hoài Nam – Lớp B2D6

Cán bộ hướng dẫn chính: Trung tá, PGS.TS Hoàng Việt Long

Công trình được bảo vệ tại:


HỘI ĐỒNG NGHIỆM THU CÔNG TRÌNH SV NCKH
TRƯỜNG ĐẠI HỌC KỸ THUẬT - HẬU CẦN CAND
Ngày … tháng … năm 20…
LỜI CAM ĐOAN
Tôi xin cam đoan đề tài: “Nghiên cứu ứng dụng thuật toán học sâu để làm rõ ảnh
mờ, phục vụ công tác nghiệp vụ điều tra của lực lượng cảnh sát” là một công trình
nghiên cứu độc lập không có sự sao chép của người khác. Trong quá trình viết bài
có sự tham khảo một số tài liệu có nguồn gốc rõ ràng, dưới sự hướng dẫn của
Thầy PGS.TS Hoàng Việt Long. Tôi xin cam đoan nếu có vấn đề gì tôi xin chịu
hoàn toàn trách nhiệm.
Bắc Ninh, ngày 11 tháng 04 năm 2019
CHỦ NHIỆM ĐỀ TÀI

Phạm Thành Hiền

i
LỜI CẢM ƠN
Với lòng biết ơn sâu sắc và tình cảm chân thành cho phép nhóm nghiên cứu
gửi lời cảm ơn chân thành nhất tới:
– Trường Đại học Đại học Kỹ thuật – Hậu cần CAND, khoa Công nghệ
thông tin cùng các giảng viên đã tận tình chỉ dạy và tạo điều kiện giúp đỡ nhóm
nghiên cứu trong quá trình học tập, nghiên cứu và hoàn thành đề tài nghiên cứu
khoa học.
– Đặc biệt nhóm xin bày tỏ lòng biết ơn sâu sắc đến Thầy PGS.TS Hoàng
Việt Long là người trực tiếp hướng dẫn, luôn tận tình chỉ bảo, giúp đỡ và động
viên nhóm trong suốt quá trình nghiên cứu và hoàn thành đề tài nghiên cứu này.
– Cảm ơn gia đình, bạn bè đã luôn khích lệ, động viên và giúp đỡ nhóm
trong quá trình học tập và nghiên cứu khoa học.
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, nhóm rất mong nhận được sự thông cảm, chỉ dẫn, giúp đỡ và đóng góp ý kiến
của các nhà khoa học, của quý thầy cô và các cán bộ quản lý.
Xin chân thành cảm ơn!

ii
TÓM TẮT ĐỀ TÀI KHOA HỌC
1. Chủ nhiệm đề tài:
Phạm Thành Hiền Lớp: B1D5
Chuyên ngành: Công nghệ thông tin.
2. Cán bộ hướng dẫn:
Trung tá, PGS.TS Hoàng Việt Long, khoa Công nghệ thông tin, Trường
Đại học Kỹ thuật – Hậu cần CAND.
3. Tên công trình:
Nghiên cứu ứng dụng thuật toán học sâu để làm rõ ảnh mờ, phục vụ công
tác nghiệp vụ điều tra của lực lượng cảnh sát.
4. Mục tiêu của đề tài
- Làm rõ các nội dung lý thuyết của thuật toán học sâu, tìm hiểu các kiến
trúc mạng học sâu phổ biến và ứng dụng.
- Xây dựng phần mềm ứng dụng thuật toán học sâu để làm rõ ảnh mờ.
5. Nội dung nghiên cứu
Đề tài nghiên cứu nội dung sau:
- Tìm hiểu thuật toán học sâu, các khái niệm liên quan và ứng dụng.
- Tìm hiểu các mạng nơ-ron của thuật toán học sâu, lựa chọn ra mạng nơ-
ron phù hợp để xây dựng phần mềm làm rõ ảnh mờ.
- Xây dựng phần mềm làm rõ ảnh mờ bằng thuật toán học sâu.
6. Cấu trúc báo cáo
Nội dung của báo cáo kết quả nghiên cứu được kết cấu thành 03 chương
như sau:
Chương 1: Nghiên cứu về thuật toán học sâu và thuật toán làm rõ ảnh mờ.
Chương 2: Kỹ thuật Deep Learning và các kiến thức nền tảng.
Chương 3: Mô phỏng thuật toán làm rõ ảnh mờ, thử nghiệm, đánh giá và
ứng dụng trong lực lượng cảnh sát.

iii
MỤC LỤC
LỜI CAM ĐOAN ................................................................................................. i
LỜI CẢM ƠN ...................................................................................................... ii
TÓM TẮT ĐỀ TÀI KHOA HỌC ..................................................................... iii
MỤC LỤC ........................................................................................................... iv
DANH MỤC HÌNH ẢNH ................................................................................ viv
DANH MỤC VIẾT TẮT ................................................................................ vivi
CHƯƠNG 1: NGHIÊN CỨU VỀ THUẬT TOÁN HỌC SÂU VÀ THUẬT
TOÁN LÀM RÕ ẢNH MỜ ................................................................................ 1
1.1. Bài toán làm rõ ảnh mờ .............................................................................. 1
1.1.1. Giới thiệu............................................................................................. 1
1.2. Giới thiệu về thuật toán học sâu ................................................................. 2
1.2.1. Khái niệm và các thuật ngữ liên quan ................................................. 2
1.2.2. Lịch sử phát triển................................................................................. 5
1.2.3. Các ứng dụng trong thực tiễn .............................................................. 6
1.3. Các nghiên cứu liên quan ........................................................................... 7
1.3.1. LeNet ................................................................................................... 8
1.3.2. AlexNet ............................................................................................... 8
1.3.3. VGGNet ............................................................................................ 10
1.3.4. GoogLeNet ........................................................................................ 10
1.3.5. Residual Neural Network .................................................................. 10
CHƯƠNG 2: KỸ THUẬT DEEP LEARNING VÀ CÁC KIẾN THỨC NỀN
TẢNG ................................................................................................................. 13
2.1. Artificial Neural Network – ANN ........................................................... 13
2.1.1. Kiến trúc của ANN............................................................................ 13
2.1.2. Quá trình xử lý thông tin của ANN................................................... 14
2.1.3. Quá trình học của Supervised ANN .................................................. 15
2.2. Convolutional Neural Networks .............................................................. 16
2.2.1. Kiến trúc mạng CNN ........................................................................ 16
2.2.2. Các thành phần cơ bản của mạng CNN ............................................ 17
2.3. Residual Neural Network ......................................................................... 19

iv
2.3.1. Building block ................................................................................... 20
2.3.2. Kiến trúc của Residual Neural Network ........................................... 21
2.4. Xây dựng mạng nơron để làm rõ ảnh mờ sử dụng CNN ......................... 22
CHƯƠNG 3: MÔ PHỎNG THUẬT TOÁN LÀM RÕ ẢNH MỜ, THỬ
NGHIỆM, ĐÁNH GIÁ VÀ ỨNG DỤNG TRONG LỰC LƯỢNG CẢNH
SÁT ..................................................................................................................... 24
3.1. Cài đặt môi trường ................................................................................... 24
3.2. Các thư viện cần thiết ............................................................................... 24
3.2.1. Theano ............................................................................................... 25
3.2.2. SciPy.................................................................................................. 26
3.2.3. Numpy ............................................................................................... 27
3.3. Cài đặt chương trình ................................................................................. 27
3.4. Kiểm thử và đánh giá ............................................................................... 28
TÀI LIỆU THAM KHẢO ................................................................................ 31
LÝ LỊCH TRÍCH NGANG .............................................................................. 32
XÁC NHẬN HOÀN THÀNH CÔNG TRÌNH ............................................... 33

v
DANH MỤC HÌNH ẢNH
Hình 1.1. Hình ảnh được xử lý bởi công nghệ EnhanceNet-PAT
Hình 1.2. Cấu trúc Lenet5
Hình 1.3. Kiến trúc AlexNet
Hình 1.4. Một module của Inception
Hình 1.5. So sánh buidling block với một phần mạng convolution thường
Hình 2.1. Mô hình neuron của McCulloch và Pitts
Hình 2.2. Mô hình ANN cơ bản
Hình 2.3. Thuật toán quá trình học của supervised
Hình 2.4. Mô hình mạng neural tích chập
Hình 2.5. Kiến trúc CNN thông thường
Hình 2.6. So sánh ANN với CNN.
Hình 2.7. Các kiến trúc mạng của ResNet trên tập dataset ImageNet
Hình 2.8. Làm rõ ảnh mờ
Hình 3.1. Môi trường cài đặt
Hình 3.2. Kết quả làm rõ khuôn mặt
Hình 3.3. Kết quả khi nâng cao chất lượng ảnh chân dung
Hình 3.4. Hình ảnh nâng cao chất lượng ảnh bị mờ

vi
DANH MỤC VIẾT TẮT

ANN Artificial Neural Network


CNN Convolutional Neural Networks
RNN Residual Neural Network

vii
CHƯƠNG 1: NGHIÊN CỨU VỀ THUẬT TOÁN HỌC SÂU VÀ
THUẬT TOÁN LÀM RÕ ẢNH MỜ
1.1. Bài toán làm rõ ảnh mờ
1.1.1. Giới thiệu
Năm 1997, Deep Blue đã đánh bại đại kiện tướng cờ vua thế giới Garry
Kasparov. Nhưng cũng cùng chiếc siêu máy tính đó, lại cảm thấy khó khăn trong
việc nhận diện được đối thủ của mình là Garry Kasparov hay ít nhất là biết được
chính nó đang ở trong nhà hay ngoài trời. Con người thường xem thường những
việc mình làm hằng ngày như cách đi đứng, ăn uống, cách ta nhận biết được người
khác, vật thể, những việc tưởng chừng như ta làm trong vô thức lại là thách thức
lớn đối với máy tính (thậm chí là siêu máy tính).
Trong những năm gần đây, với sự phát triển như vũ bão của các thiết bị
phần cứng, tốc độ tính toán của máy tính cũng nhớ đó được tăng cao. Những thuật
toán tưởng chừng như không thể thực hiện được do độ phức tạp quá cao giờ đã
trở thành hiện thực và học máy cũng không phải ngoại lệ. Nhờ sự hồi sinh của
những thuật toán học máy, học sâu mà ngành trí tuệ nhân tạo cũng được sang
trang mới, đánh dấu cho sự khởi đầu của cuộc cách mạng công nghệ 4.0. Bên cạnh
đó, không thể không nhắc đến tốc độ phát triển của mạng Internet, tạo điều kiện
cho tất cả mọi người trên thế giới có thể truy cập, đến gần nhau hơn. Nhiều lĩnh
vực như mạng xã hội, thương mại điện tử, Internet of things (IoT) cũng từ đó được
sinh ra, tạo ra một lượng dữ liệu khổng lồ. Những trang mạng xã hội, các thiết bị
IoT mỗi ngày đều tạo ra hàng trăm hàng triệu tấm ảnh dẫn đến nhu cầu về phân
loại các tấm ảnh, quản lý cũng như tạo ra nhưng chương trình trí tuệ nhân tạo
nhằm phục vụ đời sống càng tăng cao. Đó cũng chính là động lực chính để chọn
đề tài này: một mô hình có thể làm rõ ảnh mờ.
Khi AI và nhiếp ảnh kỹ thuật số ‘bắt tay’ nhau thì người dùng sẽ được
thưởng thức những công nghệ thông minh đáng ngạc nhiên. Gần đây, các nghiên
cứu AI về hình ảnh kỹ thuật số của Max Planck Intelligent Systems đã giới thiệu
một website miễn phí phục hồi ảnh chụp ở độ phân giải thấp thành ảnh có độ nét
cao bằng trí tuệ nhân tạo khiến con người phải kinh ngạc...

1
Hình 1.1. Hình ảnh được xử lý bởi công nghệ EnhanceNet-PAT
Những chi tiết đã được ‘tô mượt’ rõ ràng là có chút khác biệt so với phiên
bản gốc nhưng các pixel bị mất đã được phục hồi khá đẹp nhìn như trên thực tế,
và bạn sẽ phải xem rất kỹ mới phân biệt được.
Trước đây, các công nghệ tăng chất lượng ảnh được giới thiệu thường hoạt
động bằng cách ‘lấp đầy’ các điểm ảnh và các chi tiết bị thiếu bằng cách tính toán
dựa vào những điểm ảnh xung quanh. Kết quả của các thuật toán trên thường bị
mờ và không đạt yêu cầu. Điều hay mà các nhà khoa học khám phá ra công nghệ
trí tuệ nhân tạo mới ngày nay là ứng dụng machine-learning cho phép máy ‘học’
và nhận diện được những đặc điểm của các bức ảnh có độ phân giải thấp rồi nghiên
cứu để tìm ra các phiên bản độ phân giải cao phù hợp.
Một khi được 'đào tạo' theo cách này, các thuật toán có khả năng sửa ảnh
và cho kết quả dự đoán tốt nhất về một phiên bản 'gốc' có độ phân giải cao chỉ từ
một bức ảnh.
“Bằng khả năng tìm điểm ảnh chất lượng kém và tạo ra các bản mẫu hoàn
chỉnh cho một bức ảnh có độ phân giải thấp, công nghệ trí tuệ nhân tạo
EnhanceNet-PAT có thể tự phân tích được lông của con chim cần bổ sung những
gì để trông cho đẹp hơn và nó sẽ tự thêm các pixel vào hình sao cho hợp lý,” viện
Max Planck chia sẻ.
1.2. Giới thiệu về thuật toán học sâu
1.2.1. Khái niệm và các thuật ngữ liên quan
Artificial Intelligence (AI)
2
Artificial Intelligence-trí tuệ nhân tạo là lĩnh vực nghiên cứu mà một máy
tính (và hệ thống của nó) phát triển khả năng hoàn thành thành công các nhiệm
vụ phức tạp mà thường đòi hỏi trí thông minh của con người như nhận thức thị
giác, nhận dạng giọng nói, ra quyết định và dịch thuật. AI thường được định nghĩa
là " khoa học của máy tính làm điều đó điều này đòi hỏi trí thông minh khi thực
hiện”. Nói cách khác, trí tuệ nhân tạo có liên quan đến việc giải quyết các nhiệm
vụ dễ dàng cho con người nhưng khó cho máy tính.
Machine learning (ML)
Machine learning- học máy là lĩnh vực nghiên cứu áp dụng các nguyên tắc
khoa học máy tính và thống kê để tạo ra các mô hình thống kê, được sử dụng cho
các dự đoán trong tương lai (dựa trên nguồn dữ liệu trong quá khứ hay dữ liệu
lớn) và xác định (khám phá) các mẫu trong dữ liệu. ML là một loại trí tuệ nhân
tạo cho phép các ứng dụng phần mềm trở nên chính xác hơn trong việc dự đoán
các kết quả mà không được lập trình một cách rõ ràng.
ML có khả năng cho một máy tính xuất hoặc làm một cái gì đó mà nó không
được lập trình để làm. Trong khi ML nhấn mạnh vào việc đưa ra dự đoán về tương
lai, AI thường tập trung vào các máy tính lập trình để đưa ra quyết định. Nếu bạn
sử dụng một chương trình thông minh có liên quan đến hành vi giống như con
người, nó có thể là AI. Tuy nhiên, nếu các tham số không được tự động học ( hoặc
có nguồn gốc) từ dữ liệu, nó không phải là ML.
Trong cốt lõi của nó, ML chỉ đơn giản là một cách để đạt được AI. ML là
loại của AI có thể bao gồm nhưng không giới hạn đối với mạng nơ ron và deep
learning”.
Deep learning (DL)
Deep learning- học sâu được biến đến như là mạng nơ ron sâu, một trong
những cách tiếp cận đến ML. Các phương pháp tiếp cận chính khác bao gồm học
quyết định cây, lập trình logic quy nạp, phân cụm, tăng cường học tập và mạng
Bayesian.
DL là một loại đặc biệt của ML. Nó liên quan đến việc nghiên cứu các thuật
toán liên quan dến ANN và ML có chứa nhiều hơn một lớp ẩn.
DL bao gồm mô hình toán học, có thể được coi là một thành phần của các
khối đơn giản của một loại nhất định và là nơi một số khối này có thể được điều
chỉnh để dự đoán tốt hơn kết quả cuối cùng.
Từ "deep” có nghĩa là thành phần có nhiều khối này xếp chồng lên nhau-
trong một hệ thống phân cấp làm tăng độ phức tạp. Đầu ra được tạo ra thông qua

3
một cái gì đó gọi là Black-propagation bên trong của một quá trình lớn hơn được
gọi là Gradient descent, cho phép thay đổi các tham số theo cách cải thiện mô
hình của bạn.
Các thuật toán học máy truyền thống là tuyến tính. Các thuật toán học sâu
được xếp chồng lên nhau trong một hệ thống phân cấp làm tăng độ phức tạp.
Thử tưởng tượng một đứa trẻ đang cố gắng tìm hiểu những gì của một con
chó bằng việc chỉ tay vào các đối tượng. Cha mẹ sẽ nói: đó chính là một con chó”
hoặc " không, đó không phải là một con chó”. Khi em bé tiếp tục chỉ tay vào một
vật thể, đứa trẻ trở nên ý thức hơn về các đặc điểm và đặc tính của những con chó
đều có.
Trong trường hợp này, đứa trẻ đang làm sáng tỏ một trừu tượng phức tạp
(khái niệm về con chó) bằng cách xây dựng một hệ thống phân cấp của sự phức
tạp ngày càng tăng được tạo ra. Trong mỗi bước, đứa bé áp dụng kiến thức thu
được từ lớp phân cấp trước đó.
Các chương trình phân mềm sử dụng cách tiếp cận DL theo cách tương tự
như vậy. DL là một cách để tự động phân tích dự đoán. Sự khác biệt duy nhất là
đứa trẻ co thể mất vài tuần để học cái gì đó mới và phức tạp, nhưng một chương
trình máy tính có thể làm những điều đó chỉ sau vài phút.
Một mạng nơ ron là một dạng đặc biệt của việc học sâu, nhằm mục đích
xây dựng các mô hình tiên đoán để giải quyết các nhiệm vụ phức tạp bằng cách
phơi bày một hệ thống với một lượng lớn dữ liệu. Hệ thống sau đó được phép tự
tìm hiểu cách đưa ra các dự đoán tốt nhất.
Bạn cũng có thể đặt nó theo cách này- học sâu là một phiên bản nâng cao
của mạng nơ ron.
Supervised learning và unsupervised learning
Một vài mạng nơ ron sử dụng học giám sát trong khi đó những mạng còn
lại sử dụng học không giám sát.
Supervised learning là một loại thuật toán học máy được dùng nếu một ai
muốn khám phá các mẫu đã biết trên dữ liệu không xác định.
Giả sử, nếu một thuật toán học máy được cung cấp một vài hình ảnh của
những đối tượng khác nhau với các loại khác (động vật hoặc tòa nhà). Trong
supervised learning, thuật toán sẽ tìm hiểu cách nói loại đối tượng nào có trong
một hình ảnh cụ thể không được trình bày cho thuật toán trong giai đoạn đào tạo
của nó. Học tập được giám sát- supervised learning được hướng dẫn bởi dữ liệu
được dán nhãn được nạp vào máy.

4
Unsupervised learning- học tập không giám sát là loại thuật toán học máy,
được sử dụng nếu người dùng muốn khám phá các mẫu không xác định trong dữ
liệu đã biết.
Giả sử, nếu một siêu thị có một tập dữ liệu với danh sách mua sắm của
khách hàng. Người được ủy quyền tại siêu thị có thể sử dụng unsupervised
learning để hiểu loại sản phẩm mà khách hàng có khả năng mua cùng nhau. Vì
vậy, nhân viên siêu thị có thể đặt các sản phẩm gần nhau có khả năng được mua
cùng nhau.
Trong một vài trường hợp, ANN triển khai học tập tăng cường. Trong
trường hợp này, ANN đưa ra quyết định bằng cách quan sát môi trường của nó.
Nếu quan sát là âm, mạng sẽ điều chỉnh trọng số của nó để có thể đưa ra quyết
định bắt buộc khác vào lần sau.
Neural Networks và trí óc loài người
Máy tính và bộ não con người có nhiều điểm chung, nhưng về cơ bản chúng
lại rất khác nhau. Điều gì xẩy ra nếu bạn kết hợp điều tốt nhất từ hai thế giới- sức
mạnh hệ thống của một máy tính và các tế bào kết nối mật độ cao của một bộ não?
Đây là những gì các nhà khoa học đã làm trong vài thập kỷ qua với sự giúp đỡ
của các mạng nơ ron.
Một bộ não con người điển hình chứa một cái gì đó giống như 100 tỷ tế bào
nơ ron thần kinh (tế bào não). Mỗi tế bào thần kinh được tạo thành từ một tế bào
(khối lượng trung tâm của tế bào) với một số kết nối xuất hiện: nhiều nhánh (đầu
vào của tế bào mang thông tin về thân tế bào) và một sợi đơn (đầu ra của tế bào
thông tin đi)
Một nơ ron đơn chuyển một thông điệp tới một nơ ron khác trên giao diện
này nếu tổng các tín hiệu đầu vào trọng số từ một hoặc nhiều nơ ron (tổng kết)
vào nó đủ lớn (vượt quá ngưỡng) để truyền tải thông điệp. Nơ ron tương tác và
giao tiếp với nhau thông qua một giao diện bao gồm các thiết bị đầu cuối trục
dược kết nối với các nhánh dọc qua một khoảng trống (khớp thần kinh).
1.2.2. Lịch sử phát triển
Năm 1763, một bài luận về xác suất của Thomas Bayes được xuất bản 2
năm sau khi ông qua đời, lúc đó í tai quan tâm đến nó. Gần nửa thế kỷ sau, vào
năm 1812 nó được nhà toán học Laplace hợp thức hóa thành lý thuyết xác suất
mà ngày nay chúng ta gọi là Định lý Bayes, cốt lõi của mạng Bayes hay Belief
Network, là một trong những cấu trúc đóng góp lớn đến thành công của DL ngày
nay (Deep Belief Network).
5
Năm 1770, máy mô phỏng AI đầu tiên được giới thiệu, người Thổ Nhĩ Kỳ
đã lừa Napoleon rằng một chiếc máy của họ có thể chơi cờ vua. Năm 1857, họ
tiết lộ rằng chiếc máy đó đơn giản chỉ là có một người ngồi bên trong. Lúc đó,
chả ai biết rằng 140 năm sau, một AI thực sự đánh bại đại kiện tướng Kasparov
bằng những nước đi mà nó tạo ra.
Năm 1805, lý thuyết về Least Squares ra đời, thời đó được sử dụng trong
thiên văn và trắc địa, không ai biết được ngày nay nó là hàm loss cơ bản nhất của
Artificial Neural Network (ANN).
Năm 1936, lấy cảm hứng từ việc con người thực hiện các công việc bình
thường như thế nào, Alan Turing định hình nên ý niệm của ông về một Universal
Machine (máy toàn năng). Sau nhiều năm nghiên cứu, ông công bố bài báo của
mình dưới dạng một bài luận cùng với một ý tưởng về bài kiểm tra cho một chiếc
máy mô phỏng con người: Turing Test. Có lẽ, ông không biết rằng, 60 năm sau
khi ông mất, những AI đã bắt đầu passed qua bài Test.
Năm 1957, ý tưởng về Perceptron, dựa trên cấu trúc tế bào thần kinh trong
não bộ con người, lần đầu tiên được công bố, khi đó nó bao trùm cả truyền thông
về một tương lai tươi sáng sắp tới gần của AI. Cùng với đó, 13 năm sau, một khái
niệm bổ sung được phát minh bởi Seppo Linnainmaa, gọi là Auto Differentation
(đạo hàm tự động), là hình thái đầu tiên của lý thuyết mà chúng ta gọi là
Backpropagation ngày nay.
Các thuật toán cơ bản khác được phát minh như Nearest Neighbor năm
1967 hay TF-IDF năm 1972 chủ yếu liên quan đến xác suất thống kê, nhưng đây
là 2 thuật toán quan trọng nhất, lần lượt tạo nên 2 nhánh lớn của DL hiện nay:
Computer Vision (CV) & Pattern Recognition và Natural Language Processing
(NLP) & Speech Recognition.
1.2.3. Các ứng dụng trong thực tiễn
Hệ gợi ý
Hệ gợi ý là một trong những yếu tố đóng vai trò quan trọng trong sự thành
công của những ông lớn như Netflix, Amazon, Youtube, ... Với việc áp dụng hệ
gợi ý, hệ thống có khả năng đưa ra những gợi ý về sản phẩm mà người dùng có
thể muốn mua, từ đó tăng lợi nhuận và cung cấp những trải nghiệm tốt cho khách
hàng.
Hệ gợi ý được chia thành 2 mảng lớn: Content-based và Collaborative
Filtering. Phương pháp Content-based hướng tới việc phân tích những thuộc tính
của từng sản phẩm và khám phá sở thích của người dùng tới từng thuộc tính đó
6
để đưa ra những sản phẩm phù hợp cho từng người dùng. Phương pháp
Collaborative Filtering thì hướng tới việc phân tích những điểm tương đồng giữa
các người dùng và đưa ra gợi ý cho một người dùng dựa trên những người dùng
có sự tương đồng với người dùng đó (User Collaborative Filtering) hoặc dựa trên
những sản phẩm có độ tương đồng với các sản phẩm người dùng đã tiêu thụ (Item
Collaborative Filtering). Cả 2 phương pháp trên đều có thể được cài đặt bằng Deep
Learning trên những tập dữ liệu khổng lồ để đưa ra các gợi ý về sản phẩm cho
người dùng.
Phân tích ngữ nghĩa văn bản
Rất nhiều ứng dụng và hệ thống hiện nay có chức năng review dành cho
người dùng. Qua việc đưa ra review cho một sản phẩm, người dùng có thể nêu ra
những ý kiến cá nhân của mình, sự hài lòng hay không hài lòng về sản phẩm đó.
Giờ đây, với công nghệ Deep Learning và sự ra đời của mạng hồi quy (Recurrent
Neural Network), chúng ta đã có khả năng tách lọc ra các thông tin từ các phản
hồi của người dùng. Từ những thông tin này, ta có thể đánh giá về mức độ hài
lòng của khách hàng tới sản phẩm hoặc lọc ra những từ khóa quan trọng về sản
phẩm đó.
Chatbots
Chatbots là một công nghệ đã có từ khá lâu nhưng mới chỉ bùng nổ vào
khoảng 10 năm gần đây. Với sự ra đời của mạng hồi quy, việc phân tích ngữ nghĩa
của các câu hội thoại đã trở nên chính xác hơn rất nhiều và từ đó các chatbot có
khả năng phân tích thông tin từ những câu hội thoại của người dùng và đưa ra
những phản hồi hợp lý.
Nhận diện hình ảnh
Đây là một trong những mảng lớn của Deep Learning với rất nhiều những
ứng dụng thực tiễn. Công nghệ nhận diện và phân loại hình ảnh có ứng dụng trực
tiếp trên mảng computer vision, giúp các hệ thống trí tuệ nhân tạo có khả năng
phân tích và xử lý hình ảnh như một con người. Từ đó, các hệ thống này có khả
năng thực hiện các tác vụ như: nhận diện khuôn mặt, nhận diện thực thể, phân loại
ảnh và video, ...
1.3. Các nghiên cứu liên quan

7
1.3.1. LeNet

Hình 1.2. Cấu trúc Lenet5


Ngoài cách tiếp cận cổ điển như trên, Yann LeCun đã đưa ra mô hình
convolution neural network (CNN) lần đầu tiên ở năm 1990 và được dùng để đọc
mã zip, đọc ký tự, ....Tuy nhiên ở thời điểm lúc bấy giờ, phần cứng của máy tính
vẫn chưa theo kịp với độ phức tạp của mô hình CNN, chính vì thế mãi đến năm
2012, mô hình CNN mới được chính thức đưa vào áp dụng rộng rãi trong lĩnh vực
thị giác máy tính. Hướng nghiên cứu từ đó cũng chuyển sang tập trung vào các
kỹ thuật để cải tiến mô hình CNN.
1.3.2. AlexNet
Kiến trúc AlexNet lớn hơn nhiều so với các kiến trúc CNNs được sử dụng
trong thị giác máy tính trước kia (trước năm 2010), vd kiến trúc LeNet của Yann
LeCun năm 1998. Nó có 60 triệu tham số và 650000 neural và tốn khoảng từ năm
đến sáu ngày huấn luyện trên hai GPU GTX 580 3GB. Ngày nay, với sự tiến bộ
vượt bật của GPU, chúng ta có nhiều kiến trúc CNN có cấu trúc phức tạp hơn, và
hoạt động rất hiệu quả trên những tập dữ liệu phức tạp. Nhưng tại thời điểm năm
2012 thì việc huấn luyện mô hình với lượng tham số và neural lớn như vậy là một
vấn đề cực kỳ khó khăn. Nhìn kỹ vào hình bên dưới để hiểu rõ hơn về kiến trúc
AlexNet.

8
Hình 1.3. Kiến trúc AlexNet
AlexNet bao gồm 5 convolution Layer và 3 Fully connected Layers.
Những convolution layer ( hay còn gọi với tên khác là các filter) rút trích
các thông tin hữu ích trong các bức ảnh. Trong một convolution layer bất kỳ
thường bao gồm nhiều kernel có cùng kích thước. Ví dụ như convolution layer
đầu tiên của AlexNet chứa 96 kernel có kích thước 11x11x3. Thông thường thì
width và height của một kernel bằng nhau, và độ sâu (depth) thường bằng số lượng
kênh màu
Convolutional 1 và convolution 2 kết nối với nhau qua một Overlapping
Max Pooling ở giữa. Tương tự như vậy giữa convolution 2 và convolution 3.
Convolutional 3, convolution 4, convolution 5 kết nối trực tiếp với nhau, không
thông qua trung gian. Convolutional 5 kết nối fully connected layter 1 thông qua
một Overlapping Max pooling, tiếp theo mà một fully connected layter nữa. Và
cuối cùng là một bộ phân lớp softmax với 1000 lớp nhãn (các bạn có thể xem hình
kiến trúc mạng AlexNet ở trên để có cái nhìn tổng quát hơn).
ReLU nonlinerity được sử dụng sau tất các các convolution và fully
connected layer. Trước đây, ReLU nonlinerity của lớp convolution 1 và 2 thường
theo sau bởi một bước chuẩn hoá cục bộ (local normalization) rồi mới thực hiện
pooling. Tuy nhiên, các nghiên cứu sau đó nhận thấy rằng việc sử dụng
normalization không thật sự hữu ích. Do vậy chúng ta sẽ không đi chi tiết về vấn
đề đó.

9
1.3.3. VGGNet
VGGNet được phát minh bởi VGG ( Nhóm hình học trực quan ) từ Đại học
Oxford, mặc dù VGGNet là người về nhì , không phải là người chiến thắng của
ILSVRC ( Cuộc thi nhận dạng hình ảnh quy mô lớn ImageNet ) 2014 trong nhiệm
vụ phân loại , đã cải thiện đáng kể so với ZFNet (Người chiến thắng năm 2013)
và AlexNet (Người chiến thắng năm 2012). Và GoogLeNet là người chiến thắng
của ILSVLC 2014, tôi cũng sẽ nói về nó sau. Tuy nhiên, VGGNet đã đánh bại
GoogLeNet và giành được nhiệm vụ bản địa hóa trong ILSVRC 2014.
Và đó là năm đầu tiên có những mô hình học sâu đạt được tỷ lệ lỗi dưới
10%. Điều quan trọng nhất là có nhiều mô hình khác được xây dựng dựa trên
VGGNet hoặc dựa trên ý tưởng 3 × 3 của VGGNet cho các mục đích khác hoặc
các tên miền khác.
1.3.4. GoogLeNet
Mô hình đạt giải nhất ở ILSVRC 2014 là mô hình CNN được đề xuất bởi
Szegedy et al. đến từ Google. Khi thiết kế một mô hình CNN, một trong những
việc chúng ta nghĩ đến là phải sử dụng filter có kích thước như thế nào, 1 × 1 filter
hay 3 × 3 filter, hay thậm chí là 5 × 5 filter. Đối với GoogleNet, chúng ta không
cần phải nghĩ nhiều, tại sao lại không sử dụng tất cả các filter kể trên. Đó chính là
điểm đặc trưng của GoogleNet, họ đưa ra module Inception và sử dụng các filter
có các kích thước khác nhau (bao gồm cả 1 × 1, 3 × 3 và 5 × 5 filter). Và điểm
đặc biệt thứ hai của GoogleNet là họ không sử dụng lớp fully-connected ở cuối
mạng như các mô hình CNN khác.
Đóng góp chính của GoogleNet là việc đưa ra module Inception làm giảm
đáng kể số parameters của mạng (4M parameters so với 60M parameters của
AlexNet). Mô hình GoogleNet đã chiến thắng ILSCRC 2014 ở task classification
(6.67% top 5 error).
1.3.5. Residual Neural Network
Residual network (ResNet) được Kaiming He đưa ra vào năm 2015 và là
mô hình đạt giải nhất trong cuộc thi ILSVRC 2015 ở các tasks: ImageNet
detection, ImageNet localization. Vào thời điểm đó, ResNet là mô hình có nhiều
layer nhất (152 layers) gấp 8 lần số layer của VGG (19 layers - ILSVRC 2014) và
GoogleNet (22 layers ILSVR 2014).

10
Hình 1.4. Một module của Inception
Theo như tính chất của một mạng neuron, nếu ta tăng số layer lên thì chắc
chắn khả năng biểu diễn, hay xấp xỉ hàm của mạng neuron đó càng tăng cao. Vậy
tại sao các kiến trúc trước như VGG và GoogleNet họ lại không tăng số layer lên?
Tất nhiên việc tăng số layer cũng đồng nghĩa với việc gặp phải nhiều khó khăn
mà trong đó nổi bật là các vấn đề về vanishing/exploding gradients, optimization.
Và Resnet đã giải quyết được các vấn đề đó bằng cách đưa ra residual learning và
identity mapping.
Hình ảnh được lấy từ khóa MOOC Coursera Convolution Neural Networks
của Andrew Ng. Kết quả của các đội ở ISLVRC vào các năm 2012, 2013 và 2014
đối với bài toán phân loại.
Đội Năm Vị trí Top-5 error
SuperVision (AlexNet) 2012 1st 16.4%
Clarifai 2013 1st 11.7%
MSRA 2014 3rd 7.35%
VGG 2014 2nd 7.32%
GoogLeNet 2014 1st 6.67%

11
Hình 1.5. So sánh buidling block với một phần mạng convolution thường.
Lớp batch norm đã được bỏ qua nhằm làm đơn giản hình vẽ.
Nhờ residual learning (F(x)) và identity mapping ("đường tắt" bỏ qua hai
lớp convolution) mà việc huấn luyện mạng có độ sâu được dễ dàng hơn do các
thông tin hữu ích được truyền lại thông qua các identity mapping, đồng thời nếu
thông tin học được không giúp ích gì thì identity mapping cũng sẽ giúp bỏ qua
các lớp convolution dư thừa, từ đó việc huấn luyện sẽ đỡ phức tạp hơn.

12
CHƯƠNG 2: KỸ THUẬT DEEP LEARNING VÀ CÁC KIẾN
THỨC NỀN TẢNG
2.1. Artificial Neural Network – ANN
ANN(Artificial Neural Network – ANN) được coi là công cụ mạnh để giải quyết
các bài toán có tính phi tuyến, phức tạp và đặc biệt trong các trường hợp mà mối
quan hệ giữa các quá trình không dễ thiết lập một cách tường minh như diễn biến
của chất lượng nước và các yếu tố ảnh hưởng (tải lượng chất ô nhiễm, vị trí xả
thải, lưu lượng nguồn nước,…). Một ưu điểm vượt trội của mô hình mạng nơron
nhân tạo là khả năng tự học và điều chỉnh các trọng số để kết quả tính toán phù
hợp với thực tế mà không phụ thuộc vào ý kiến chủ quan.
Với những ưu điểm vượt trội như trên, việc nghiên cứu phương pháp ANN trong
dự báo chất lượng nước mặt làm căn cứ lựa chọn phương án bảo vệ tài nguyên
nước mặt; Đề xuất nội dung và quy trình tính toán dự báo chất lượng nước mặt
bằng phương pháp ANN trên lưu vực; Thử nghiệm tính toán phương án bảo vệ
tài nguyên nước cho một tiểu lưu vực thuộc lưu vực sông Cầu là mục tiêu chính
của đề án Nghiên cứu ứng dụng mạng nơron nhân tạo (Artificial Neural Network
- ANN) trong tính toán lựa chọn phương án bảo vệ tài nguyên nước mặt.
Nghiên cứu ứng dụng mạng nơron nhân tạo (Artificial Neural Network - ANN)
trong tính toán lựa chọn phương án bảo vệ tài nguyên nước mặt góp phần mở ra
một hướng nghiên cứu mới trong trong mô phỏng và dự báo chất lượng nước, góp
phần tìm ra cách thức, giải pháp hợp lý để triển khai hiệu quả việc bảo vệ môi
trường nước, góp phần vào việc bảo vệ môi trường, làm cơ sở khoa học – quản lý
quan trọng giúp các nhà chiến lược đưa ra các kế hoạch chiến lược phát triển kinh
tế – xã hội theo định hướng bền vững nhằm bảo vệ TNN hợp lý.
2.1.1. Kiến trúc của ANN
Processing Elements (PE): Các PE của ANN gọi là Neuron, mỗi Nueron nhận các
dữ liệu vào (Inputs) xử lý chúng và cho ra một kết quả (output) duy nhất. Kết quả
xử lý của một Neuron có thể làm Input cho các Neuron khác
Kiến trúc chung của một ANN gồm 3 thành phần đó là Input Layer, Hidden Layer
và Output Layer.
Trong đó, lớp ẩn (Hidden Layer) gồm các Neuron, nhận dữ liệu input từ các
Nueron ở lớp (Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp

13
theo. Trong một ANN có thể có nhiều Hidden Layer.

Hình 2.1. Mô hình neuron của McCulloch và Pitts


2.1.2. Quá trình xử lý thông tin của ANN
Mạng ANN cơ bản bao gồm nhiều nơ-ron được xây dựng thành một lớp, mỗi nơ-
ron ở lớp này sẽ có kết nối tới tất cả các nơ-ron ở lớp trước nó (fully-connected).
Mỗi kết nối này sẽ có một trọng số là wij với i là chỉ số của dữ liệu đầu vào và j
là chỉ số của nơ-ron.

Hình 2.2. Mô hình ANN cơ bản


Inputs: Mỗi Input tương ứng với 1 thuộc tính (attribute) của dữ liệu (patterns). Ví
dụ như trong ứng dụng của ngân hàng xem xét có chấp nhận cho khách hàng vay
tiền hay không thì mỗi Input là một thuộc tính của khách hàng như thu nhập, nghề
nghiệp, tuổi, số con,…
Output: Kết quả của một ANN là một giải pháp cho một vấn đề, ví dụ như với bài
toán xem xét chấp nhận cho khách hàng vay tiền hay không thì output là yes (cho
vay) hoặc no (không cho vay).
Connection Weights (Trọng số liên kết) : Đây là thành phần rất quan trọng của
một ANN, nó thể hiện mức độ quan trọng (độ mạnh) của dữ liệu đầu vào đối với
quá trình xử lý thông tin (quá trình chuyển đổi dữ liệu từ Layer này sang layer

14
khác). Quá trình học (Learning Processing) của ANN thực ra là quá trình điều
chỉnh các trọng số (Weight) của các input data để có được kết quả mong muốn.
Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input được
đưa vào mỗi Neuron (phần tử xử lý PE). Hàm tổng của một Neuron đối với n
input được tính theo công thức sau:

Transformation (Transfer) Function (Hàm chuyển đổi)


Hàm tổng (Summation Function) của một Neuron cho biết khả năng kích hoạt
(Activation) của neuron đó còn gọi là kích hoạt bên trong (internal activation).
Các Nueron này có thể sinh ra một output hoặc không trong ANN (nói cách khác
rằng có thể output của 1 Neuron có thể được chuyển đến layer tiếp trong mạng
Neuron theo hoặc không). Mối quan hệ giữa Internal Activation và kết quả
(output) được thể hiện bằng hàm chuyển đổi (Transfer Function)
2.1.3. Quá trình học của Supervised ANN
1.Tính giá trị output .
2. So sánh output với giá trị mong muốn (desired value).
3. Nếu chưa đạt được giá trị mong muốn thì hiệu chỉnh trọng số (weights) và tính
lại output

Hình 2.3. Thuật toán quá trình học của supervised


Giả sử sau khi tính toán từ các input value đã cho, ta có output là Y. Giá trị mong
muốn (Desired) là Z đã biết trước. Sự chênh lệch giữa Y và kết quả mong muốn
15
Z được biểu diễn bởi tham số delta (gọi là lỗi) = Z-Y. Mục đích của việc Learning
là làm sao cho delta càng nhỏ càng tốt (Nếu delta =0 là hoàn hảo nhất) bằng cách
điều chỉnh trọng số (weights) của các dữ liệu vào.
2.2. Convolutional Neural Networks
2.2.1. Kiến trúc mạng CNN
Trong mô hình Feedforward Neural Network (mạng nơ-ron truyền thẳng), các
layer kết nối trực tiếp với nhau thông qua một trọng số w (weighted vector). Các
layer này còn được gọi là có kết nối đầy đủ (fully connected layer) hay affine
layer.
Trong mô hình CNNs thì ngược lại. Các layer liên kết được với nhau thông qua
cơ chế convolution. Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ
vậy mà ta có được các kết nối cục bộ. Nghĩa là mỗi nơ-ron ở layer tiếp theo sinh
ra từ filter áp đặt lên một vùng ảnh cục bộ của nơ-ron layer trước đó.
Mỗi layer như vậy được áp đặt các filter khác nhau, thông thường có vài trăm đến
vài nghìn filter như vậy. Một số layer khác như pooling/subsampling layer dùng
để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu).
Mạng Nơ-ron Tích Chập có kiến trúc khác với Mạng Nơ-ron thông thường. Mạng
Nơ-ron bình thường chuyển đổi đầu vào thông qua hàng loạt các tầng ẩn. Mỗi
tầng là một tập các nơ-ron và các tầng được liên kết đầy đủ với các nơ-ron ở tầng
trước đó. Và ở tầng cuối cùng sẽ là tầng kết quả đại diện cho dự đoán của mạng.

Hình 2.4. Mô hình mạng neural tích chập


Đầu tiên, mạng Nơ-ron Tích Chập được chia thành 3 chiều: rộng, cao, và sâu. Kế
đên, các nơ ron trong mạng không liên kết hoàn toàn với toàn bộ nơ-ron kế đến
nhưng chỉ liên kết tới một vùng nhỏ. Cuối cùng, một tầng đầu ra được tối giản
16
thành véc-tơ của giá trị xác suất.
Có hai khía cạnh cần chú ý trong CNNs: Location Invariance ( tính bất biến) và
Compositionality (tính kết hợp). Với cùng một đối tượng, nếu được chiếu theo
các góc độ khác nhau ( translation, rotation, scaling) thì sẽ cho ta các kết quả độ
sai lệch đáng kể, nó ảnh hưởng đến độ chính xác của kết quả chung. Các lớp
pooling layer sẽ cho bạn tính bất biến đối với các phép dịch (translation), phép
quay (rotation) va phép co giãn (scaling). Mỗi bộ lọc tạo ra một mảng vá từ các
featurer thấp để tạo ra một đại diện cao hơn. Đó là lí do CNNs rất mạnh trong
Computer Vision. Nó giống như cách con người nhận biết các vật thể trong tự
nhiên.

Hình 2.5. Kiến trúc CNN thông thường


Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức
độ cao và trừu tượng hơn thông qua convolution từ các filter. Đó là lý do tại sao
CNNs cho ra mô hình với độ chính xác rất cao. Cũng giống như cách con người
nhận biết các vật thể trong tự nhiên. Ta phân biệt được một con chó với một con
mèo nhờ vào các đặc trưng từ mức độ thấp (có 4 chân, có đuôi) đến mức độ cao
(dáng đi, hình thể, màu lông).
2.2.2. Các thành phần cơ bản của mạng CNN
Từ thực tế đặt ra ở trên người ta thấy rằng để giảm số lượng tham số cần giảm số
lượng kết nối giữa các lớp. Từ đây thành phần convolution được áp dụng – ý
tưởng chính là mỗi neural chỉ cần kết nối tới một vùng cục bộ của ảnh thay vì trên
toàn bộ ảnh. CNN là một trong những thuật toán DL cho kết quả tốt nhất hiện nay
trong hầu hết các bài toán về thị giác máy như phân lớp, nhận dạng, … Về cơ bản
CNN là một kiểu mạng ANN truyền thẳng, trong đó kiến trúc chính gồm nhiều
thành phần được ghép nối với nhau theo cấu trúc nhiều tầng đó là : Convolution,
Pooling, ReLU và Fully connected.

17
Hình 2.6. So sánh ANN với CNN.
Tầng convolution
Tầng Convolution (Conv) là tầng quan trọng nhất trong cấu trúc của CNN. Conv
dựa trên lý thuyết xử lý tín hiệu số, việc lấy tích chập sẽ giúp trích xuất được
những thông tin quan trọng từ dữ liệu. Hình 2.5 mô tả lý thuyết và cách thức Conv
hoạt động trên một dữ liệu đầu vào được biểu diễn bằng một ma trận hai chiều.
Ta có thể hình dung phép tính này được thực hiện bằng cách dịch chuyển một cửa
sổ mà ta gọi là kernel trên ma trận đầu vào, trong đó kết quả mỗi lần dịch chuyển
được tính bằng tổng tích chập (tích của các giá trị giữa 2 ma trận tại vị trí tương
ứng), trong hình là giá trị đầu ra khi dịch chuyển kenel kích thước 2*2 trên toàn
bộ ma trận kích thước 3*4.
Khi được áp dụng phép tính Conv vào xử lý ảnh người ta thấy rằng Conv sẽ giúp
biến đổi các thông tin đầu vào thành các yếu tố đặc trưng( nó tương ứng như bộ
phát hiện – detector các đặc trưng về cạnh, hướng, đốm màu …)
Để dễ hình dung, ta xét bài toán thực hiện tính giá trị đầu ra của một ảnh có kích
thước W_1*H_1* D_1( ở đây D_1 được gọi là chiều xâu của ảnh thực chất là giá
trị tại 3 kênh màu tương ứng với ảnh RGB). Khi đó một Conv như một cửa sổ
trượt (sliding window, có tên gọi là kernel, filter hay feature detector ) – cửa sổ
này thực chất cũng là một ma trận có kích thước F*F thực hiện trên mỗi chiều của
ảnh đầu vào (ta sử dụng K filter). Trong quá trình xử lý sẽ dịch chuyển các filter
trên toàn bộ bức ảnh theo S(stride) bước (tính bằng pixcell). Người ta gọi mỗi
vùng mà filter áp đặt lên ma trận đầu vào là receptive field. Trong một số trường
hợp để cân bằng giữa số bước dịch chuyển và kích thước của ảnh người ta có thể
chèn thêm P pixel với một giá trị màu cho trước (thường là 0) xung quanh viền
của ảnh khi đó ta được ma trận đầu ra (feature map) là W_2*H_2*D_2 trong đó:
W_2 = (W_1 – F+2P)/S+1
H_2 = (H_1 – F+2P)/S+1

18
D_{2} = K
Giá trị tại các ô trong ma trận của filter có kích thước (F*F*D_1) +1 (cộng 1 ở
đây là tham số ngưỡng của filter) sẽ tương ứng là trọng số, các giá trị này của mỗi
filter không đổi trong quá trình dịch chuyển trên toàn bộ bức ảnh đầu vào. Đây
cũng là tính chất quan trọng (dùng chung bộ trọng số – shared weights) làm giảm
thêm số tham số cần học trong quá trình hu ấn luyện mạng. Từ đó tổng số tham
số cần học cho quá trình sử dụng Conv là (F*F*D_1)*K +K (ở đây cộng thêm k
tham số ngưỡng của k filter).
Tầng pooling
Tầng pooling (hay còn gọi subsampling hoặc downsample) là một trong những
thành phần tính toán chính trong cấu trúc CNN. Xét về mặt toán học pooling thực
chất là quá trình tính toán trên ma trận trong đó mục tiêu sau khi tính toán là giảm
kích thước ma trận nhưng vẫn làm nổi bật lên được đặc trưng có trong ma trận
đầu vào. Trong CNN toán tử pooling được thực hiện độc lập trên mỗi kênh màu
của ma trận ảnh đầu vào.
Có nhiều toán tử pooling như Sum-Pooling, Max-Pooling, L_2-Pooling nhưng
Max-Pooling thường được sử dụng. Về mặt ý nghĩa thì Max-Pooling xác định vị
trí cho tín hiệu mạnh nhất khi áp dụng một loại filter. Điều này cũng tương tự như
là một bộ lọc phát hiện ví trị đối tượng bằng filter trong bài toán phát hiện đối
tượng trong ảnh.
Về mặt lý thuyết với ma trận đầu vào có kích thước W_1*H_1*D_{1} và thực
hiện toán tử pooling trên ma trận con của ma trận đầu vào có kích thước F’*F’
với bước nhảy S’ pixcel thì ta được ma trận đầu ra W_2*H_2*D_2 trong đó:
 W_2 = ( W_1′ – F’)/S’+1
 H_2’ = (H_1′ – F’)/S’+1
 D_2’ = D_1′
Tầng fully-connected
Fully-connected là cách kết nối các neural ở hai tầng với nhau trong đó tầng sau
kết nối đẩy đủ với các neural ở tầng trước nó. Đây cũng là dạng kết nối thường
thấy ở ANN, trong CNN tầng này thường được sử dụng ở các tầng phí cuối của
kiến trúc mạng..
2.3. Residual Neural Network
19
2.3.1. Building block
Kiến trúc ResNet chú trọng giải quyết các vấn đề liên quan khi tăng số layer của
mạng bằng cách đưa ra khái niệm building block. Kiến trúc của ResNet bao gồm
các building blocks xếp chồng lên nhau, mỗi building block bao gồm hai hay
nhiều convolution layers cùng với identity mapping.
Residual learning
Giả sử một phần của một mạng CNN thông thường được miêu tả như 1.5b,
sau khi đi qua hai layers, ta một hàm mapping là H(x). Trong khi đó, ở 1.5a sẽ cố
học hàm residual mapping F(x). Về mặt lý thuyết H(x) = F(x) + x, cũng từ công
thức này,nên mapping F(x) được gọi là residual mapping và đó cũng chính là lý
do mạng CNN theo mô hình này được gọi là Residual Neural Network. Tuy kết
quả của hai mô hình cho ra là giống nhau, nhưng về độ phức tạp cũng như hiệu
năng thì có thể sẽ khác.
Identity mapping
Cùng với residual learning, để giúp cho kết quả của hai mô hình 1.5a và 1.5b
giống nhau thì F(x) được cộng thêm với x, và đó là phép identity mapping (ở đây
giả sử x và F(x) có cùng số chiều). Cùng với residual learning và identity mapping,
hình 1.5a được gọi là một building block.
Xét một mạng CNN bình thường được thêm vào một building block ở cuối, kết
quả của mạng CNN thường là Al sau khi đi qua building block ta được Al+2 với Al+2
= ReLU(W2∗(ReLU(W1∗Al))+Al). Khi ta sử dụng các phương pháp regularization
(ở đây giả sử là weight decay hay còn được gọi là L2 regularization), W1 và W2
có thể sẽ bị ép về ma trận thưa (ma trận có đa số các phần tử bằng 0) từ đó dẫn
đến việc cả phần W2 ∗ ReLU(W1 ∗ Al) = 0. Từ đó suy ra Al+2 = ReLU(Al), do Al cũng
là một ma không âm (giả sử mạng CNN trước nó cũng sử dụng ReLU làm hàm
activation) thì cuối cùng Al+2 = Al. Điều đó chứng tỏ, việc thêm hai layer cùng với
identiy mapping sẽ không làm ảnh hưởng gì đến hiệu năng của tổng thể mạng.
Tất nhiên là chúng ta mong rằng hai lớp được thêm vào sẽ học được các thông tin
có ích. Như đã chứng minh ở trên, một mạng CNN nếu được thêm một block của
ResNet, hiệu năng của nó sẽ lớn hơn hoặc ít nhất là bằng với một mạng CNN khi
không được thêm block đó.
Identity mapping bằng shorcut connection

20
Như vậy, một block của ResNet bao gồm residual learning và identity
mapping. Công thức tính cho một block có thể được viết như sau:
y = F(x,Wi) + x
Với điều kiện F(x,Wi) và x phải có cùng số chiều (do phép cộng là element-wise).
Trong trường hợp F(x,Wi) và x không có cùng số chiều dữ liệu thì 3.15 được viết
thành:
y = F(x,Wi) + Wsx
Trong đó Ws chỉ là phép biến đổi sao cho F(x,Wi) và x có cùng số chiều. Việc thí
nghiệm về Ws cũng sẽ được thí nghiệm ở chương 3.
Basic building block
Đối với kiến trúc mạng cạn (từ 18 đến 34 layers), đưa ra basic buidling block
(hình 1.5a), trong đó có hai convolution 3x3 xếp chồng lên nhau.
Bottleneck buidling block
Đối với kiến trục mạng sâu (từ 50 layers trở lên), đưa ra bottleneck building block,
họ đã chỉ ra rằng việc đưa bottleneck vào các mạng sâu hơn sẽ giúp cho việc huấn
luyện mạng sẽ nhanh hơn do tác dụng thu giảm số chiều của các lớp convolution
1x1.
2.3.2. Kiến trúc của Residual Neural Network
Sau đây là một số kiến trúc mạng của ResNet với số layer là 18, 34, mạng sử dụng
basic building block (hình 1.5a), với số layer từ 50 trở đi, mạng sử dụng bottleneck
building block. Mỗi building block được chồng lên nhau và tạo thành các group
(conv2_x, conv3_x, conv4_x, conv5_x), được ký hiệu bởi dấu ngoặc vuông và có
tổng cộng là 5 group (group thứ 1 - conv1 chỉ là một lớp convolution 7x7 bình
thường), chữ "x" trong tên các group được biểu thị cho số thứ tự của block trong
group đó (ví dụ: conv3_2 là block thứ 2 trong group thứ 3). Trong đó ở mỗi block
đầu tiên của từng group được thực hiện downsample với stride là 2.
Do tập dataset được áp dụng là ImageNet nên ở lớp fully connected ở mỗi mạng,
số unit là 1000 tương ứng với 1000 nhãn.

21
Hình 2.7. Các kiến trúc mạng của ResNet trên tập dataset ImageNet
2.4. Xây dựng mạng nơron để làm rõ ảnh mờ sử dụng CNN
Thời gian trước đây, việc tạo ra một bức ảnh độ phân giải cao thường được thực
hiện bởi việc kết hợp thông tin của rất nhiều ảnh độ phân giải thấp (Multiple Image
Super Resolution -MISR). Những kỹ thuật này đã từng được thực hiện trong các
máy ảnh kỹ thuật cao hoặc qua các chương trình xử lý ảnh như Photoshop (điểm
này tôi không chắc, nhờ các bạn kiểm chứng lại). Tuy nhiên, nhược điểm của
phương pháp này là cần rất nhiều ảnh độ phân giải thấp và chúng phải được căn
chỉnh và đối tượng trong ảnh phải đứng yên trong thời gian chụp. Hơn nữa, tốc
độ xử lý cũng không được cao.
Việc căn chỉnh tỉ mỉ có thể tránh được nếu chỉ dùng 1 ảnh độ phân giải thấp.
Nhưng ngược lại, chất lượng của ảnh đầu ra khó được đảm bảo vì rất nhiều thông
tin mới cần được sinh ra dựa trên rất nhỏ lượng thông tin ảnh ở đầu vào. Bài toán
này được gọi là Single Image SR (SISR).
Quay lại với bài toán SISR. Chúng ta có thể coi đây là một bài toán thay đổi, ở
đây là làm tăng lên, kích thước ảnh (resize) mà vẫn giữ được chất lượng của ảnh.
Vậy việc đầu tiên ta có thể nghĩ tới là sử dụng hàm resize trong Matlab hay
OpenCV. Đây là một ý tưởng không tệ. Tuy nhiên, chất lượng ảnh đầu ra thường
không cao vì các hàm này mới chỉ dừng lại ở các kỹ thuật đơn giản.
Một trong những phương pháp đầu tiên sử dụng Deep Learning cho SISR có tên
là SRCNN (Super Resolution với CNN tại hội nghị European Conference on
22
Computer Vision 2014) của một nhóm tới từ The Chinese University of Hong
Kong. Đầu tiên ta cần tạo các cặp (input, output) cho training. Dữ liệu training
thường là các ảnh có độ phân giải cao (High Resolution hoặc HR), dữ liệu này có
thể coi như output của Neural network. Để tạo input, trước tiên ảnh HR được
resize bằng bicubic interpolation (hoặc các kỹ thuật resize thông thường khác) để
tạo ra ảnh độ phân giải thấp (Low Resolution hay LR), chẳng hạn giảm chiều dài
và chiều rộng đi 2 lần. Sau đó, các ảnh LR này lại được khôi phục lại kích thước
ban đầu cũng bằng cách sử dụng bicubic interpolation. Ảnh này được gọi là
Bicubic HR, mặc dù có kích thước cao như ảnh HR, chất lượng ảnh này thường
rất thấp - bị mờ cạnh hay còn gọi là blurred - ta cần phải cải thiện. Như vậy ta có
các cặp ảnh (Bicubic HR, HR) cho training. Chúng ta có thể tạo ra rất nhiều các
cặp ảnh này bằng cách 'crop' từ ảnh HR ra rất nhiều các 'patch' nhỏ và coi chúng
là ảnh độ phân giải cao. Cặp training (input, output) này được đưa qua SRCNN
(với 3 convolutional layers) để train network này. Sau khi được train xong, ta giữ
lại model này. Với 1 ảnh LR mới, đầu tiên ta resize nó tới kích thước của ảnh HR
(gấp đôi chẳng ) bằng bicubic interpolation. Sau đó đưa ảnh Bicubic HR này qua
Network học được, đầu ra của Network này chính là ảnh HR.

Hình 2.8. Làm rõ ảnh mờ

23
CHƯƠNG 3: MÔ PHỎNG THUẬT TOÁN LÀM RÕ ẢNH MỜ,
THỬ NGHIỆM, ĐÁNH GIÁ VÀ ỨNG DỤNG TRONG LỰC
LƯỢNG CẢNH SÁT
3.1. Cài đặt môi trường
Ta sử dụng hệ điều hành Linux phiên bản Ubuntu 16.04 LTS hoặc CentOS làm
môi trường cho quá trình thực nghiệm, chương trình được viết bằng ngôn ngữ
Python 3.
Các thư viện hỗ trợ và các khung làm việc:

Hình 3.1. Môi trường cài đặt


- Cài đặt Python 3.7: Python là ngôn ngữ lập trình có hình thức rất sáng sủa, cấu
trúc rõ ràng, thuận tiện cho việc học tập hoặc nghiên cứu. Trong học sâu hiện nay,
Python là ngôn ngữ được hỗ trợ cũng nhưng được dùng nhiều nhất vì tính thuận
tiện này. Trong đồ án này sử dụng Python làm ngôn ngữ lập trình chính và phiên
bản sử dụng là Python 3.7. Hầu như các hệ điều hành đều hỗ trợ Python, bạn có
thể cài đặt online, hoặc offline. Chúng ta sẽ thấy các cách phổ biến sau:
Trên Debian (Ubuntu, Linux Mint, ...), chạy lệnh:
apt-get install python
Trên RedHat (CentOS, RedHat, Asianux, ...):
yum install python
Sau khi cài đặt xong, ta cũng có thể sử dụng Python bằng cách gõ python vào
cửa sổ dòng lệnh. Sau đó, cài đặt pip trên Ubuntu:
apt-get -y install python-pip
3.2. Các thư viện cần thiết

24
3.2.1. Theano
Theano là một thư viện python để xác định và đánh giá các biểu thức toán
học với các mảng số.
Cài đặt Theano
sudo pip install theano
Để sử dụng chúng ta cần khai báo import theano trong code viết bằng python.
Theano là một Deep Learning Platform.
Platform là một tập hợp những công cụ được xây dựng chung với nhau mà dựa
vào đó, người dùng có thể thiết lập nên một hệ thống phù hợp. Ví dụ App điện
thoại được xây dựng trên platform Unity (engine), Titanium, hay Xcode của iOS
etc… Deep learning Platform là một tập hợp những công cụ phục vụ cho mục
đích xây dựng nên một hệ thống deep learning data, bao gồm những công việc
như:
- Xây dựng deep net: Thông thường một Deep Learning platform sẽ giới hạn
người dùng lựa chọn một vài thuật toán Deep Learning ví dụ như DBN/MLP,
RBM, Convnet, Autoencoder, RNTN, RNN… Một platform thông thường sẽ bao
hàm rất ít thuật toán để không phải chứa đựng nhiều thứ dư thừa.
- Bẻ nhỏ và chuyển đổi dữ liệu (data munging): tích hợp dữ liệu từ nhiều nguồn
khác nhau, vận dụng và xử lý linh hoạt dữ liệu.
- Thiết lập hệ thống (in frastructure) có khả năng thích ứng phần cứng
- Quản lý và phát triển UI/UX
Platform Platform xuất hiện dưới 2 dạng: Platform đầy đủ và thư viện Deep
learning (Library).
Platform đầy đủ Library
Ưu Dễ sử dụng, UI trực quan Tăng cường tính linh hoạt,
điểm Vận hành và phát triển nhanh chóng. hiệu năng cao, sở hữu khả
Không cần bước triển khai và vận năng ứng dụng đa dạng thuật
hành hệ thống toán.
Khuyết Giới hạn tùy chỉnh bởi Platform. Cần phải có chuyên gia về
điểm Không đa dạng trong việc ứng dụng. triển khai cũng như vận
Thiếu nhiều thuật toán quan trọng. hành hệ thống.

25
Trong số các thư viện Deep Learning thì Theano là một thư viện được sử dụng
phổ biến trong giới nghiên cứu và học thuật.
Theano là thư viện thuần Python được phát triển bởi LISA Lab - Đại Học
Montreal. Theano cung cấp các thư viện tính toán, cho phép người dùng định
nghĩa, tối ưu và đánh giá các hàm tính toán. Theano có khả năng xử lý một lượng
lớn dữ liệu với thời gian nhanh chóng và cho phép sử dụng cả CPU và GPU. Để
thiết kế kiến trúc mạng nơ-ron cho riêng mình, người dùng phải tự lập trình từ
những hàm của thư viện Theano. Theano sử dụng 2 gói thư viện để hỗ trợ cho
việc định nghĩa mô hình mạng neural:
 Lasagne: Là thư viện định nghĩa các lớp (trừ lớp cuối cùng) của mô hình
mạng neural. Lasagne giúp người dùng lưu trữ dữ liệu trong mạng, tính
toán giá trị hàm lỗi, cập nhật trọng số.
 Keras: Là lớp cuối cùng trong cấu trúc mạng. Hỗ trợ cài đặt các hàm kích
hoạt và định nghĩa lớp softmax.
3.2.2. SciPy
SciPy là viết tắt của Science Python, nó là một thư viện mã nguồn mở các thuật
toán và các công cụ toán học cho Python.
SciPy (đọc là “Sigh Pie”) là một hệ sinh thái phần mềm nguồn mở trên Python
cho các ngành toán học, khoa học, kỹ thuật. Danh sách một số package cố lõi của
SciPy:
 NumPy (gói mảng N chiều cơ sở).
 Thư viện SciPy (Thư viện cơ bản cho máy tính khoa học).
 Matplotlib (Phát họa địa đồ 2D).
 IPython (Bảng điều khiển tương tác nâng cao).
 Sympy (Toán học tượng trưng).
 Pandas (Cấu trúc dữ liệu và phân tích).
SciPy cung cấp khá nhiều module tính toán từ đại số tuyến tính, tích phân, vi
phân, nội suy đến xử lý ảnh, fourier transform blabla… Chức năng của nó tương
tự như MathLab, Octave. Scilab, R… nhưng nó được sử dụng khá rộng rãi do có
hệ thống thư viện tính toán mạnh, ngôn ngữ Python rõ ràng, dễ hiểu, gần gũi với
ngôn ngữ tự nhiên, mã nguồn mở và cộng đồng đang dần lớn mạnh từng ngày.
26
Với SciPy bạn có thể làm được nhiều thứ khá kì diệu chỉ trong một nốt nhạc, ví
dụ thao tác với ma trận cực kì đơn giản (nếu đang học đại số bạn có thể dùng
SciPy để kiểm tra xem mình nhân ma trận 4×4 có đúng không :3 ), vẽ các đồ thị,
tạo ra các mô hình tính toán, mô phỏng hoạt động truyền tin giữa các host trong
mạng.
3.2.3. Numpy
Numpy là một thư viện toán học rất phổ biến và rất mạnh mẽ của python. Nó cho
phép làm việc hiệu quả với ma trận, tính toán các phép toán của ma trận nhanh
chóng và hiệu quả, dùng để mô hình hóa các dữ liệu từ thế giới tự nhiên đưa vào.
NumPy là một package nền tảng dùng cho các tính toán khoa học với Python. Nó
bao gồm:
 Một đối tượng mảng N-chiều mạnh mẽ.
 Các hàm phức tạp/tinh vi (sophisticated) nhưng tổng quát/đa dụng
(broadcasting/universal).
 Các công cụ để tích hợp code C/C++ hay Fortran.
 Có khả năng điện số ngẫu nhiên (random number), biến đổi Fourier và các
phép đại số tuyến tính hữu ích.
Bên cạnh các công dụng khoa học rõ ràng, NumPy còn dùng như một container
đã chiều để chứa các dữ liệu tổng quát. Kiểu dữ liệu tuỳ biến (arbitrary data-types)
có thể được định nghĩa. Điều này cho phép NumPy tích hợp một cách liên tục và
nhanh chóng một loạt các CSDL khác nhau.
3.3. Cài đặt chương trình
Chương trình chạy trên hệ điều hành Ubuntu phiên bản 16.04. Sau khi cài đặt các
gói và Python 3.4+, file code chính là file enhance.py.
Chương trình cho phép sử dụng GPU hoặc CPU.
Trước tiên, cài đặt môi trường ảo trên Ubuntu 16.04:
- Cài đăt pip3, mở Terminal chạy lệnh
sudo apt-get install python3-pip
- Sau đó cài đặt virtualenv bằng pip3
sudo pip3 install virtualenv
- Bây giờ tạo một môi trường ảo

27
virtualenv venv
- Kích hoạt môi trường ảo để chạy code
source venv/bin/activate
Sau khi kích hoạt xong môi trường ảo, chúng ta tiến hành chạy chương trình
bằng dòng lệnh
python3 enhance.py --type=photo --model=deblur --
zoom=1 broken.jpg
Trong đó file broken.jpg là ảnh cần làm rõ.

3.4. Kiểm thử và đánh giá


Chương trình sử dụng các bộ dữ liệu đã được huấn luyện.

28
Sau đây là một số hình ảnh trước và sau khi chạy chương trình:

Hình 3.2. Kết quả làm rõ khuôn mặt

Hình 3.3. Kết quả khi nâng cao chất lượng ảnh chân dung

29
Hình 3.4. Hình ảnh nâng cao chất lượng ảnh bị mờ

30
TÀI LIỆU THAM KHẢO
Tài liệu Tiếng Việt
[1]. Vũ Hữu Tiệp (2017), Machine Learning cơ bản, Đại học bang
Pennsylvania (Pennsylvania State University), Hoa Kỳ.
Tài liệu Tiếng Anh
[2]. Ian Goodfellow, Yoshua Bengio and Aaron Courville (2016), Deep
Learning (Adaptive Computation and Machine Learning series).
[3]. Sebastian Dark (2018), Deep Learning with Python: A Fundamentals
Guide to Understanding Machine Learning and Artificial Intelligence with
Scikit-Learn, TensorFlow, and Keras.

31
LÝ LỊCH TRÍCH NGANG
1. Chủ nhiệm nhiệm vụ
Họ và tên: Phạm Thành Hiền
Lớp: B1D5
Ngày tháng năm sinh: 30/06/1997
Địa chỉ liên lạc: Khu kí túc xá trường Đại học Kỹ thuật – Hậu cần CAND
Số điện thoại: 0975 354 594
2. Thành viên
Họ và tên: Lê Thị Oanh Lớp: B3D5
Ngày tháng năm sinh: 22/05/1996
Địa chỉ liên lạc: Khu kí túc xá trường Đại học Kỹ thuật – Hậu cần CAND
Số điện thoại: 0387 049 427
Họ và tên: Lê Đình Tùng Lớp: B1D6
Ngày tháng năm sinh: 18/07/1997
Địa chỉ liên lạc: Khu kí túc xá trường Đại học Kỹ thuật – Hậu cần CAND
Số điện thoại: 0972 641 297
Họ và tên: Trần Viết Thiện Lớp: B2D6
Ngày tháng năm sinh: 03/01/1998
Địa chỉ liên lạc: Khu kí túc xá trường Đại học Kỹ thuật – Hậu cần CAND
Số điện thoại: 0338 767 190
Họ và tên: Nguyễn Hoài Nam Lớp: B2D6
Ngày tháng năm sinh: 05/08/1997
Địa chỉ liên lạc: Khu kí túc xá trường Đại học Kỹ thuật – Hậu cần CAND
Số điện thoại: 0386 507 733

32
XÁC NHẬN HOÀN THÀNH CÔNG TRÌNH
BIÊN BẢN
Xác nhận nộp sản phẩm công trình SVNCKH
Căn cứ vào Quyết định số …
Căn cứ vào Kế hoạch số …
Căn cứ vào Kết luận của đ/c Chủ tịch hội đồng về đề tài “Xây dựng phần
mềm từ điển phục vụ tra cứu thuật ngữ chuyên ngành An toàn thông tin”.
Nhóm nghiên cứu đã hoàn thiện sản phẩm, chỉnh sửa theo yêu cầu Hội đồng
nộp sản phẩm theo quy định vào hồi …h... ngày … tháng 04 năm 2018.
Biên bản này được viết thành 2 bản có giá trị như nhau, mỗi bên giữ 1 bản.
NGƯỜI GIAO SẢN PHẨM NGƯỜI NHẬN SẢN PHẨM
CHỦ NHIỆM ỦY VIÊN THƯ KÝ
(Ký và ghi rõ họ tên) (Ký và ghi rõ họ tên)

Phạm Thành Hiền

33

You might also like