Tải bản đầy đủ (.docx) (65 trang)

Đồ Án Cơ Sở 4 Đề Tài Phần Mềm Nhận Dạng Trái Cây Dựa Trên Nền Tảng Deep Learning.docx

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 (2.55 MB, 65 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VIỆT - HÀN

ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI:

PHẦN MỀM NHẬN DẠNG TRÁI CÂY DỰA TRÊN
NỀN TẢNG DEEP LEARNING


LỜI CẢM ƠN
Là sinh viên năm 3 của Trường Đại Học Công Nghệ Thông Tin và Truyền
Thông Việt – Hàn. Chúng em đã ý thức được việc phát triển bản thân, những kỹ năng
và điều thiết yếu trong quá trình làm đồ án. Tiếp thu và hoàn thiện những kỹ năng cịn
thiếu trong q trình đang học tập tại trường. Để có thể tạo ra những sản phẩm bóa cáo
hồn thiện trong mơn đồ án 4 này. NHẬN XÉT
tập,ơn
nếu
Nhóm đồ án chúng(Của
em cơ
xinquan
gửi thực
lời cảm
đếncó)thầy Nguyễn Hà Huy Cường –
giảng viên hướng dẫnBold,
đồ án
cơ16,
sở xếp
4 đãsau
trang


bị Lời
chocảm
em những
kiến thức, kỹ năng cơ
size
trang
ơn
bản cần có để hồn thành đề tài này.
Tuy nhiên trong quá trình nghiêm cứu đề tài, do kiến thức chun ngành cịn
hạn
chế
nên nhóm chúng em vẫn cịn nhiều thiếu sót khi tìm hiểu, đánh giá và trình
size 13………………………………..
bày về đề tài. Rất mong nhận được sự quan tấm và góp ý của thầy/cơ bộ mơn để tài của
………………………………………………………………………………………
em
được đầy đủ và hoàn chỉnh hơn.
………………………………………………………………………………………
Xin chân thành cảm ơn!
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………


MỤC LỤC
Trang
Phần I Mở đầu
1.
2.
3.

Phần II

1

Tổng quan
Mục đích
Phương pháp

1
1
1

Nội dung

2

Chương 1 Nghiên cứu tổng quan
1. Các phương pháp
1.1 Bài toán nhận dạng mẫu
1.2 Tổng quan kiến trúc của một hệ thống nhận dạng mẫu
1.3 Hạn chế tồn tại của bài tốn nhận dạng
1.4 Cơng nghệ thực hiện
1.4.1 Giới thiệu ngơn ngữ lập trình Python
1.4.2 Giới thiệu về thư viện OpenCV
1.4.3 Giới thiệu về thư viện Tensorflow
1.4.4 Mơi trường lập trình Visual Studio Code
Chương 2 Tổng quan về Nhận Dạng Trái Cây
2
Hệ thống phát hiện đối tượng
2.1 Định nghĩa

2.1.1 Một số phương pháp xác định khuôn mặt người
2.1.2 Phương pháp áp dụng trong đồ án
2.2 Tổng quan về kỹ thuật phát hiện
2.2.1 Kỹ thuật phát hiện Haar Cascade Classifier
2.2.1.1 Tổng quan về Adaboost
2.2.1.2 Tiếp cận Boosting
2.2.2.3. Adaboost
2.2.2.4 Các đặc trưng Haar-Like
2.2.2.5. Cascade of Classifiers
2.2.2.6. Cascade of boosting classifiers:
2.3.
Kỹ thuật huấn luyện ảnh
2.3.1. Deep Learning
2.3.2 Convolutional neural networks (CNN)
2.3.3 Convolutional layers
2.3.4 Pooling layers
2.3.5 Fully connected layers
2.3.6 Loss layers
2.3.7 Recurrent neural network
2.3.8 Deep belief network
2.4 Thư viện Tensorflow
2.4.1 Mơ hình mạng neural trong huấn luyện
2.5 Tập dữ liệu hình ảnh trái cây tiền đề

2
2
2
2
3
4

4
5
6
7
8
8
8
8
9
10
10
10
10
10
12
13
14
15
15
16
16
17
18
18
19
19
20
21
22



Chương 3 Phân tích và triển khai xây dựng
3. Phân tích thiết kế hệ thống
3.1.
Phân tích
3.2.
Phân tích thiết kế
3.3 Triển khai cài đặt, mô phỏng hệ thống
3.3.1 Triển khai cài đặt
3.3.1.1 Cài đặt môi trường Python
3.3.1.2 Cài đặt các thư viện phụ thuộc cần thiết
3.3.2 Triển khai hệ thống
3.3.3 Demo hệ thống
3.3.4 Kết quả của hệ thống
Phần III

Kết luận

DANH MỤC TÀI LIỆU THAM KHẢO

25
25
25
26
27
27
27
28
30
30

34
37
38


DANH MỤC HÌNH
Trang
Hình 1: Các bước xử lý chính trong bài tốn nhận dạng........................................3
Hình 2: Ngơn ngữ lập trình Python........................................................................4
Hình 3: Thư viện OpenCV.......................................................................................5
Hình 4: Thư viện Tensorflow..................................................................................6
Hình 5: Mơi trường lập trình Visual Studio Code...................................................7
Hình 6: Phát hiện vật thể.......................................................................................8
Hình 7 Đặt trưng Haar-like cơ bản.......................................................................12
Hình 8 Cách tính Integral Image của ảnh.............................................................13
Hình 9 Cascade of classifiers................................................................................14
Hình 10 Cascade of boosting classifiers...............................................................14
Hình 11: Mơ hình CNN - Deep Learning...............................................................15
Hình 12 Lớp convolutional neural networks........................................................16
Hình 13: Lớp Convolutional layers.......................................................................16
Hình 14: Lớp Pooling layers.................................................................................17
Hình 15: Lớp fully connected layers.....................................................................18
Hình 16 Lớp loss layers........................................................................................18
Hình 17 Lớp recurrent netral network.................................................................19
Hình 18: Lớp Deep belief network.......................................................................19
Hình 19 Mơ hình CNN khi sử dụng thư viện Tensorflow.....................................20
Hình 20 Cấu trúc mạng neural trong mơ hình và mơ phỏng................................21
Hình 21 Sơ đồ ngữ cảnh hệ thống.......................................................................25
Hình 22 Huấn luyện mơ hình CNN sử dụng tập dữ liệu trái cây...........................25
Hình 23 Sơ đồ hệ thống phát hiện trái cây và lưu vào tập dữ liệu.......................26

Hình 24 Sơ đồ hệ thống huấn luyện mơ hình......................................................26
Hình 25 Sơ đồ hệ thống nhận dạng trái cây.........................................................26
Hình 26 Sơ đồ tổng thể của hệ thống nhận dạng trái cây....................................27
Hình 27 Tải và cài đặt mơi trường Python...........................................................27
Hình 28 Tạo mơi trường Python trên Pycharm....................................................28
Hình 29 Kiểm tra OpenCV có được hỗ trợ trong Python.....................................28
Hình 30 Kiểm tra quá trình import thư viện........................................................28
Hình 31 Cài đặt thư viện Numpy..........................................................................29
Hình 32 Cài đặt thư viện Pillow............................................................................29
Hình 33 Cài đặt framwork Flask...........................................................................29
Hình 34 Cài đặt thư viện Tensorflow...................................................................29
Hình 35 Sơ đồ thư mục đồ án..............................................................................30
Hình 36 Tập dữ liệu của 131 loại trái cây được thu thập trong đồ án.................30
Hình 37 Hình ảnh của 1 loại trái cây cụ thể trong tập dữ liệu..............................30
Hình 38 Hàm tạo 2 biểu đồ đánh giá quá trình huấn luyện.................................31
Hình 39 Hàm chuyển đổi màu RGB sang HSV và xám..........................................31


Hình 40 Hàm thay đổi màu sắc và độ bão hịa theo điều kiện ánh sáng.............31
Hình 41 Lớp network xây dựng mơ hình từ hình ảnh..........................................32
Hình 42 Hàm train_and_evaluate_model............................................................33
Hình 43 Hàm đưa tới đường dẫn chính của trang website..................................33
Hình 44 Thực hiện việc lưu hình ảnh từ website gửi về......................................33
Hình 45 Thực hiện công việc so sánh và gửi trả kết quả về website....................34
Hình 46 Quá trình huấn luyện của tập dữ liệu.....................................................34
Hình 47 Kết thúc của mỗi vịng lặp huấn luyện...................................................35
Hình 48 Mơ hình độ chính xác (trái) và mơ hình độ hao hụt của q trình huấn
luyện.................................................................................................................... 35
Hình 49 Trang website chính của hệ thống nhận dạng........................................35
Hình 50 Dưa Lê với độ chính xác là 99,999905%.................................................36

Hình 51 Trái Thơm với độ chính xác 100%...........................................................36
Hình 52 Quả Dưa Hấu với độ chính xác là 100%..................................................36
Hình 53 Trái Cà Chua với độ chính xác là 100%...................................................36


DANH MỤC CỤM TỪ VIẾT TẮT
STT
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Cụm từ
Cơ Sở Dữ Liệu
Công nghệ thông tin
Machine Learning
Deap Learning
Computer Vision
Convolutional neural network


Local Binary Patterns
Haar
Local Binary Patterns Histogram

Viết tắt
CSDL
CNTT
ML
DL
CV
CNN
FR
SVM
LBP
Haar
LBPH

Linear Discriminant Analysis
Rectified Linear Units
Recurrent neural network

LDA
ReLU
RNN

Face Recognition
Support Vector Machine


Phần I Mở đầu

1. Tổng quan
Dưới công cuộc phát triển vượt trội cả cuộc cách mạng 4.0 cùng với các
vấn đề liên quan như Trí Tuệ Nhân Tạo, Điện Tốn Đám Mây, Internet Vạn
Vật và BigData. Hiện nay Trí Tuệ Nhân Tạo đang là một xu hướng có tiềm
năng trong lĩnh vực công nghệ thông tin và là yếu tố then chốt với vơ số ứng
dụng trong mọi khía cạnh của cuộc sống như Smart Home, xe tự hành, hệ
thống nhận dạng.
Hiện nay, do sự phổ biến theo nhu cầu của con người đã làm cho lượng
thông tin thu được bằng hình ảnh ngày càng tăng. Theo đó lĩnh vực xử lý ảnh
cũng được chú trọng và phát triển, ứng dụng rộng rãi trong đời sống xã hội
hiện đại. Không chỉ dừng lại ở việc chỉnh sửa, tăng chất lượng hình ảnh mà
với cơng nghệ xử lý ảnh hiện nay giúp con người có thể giải quyết các bài
tốn nhận dạng chữ viết, nhận dạng vân tay, nhận dạng thực phẩm an tồn.
Nhận dạng thực phẩm là một mơ hình mới được triển khai gần đây. Có
thể được ứng dụng trong công nghiệp, nông nghiệp và dịch vụ. Khi áp dụng
hệ thống vào đời sống, việc lựa chọn thực phẩm sạch, an toàn được cải thiện
như nhận biết được trái cây đang trong tình trạng như thế nào, đánh giá tình
trạng thực phẩm dựa trên bề mặt của nó hoặc với ứng dụng trong mơ hình
nơng nghiệp, hệ thống nhận dạng có thể dự đốn những trái xồi hay trái
thơm khi nào có thể thu hoạch trên diện rộng.
Và được tích lũy kinh nghiệp từ hệ thống nhận dạng khn mặt ở đồ án
cơ sở 3 và bài báo kỹ thuật tự động chấm công trong dạy học thông minh
dựa trên phương pháp Machine Learning ở Hội thảo CITA 2020. Chính vì thế,
nhờ những yếu tố trên, nhóm đồ án đưa ra mơ hình hệ thống nhận dạng trái
cây dựa trên nền tảng Deep Learning.

2. Mục đích
- Xây dựng Mơ hình hệ thống nhận dạng trái cây.
- Tìm hiểu về mơ hình mạng neural tích chập(CNN)
- Tìm hiểu thư viện của Python trong việc tiền xử lý hình ảnh.

- Tìm hiểu về Deep Learning và Machine Learning.

3. Phương pháp
a) Đối tượng:
- Các phương pháp, thuật toán phục vụ cho việc phát hiện và nhận dạng
khuôn mặt người trên ảnh.
- Bộ thư viện xử lý ảnh OpenCv
- CSDL tự tạo bằng cách thu thập dữ liệu sinh viên (khuôn mặt)
1


b) Phạm vi nghiên cứu:
- Tập trung tìm hiểu nhận dạng khn mặt (Face Recognition)
- Xử lí ảnh khn mặt và huấn luyện để nhận diện.
- Nhận dạng khuôn mặt với webcam và điểm danh

Phần II
Chương 1

Nội dung

Nghiên cứu tổng quan

1.

Các phương pháp

1.1

Bài toán nhận dạng mẫu


Nhận dạng mẫu là một ngành thuộc lĩnh vực học máy (machine learning).
Nói cách khác, nó có thể được xem là việc “cần thực hiện một tác động vào dữ
liệu thô mà tác động cụ thể là gì sẽ tùy thuộc vào loại dữ liệu đó”. Nhận dạng
mẫu nhằm mục đích phân loại dữ liệu dựa trên: kiến thức tiên nghiệm hoặc dựa
vào thông tin thống kê được trích rút từ các mẫu có sẵn. Các mẫu cần được
phân loại thường được biễu diễn thành các nhóm của các dữ liệu đo đạc hay
quan sát được, mỗi nhóm là một điểm ở trong một khơng gian đa chiều phù
hợp. Đó là khơng gian của các đặc tính để dựa vào đó ta có thể phân loại.
Việc phân loại thường dựa vào sự có sẵn của một tập các mẫu mà đã
được phân loại sẵn. Tập các mẫu này được gọi là tập huấn luyện và chiến lược
học nhằm phân loại mẫu vào một trong các lớp có sẵn được gọi là học có giám
sát. Việc học cũng có thể là khơng có giám sát, theo nghĩa là hệ thống không
được cung cấp các mẫu được đánh nhã tiên nghiệm. mà nó được tự đưa ra các
lớp để phân loại dựa vào tính ổn định trong thông kê của các mẫu.
Các ứng dụng phổ biến là nhận dạng tiếng nói tự động, phân loại văn bản
thành nhiều loại các nhau, nhận dạng tự động các mã bưu điện viết tay trên các
bao thư, hay hệ thơng nhận dạng danh tính dựa vào mặt người. Cả ba ví dụ cuối
tạo thành lĩnh vực con phân tích ảnh của nhận dạng mẫu với đầu vào là các ảnh
số.

1.2

Tổng quan kiến trúc của một hệ thống nhận dạng mẫu

Cùng với sự phát triển của kinh tế xã với ngành kỹ thuật hiện nay. Đòi hỏi
sự quản lý và xử lý thơng tin chính xác mà nó vượt q sức của con người. Vì vậy
chúng ta cần có máy móc hoặc giảm tải hoặc thay thế cơng việc nặng nhọc, địi
hỏi sự chính xác cao và tiết kiệm nhân lực sức người. Việc giúp máy móc nhận
dạng (thu thập, phân loại thông tin) như con người sẽ giúp máy móc hoạt động

hiệu quả như con người và độ chính xác cao hơn nhiều.
 Một số ứng dụng của bài tốn nhận dạng
Nhận dạng giọng nói: ứng dụng này được tích hợp trên nhiều sản phẩm,
bạn sẽ điều khiển các thiết bị qua giọng nói của mình thay vì phải thao tác trực

2


tiếp bằng tay, như trong mơ hình nhà thơng minh, trên điện thoại, … Ví dụ: ứng
dụng Jibbigo trên điện thoại di động. Ứng dụng này có thể dịch được tiếng nói
của người sử dụng với 8 ngơn ngữ khác nhau như tiếng Anh, Pháp, Đức, Nhật,
Hàn Quốc, Tây Ban Nha, Trung Quốc.

3


Nhận dạng dấu vân tay: thuộc ngành sinh trắc học, ở Việt Nam đã được sử dụng
trong việc chấm công, điểm danh và làm khóa an tồn cho các loại cửa sắt, máy
tính xách tay, … Nó tạo sự tiện dụng và tính an tồn.
Nhận dạng khn mặt: thuộc ngành sinh trắc học. Tương tự như ở nhận
dạng dấu vân tay. Sử dụng một mẫu huấn luyện cho trước để có thể so sánh với
khn mặt của người dùng. Hiện nay đang được phát triển mạnh mẽ trong việc
quản lý công dân, giám sát và kiểm tra thông qua camera, giúp nhà nước quản lý
dễ dàng hơn.
Thông thường, một bài tốn nhận dạng thường có các bước xử lý sau:

Hình 1: Các bước xử lý chính trong bài tốn nhận dạng

1.3


Hạn chế tồn tại của bài toán nhận dạng

Bài toán nhận dạng là bài toán đã được nghiên cứu từ những năm 70. Tuy
nhiên, đây là bài tốn khó nên những nghiên cứu hiện tại vẫn chưa được kết quả
mong muốn. Chính vì thế, vấn đề này vẫn đang được nhiều nhóm nghiên cứu
trên thế giới quan tâm. Khó khăn của nhận dạng có thể kể đến như sau:
a) Tư thế chụp, góc chụp: ảnh chụp có thể đánh giá chất lượng rất nhiều bởi
vì góc chụp giữa camera và vật thể khơng chính xác hồn tồn. Ở cả bước
tiền xử lý tập dữ liệu và nhận dạng. Chẳng hạn như: chụp thẳng, chụp
chéo bên trái độ hay chụp chéo bên phải 45 độ, chụp từ trên xuống hay
chụp từ dưới lên, … Với các tư thế khác nhau, các thành phần trên khn
mặt như mắt, mũi, miệng có thể bị khuất mơt phần hoặc thậm khuất
hồn tồn.
b) Sự xuất hiện hoặc mất một số thành phần của vật thể: các đặc trưng của
vật thể có thể xuất hiện hoặc khơng. Vấn đề này làm bài tốn trở nên khó
khăn hơn nhiều.
c) Sự che khuất: Vật thể có thể bị che khuất bởi các đối tượng khác hoặc vật
thể khác.
d) Hướng của ảnh: Các ảnh khn mặt có thể biến đổi rất nhiều với các góc
quay khác nhau của trục camera. Chẳng hạn chụp với trục máy ảnh
nghiêng làm cho vật thể bị nghiêng so với trục.
e) Điều kiện của ảnh: Ảnh được chup trong các điều kiện khác nhau về:
chiếu sang, tính chất camera, ảnh có chất lượng thấp so với chất lượng
4


vật thể. Việc nhận dạng thay đổi theo thời gian cịn là một vấn đề khó
khăn, ngay cả đối với khả năng nhận dạng của con người.

5



1.4

Cơng nghệ thực hiện

Để giải quyết bài tốn phát hiện trái cây sử dụng thư viện OpenCV, chúng
ta có thể sử dụng các ngơn ngữ lập trình như: .NET C#, IronPython, Java, C++, …
Trong đồ án này ngôn ngữ lập trình được sử dụng là Python, được viết
trên phần mềm Pycharm làm giao diện lập trình và sử dụng mơi trường Python
3.8. Trong hệ thống nhận diện trái cây, nhóm đồ án sử dụng nhiều thư viện của
python cụ thể như: Numpy, Tensorflow, Keras, Pillow, OpenCV, …

1.4.1 Giới thiệu ngôn ngữ lập trình Python
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 Rossum 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ư Perl, Ruby, Scheme, Smalltalk, 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-DOS đến Mac OS,
OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. Mặc dù sự phát
triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van
Rossum hiện nay vẫn là tác giả chủ yếu của Python. Ông giữ vai trò chủ chốt
trong việc quyết định hướng phát triển của Python.


6


Hình 2: Ngơn ngữ lập trình Python

7


1.4.2 Giới thiệu về thư viện OpenCV
OpenCv (Open Source Computer Vision) là một thư viện mã nguồn mở về
thị giác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về XLA,
và các vấn đề liên quan tới thị giác máy. OpenCv được thiết kế một cách tối ưu,
sử dụng tối đa mạnh của các dịng chip đa lõi… để thực hiện các phép tính toán
trong thời gian thực, nghĩa là tốc độ đáp ứng của nó thể đủ nhanh cho các ứng
dụng thơng thường.
OpenCv là thư viện được thiết kế để chạy trên nhiều nền tảng khác nhau
(cross-platform), nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac,
iOS… Việc sử dụng thư viện OpenCv tuân theo các quy định về sử dụng phần
mềm mã nguồn mở BSD do đó bạn có thể sử dụng thư viện này một cách miễn
phí cho các mục đích phi thương mại lẫn thương mại.
Dự án về OpenCv được khởi động từ những năm 1999, đến năm 2000 nó
được giới thiệu trong một hội nghị của IEEE về các vấn đề trong thị giác máy và
nhận dạng, tuy nhiên bản OpenCV 1.0 mãi tới tận năm 2006 mới chính thức
được cơng bố và năm 2008 bản 1.1 (prerelease) mới được ra đời. Tháng 10 năm
2009, bản OpenCV thế hệ thứ hai ra đời (thường gọi là phiên bản 2.x), phiên bản
này có giao diện của C++ (khác với phiên bản trước có giao diện của C) và có
nhiều điểm khác biệt so với phiên bản thứ nhất.
Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ
bởi Willow Garage, một phịng thí nghiệm chun nghiên cứu về cơng nghệ

robot. Cho đến nay, OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ
không lợi nhuận (none-profit foundation) và được sự hưởng ứng rất lớn của
cộng đồng.

Hình 3: Thư viện OpenCV

8


1.4.3 Giới thiệu về thư viện Tensorflow
Trong đồ án này, với mục đích triển khai đào tạo và thử nghiệm network.
Nhóm đồ án đã sử dụng thư viện Tensorflow. Đây là mã nguồn mở dành cho học
máy do Google tạo ra để tính tốn số sử dụng biểu đồ luồng dữ liệu. Các nút
trong biểu đồ đại diện cho các phép toán, trong khi các cạnh của đồ thị đại diện
cho các mảng dữ liệu nhiều chiều được gọi là tensors. Các thành phần chính
trong Tensorflow là máy khách, sử dụng giao diện Session để giao tiếp với máy
chủ và một hoặc nhiều quy trình cơng nhân, với mỗi quy trình cơng nhận chịu
nhiều trách nhiệm phân xử quyền truy cập vào mơt hoặc nhiều thiết bị tính tốn
để thực hiện các nút đồ thị trên các thiết bị đó.
Tensorflow cung cấp một số tính năng mạnh mẽ như: nó cho phép ánh xạ
tính tốn với nhiều máy, khơng giống như hầu hết các framework tương tự
khác; nó đã được tích hợp hỗ trợ tính tốn gradient tự động; nó có thể thực thi
một phần các đồ thị con của tồn bộ đồ thị và nó có thể thêm các ràng buộc cho
các thiết bị, như đặt các nút trên một loại thiết bị nhất định, đảm bảo rằng hai
hoặc nhiều đối tượng được đặt trong cùng một không gian, v.v. Bắt đầu với
phiên bản 2.0, TensorFlow bao gồm các tính năng của khung Keras. Keras cung
cấp các trình bao bọc cho các hoạt động được triển khai trong TensorFlow, đơn
giản hóa đáng kể các cuộc gọi và giảm lượng mã tổng thể cần thiết để đào tạo và
kiểm tra một mơ hình.
TensorFlow được sử dụng trong một số dự án, chẳng hạn như Mơ hình

phân loại hình ảnh ban đầu. Dự án này đã giới thiệu một mạng hiện đại để phân
loại và phát hiện trong Thử thách nhận dạng hình ảnh quy mơ lớn ImageNet
năm 2014. Trong dự án này, việc sử dụng tài nguyên máy tính được cải thiện
bằng cách điều chỉnh chiều rộng và chiều sâu của mạng trong khi vẫn giữ ngân
sách tính tốn khơng đổi. Một dự án khác sử dụng khung công tác TensorFlow là
DeepSpeech, được phát triển bởi Mozilla. Kiến trúc là một hệ thống nhận dạng
hiện đại được phát triển bằng cách sử dụng học sâu end-to-end. Đơn giản hơn là
các kiến trúc khác và không cần các thành phần được thiết kế thủ công cho tiếng
ồn xung quanh, độ vang hoặc sự biến đổi của loa. Chúng tơi sẽ trình bày các
phương pháp và kiểu dữ liệu được sử dụng quan trọng nhất từ TensorFlow cùng
với mô tả ngắn gọn cho từng phương pháp đó

9


Hình 4: Thư viện Tensorflow

10


1.4.4 Mơi trường lập trình Visual Studio Code
Visual Studio Code là một trình biên tập mã được phát triển bởi Microsoft
dành cho Windows, Linux và macOS. Nó hỗ trợ chức năng debug, đi kèm với Git,
có syntax highlighting, tự hồn thành mã thơng minh, snippets, và cải tiến mã
nguồn. Nó cũng cho phép tùy chỉnh, do đó, người dùng có thể thay đổi theme,
phím tắt, và cá tùy chọn khác. Nó miễn phí và là phần mềm mã nguồn mở, mặc
dù gói tải xuống chính thì là có giấy phép.
Visual Studio Code được dựa trên Electron, một nền tảng được sử dụng để
triển khai các ứng dụng Node.js máy tính cá nhân chạy trên động cơ bố trí Blink.
Mặc dù nó sử dụng nền tảng Electron nhưng phần mềm này khơng phải là một

bản khác của Atom, nó thực ra được dựa trên trình biên tập của Visual Studio
Online (tên mã là "Monaco")

Hình 5: Mơi trường lập trình Visual Studio Code

11


Chương 2

Tổng quan về Nhận Dạng Trái Cây

2

Hệ thống phát hiện đối tượng

2.1

Định nghĩa

Phát hiện đối tượng (ObjectDetection) là một cơng nghệ máy tính liên
quan đến thị giác máy tính và xử lý hình ảnh nhằm phát hiện các trường hợp đối
tượng được nghiên cứu kỹ lưỡng bao gồm phát hiện khuôn mặt và phát hiện
người đi bộ. Phát hiện đối tượng có ứng dụng trong nhiều lĩnh vực của thị giác
máy tính, bao gồm truy xuất hình ảnh và giám sát video.

Hình 6: Phát hiện vật thể

Phát hiện đối tượng được sử dụng rộng rãi trong các tác vụ thị giác máy
tính như chú thích hình ảnh, nhận dạng hoạt động, phát hiện khuôn mặt, nhận

dạng khuôn mặt, đồng phân đoạn đối tượng video. Cũng như được sử dụng để
theo dõi đối tượng, ví dụ theo dõi một quả bóng trong trận đấu bóng đá, theo
dõi chuyển động của gậy cricket hoặc theo dõi một người trong video.

12


2.1.1 Một số phương pháp xác định khuôn mặt người
Các phương pháp phát hiện đối tượng thường rơi vào cách tiếp cận dựa trên
máy học hoặc tiếp cận dựa trên học sâu. Đối với các phương pháp tiếp cận Học
máy, trước tiên cần xác định các tính năng bằng một trong các phương pháp bên
dưới, sau đó sử dụng kỹ thuật như support vector machine(SVM) để thực hiện
phân loại. Mặt khác, các kỹ thuật học sâu có thể thực hiện phát hiện đối tượng
end-to-end mà không cần xác định cụ thể các tĩnh năng và thường dựa trên
mạng nơron tích chập (CNN).
 Các phương pháp tiếp cận máy học:
o Khung phát hiện đối tượng Viola – Jones dựa trên các tính năng
Haar
o Chuyển đổi tính năng bất biến tỷ lệ
o Biểu đồ của các tính năng gradient có định hướng (HOG)
 Phương pháp học sâu:
o Đề xuất khu vực (R-CNN, Fast R-CNN faster, …)
o Máy dò MultiBox Single Shot (SSD)
o Mạng nơron làm tinh chỉnh một lần để phát hiện đối tượng
o Retina – Net

2.1.2 Phương pháp áp dụng trong đồ án
Để xây dựng một hệ thống nhận dạng mặt, cũng không hề đơn giản, bước
đầu tiên cần thực hiện là face detection, tức là phát hiện phần ảnh mặt trong dữ
liệu input (CSDL ảnh, video …) và cắt lấy phần ảnh mặt để thực hiện nhận dạng

(face cropping), bước thứ hai là tiền xử lý ảnh (preprocessing) bao gồm các bước
căn chỉnh ảnh (face image alignment) và chuẩn hóa ánh sáng (illumination
normalization), tiếp đến là bước trích chọn đặc điểm (feature extraction), ở
bước này một phương pháp trích chọn đặc điểm nào đó (mẫu nhị phân cục bộ –
Local Binary Pattern – LBP, Gabor wavelets, …) sẽ được sử dụng với ảnh mặt để
trích xuất các thơng tin đặc trưng cho ảnh, kết quả là mỗi ảnh sẽ được biểu diễn
dưới dạng một vector đặc điểm (feature vector), bước tiếp theo là bước nhận
dạng (recognition) hay phân lớp (classification), tức là xác định danh tính
(identity) hay nhãn (label) của ảnh – đó là ảnh của ai.
Ở bước classification, thường thì phương pháp k-láng giềng gần nhất (knearest neighbor: kNN) sẽ được sử dụng, thực tế cho thấy việc dùng SVM
(Support Vector Machine) không mang lại hiệu quả cao hơn mà còn chậm hơn.
Dữ liệu cho một hệ thống nhận dạng mặt được chia làm 3 tập: tập huấn luyện
(training set), tập tham chiếu (reference set hay gallery set) và tập để nhận dạng
(probe set hay query set, đôi khi còn gọi là test set). Trong nhiều hệ thống, tập
training trùng với tập reference.
Tập training gồm các ảnh được dùng để huấn luyện (hay học-learning), thông
thường tập này được dùng để sinh ra một không gian con (projection subspace)
là một ma trận và phương pháp hay được sử dụng là PCA (Principal Component
Analysis), WPCA (Whitened PCA), LDA (Linear Discriminant Analysis), KPCA
13



×