Tải bản đầy đủ (.pdf) (118 trang)

Ứng dụng trí tuệ nhân tạo để phát hiện và xác định số lá cây dưa chuột

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 (6.19 MB, 118 trang )

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM

KHOA CƠ ĐIỆN

TRẦN NGỌC LY

ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:

ỨNG DỤNG TRÍ TUỆ NHÂN TẠO ĐỂ PHÁT HIỆN
VÀ XÁC ĐỊNH SỐ LÁ CÂY DƯA CHUỘT.

Hà Nội – 2021


HỌC VIỆN NÔNG NGHIỆP VIỆT NAM

KHOA CƠ ĐIỆN

ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:

ỨNG DỤNG TRÍ TUỆ NHÂN TẠO ĐỂ PHÁT HIỆN
VÀ XÁC ĐỊNH SỐ LÁ CÂY DƯA CHUỘT.

Giảng viên hướng dẫn : ThS. NGÔ QUANG ƯỚC
Sinh viên thực hiện

: TRẦN NGỌC LY

Mã SV



: 583167

Lớp

: K58-HTĐ

Chuyên ngành

: KỸ THUẬT ĐIỆN – ĐIỆN TỬ

Hà Nội – 2021


LỜI CẢM ƠN
Để hồn thành tốt bài khóa luận tốt nghiệp này trước tiên cho phép em
xin được gửi lời biết ơn sâu sắc nhất đến Thầy giáo ThS. NGÔ QUANG
ƯỚC, em cảm ơn thầy đã tận tâm, nhiệt tình khơng quản ngại khó khăn, vất
vả để quan tâm hướng dẫn em trong suốt q trình thực tập và khóa luận tốt
nghiệp vừa qua. Nhờ những tâm huyết đối với sinh viên của Thầy mà em đã
biết và áp dụng thành thạo những kiến thức đã học vào đề tài tốt nghiệp và để
chuẩn bị cho ngành nghề công việc sau khi ra trường,cảm ơn thầy đã luôn
giúp đỡ em trong suốt quá trình nhận và làm đồ án tốt nghiệp những bài học
của thầy em xin ghi nhớ và không ngừng trau dồi để phát triển bản thân phục
vụ công việc,đất nước.
Đồng thời em cũng gửi lời cảm ơn trân thành nhất đến tồn thể q thầy cơ
trong Trường Học Viện Nơng nghiệp Việt Nam nói chung, các thầy cô trong
Khoa Cơ – Điện và bộ môn: Hệ Thống Điện nói riêng đã bỏ cơng sức truyền đạt
lại những kiến thức cho chúng em trong những năm theo học tại trường.
Cuối cùng chúng em chúc Thầy giáo ThS. NGÔ QUANG ƯỚC và quý

thầy cô trong Học Viện luôn mạnh khỏe và thành công để giảng dạy và công
tác tốt. Chúc Thầy cơ và gia đình hạnh phúc.
Em xin chân thành cảm ơn!

i


MỤC LỤC
LỜI CẢM ƠN .................................................................................................... i
MỤC LỤC .......................................................................................................... i
DANH MỤC BẢNG ........................................................................................ iii
DANH MỤC HÌNH ......................................................................................... iv
MỞ ĐẦU .......................................................................................................... 1
CHƯƠNG 1. TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO ............................ 2
1.1. Trí tuệ nhân tạo là gì. (Tổng quan về trí tuệ nhân tạo) .............................. 2
1.2.Các Phương Pháp cơ bản trí tuệ nhân tạo. .................................................. 4
1.2.1. Tìm hiểu về Máy học ( Machine Learning ) ........................................... 4
1.2.2. Tìm hiểu về Học Sâu (Deep Learning). .................................................. 6
1.2.3. Mối quan hệ giữa AI, Machine Learing và DeepLearning. .................. 7
1.3 Thuật Toán CNN. ........................................................................................ 8
1.3.1. Đề xuất phương án xử lý ảnh bằng thuật toán học sâu CNN
(Convolutional Neural Network) ...................................................................... 8
CHƯƠNG 2. ỨNG DỤNG TRÍ TUỆ NHÂN TẠO TRONG NƠNG
NGHIỆP VÀ CÁC THUẬT TỐN NGHIÊN CỨU. ................................ 18
2.1. Ứng dụng AI trong nơng nghiệp: ............................................................. 18
2.2. Các thuật toán và các nghiên cứu: ........................................................... 19
2.2.1. Các thuật toán của AI: .......................................................................... 19
2.3. Giới thiệu về Support Vector Machine (SVM). ........................................... 25
2.4. Thuật toán faster R-CNN: ........................................................................ 31
CHƯƠNG 3. ỨNG DỤNG THUẬT TOÁN YOLO PHÁT HIỆN LÁ

CÂY DƯA CHUỘT ........................................................................................ 38
3.1. Tìm hiểu về mạng yolo(you only live once) ............................................ 38
3.2. Môi trường đào tạo mơ hình Yolo. .......................................................... 46
3.2.1 google colab là gì : ................................................................................. 46
i


3.2.2. Xây dựng dữ liệu và xác định số lá trên cây dưa chuột ........................ 48
3.2.3 Gán nhãn: ............................................................................................... 48
3.2.4. Cách train yolo tiny v4: ......................................................................... 52
3.3.Phương pháp ứng dụng phát hiện số lá cây bằng mã nguồn và python. ........ 66
3.3.1. Gán nhãn. .............................................................................................. 67
3.3.2 Các mã nguồn:........................................................................................ 68
3.3.3. Ứng dụng đếm lá: ................................................................................ 72
CHƯƠNG 4. THỰC NGHIỆM TRÊN PHẦN CỨNG RASPBERRY ... 78
4.1. Tìm hiểu về Raspberry Pi4....................................................................... 78
4.1.1 Module Camera Raspberry Pi ................................................................ 81
4.1.2. Hệ điều hành của Raspberry Pi4 ........................................................... 82
4.1.3. Kết nối với thiết bị ngoại vi .................................................................. 84
4.1.4.Liên kết phần cứng với laptop ............................................................... 86
4.1.5.Cài đặt một số phần mềm trên Laptop để kết nối với Raspberry: ......... 87
4.1.6. Cài đặt phần mềm VNC viewer trên Windows .................................... 90
4.2.Thiết lập camera ........................................................................................ 92
4.2.1Cài đặt phần mềm OpenCV trên giao diện của raspberry ...................... 94
MỘT SỐ HÌNH ẢNH THỰC NGHIỆM PHẦN CỨNG ........................... 98
TÀI LIỆU THAM KHẢO .......................................................................... 100

ii



DANH MỤC BẢNG

Bảng 1. So sánh giữa filter lớn và nhỏ. ........................................................... 14
Bảng 2. Kết quả sau khi thực nghiệm ............................................................. 64
Bảng 3. Kết quả sau khi thực nghiệm: ............................................................ 74

iii


DANH MỤC HÌNH

Hình 1. Mối quan hệ giữa AI, Machine Learning, DeepLearning.................... 7
Hình 2. Cấu tạo một neurel ............................................................................... 8
Hình 3. Hình ảnh đầu vào được biễu diễn bằng ma trận ................................ 10
Hình 4. Hình ảnh các lớp trong mơ hình CNN ............................................... 11
Hình 5. Ma trận đầu vào và ma trận đầu ra kernel .......................................... 12
Hình 6. Filter phá hiện cạnh trong ma trận ..................................................... 13
Hình 7. Đầu ra của bộ lọc được áp dụng cho lớp trước đó ............................. 14
Hình 8. Đệm hàng số 0 xung quanh ma trận đầu vào ..................................... 15
Hình 9. Ma trận đầu ra sau khi pooling ma trận đầu vào ................................ 16
Hình 10. sơ đồ cây quyết dịnh ........................................................................ 20
Hình 11. Cơng thức bayes ............................................................................... 21
Hình 12. Đồ thị hồi quy tuyến tính ................................................................. 22
Hình 13.Biểu diễn thuật tốn gom cụm .......................................................... 23
Hình 14.Các thành phần chính ........................................................................ 24
Hình 15. Các thành phần độc lập .................................................................... 25
Hình 16. Hình ảnh vector phân lớp ................................................................. 26
Hình 17. Đường hyper -land ........................................................................... 27
Hình 18. margin trong SVM. .......................................................................... 31
Hình 19. Các lớp trong yolo ............................................................................ 38

Hình 20. Nhận diện vật thể ............................................................................. 39
Hình 21. Các lớp phức tạp và các lớp kết nối ................................................. 42
Hình 22. Sơ đồ nhận diện vật thể .................................................................... 43
Hình 23. Mã nguồn trong yolo ........................................................................ 45
Hình 24.Giao diện mở colab ........................................................................... 46
Hình 25. Thao tác mở mã nguồn yolo............................................................. 47
Hình 26. Mở command prompt ....................................................................... 49
iv


Hình 27. Giao diện gán nhãn........................................................................... 49
Hình 28. Gán nhãn .......................................................................................... 50
Hình 29. Đánh tên lớp nhãn ............................................................................ 50
Hình 30. Các lớp được lưu .............................................................................. 51
Hình 31. Mã Nguồn yolo-tiny v4 .................................................................... 52
Hình 32.Mở mã nguồn Train .......................................................................... 54
Hình 33. Chọn mã nguồn để train ................................................................... 54
Hình 34. Giao diện train dữ liệu...................................................................... 55
Hình 35. Thư mục backup sau khi train .......................................................... 60
Hình 36. Đồ thị file chart ................................................................................ 61
Hình 37. Độ chính xác nhận diện lá ................................................................ 63
Hình 38. Chạy lệnh CMD tại thư mục mã nguồn ........................................... 72
Hình 39. Cửa sổ CMD..................................................................................... 73
Hình 40. Mặt trước của Raspberry Pi4 ........................................................... 79
Hình 41. Sơ đồ các bộ phận trên Raspberry Pi 4 ............................................ 80
Hình 42. Một số ứng dụng của raspberry Pi4 ................................................. 81
Hình 43. Mặt trước của Module Camera Raspberry ....................................... 81
Hình 44. Thẻ nhớ Micro SD............................................................................ 83
Hình 45. Hình ảnh đầu kết nối HDMI với màn hình ...................................... 83
Hình 46. Bộ cấp nguồn cho bộ điều khiển trung tâm .................................... 84

Hình 47. Sơ đồ cắm các đầu kết nối để cài hệ điều hành................................ 84
Hình 48. Hướng dẫn cài đặt hệ điều hành trung tâm ...................................... 85
Hình 49. Giao diện sau khi đã cài đặt xong hệ điều hành trung tâm
Raspberry Pi4 ................................................................................................. 85
Hình 50. Cài đặt VNC trên Raspian ................................................................ 86
Hình 51.Gắn camera vào bo mạch raspberry .................................................. 93

v


MỞ ĐẦU
Nông nghiệp từ lâu đã là truyền thống và là một nghành không thể
thiếu của đất nước Việt Nam chúng ta.
Trải qua hang nghìn năm phát triển từ sử dụng những công cụ thô sơ
cho đến ngày nay máy móc và khoa học hiện đại phát triển đều gặt hái được
rất nhiều thành tựu. Trong đó khơng thể kể đến các ứng dụng trí tuệ nhân tạo
và các phần mềm kỹ thuật.
Đề tài này được chọn với mục đích nghiên cứu và tìm hiểu về xử lý
ảnh,trí tuệ nhân tạo từ đó áp dụng thực nghiệm để có thể đo được kích thước
cây dưa chuột đồng thời nhận diện và đếm số lá theo dõi sự phát triển của nó.
ý nghĩa nhất định là tiếp cận khoa học kỹ thuật, cải thiện sự hiệu quả đồng
thời giúp cho ta có thể theo dõi nơng nghiệp mà tiết kiệm thời gian cũng như
công sức khi làm vụ mùa.

1


CHƯƠNG 1
TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO
1.1. Trí tuệ nhân tạo là gì. (Tổng quan về trí tuệ nhân tạo)

Trong khoa

học

máy

tính, trí

tuệ

nhân

tạo hay AI ( Artificial

Intelligence), đơi khi được gọi là trí thơng minh nhân tạo, là trí thơng minh
được thể hiện bằng máy móc, trái ngược với trí thông minh tự nhiên được con
người thể hiện. Thông thường, thuật ngữ "trí tuệ nhân tạo" thường được sử
dụng để mơ tả các máy móc (hoặc máy tính) bắt chước các chức năng "nhận
thức" mà con người liên kết với tâm trí con người, như "học tập" và "giải
quyết vấn đề".
Alan Turing là một nhà toán học, logic học và mật mã học người Anh,
người được cho là cha đẻ của ngành khoa học máy tính và trí tuệ nhân tạo.
Ơng được biết đến rộng rãi với vai trị là người giải được mật mã Enigma, thứ
mật mã được quân Phát Xít Đức dùng để liên lạc trong Chiến tranh Thế giới
thứ, tác giả của Máy Turing và Phép thử Turing, những cống hiến quan trọng
trong ngành Trí tuệ nhân tạo.
Vào năm 1955, John McCarthy, một nhà khoa học máy tính và khoa
học nhận thức của Mỹ đã lần đầu tiên đưa ra khái niệm Trí tuệ nhân tạo, mà
theo đó có nghĩa là bộ mơn khoa học và kĩ thuật chế tạo máy thơng minh.
Một năm sau đó, ơng đứng ra tổ chức Hội nghị Dartmouth, hội nghị đầu tiên

về chủ đề này. Các chuyên gia đến từ nhiều trường đại học và công ty khác
nhau như Carnegie Mellon University, Massachusetts Institute of Technology
và IBM đã tham gia hội nghị. Từ đó, khái niệm “Trí tuệ nhân tạo” được sử
dụng rộng rãi.
AI có thể nói là gần như bộ não của con người, con người làm được gì,
hiểu gì thì khi ứng dụng AI vào các thiết bị hay bộ máy nào đó họ cũng làm
được như con người chúng ta.

2


Trí tuệ nhân tạo khác với việc lập trình logic trong các ngơn ngữ lập
trình là ở việc ứng dụng các hệ thống học máy (machine learning) để mơ phỏng
trí tuệ của con người trong các xử lý mà con người làm tốt hơn máy tính.
Cụ thể, trí tuệ nhân tạo giúp máy tính có được những trí tuệ của con
người như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do
hiểu ngôn ngữ, tiếng nói, biết học và tự thích nghi,…
Tuy rằng trí thơng minh nhân tạo có nghĩa rộng như là trí thơng minh
trong các tác phẩm khoa học viễn tưởng, nó là một trong những ngành trọng
yếu của tin học. Trí thơng minh nhân tạo liên quan đến cách cư xử, sự học hỏi
và khả năng thích ứng thơng minh của máy móc.
Cơng nghệ AI được chia làm 4 loại chính:
• Loại 1: Công nghệ AI phản ứng.
Công nghệ AI phản ứng có khả năng phân tích những động thái khả thi
nhất của chính mình và của đối thủ, từ đó, đưa ra được giải pháp tối ưu nhất.
Một ví dụ điển hình của cơng nghệ AI phản ứng là Deep Blue. Đây là
một chương trình chơi cờ vua tự động, được tạo ra bởi IBM, với khả năng xác
định các nước cờ đồng thời dự đoán những bước đi tiếp theo của đối thủ.
Thơng qua đó, Deep Blue đưa ra những nước đi thích hợp nhất.
• Loại 2: Cơng nghệ AI với bộ nhớ hạn chế

Đặc điểm của công nghệ AI với bộ nhớ hạn chế là khả năng sử dụng
những kinh nghiệm trong quá khứ để đưa ra những quyết định trong tương lai.
Công nghệ AI này thường kết hợp với cảm biến mơi trường xung quanh nhằm
mục đích dự đốn những trường hợp có thể xảy ra và đưa ra quyết định tốt
nhất cho thiết bị.


Loại 3: Lý thuyết trí tuệ nhân tạo
Cơng nghệ AI này có thể học hỏi cũng như tự suy nghĩ, sau đó áp dụng

những gì học được để thực hiện một việc cụ thể. Hiện nay, công nghệ AI này
vẫn chưa trở thành một phương án khả thi.

3


• Loại 4: Tự nhận thức
Cơng nghệ AI này có khả năng tự nhận thức về bản thân, có ý thức và
hành xử như con người. Thậm chí, chúng cịn có thể bộc lộ cảm xúc cũng như
hiểu được những cảm xúc của con người. Đây được xem là bước phát triển cao
nhất của công nghệ AI và đến thời điểm hiện tại, công nghệ này vẫn chưa khả thi
1.2.Các Phương Pháp cơ bản trí tuệ nhân tạo.
1.2.1. Tìm hiểu về Máy học ( Machine Learning )
Machine Learning là một lĩnh vực con của AI. Nguyên tắc cốt lõi của
Machine Learning là các máy tiếp nhận dữ liệu và tự học. Machine learning là
một phương pháp phân tích dữ liệu mà sẽ tự động hóa việc xây dựng mơ hình
phân tích. Sử dụng các thuật tốn lặp để học từ dữ liệu, machine learning cho
phép máy tính tìm thấy những thơng tin giá trị ẩn sâu mà khơng được lập
trình một cách rõ ràng nơi để tìm.Khía cạnh lặp lại của machine learning là
quan trọng bởi vì khi các mơ hình này được tiếp xúc với dữ liệu mới thì

chúng có thể thích ứng một cách độc lập. Chúng học từ các tính tốn trước đó
để tạo ra những quyết định cũng như kết quả lặp lại và đáng tin cậy.
Nó hiện là cơng cụ hứa hẹn nhất của AI dành cho doanh nghiệp. Các hệ
thống Machine Learning có thể nhanh chóng áp dụng kiến thức và đào tạo từ
các bộ dữ liệu lớn để thực hiện các công việc về nhận dạng khn mặt, nhận
dạng giọng nói, nhận diện đối tượng, dịch và nhiều công việc khác một cách
xuất sắc. Khơng giống mã hóa thủ cơng một chương trình phần mềm với các
hướng dẫn cụ thể để hoàn thành một tác vụ, Machine Learning cho phép một
hệ thống tự học để nhận dạng các biểu mẫu và đưa ra dự đốn một cách chính
xác. Alpha Go là một ví dụ hồn hảo về Machine Learning, khi nó tiếp nhận
và học hỏi một lượng lớn dữ liệu từ cách bước đi cũng như tính tốn của các cao
thủ để đánh bại nhà vô địch thế giới Lee Sedol. Hiện tại, các tập đoàn lớn như IBM,
Google, Amazon, Microsoft… đều cung cấp các nền tảng Machine Learning để các
doanh nghiệp ứng dụng và tích hợp vào các chiến lược kinh doanh.
4


• Một số loại thuật tốn
 Học có giám sát (Supervised Learning ) : Về cơ bản, trong thuật toán
được giám sát này, dữ liệu đầu vào được gọi là dữ liệu huấn luyện và có nhãn
hoặc kết quả đã biết như thư rác / không phải thư rác hoặc giá cổ phiếu tại
một thời điểm.Trong đó, một mơ hình được chuẩn bị thơng qua một q trình
đào tạo. Ngồi ra, điều này cần thiết để đưa ra dự đoán. Và được sửa chữa khi
những dự đốn đó là sai. Q trình đào tạo tiếp tục cho đến khi mơ hình đạt
được mức độ mong muốn.
 Học khơng giám sát (Unsupervised Learning) : Trong thuật tốn
machine learning khơng giám sát này, input data đều khơng được dán nhãn và
khơng có kết quả rõ ràng. Vì vậy, chúng ta phải chuẩn bị mơ hình bằng cách
suy đốn các cấu trúc có trong input data. Điều này có thể là trích xuất các
quy tắc chung. Nó có thể là thơng qua một q trình tốn học để giảm sự sai

lệch và lỗi.
 Học nửa giám sát (Semi-Supervised Learning) : Đầu vào dữ liệu là một
hỗn hợp của các dữ liệu được gắn nhãn và khơng gắn nhãn. Trong đó chúng ta
có đặt ra một kết quả và mục tiêu theo mong muốn. Nhưng mơ hình thuật tốn
cần phải học các cấu trúc để tổ chức dữ liệu cũng như đưa ra các dự đoán.
 Học tăng cường (Reinforcement Learning) : Reinforcement learning
là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa
trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing the performance).
Hiện tại, Reinforcement learning chủ yếu được áp dụng vào Lý Thuyết Trò
Chơi (Game Theory), các thuật toán cần xác định nước đi tiếp theo để đạt được
điểm số cao nhất.
 Chuyển đổi: Tương tự học có giám sát nhưng khơng xây dựng hàm
một cách rõ ràng. Thay vì thế, cố gắng đốn kết quả mới dựa vào các dữ liệu
huấn luyện, kết quả huấn luyện, và dữ liệu thử nghiệm có sẵn trong quá trình
huấn luyện.
5


 Học cách học: Trong đó thuật tốn học thiên kiến quy nạp của chính
mình, dựa theo các kinh nghiệm đã gặp.
1.2.2. Tìm hiểu về Học Sâu (Deep Learning).
Deep learning là một lĩnh vực chuyên sâu của Machine Leaning. Nó sử
dụng một số kỹ thuật của Machine Learning để giải quyết các vấn đề thực tế
bằng cách khai thác các mạng thần kinh nhân tạo (dựa trên các thiết bị phần
cứng và phần mềm được kết nối với nhau theo cách nào đó) và mơ phỏng việc
đưa ra các quyết định của con người. Deep Learning có chi phí khá đắt đỏ, và
đòi hỏi các bộ dữ liệu lớn để tự tập luyện, bởi vì có một số lượng lớn các
tham số cần được tìm hiểu theo giải thuật, mà ban đầu có thể tạo ra rất nhiều
dữ liệu tích cực giả. Ví dụ, một thuật tốn deep learning có thể được hướng
dẫn để “học” về việc một con mèo trơng như thế nào. Nó sẽ có một bộ dữ liệu

khổng lồ của hình ảnh để nó hiểu được các chi tiết rất nhỏ mà phân biệt một
con mèo với một con báo hoa, một con báo đen hay một con cáo. Tiếp tục với
ví dụ về Alpha Go, Google đã lý giải về việc hệ thống đã sử dụng deep
learning theo cách kết hợp tìm kiếm cây Monte-Carlo với mạng thần kinh
nhân tạo đã được đào tạo bằng cách học có giám sát các trận của của những
chuyên gia và bằng cách tăng cường học tập từ các trận đấu tự chơi.
Deep Learning đã cho phép ứng dụng nhiếu vấn đề thực tế của máy
học và bằng cách mở rộng lĩnh vực tổng thể của AI. Deep learning phá vỡ các
cách thức con người làm việc bằng cách làm cho tất cả các loại máy móc trợ
giúp có thể thực hiện được, gần hoặc giống hệt con người.
Deep Learning có ứng dụng sâu rộng trong các lĩnh vực của đời sống,
ví dụ như tìm kiếm dựa trên văn bản, phát hiện gian lận, phát hiện spam, nhận
dạng chữ viết tay, tìm kiếm hình ảnh, nhận dạng giọng nói, phát hiện chế độ
xem phố và bản dịch là tất cả các tác vụ có thể được thực hiện thơng qua deep
learning, thay thế nhiều hệ thống dựa trên các nguyên tắc thủ công. Tuy

6


nhiên, deep learning cũng rất dễ bị thiên lệch, nếu trong bộ dữ liệu khơng có
những tham số cần thiết.
Điểm yếu của DL: Deep learning khơng phải là thuật tốn generalpurpose bởi vì chúng địi hỏi một lượng dữ liệu khổng lồ để training. Thực tế,
chúng bị vượt mặt bởi các thuật toán tree ensembles trong các tác vụ machine
leanring cơ bản. Hơn nữa, mơ hình này tốn rất nhiều tài nguyên để train và
đòi hỏi nhiều chuyên gia để tuning hypermarameters (số layer, số node từng
layer, learning rate, số lần lặp).
1.2.3. Mối quan hệ giữa AI, Machine Learing và DeepLearning.

Hình 1. Mối quan hệ giữa AI, Machine Learning, DeepLearning
Như vậy, ta có thể thấy ML chỉ là một thành phần trong hướng tiếp cận

hành động như người, và hướng tiếp cận này lại thuộc bốn hướng tiếp cận của
AI. Để đạt được mục tiêu này, các nhà khoa học đã nghiên cứu ra nhiều giải
thuật và các hướng giải quyết khác nhau:
• Supervised-learning: decision tree, k-NN, naive bayes, SVM, neural
network, deep learning, …

7


• Unsupervised-learning: k-means, hierachical clustering
• Reinforcement learning: passive/acive/generalization.
Một lần nữa ta có thể thấy Deep learning chỉ là một phương pháp nằm
trong hướng giải quyết học có giám sát của Machine Learning.
1.3 Thuật Toán CNN.
1.3.1. Đề xuất phương án xử lý ảnh bằng thuật toán học sâu CNN
(Convolutional Neural Network)
a. Tìm hiểu về mạng Neural Networks
Định nghĩa: Mạng nơron nhân tạo, Artificial Neural Network (ANN) là một
mơ hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ
nơron sinh học. Nó được tạo nên từ một số lượng lớn các phần tử (nơron) kết
nối với nhau thông qua các liên kết (trọng số liên kết) làm việc như một thể
thống nhất để giải quyết một vấn đề cụ thể nào đó. Một mạng nơron nhân tạo
được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, phân loại dữ liệu,...)
thơng qua một q trình học từ tập các mẫu huấn luyện. Về bản chất học
chính là q trình hiệu chỉnh trọng số liên kết giữa các nơron.
Cấu trúc neural nhân tạo:

Hình 2. Cấu tạo một neurel

8



Các thành phần cơ bản của một nơron nhân tạo bao gồm:
• Tập các đầu vào: Là các tín hiệu vào (input signals) của nơron, các tín
hiệu này thường được đưa vào dưới dạng một vector N chiều.
• Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số liên kết Synaptic weight. Trọng số liên kết giữa tín hiệu vào thứ j với nơron k thường
được kí hiệu là wkj. Thơng thường, các trọng số này được khởi tạo một cách
ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật liên tục trong quá
trình học mạng.
Bộ tổng (Summing function): Thường dùng để tính tổng của tích các đầu
vào với trọng số liên kết của nó.
Ngưỡng (cịn gọi là một độ lệch - bias): Ngưỡng này thường được đưa
vào như một thành phần của hàm truyền.
Hàm truyền (Transfer function): Hàm này được dùng để giới hạn phạm
vi đầu ra của mỗi nơron. Nó nhận đầu vào là kết quả của hàm tổng và
ngưỡng.
Đầu ra: Là tín hiệu đầu ra của một nơron, với mỗi nơron sẽ có tối đa là
một đầu ra.
b. Khái niệm Convolutional Neural Networks(CNN)
Convolutional Neural Networks (CNN) là một trong những mô hình
deep learning phổ biến nhất và có ảnh hưởng nhiều nhất trong cộng đồng
Computer Vision. CNN được dùng trong trong nhiều bài tốn như nhân dạng
ảnh, phân tích video, ảnh MRI, hoặc cho bài các bài của lĩnh vự xử lý ngôn
ngữ tự nhiên,và hầu hết đều giải quyết tốt các bài toán này.

9


Hình 3. Hình ảnh đầu vào được biễu diễn bằng ma trận
Để biểu diễn một bức ảnh 256x256 pixel trong máy tính thì ta cần ma

trận sẽ có kính thước 256x256 chiều, và tùy thuộc vào bức ảnh là có màu hay
ảnh xám thì ma trận này sẽ có số kênh tương ứng, ví dụ với ảnh màu 256x256
RGB, chúng ta sẽ có ma trận 256x256x3 để biểu diễn ảnh này
* Cấu trúc 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 đó.

10


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 hơn (loại bỏ các thơng tin nhiễu).
Trong quá 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 > high-level features.

Layer cuối cùng được dùng để phân lớp ảnh.

Hình 4. Hình ảnh các lớp trong mơ hình CNN
c. Convolution Layer
Convolution layer là lớp quan trọng nhất và cũng là lớp đầu tiên của
của mơ hình CNN. Lớp này có chức năng chính là phát hiện các đặc trưng có
tính khơng gian hiệu quả. Trong tầng này có 4 đối tượng chính là: ma trận đầu
vào, bộ filters, và receptive field, feature map. Convlayer nhận đầu vào là một
11


ma trận 3 chiều và một bộ filters cần phải học. Bộ filters này sẽ trượt qua từng
vị trí trên bức ảnh để tính tích chập (convolution) giữa bộ filter và phần tương
ứng trên bức ảnh. Phần tưng ứng này trên bức ảnh gọi là receptive field, tức là
vùng mà một neuron có thể nhìn thấy để đưa ra quyết định, và mà trận cho ra
bới quá trình này được gọi là feature map. Để hình dung, các bạn có thể tưởng
tượng, bộ filters giống như các tháp canh trong nhà tù quét lần lượt qua không
gian xung quanh để tìm kiếm tên tù nhân bỏ trốn. Khi phát hiện tên tù nhân bỏ
trốn, thì chng báo động sẽ reo lên, giống như các bộ filters tìm kiếm được
đặc trưng nhất định thì tích chập đó sẽ cho giá trị lớn.
Với ví dụ ở bên dưới, dữ liệu đầu vào ở là ma trận có kích thước 8x8x1,
một bộ filter có kích thước 2x2x1, feature map có kích thước 7x7x1. Mỗi giá
trị ở feature map được tính bằng tổng của tích các phần tử tương ứng của bộ
filter 2x2x1 với receptive field trên ảnh. Và để tính tất cả các giá trị cho
feature map, các bạn cần trượt filter từ trái sáng phải, từ trên xuống dưới. Do
đó, các bạn có thể thấy rằng phép convolution bảo tồn thứ tự khơng gian của
các điểm ảnh. ví dụ điểm góc gái của dữ liệu đầu vào sẽ tương ứng với bên
một điểm bên góc trái của feature map.

Hình 5. Ma trận đầu vào và ma trận đầu ra kernel

d. Tầng convolution như là feature detector
Tầng convolution có chức năng chính là phát hiện đặc trưng cụ thể của
bức ảnh. Những đặc trưng này bao gồm đặc trưng cơ bản là góc,cạnh, màu

12


sắc, hoặc đặc trưng phức tạp hơn như texture của ảnh. Vì bộ filter qt qua
tồn bộ bức ảnh, nên những đặc trưng này có thể nằm ở vị trí bất kì trong bức
ảnh, cho dù ảnh bị xốy trái/phải thì những đặc trưng này vẫn bị phát hiện.
Tập hơn nhiều bộ filters sẽ cho phép các bạn phát hiện được nhiều loại đặc
trưng khác nhau,và giúp định danh được đối tượng.
Ở minh họa dưới, các bạn có một filter 5x5 dùng để phát hiện góc/cạnh
với, filter này chỉ có giá trị một tại các điểm tương ứng một góc cong.

Hình 6. Filter phá hiện cạnh trong ma trận
e. Các tham số của tầng convolution: Kích thước bộ filter, stride và padding.
Kích thước bộ filter là một trong những tham số quan trọng nhất của
tầng convolution. Kích thước này tỉ lệ thuận với số tham số cần học tại mỗi
tầng convolution và là tham số quyết định receptive field của tầng này. Kích
thước phổ biến nhất của bộ filter là 3x3.
Kích thước filter nhỏ được ưu tiên lựa chọn thay kích thước lớn vì
những lý do sau đây.

13


Bảng 1. So sánh giữa filter lớn và nhỏ.
Filter Nhỏ


Filter Lớn

Kích thước nhỏ thì mỗi lần nhìn được Kích thước lớn thì mỗi lần nhìn được
mỗi vùng nhỏ các pixel
Rút trích được đặc trưng có tính cục
bộ cao
Phát hiện được các đặc trưng nhỏ hơn
Đặc trưng rút trích được sẽ đa dạng,
hữu ích hơn ở tầng sau

mỗi vùng lớn các pixel
Các đặc trưng có tính tổng quan hơn
Bắt được những phần cơ bản của bức
ảnh
Thơng ít rút trích được ít đa dạng

Giảm kích thước ảnh chậm hơn, do

Giảm kích thước ảnh nhanh, do đó

đó cho phép mạng sâu hơn

chỉ cho phép mạng nơng

Ít trong số hơn, chia sẻ trọng số tốt
hơn

Chia sẻ trọng số ít ý nghĩa hơn

Kích thước filter của tầng convolution hầu hết đều là số lẻ, ví dụ như

3x3 hay 5x5. Với kích thước filter lẻ, các giá trị của feature map sẽ xác định
một tâm điểm ở tầng phía trước. Nếu ta chọn filter có kích thước 2x2, 4x4 thì
ta sẽ gặp khó khăn khi muốn tìm vị trí tương ứng của các giá trị feature map
trên khơng gian ảnh.

Hình 7. Đầu ra của bộ lọc được áp dụng cho lớp trước đó

14


Ở những trường hợp đặt biệt như filter có kích thước 1x1, hay có kích
thước bằng với ma trận đầu vào, tầng convolution có ý nghĩa rất thú vị. Khi
có kích thước 1x1, tầng convolution xem mỗi điểm như một đặc trưng riêng
biệt, có chức năng giảm chiều (tăng chiều) khi số lượt feature map ở tầng sau
nhỏ hơn (lớn hơn) tầng trước. Filter 1x1 đã được sử dụng trong kiến trúc
mạng phổ biến như Inception networks. Trong khi đó, filter với kích thước
bằng ảnh đầu vào, tầng convolution có chức năng y hệt fully connected layer.
Khi áp dụng phép convolution thì ma trận đầu vào sẽ có nhỏ dần đi, do
đó số layer của mơ hình CNN sẽ bị giới hạn, và không thể xây dựng deep nets
mong muốn. Để giải quyết tình trạng này, ta cần padding vào ma trận đầu vào
để đảm bảo kích thước đầu ra sau mỗi tầng convolution là khơng đổi. Do đó
có thể xậy dựng được mơ hình với số tầng convolution lớn tùy ý. Một cách
đơn giản và phổ biến nhất để padding là sử dụng hàng số 0, ngoài ra các bạn
cũng có thể sử dụng reflection padding hay là symmetric padding.

Hình 8. Đệm hàng số 0 xung quanh ma trận đầu vào
f. Nonlinear Layer
ReLU (Rectified Linear Units, f = max(0, x)) là hàm kích hoạt phổ biến
nhất cho CNN tại thời điểm bài viết lần đầu xuất hiện, được giới thiệu bởi
Geoffrey E. Hinton năm 2010. Trước khi hàm ReLU được áp dụng thì những

hàm như sigmoid hay tanh mới là những hàm được sử dụng phổ biến. Hàm
15


ReLU được ưa chuộng vì tính tốn đơn giản, giúp hạn chế tình trạng
vanishing gradient, và cũng cho kết quả tốt hơn. ReLU cũng như những hàm
kích hoạt khác, được đặt ngay sau tầng convolution, ReLU sẽ gán những giá
trị âm bằng 0 và giữ nguyên giá trị của đầu vào khi lớn hơn 0.
ReLU cũng có một số vấn đề tiềm ẩn như khơng có đạo hàm tại điểm 0,
giá trị của hàm ReLU có thể lớn đến vơ cùng và nếu chúng ta không khởi tạo
trọng số cẩn thận, hoặc khởi tạo learning rate quá lớn thì những neuron ở tầng
này sẽ rơi vào trạng thái chết, tức là ln có giá trị < 0.
g. Pooling Layer
Sau hàm kích hoạt, thơng thường chúng ta sử dụng tầng pooling. Một số
loại pooling layer phổ biến như là max-pooling, average pooling, với chức
năng chính là giảm chiều của tầng trước đó. Với một pooling có kích thước
2x2, các bạn cần phải trược filter 2x2 này trên những vùng ảnh có kích thước
tương tự rồi sau đó tính max, hay average cho vùng ảnh đó.

Hình 9. Ma trận đầu ra sau khi pooling ma trận đầu vào
Ý tưởng đằng sau tầng pooling là vị trí tuyết đối của những đặc trưng
trong khơng gian ảnh khơng cịn cần cần thiết, thay vào đó vị trí tương đối giữ
các đặc trưng đã đủ để phân loại đối tượng. Hơn nữa giảm tầng pooling có
khả năng giảm chiều cực kì nhiều, làm hạn chế overfit, và giảm thời gian
huấn luyện tốt.

16


h. Fully Connected Layer

Tầng cuối cùng của mơ hình CNN trong bài toán phân loại ảnh là tầng
fully connected layer. Tầng này có chức năng chuyển ma trận đặc trưng ở
tầng trước thành vector chứa xác suất của các đối tượng cần được dự đốn. Ví
dụ, trong bài tốn phân loại số viết tay MNIST có 10 lớp tương ứng 10 số từ
0-1, tầng fully connected layer sẽ chuyển ma trận đặc trưng của tầng trước
thành vector có 10 chiều thể hiện xác suất của 10 lớp tương ứng.
Và cuối cùng, q trình huấn luyện mơ hình CNN cho bài toán phân loại
ảnh cũng tương tự như huấn luyện các mơ hình khác. Chúng ta cần có hàm độ
lỗi để tính sai số giữ dự đốn của mơ hình và nhãn chính xác, cũng như sử
dụng thuật tốn backpropagation cho quá trình cập nhật trọng số.

17


×