Tải bản đầy đủ (.doc) (32 trang)

ĐẠI HỌC ĐÀ NẴNG KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐỒ ÁN CƠ SỞ ĐỀ TÀI: NHẬN DẠNG CẢM XÚC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.33 MB, 32 trang )

ĐẠI HỌC ĐÀ NẴNG

KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

ĐỒ ÁN CƠ SỞ 5
ĐỀ TÀI: NHẬN DẠNG CẢM XÚC

Sinh viên thực hiện

: Lê Văn Ánh

Giảng viên

: Th.S Nguyễn Văn Bình

Lớp

: 17IT2

Đà nẵng, tháng 7 năm 2020


MỞ ĐẦU
Ngày nay với sự phát triển không ngừng của cơng nghệ thì cụm từ trí tuệ
nhân tạo khơng cịn xa lạ với học viên chuyên nghành công nghệ thông tin chúng
ta, mà nó ngày càng phát triển mạnh mẽ và có xu hướng phát triển rộng trên thế
giới.
Với một lĩnh vực nhỏ đang được mọi người quan tâm của trí tuệ nhân tạo đó
là nhận dạng. Trong lĩnh vực này, chúng ta có thể thực hiện các loại nhận dạng
khác nhau như: nhận dạng khuôn mặt, cảm xúc, động vật… và nó được ứng
dụng vào các mặt của cuộc sống. Ở đề tài này, em chọn đề tài nhận diện cảm xúc


để thực hiện .


LỜI CẢM ƠN
Trong thời gian làm báo cáo học phần, em đã nhận được nhiều sự giúp đỡ, đóng góp ý
kiến và chỉ bảo nhiệt tình của thầy cơ và bạn bè.
Em xin gửi lời cảm ơn chân thành đến Th.S Nguyễn Văn Bình, người đã tận tình hướng
dẫn, trực tiếp chỉ bảo và tạo mọi điều kiện giúp đỡ em trong suốt quá trình làm báo cáo.
Em cũng xin chân thành cảm ơn các thầy cô trong khoa Công Nghệ Thông Tin Và Truyền
Thông, những người đã dạy dỗ và trang bị cho em khiến thức đễ hoàn thành báo cáo này.
Mặc dù trong quá trình nghiên cứu đề tài , bản thân em có những cố gắng nhất định song
do trình độ và thời gian có hạn nên đề tài khơng tránh khỏi những thiếu sót.vậy kinh
mong các thầy cơ và các bạn đóng góp ý kiến để em được hoàn thiện hơn.


NHẬN XÉT
(Của giảng viên môn học)
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………


MỤC LỤC
Chương 1 Giới thiệu...................................................................................................1

1.1 Tổng quan.........................................................................................................1
1.2 Phương pháp, kết quả.......................................................................................1
1.3 Cấu trúc đồ án..................................................................................................1
Chương 2 Nghiên cứu tổng quan................................................................................3
2.1 Giới thiệu hệ thống xữ lý ảnh...........................................................................3
2.2 Python là gì ?....................................................................................................9
2.3 Tìm hiểu OpenCV ?........................................................................................10
2.3.1 OpenCV là gì?..........................................................................................10
2.3.2 Ứng dụng của OpenCV................................................................................10
2.3.3 Chức năng của OpenCV...............................................................................11
2.4 Tìm hiểu Keras và mơ hình Convolutional Neural Network...........................12
2.4.1 Keras là gì ?................................................................................................12
2.4.2 Mơ hình Convolutional Neural Network.....................................................13
Chương 3 Triển khai xây dựng.................................................................................20
3.1 Xây dựng tổng quan.......................................................................................20
3.2 Xây dựng chi tiết............................................................................................21
Chương 4 Kết luận và hướng phát triển....................................................................24
4.1 Kết luận..........................................................................................................24
4.2 Hướng phát triển.............................................................................................24


DANH MỤC HÌNH
Hình 1 :Các bước cơ bản trong xử lý ảnh......................................................................4
Hình 2: Sơ đồ phân tích và xử lý ảnh và lưu đồ thơng tin giữa các khối........................8
Hình 3: Ứng dụng đơn giản của OpenCV.....................................................................11
Hình 4 : Cấu trúc của Keras.........................................................................................12
Hình 5: Bộ xương cho module của Keras....................................................................12
Hình 6: Các lớp layer trong mơ hình của Keras...........................................................13
Hình 7: Mơ hình cơ bản của CNN...............................................................................14
Hình 8: Mơ hình mạng CNN.......................................................................................16

Hình 9 : Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1........................................................17
Hình 10: Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2.......................18
Hình 11: Xử lý dữ liệu ................................................................................................21
Hình 12: Hàm nhận diện..............................................................................................22
Hình 13: Kết quả..........................................................................................................23


DANH MỤC CỤM TỪ VIẾT TẮT

STT

Cụm từ

Viết tắt

1

Convolutional neural network

CNN


Chương 1

Giới thiệu

1.1 Tổng quan.
Với sự phát triển nhanh chóng của ngành công nghệ thông tin và khả năng
quay của các thiết bị như camera ngày càng tốt, kể cả trong điều kiện thiếu ánh
sáng. Thì việc áp dụng các hệ thống nhận dạng vào các thiết bị càng dễ dàng. .

Áp dụng kiến thức đã học để phát triển ứng dụng như trên là cần thiết. Bởi vì
điều này cho phép học thêm các công nghệ mới, rèn luyện kỹ năng lập trình,
đồng thời nâng cao kinh ngiệm và học thêm các kỹ năng quan trọng khác. Chính
vì thế, em chọn đề tài xây dựng ứng dụng nhận dạng số viết tay.
Xây dựng một ứng dụng nhận dạng số viết tay làm cho người xây dựng có
thể nhận dạng được số viết tay thông qua camera .
1.2 Phương pháp, kết quả.
Phương pháp xây dựng ứng dụng sẽ bao gồm các bước sau:
- Tìm hiểu về các cơng nghệ đã và đang được ứng dụng để giải
quyết bài toán trên.
- Nghiên cứu các ứng dụng về nhận dạng khuôn mặt đã có trong
thực tế.
- Nghiên cứu các mã nguồn mở có hỗ trợ để giải quyết vấn đề nhận
dạng khn mặt có trong một bức ảnh.
- Ứng dụng thư viện OpenCV và CNN Keras để xây dựng ứng dụng.
1.3 Cấu trúc đồ án.
Phần tiếp theo của báo cáo bao gồm:
Chương 2: Nghiên cứu tổng quan
Trong chương này, em sẽ giới thiệu tổng quát về OpenCV và Python bao
gồm:
1


 Giới thiệu về hệ thống xữ lý ảnh.
 Python là gì?
 Tìm hiểu OpenCV?
 Tìm hiểu Keras và mơ hình CNN.
Chương 3: Triển khai xây dựng
Ở phần này em sẽ trình mơ hình tổng quan của ứng dụng và cách thức
triển khai nó.

Chương 4: Kết luận và hướng phát triển.
Trong chương này, em chia thành 2 phần. Phần 1 kết luận sẽ giới thiệu về
nhưng gì đã đạt được và hạn chế. Phần 2 hướng phát triển đưa ra hướng đi
tiếp theo của ứng dụng.

2


Chương 2

Nghiên cứu tổng quan.

2.1 Giới thiệu hệ thống xữ lý ảnh.
Xử lý ảnh là một lĩnh vực mang tính khoa học và cơng nghệ. Nó là một
ngành khoa học mới mẻ so với nhiều ngành khoa học khác nhưng tốc độ phát
triển của nó rất nhanh, kích thích các trung tâm nghiên cứu, ứng dụng, đặc biệt
là máy tính chuyên dụng riêng cho nó.
Xử lý ảnh được đưa vào giảng dạy ở bậc đại học ở nước ta khoảng chục
năm nay. Nó là mơn học liên quan đến nhiều lĩnh vực và cần nhiều kiến thức cơ
sở khác. Đầu tiên phải kể đến Xử lý tín hiệu số là một mơn học hết sức cơ bản
cho xử lý tín hiệu chung, các khái niệm về tích chập, các biến đổi Fourier, biến
đổi Laplace, các bộ lọc hữu hạn… Thứ hai, các cơng cụ tốn như Đại số tuyến
tính, Sác xuất, thống kê. Một số kiến thứ cần thiết như Trí tuệ nhân tao, Mạng
nơ ron nhân tạo cũng được đề cập trong q trình phân tích và nhận dạng ảnh.
Các phương pháp xử lý ảnh bắt đầu từ các ứng dụng chính: nâng cao chất
lượng ảnh và phân tích ảnh. Ứng dụng đầu tiên được biết đến là nâng cao chất
lượng ảnh báo được truyền qua cáp từ Luân đôn đến New York từ những năm
1920. Vấn đề nâng cao chất lượng ảnh có liên quan tới phân bố mức sáng và độ
phân giải của ảnh. Việc nâng cao chất lượng ảnh được phát triển vào khoảng
những năm 1955. Điều này có thể giải thích được vì sau thế chiến thứ hai, máy

tính phát triển nhanh tạo điều kiện cho q trình xử lý ảnh sơ thuận lợi. Năm
1964, máy tính đã có khả năng xử lý và nâng cao chất lượng ảnh từ mặt trăng và
vệ tinh Ranger 7 của Mỹ bao gồm: làm nổi đường biên, lưu ảnh. Từ năm 1964
đến nay, các phương tiện xử lý, nâng cao chất lượng, nhận dạng ảnh phát triển
không ngừng. Các phương pháp tri thức nhân tạo như mạng nơ ron nhân tạo, các

3


thuật toán xử lý hiện đại và cải tiến, các công cụ nén ảnh ngày càng được áp
dụng rộng rãi và thu nhiều kết quả khả quan.
Để dễ tưởng tượng, xét các bước cần thiết trong xử lý ảnh. Đầu tiên, ảnh
tự nhiên từ thế giới ngoài được thu nhận qua các thiết bị thu (như Camera, máy
chụp ảnh). Trước đây, ảnh thu qua Camera là các ảnh tương tự (loại Camera ống
kiểu CCIR). Gần đây, với sự phát triển của công nghệ, ảnh màu hoặc đen trắng
được lấy ra từ Camera, sau đó nó được chuyển trực tiếp thành ảnh số tạo thuận
lợi cho xử lý tiếp theo. (Máy ảnh số hiện nay là một thí dụ gần gũi). Mặt khác,
ảnh cũng có thể tiếp nhận từ vệ tinh; có thể qt từ ảnh chụp bằng máy qt ảnh.

Hình 1 :Các bước cơ bản trong xử lý ảnh.

Sơ đồ này bao gồm các thành phần sau:
a) Phần thu nhận ảnh (Image Acquisition).
Ảnh có thể nhận qua camera màu hoặc đen trắng. Thường ảnh nhận qua
camera là ảnh tương tự (loại camera ống chuẩn CCIR với tần số 1/25, mỗi ảnh
25 dịng), cũng có loại camera đã số hố (như loại CCD – Change Coupled
Device) là loại photodiot tạo cường độ sáng tại mỗi điểm ảnh.
Camera thường dùng là loại qt dịng; ảnh tạo ra có dạng hai chiều. Chất lượng
một ảnh thu nhận được phụ thuộc vào thiết bị thu, vào môi trường (ánh sáng,
phong cảnh)


4


b)

Tiền xử lý (Image Processing).
Sau bộ thu nhận, ảnh có thể nhiễu độ tương phản thấp nên cần đưa vào

bộ tiền xử lý để nâng cao chất lượng. Chức năng chính của bộ tiền xử lý là lọc
nhiễu, nâng độ tương phản để làm ảnh rõ hơn, nét hơn.
c)Phân đoạn (Segmentation).
Hay phân vùng ảnh Phân vùng ảnh là tách một ảnh đầu vào thành các
vùng thành phần để biểu diễn phân tích, nhận dạng ảnh. Ví dụ: để nhận dạng
chữ (hoặc mã vạch) trên phong bì thư cho mục đích phân loại bưu phẩm, cần
chia các câu, chữ về địa chỉ hoặc tên người thành các từ, các chữ, các số (hoặc
các vạch) riêng biệt để nhận dạng. Đây là phần phức tạp khó khăn nhất trong xử
lý ảnh và cũng dễ gây lỗi, làm mất độ chính xác của ảnh. Kết quả nhận dạng ảnh
phụ thuộc rất nhiều vào công đoạn này.
d)

Biểu diễn ảnh (Image Representation) .
Đầu ra ảnh sau phân đoạn chứa các điểm ảnh của vùng ảnh (ảnh đã phân

đoạn) cộng với mã liên kết với các vùng lận cận. Việc biến đổi các số liệu này
thành dạng thích hợp là cần thiết cho xử lý tiếp theo bằng máy tính. Việc chọn
các tính chất để thể hiện ảnh gọi là trích chọn đặc trưng (Feature Selection) gắn
với việc tách các đặc tính của ảnh dưới dạng các thông tin định lượng hoặc làm
cơ sở để phân biệt lớp đối tượng này với đối tượng khác trong phạm vi ảnh nhận
được. Ví dụ: trong nhận dạng ký tự trên phong bì thư, chúng ta miêu tả các đặc

trưng của từng ký tự giúp phân biệt ký tự này với ký tự khác.
e) Nhận dạng và nội suy ảnh (Image Recognition and Interpretation).
Nhận dạng ảnh là quá trình xác định ảnh. Quá trình này thường thu được
bằng cách so sánh với mẫu chuẩn đã được học (hoặc lưu) từ trước. Nội suy là
phán đoán theo ý nghĩa trên cơ sở nhận dạng. Ví dụ: một loạt chữ số và nét gạch
ngang trên phong bì thư có thể được nội suy thành mã điện thoại. Có nhiều cách
5


phân loai ảnh khác nhau về ảnh. Theo lý thuyết về nhận dạng, các mơ hình tốn
học về ảnh được phân theo hai loại nhận dạng ảnh cơ bản:
- Nhận dạng theo tham số.
- Nhận dạng theo cấu trúc.
Một số đối tượng nhận dạng khá phổ biến hiện nay đang được áp dụng trong
khoa học và công nghệ là: nhận dạng ký tự (chữ in, chữ viết tay, chữ ký điện tử),
nhận dạng văn bản (Text), nhận dạng vân tay, nhận dạng mã vạch, nhận dạng
mặt người…
f) Cơ sở tri thức (Knowledge Base) .
Như đã nói ở trên, ảnh là một đối tượng khá phức tạp về đường nét, độ
sáng tối, dung lượng điểm ảnh, môi trường để thu ảnh phong phú kéo theo
nhiễu. Trong nhiều khâu xử lý và phân tích ảnh ngồi việc đơn giản hóa các
phương pháp toán học đảm bảo tiện lợi cho xử lý, người ta mong muốn bắt
chước quy trình tiếp nhận và xử lý ảnh theo cách của con người. Trong các bước
xử lý đó, nhiều khâu hiện nay đã xử lý theo các phương pháp trí tuệ con người.
Vì vậy, ở đây các cơ sở tri thức được phát huy. Trong tài liệu, chương 6 về nhận
dạng ảnh có nêu một vài ví dụ về cách sử dụng các cơ sở tri thức đó.
g) Mơ tả (biểu diễn ảnh).
Từ Hình 1.1, ảnh sau khi số hoá sẽ được lưu vào bộ nhớ, hoặc chuyển
sang các khâu tiếp theo để phân tích. Nếu lưu trữ ảnh trực tiếp từ các ảnh thơ,
địi hỏi dung lượng bộ nhớ cực lớn và không hiệu quả theo quan điểm ứng dụng

và công nghệ. Thông thường, các ảnh thơ đó được đặc tả (biểu diễn) lại (hay đơn
giản là mã hoá) theo các đặc điểm của ảnh được gọi là các đặc trưng ảnh (Image
Features) như: biên ảnh (Boundary), vùng ảnh (Region). Một số phương pháp
biểu diễn thường dùng:
6


• Biểu diễn bằng mã chạy (Run-Length Code)
• Biểu diễn bằng mã xích (Chaine -Code)
• Biểu diễn bằng mã tứ phân (Quad-Tree Code)
- Biểu diễn bằng mã chạy
Phương pháp này thường biểu diễn cho vùng ảnh và áp dụng cho ảnh nhị
phân. Một vùng ảnh R có thể mã hố đơn giản nhờ một ma trận nhị phân:
U(m, n) = 1 nếu (m, n) thuộc R
U(m, n) = 0 nếu (m, n) khơng thuộc R
Trong đó: U(m, n) là hàm mô tả mức xám ảnh tại tọa độ (m, n). Với cách
biểu diễn trên, một vùng ảnh được mô tả bằng một tập các chuỗi số 0 hoặc 1.
Giả sử chúng ta mô tả ảnh nhị phân của một vùng ảnh được thể hiện theo toạ độ
(x, y) theo các chiều và đặc tả chỉ đối với giá trị “1” khi đó dạng mơ tả có thể là:
(x, y)r; trong đó (x, y) là toạ độ, r là số lượng các bit có giá trị “1” liên tục theo
chiều ngang hoặc dọc.
- Biểu diễn bằng mã xích
Phương pháp này thường dùng để biểu diễn đường biên ảnh. Một đường
bất kỳ được chia thành các đoạn nhỏ. Nối các điểm chia, ta có các đoạn thẳng kế
tiếp được gán hướng cho đoạn thẳng đó tạo thành một dây xích gồm các đoạn.
Các hướng có thể chọn 4, 8, 12, 24,… mỗi hướng được mã hoá theo số thập
phân hoặc số nhị phân thành mã của hướng.
- Biểu diễn bằng mã tứ phân

7



Phương pháp mã tứ phân được dùng để mã hoá cho vùng ảnh. Vùng ảnh
đầu tiên được chia làm bốn phần thường là bằng nhau. Nếu mỗi vùng đã đồng
nhất (chứa tồn điểm đen (1) hay trắng (0)), thì gán cho vùng đó một mã và
khơng chia tiếp. Các vùng không đồng nhất được chia tiếp làm bốn phần theo
thủ tục trên cho đến khi tất cả các vùng đều đồng nhất. Các mã phân chia thành
các vùng con tạo thành một cây phân chia các vùng đồng nhất.
Trên đây là các thành phần cơ bản trong các khâu xử lý ảnh. Trong thực
tế, các quá trình sử dụng ảnh số khơng nhất thiết phải qua hết các khâu đó tùy
theo đặc điểm ứng dụng. Hình 2 cho sơ đồ phân tích và xử lý ảnh và lưu đồ
thơng tin giữa các khối một cách khá đầy đủ. Anh sau khi được số hóa được nén,
luuw lai để truyền cho các hệ thống khác sử dụng hoặc để xử lý tiếp theo. Mặt
khác, ảnh sau khi số hóa có thể bỏ qua công đoạn nâng cao chất lượng (khi ảnh
đủ chất lượng theo một yêu cầu nào đó) để chuyển tới khâu phân đoạn hoặc bỏ
tiếp khâu phân đoạn chuyển trực tiếp tới khâu trích chọn đặc trưng. Hình 2 cũng
chia các nhánh song song như: nâng cao chất lượng ảnh có hai nhánh phân biệt:
nâng cao chất lượng ảnh (tăng độ sáng, độ tương phản, lọc nhiễu) hoặc khôi
phục ảnh (hồi phục lại ảnh thật khi ảnh nhận được bị méo) v.v…

Hình 2: Sơ đồ phân tích và xử lý ảnh và lưu đồ thông tin giữa các khối.

8


2.2

Python là gì ?

Python là một ngơn ngữ lập trình bậc cao cho các mục đích lập trình đa năng,

do Guido van Rossu tạo ra và lần đầu ra mắt vào năm 1991. Python được thiết
kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python là ngơn ngữ có hình
thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu
trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối
thiểu.
Python hồn tồn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do
vậy nó tương tự như Perk, Ruby và Tcl. Python được phát triển trong một dự án
mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.
Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời
gian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOC đến Mac-Os,
OS/2, Windown, Linux và các hệ điều hành khác thuộc họ Unix.
Python được dùng ở nhiều mục đích :
+ Lập trình ứng dụng web: Bạn có thể tạo web app có khả năng mở
rộng (scalable) được bằng cách sử dụng framework và CMS (Hệ thống quản trị
nội dung) được tích hợp trong Python. Vài nền tảng phổ biến để tạo web app là:
Django, Flask, Pyramid, Plone, Django CMS. Các trang như Mozilla, Reddit,
Instagram và PBS đều được viết bằng Python.
+Khoa học và tính tốn: Có nhiều thư viện trong Python cho khoa học
và tính tốn số liệu, như SciPy và NumPy, được sử dụng cho những mục đích
chung chung trong tính tốn. Và, có những thư viện cụ thể như: EarthPy cho
khoa học trái đất, AstroPy cho Thiên văn học,... Ngoài ra, Python còn được sử
dụng nhiều trong machine learning, khai thác dữ liệu và deep learning.

9


2.3 Tìm hiểu OpenCV ?
2.3.1

OpenCV là gì?

OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính

(computer vision), xử lý ảnh và máy học, và các tính năng tăng tốc GPU trong
hoạt động thời gian thực.
OpenCV được phát hành theo giấy phép BSD, do đó nó hồn tồn miễn phí
cho cả học thuật và thương mại. Nó có các giao diện C++, C, Python, Java và hỗ
trợ Windows, Linux, Mac OS, iOS và Android.
OpenCV được thiết kế để tính tốn hiệu quả và với sự tập trung nhiều vào
các ứng dụng thời gian thực. Được viết bằng tối ưu hóa C/C++, thư viện có thể
tận dụng lợi thế của xử lý đa lõi. Được sử dụng trên khắp thế giới, OpenCV có
cộng đồng hơn 47 nghìn người dùng và số lượng download vượt quá 6 triệu lần.
Phạm vi sử dụng từ nghệ thuật tương tác, cho đến lĩnh vực khai thác mỏ, bản đồ
trên web hoặc công nghệ robot.
2.3.2 Ứng dụng của OpenCV.
OpenCV đang được sử dụng rộng rãi trong các ứng dụng bao gồm:


Hình ảnh street view.



Kiểm tra và giám sát tự động.



Robot và xe hơi tự lái.



Phân tích hình ảnh y tế.




Tìm kiếm và phục hồi hình ảnh/video.



Phim - cấu trúc 3D từ chuyển động.



Nghệ thuật sắp đặt tương tác.

10


Hình 3: Ứng dụng đơn giản của OpenCV.

2.3.3 Chức năng của OpenCV.


Image/video I/O, xử lý, hiển thị (core, imgproc, highgui).



Phát hiện các vật thể (objdetect, features2d, nonfree).



Geometry-based monocular or stereo computer vision (calib3d, stitching,

videostab).



Chụp ảnh tính tốn (photo, video, superres).



Học máy & phân cụm (ml, flann).



Tăng tốc CUDA (gpu).

2.4 Tìm hiểu Keras và mơ hình Convolutional Neural Network.
2.4.1 Keras là gì ?

Keras là một library được phát triển vào năm 2015 bi Franỗois Chollet, l
mt k s nghiờn cu deep learning tại google. Nó là một open source cho
neural network được viết bởi ngôn ngữ python. keras là một API bậc cao có thể
sử dụng chung với các thư viện deep learning nổi tiếng như tensorflow (được
11


phát triển bởi gg), CNTK (được phát triển bởi microsoft), theano (người phát
triển chính Yoshua Bengio). keras có một số ưu điểm như:
o

Dễ sử dụng, xây dựng model nhanh.


o

Có thể run trên cả cpu và gpu

o

Hỗ trợ xây dựng CNN, RNN và có thể kết hợp cả 2.

Hình 4 : Cấu trúc của Keras.

Hình 5: Bộ xương cho module của Keras.

12


Hình 6: Các lớp layer trong mơ hình của Keras.

2.4.2 Mơ hình Convolutional Neural Network.

Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một
trong những mơ hình Deep Learning tiên tiến. 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 nhận dạng 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 nhận dạng
(detection), chúng ta hãy cùng tìm hiểu về thuật toán này.

13



Hình 7: Mơ hình cơ bản của CNN.

Convolutional là gì?
Convolutional là một cửa sổ trượt (Sliding Windows) trên một ma trận. 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 5×5 và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm
của dòng và cột.
14


Convolution hay tích chập là nhân từng phần tử trong ma trận 3. 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à 3×3.
Convolution hay tích chập là nhân từng phần tử bên trong ma trận 3×3 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 5×5 bên trái.
Cấu trúc của mạng CNN.
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các
hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các
node. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thơng tin
trừu tượng hơn cho các lớp tiếp theo.
Mỗi một lớp sau khi thơng qua các hàm kích hoạt sẽ tạo ra các thông tin trừu
tượng hơn cho các lớp tiếp theo. Trong mơ hình mạng truyền ngược
(feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi
neural đầu ra trong các lớp tiếp theo.
Mơ hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn

vẹn (affine layer). Cịn 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ộ. Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter
áp đặt lên một vùng ảnh cục bộ của neuron trước đó.
Mỗi một lớp được sử dụng các filter khác nhau thơng thường có hàng trăm hàng
nghìn filter như vậy và kết hợp kết quả của chúng lại. Ngồi ra có 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
15


hơn (loại bỏ các thơng tin nhiễu). Trong q trình huấn luyện mạng (traning)
CNN tự động học các giá trị qua các lớp filter dựa vào cách thức mà bạn thực
hiện. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thơng số tối ưu
cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > highlevel features. Layer cuối cùng được dùng để phân lớp ảnh.

Hình 8: Mơ hình mạng CNN.

Trong mơ hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location
Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu
đối tượng này được chiếu theo các gốc độ khác nhau (translation, rotation,
scaling) thì độ chính xác của thuật tốn sẽ bị ảnh hưởng đáng kể.
Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation),
phép quay (rotation) và phép co giãn (scaling). 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.

Mạng CNN sử dụng 3 ý tưởng cơ bản:


16




các trường tiếp nhận cục bộ (local receptive field)



trọng số chia sẻ (shared weights)



tổng hợp (pooling).

Trường tiếp nhận cục bộ (local receptive field)
Đầu vào của mạng CNN là một ảnh. Ví dụ như ảnh có kích thước 28×28 thì
tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ô
trong ma trận. Trong mơ hình mạng ANN truyền thống thì chúng ta sẽ kết nối
các neuron đầu vào vào tầng ảnh.
Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối
trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5
tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một trọng số
và mỗi neuron ẩn sẽ học một bias. Mỗi một vùng 5×5 đấy gọi là một trường tiếp
nhận cục bộ.
Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng các
cách sau:

Hình 9 : Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1.


17


Hình 10: Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2.

Với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là
feature map, trọng số xác định các đặc trương là shared weight và độ lệch xác
định một feature map là shared bias. Như vậy đơn giản nhất là qua các bước trên
chúng ta chỉ có 1 feature map. Tuy nhiên trong nhận dạng ảnh chúng ta cần
nhiều hơn một feature map.
Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp
chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp.
Trọng số chia sẻ (shared weight and bias).
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các nơ-ron
trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác
nhau trong hình ảnh đầu vào. Chúng ta gọi việc map từ input layer sang hidden
layer là một feature map. Vậy mối quan hệ giữa số lượng Feature map với số
lượng tham số là gì?


Chúng ta thấy mỗi fearture map cần 25 = 5×5 shared weight và 1
shared bias. Như vậy mỗi feature map cần 5×5+1 = 26 tham số. Như
18


×