You are on page 1of 22

GVHD:Lê Hoàng Uyên Thục nhóm:7A

ĐẠI HỌC ĐÀ NẴNG


TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN TỬ - VIỄN THÔNG

BÁO CÁO KẾT THÚC DỰ ÁN


HỌC PHẦN KỸ THUẬT NHẬN DẠNG

Đề tài: Nhận diện đồ dùng trong bếp


(cutlery)

GVHD: Hoàng Lê Uyên Thục


Nhóm: 7A (18.40)
Thành viên: Trần Hữu Quân 18DT3
Lê Văn Thuấn 18DT3
Mai Quốc Trung 18DT3
Phạm Thị Thanh Tuyền 18DT3

Đà Nẵng, 11/2021

1|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

S MSSV Lớp mail Nhiệm Vụ Mức độ Chữ ký


T Họ Và Tên hoàn
T thành

Tranh Thu thập


1 Trần Hữu Quân 106180168 18DT3 uuqua và xử lý 100%
n31@ dữ
gmail. liệu,code
com

Thuan Thu thập


2 Lê Văn Thuấn 106180176 18DT3 le.080 và xử lý
42000 dữ 100%
@gm liệu,làm
ail.co báo cáo
m

quoctr Thu thập


3 Mai Quốc Trung 106180179 18DT3 ung26 và xử lý
04200 dữ 100%
0@gm liệu,code
ail.co
m

Tuyen Thu thập


4 Phạm Thị Thanh 106180183 18DT3 phaml và xử lý 100%
Tuyền ove12 dữ
34@g liệu,làm
mail.c slide
om
1
Tuyen
phaml
ove12
34@g
mail.c
om

2|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

THÔNG TIN TÓM TẮT KẾT QUẢ THỰC HIỆN


1. Thông tin chung:
- Tên đề tài báo cáo: nhận diện các đồ dùng trong nhà bếp.
- Nhóm: 7A (18.40)
-Lớp: 18DT3
- Thành viên tham gia:Trần Hữu Quân 18DT3
Lê Văn Thuấn 18DT3
Phạm Thị Thanh Tuyền 18DT3
Mai Quốc Trung 18DT3
- Thời gian thực hiện: từ 10/2021 đến 12/2021
2. Mục tiêu:
- Hoàn thành hết các nhiệm vụ được giao.
- Nâng cao kỹ năng lập trình Matlab, tiếp xúc với các thao tác xử lý ảnh cơ bản.
- Tăng kỹ năng giải quyết vấn đề, làm việc nhóm, thuyết trình, viết báo cáo kỹ thuật.
3. Kết quả:
- Nâng cao kiến thức cơ bản về việc huấn luyện máy tính học từ dữ liệu.
- Sử dụng Matlab để thực hiện lập trình và tiền xử lý ảnh, thu thập, xây dựng cơ sở dữ
liệu.
- Hoàn thành dự án nhận dạng, báo cáo nhóm và slide thuyết trình, cải thiện tiếng Anh
chuyên ngành.
4.Sản Phẩm:Link drive nhóm, bao gồm: ảnh đầu vào, ảnh xám,ảnh nhị phân đen
trắng,code, kết quả,…
https://drive.google.com/drive/folders/1qWCOBtcG-fPb7vrHdlcIod4FIjkJikAg?
fbclid=IwAR1YkfFIHGLUwEMFxQoSy90r6WyBnkcWNN8yL5fL1U0Q-
XdazUHQ13byvXk&classId=227456f2-85b0-4ea8-b276-
64d26b7e5bd8&assignmentId=e2f22213-eb65-45f4-a5f8-
b89ed907c4e4&submissionId=41de4530-1dd4-9e16-8599-0fe8c56d8ee8
5.Khả năng áp dụng
-Khả năng áp dụng của dự án thì có thể áp dụng nhận dạng một số đồ dùng trong nhà
bếp. Tương tự thì có thể áp dụng vào một số ứng dụng tương tự như phân biệt đồ dùng
học tập, trái cây,... Ngày13 tháng 12 năm 2021
Đại diện nhóm dự án
(ký, họ và tên)

3|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

LỜI MỞ ĐẦU

Những năm gần đây, AI - Artificial Intelligence (Trí tuệ nhân tạo), và cụ thể hơn là
Machine Learning (Học máy hoặc Máy học) nổi lên như một bằng chứng của cuộc cách
mạng công nghiệp lần thứ tư. Trí tuệ nhân tạo đang len lỏi vào mọi lĩnh vực trong đời
sống mà có thể chúng ta không nhận ra. Theo đó, Machine learning là một lĩnh vực nhỏ
của AI, nó có khả năng tự học hỏi dựa trên dữ liệu đưa vào mà không cần phải được lập
trình cụ thể.
Học phần “Kỹ thuật nhận dạng” là bước đầu để tiếp cận và hiểu rõ hơn về Machine
learning thông qua dự án “Xây dựng ứng dụng phân loại tự động các đối tượng trong ảnh
chụp”. Đặc biệt, trong viễn cảnh khoa học máy tính ngày càng phát triển càng cho thấy
sức nặng và sự quan trọng của dự án nói riêng, của môn học nói chung cho hành trang
sau này.
Để tiến đến gần hơn với dự án, nhóm đã tiến hành tìm kiếm hình ảnh về các đồ dùng
trong nhà bếp được phân công. Quá trình này tốn rất nhiều thời gian và công sức nhưng
bù lại nếu chúng ta thu thập càng kỹ lưỡng thì sẽ rất tốt cho việc huấn luyện máy sau này.
Tập dữ liệu được mở rộng và chuẩn hóa qua quá trình tiền xử lý, thực hiện bằng các phần
mềm Matlab, remove.bg, Paint… Nếu đưa toàn bộ lượng dữ liệu này vào để train cho
máy sẽ tốn rất nhiều bộ nhớ và thời gian, từ đó ta phải tìm cách giảm chiều dữ liệu bằng
cách trích đặc trưng. Hu moments được sử dụng để tính toán 7 vector đặc trưng là biểu
diễn cho các phép dịch chuyển, tỉ lệ, xoay, phản chiếu… Phương pháp thực hiện phân
loại bằng so khớp mẫu sử dụng tập các vector Hu để nhận dạng và đánh giá thông qua
đánh giá chéo K-fold. Cuối cùng, mạng Neuron nhân tạo (Artificial neural network)
truyền thống một lớp ẩn là mô hình xử lý thông tin cần thiết cho quá trình nhận dạng.
Nhờ sự hướng dẫn và giúp đỡ của cô Thục, tụi em đã có thể hoàn thành dự án một cách
hoàn thiện nhất và rút ra được những kiến thức bổ ích từ môn học này.
Chân thành cảm ơn và chúc cô sức khỏe.

4|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

I.VAI TRÒ CỦA DỰ ÁN:


1. Mô tả chung:
- Dự án sẽ cung cấp cho sinh viên những kiến thức cơ bản về huấn luyện máy tính
học từ dữ liệu, cụ thể ở đây là ảnh của các đồ dùng dụng cụ trong nhà bếp như:
đũa, muỗng, chén, đĩa,…
- Tiếp cận các phương pháp xử lí ảnh cơ bản như điều chỉnh kích thước, độ sáng,
ảnh nhị phân, ảnh xám...
- Tiếp cận các phương pháp học máy phổ biến dùng trong nhận dạng như ANN.
- Làm quen với ứng dụng của kỹ thuật nhận dạng thông qua các dự án ngắn hạn.
2. Tính cấp thiết của dự án:
Nếu trước giờ chúng ta đã từng nghe qua về nhận diện gương mặt, nhận diện tiếng
nói… nhưng chưa thể hình dung làm cách nào mà một chiếc điện thoại hay máy tính có
thể phân biệt được và cho ra kết quả trong vô vàn dữ liệu khác nhau thì dự án “Xây dựng
ứng dụng phân loại tự động các đối tượng trong ảnh chụp” này chính là bước đệm đầu để
tiếp cận và hiểu rõ hơn việc thực hiện nó như thế nào, cấu tạo và cách thức hoạt động của
những hệ thống đó ra sao cũng như ứng dụng của kỹ thuật nhận dạng trong thực tiễn. Đặc
biệt, trong viễn cảnh khoa học máy tính ngày càng phát triển càng cho thấy sức nặng và
sự quan trọng của dự án nói riêng, của môn học nói chung cho hành trang sau này.
3. Mục tiêu môn học:
- Xây dựng được mô hình nhận dạng: thu thập dữ liệu, tiền xử lý, phân vùng đối
tượng, trích đặc trưng, phân loại, đánh giá mô hình và các thuật toán học tự động.
- Cải thiện kỹ năng lập trình, làm việc nhóm, giao tiếp kĩ thuật, tiếng Anh chuyên
ngành.
- Ứng dụng được những kiến thức học được cho những môn học, dự án có liên quan
sau này.
4.Cách tiếp cận
Việc thu thập dữ liệu có thể được thực hiện từ nhiều nguồn khác nhau:
- Thông qua internet, sách báo để tìm kiếm hình ảnh.
- Sử dụng điện thoại để chụp các đối tượng thực tế.

5|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

- Tìm kiếm từ nguồn dữ liệu được sử dụng ở các dự án nghiên cũ trước đó.
Dữ liệu thu thập phải thỏa mãn các tiêu chuẩn như: ảnh phải thể hiện rõ nét vật thể, hạn
chế các yếu tố bóng đổ, hình dạng méo hay sai lệch nhiều với thông thường, nhiều đối
tượng gây ra nhiễu…
- Kết quả: mỗi bạn thu thập được 100 ảnh quả của mình chưa qua chỉnh sửa.
5.Phương pháp nghiên cứu.
Nghiên cứu thông qua các buổi học trên lớp,thông qua mạng internet,sách báo,

6.đối tượng nghiên cứu:
- nhận diện các đồ vật,sự vật trong cuộc sống và đặc biệt đối tượng được nhóm
nghiên cứu là đồ dùng trong nhà bếp.
7.Nội dung nghiên cứu:
- Nhóm 7A thực hiện đề tài là nhận diện các đồ dùng trong nhà bếp, bao gồm: đĩa,
muỗng,chén,đũa,nĩa,dao. Vì nhóm chỉ có 4 thành viên, nên nhóm đã quyết định
chọn 4 trong 6 đồ dùng trong nhà bếp là đĩa,muỗng,chén,đũa để tiến hành thu thập
dữ liệu và xử lý
- Xây dựng chương trình nhận dạng 4 lớp đối tượng từ cơ sở dữ liệu đã được thu
thập trước đó.
NỘI DUNG CHÍNH

1. Tiền xử lý (Preprocessing):
1.1. Cơ sở lý thuyết:
Để đa dạng hóa và làm tăng số lượng cơ sở dữ liệu phục vụ cho quá trình train và đánh
giá, nhóm đã thay đổi một vài yếu tố như góc chụp, ánh sáng, độ tương phản,… Đặc biệt
là hướng vật thể theo các chiều phù hợp với thực tế tránh khả năng nhận nhầm sang loại
đồ dùng khác.
Các bước chỉnh sửa được thực hiện trên Matlab,remove.bg, Paint…
1.2. Quá trình thực hiện:
 Loại bỏ nền và các chi tiết gây nhiễu:

6|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

 Tăng giảm độ sáng, độ tương phản:

 Tăng số lượng cơ sở dữ liệu:


Lật và xoay để tăng lượng dữ liệu.

7|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

 Tách đối tượng ra khỏi nền có nhiều chi tiết dư thừa:

 Đưa về ma trận ảnh xám, ảnh nhị phân:

8|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

1.3. Kết quả:


Thu được 400 ảnh nhị phân với vật thể trắng, nền đen.
2. Trích xuất đặc trưng (Feature Extraction):
2.1. Cơ sở lý thuyết:
Trích xuất đặc trưng là một phần của quy trình giảm chiều dữ liệu, trong đó, tập hợp dữ
liệu thô ban đầu được chia và giảm thành các nhóm dễ quản lý hơn, và cũng dễ dàng hơn
khi xử lý. Đặc điểm quan trọng nhất của cơ sở dữ liệu lớn này là chúng có một số lượng
lớn các đặc trưng. Vì vậy, việc trích xuất đặc trưng giúp có được những đặc trưng tốt nhất
từ các tập dữ liệu lớn, do đó, giảm lượng dữ liệu một cách hiệu quả. Việc giảm dữ liệu sẽ
giúp xây dựng mô hình với ít nỗ lực của máy hơn và cũng tăng tốc độ học và các bước
tổng quát hóa trong quá trình máy học.

9|Page
GVHD:Lê Hoàng Uyên Thục nhóm:7A

Có 2 cách: - Trích xuất đặc trưng


- Lựa chọn đặc trưng
Việc giảm chiều dữ liệu bằng cách trích đặc trưng sẽ tạo ra một tập các đặc trưng mới
nhỏ hơn, giảm lượng dữ liệu dư thừa từ tập dữ liệu. Nó sẽ chỉ lấy các đặc trưng hữu
ích/có lợi từ dữ liệu hiện có. Cụ thể:
- Giảm kích thước của ảnh đầu vào.
- Chuyển đổi mỗi hình ảnh đầu vào thành 1 vector đặc trưng nhiều chiều tương ứng.
- Thực hiện các nhiệm vụ phân loại được xác định trước với đủ độ chính xác mà
không cần sử dụng toàn bộ hình ảnh đầu vào.
2.2.Quá trình thực hiện:
2.2.1. Hu moment:
Nhóm đã sử dụng Hu moment để trích ra 7 đặc trưng cho mỗi ảnh đầu vào.
Hu moment là 1 tập hợp 7 số được tính toán bằng cách sử dụng các moment trung tâm
bất biến đối với các phép biến đổi hình ảnh. Điều này có nghĩa là dù ta có phóng to hay
thu nhỏ, lật hay xoay… thì moment trung tâm này vẫn không thay đổi, nếu có chỉ là sai
khác rất ít. Trong đó:
o 6 moment đầu tiên là biểu diễn bất biến cho các phép translation (sự dịch chuyển),
scale (tỷ lệ), rotation (xoay) và reflection (phản chiếu).
o Moment thứ 7 là biểu diễn cho sự thay đổi dấu cho phản chiếu hình ảnh (lật).

10 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

2.2.2. Các bước thực hiện:


Bước 1: Đưa vào ảnh đã tiền xử lý.
Bước 2: Tính trọng tâm của ảnh đầu vào.
Bước 3: Tính 7 vector Hu moments.
2.3. Kết quả:

3. So khớp mẫu (Template Matching):


3.1. Cơ sở lý thuyết:

11 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

Khi đã có được 7 đặc trưng Hu moment như trên, chúng sẽ được sử dụng trong việc nhận
dạng và thực hiện phân lớp. Phân loại trong hệ thống nhận dạng mẫu là phân loại thống
kê các vectơ đặc trưng được trích xuất từ các mẫu đầu vào thành một số lớp nhất định.
Mô hình phân loại giúp rút ra một số kết luận từ các giá trị đầu vào dùng để train, từ đó
dự đoán nhãn cho dữ liệu mới. Xây dựng mô hình phân loại gồm các bước:
- Khởi tạo bộ phân loại sẽ được sử dụng
- Huấn luyện cho bộ phân loại
- Dự đoán đầu ra
- Đánh giá quá trình phân loại
Để phù hợp trong việc nhận dạng, phương pháp phân loại được sử dụng chính là phương
pháp so khớp mẫu (template matching). So khớp mẫu được thực hiện bằng cách so sánh
các vector đặc trưng dùng để test với các vector đặc trưng dùng để train, từ đó xác định
sự tương đồng. Sự giống nhau giữa hai điểm dữ liệu được tính toán bằng khoảng cách:
n
 Khoảng cách Manhattan: ∑ | xi− yi|
i=1

 Khoảng cách Euclidean: ¿)1/2


Ở đây, trong cơ sở dữ liệu 400 ảnh (100 ảnh mỗi mẫu), nhóm sử dụng 320 ảnh để train và
80 ảnh để test sao cho các mẫu đã trích đặc trưng và biết đầu ra tương ứng. Sau đó, lấy
một ảnh trong tập test đi tính khoảng cách với 320 mẫu train rồi chọn khoảng cách nhỏ
nhất (khoảng cách giữa 2 điểm càng nhỏ chứng tỏ nó càng giống nhau). Tương ứng với
khoảng cách nhỏ nhất sẽ là nhãn của ảnh đó trong tập train. Lặp lại như vậy cho tập test
gồm 80 mẫu kiểm tra dự đoán thực tế và kết quả sau khi thực hiện so khớp mẫu để có
được ma trận nhầm lẫn phù hợp.
Tiếp đó, đánh giá mô hình phân loại bằng đánh giá chéo (cross validation). Đánh giá
chéo không sử dụng toàn bộ tập dữ liệu cho quá trình huấn luyện mà chỉ dùng một phần
để tham gia huấn luyện, phần còn lại được sử dụng để kiểm tra hiệu suất mô hình phân
loại. Có 3 phương pháp đánh giá chéo:
 Phương pháp Holdout.
 Phương pháp K-fold.
 Phương pháp Leave-one-out.
3.2. Quá trình thực hiện:
Bước 1: Đưa vào 400 mẫu với 7 vector Hu moments đã có.

12 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

Bước 2: Chia thành 2 tập gồm 1 tập train 320 mẫu và 1 tập test 80 mẫu.
Bước 3: Tính khoảng cách Mahattan và khoảng cách Euclidean.
Bước 4: So sánh và tìm khoảng cách nhỏ nhất từ từng ảnh tập test đến tập train.
Bước 5: Lập ma trận nhầm lẫn.
Bước 6: Đánh giá chéo bằng phương pháp holdout.
3.3. Kết quả:đạt được 80%

4. Mạng neuron nhân tạo (Artificial Neuron Network):


4.1. Cơ sở lý thuyết:
Mạng Neuron nhân tạo (Artificial Neuron Network) là mô hình xử lý thông tin được mô
phỏng dựa trên hoạt động của hệ thống thần kinh của sinh vật, bao gồm số lượng lớn các
Neuron được gắn kết để xử lý thông tin.
ANN giống như bộ não con người, được học bởi kinh nghiệm (thông qua huấn luyện), có
khả năng lưu trữ những kinh nghiệm và sử dụng những kinh nghiệm đó trong việc dự
đoán các dữ liệu chưa biết.
Kiến trúc chung của một mạng Neuron nhân tạo (ANN) gồm 3 thành phần đó là: Input
Layer, Hidden Layer và Output Layer.

13 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

Trong đó, lớp ẩn (Hidden Layer) gồm các Neuron, nhận dữ liệu Input từ các Neuron ở
lớp trước đó và chuyển đổi các Input này cho các lớp xử lý tiếp theo. Trong một ANN có
thể có nhiều lớp ẩn. Mỗi Input tương ứng với một thuộc tính của dữ liệu. Output (kết quả)
của một ANN là một nhãn của dữ liệu đó. Connection Weights (trọng số liên kết) 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 khác). Quá trình học 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. Từ đó ta có hàm tính tổng
các trọng số của tất cả các Input được đưa vào mỗi Neuron được tính theo công thức sau:

Hàm tổng của một Neuron cho biết khả năng kích hoạt của Neuron đó (còn gọi là kích
hoạt bên trong – internal activation). Các Neuron 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 một Neuron có thể được chuyển
đến layer tiếp trong mạng Neuron hoặc không. Mối quan hệ giữa Internal Activation và
Output được thể hiện bằng hàm chuyển đổi.
Một trong những hàm chuyển đổi phi tuyến được sử dụng phổ biến nhất trong ANN là
sigmoid. Kết quả xử lý tại các Neuron (Output) đôi khi rất lớn, vì vậy hàm chuyển đổi
được sử dụng để xử lý Output này trước khi chuyển đến layer tiếp theo.
Thuật toán lan truyền ngược gồm các bước:
 Bước 1: Khởi tạo các trọng số liên kết tương ứng với mỗi tín hiệu đầu vào.
 Bước 2: Tính toán đầu ra bằng hàm kích hoạt (hàm chuyển).
 Bước 3: Tính toán lỗi:

với d: giá trị đầu ra mong muốn


z: đầu ra thực tế

14 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

 Bước 4: Cập nhật lại trọng số liên kết bằng Conjugate-Gradient method rồi lặp lại
từ bước 2 cho đến khi điều kiện dừng được thỏa mãn.
Điều kiện dừng:
- Thay đổi lỗi bình phương trung bình: tỷ lệ thay đổi tuyệt đối trong sai số bình
phương trung bình trên mỗi thời kì là đủ nhỏ (trong phạm vi [0.01; 0.1]).
- Tiêu chí dựa trên tổng quát hóa: sau mỗi chu kỳ (epoch) của ANN sẽ được
kiểm tra để tổng quát hóa. Nếu hiệu suất tổng quát hóa đã đạt đủ thì dừng lại.
Ở đây, kích thước tập train, kiến trúc ANN hay độ phức tạp của đầu vào cũng
ảnh hưởng đến tổng quát hóa. Để cải thiện thêm, cần thu thập thêm dữ liệu
huấn luyện đồng thời huấn luyện một số mạng khác nhau rồi chọn mạng tốt
nhất.

Tại đây nhóm thực hiện ANN truyền thống cùng với 400 mẫu, trong đó 70% mẫu để
huấn luyện (training), 15% để thẩm định (validation) và 15% để kiểm tra (test). Kết quả
thu được là Ma trận nhầm lẫn và ROC tương ứng. Từ ROC ta có thể sử dụng để đánh giá
một mô hình có hoạt động hiệu quả hay không dựa vào đường cong đặc tính.
4.2. Quá trình thực hiện:
Sử dụng Neural network toolbox của Matlab
Bước 1: Nhập nnstart vào Command window rồi chọn Pattern Recognition app (nprtool).
Bước 2: Đưa đầu vào gồm 7 vector Hu moment của 4 mẫu và đầu ra mong muốn.
Bước 3: Chọn tỉ lệ chia thành các tập training, tập validation và tập testing.
Bước 4: Chọn số lượng neuron ẩn.
Số lượng neuron ẩn: chọn sao cho số lượng mẫu của tập train nên gấp từ 5 đến 10 lần
số lượng các trọng số liên kết trong mạng thần kinh nhân tạo.
Bước 5: Huấn luyện cho dữ liệu để tìm được trọng số liên kết thích hợp.
Bước 6: Thay đổi số lượng neuron ẩn để so sánh.
4.3. Kết quả:
Chọn số Neuron ẩn là 6.

15 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

Kết quả thu được cho 4 mẫu:

* Nhận xét:
- Dựa vào ma trận nhầm lẫn, mô hình mạng thần kinh nhân tạo cho 4 lớp có độ chính xác
89.9%. Trong đó, muỗng có độ chính xác cao nhất và dĩa bị nhầm lẫn qua các loại quả khác
đặc biệt là nhầm sang chén  cần cải thiện lại cơ sở dữ liệu về chất lượng lẫn số lượng.
- Dựa vào biểu đồ ROC, tương tự như ma trận nhầm lẫn, có thể thấy cái muỗng có đường
ROC tuyệt đối cho hiệu suất cao. Tuy nhiên, cái dĩa có đường ROC (màu xanh dương) cong
hơn so với các quả khác nhưng đường cong nằm trong ngưỡng khoảng 0.8 nên mô hình vẫn
cho hiệu suất khá cao.
- Khi thay đổi số lượng neuron ẩn nhiều lần thì nhóm nhận thấy số lượng neuron với 6 là phù
hợp với nhóm.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Kết luận:
Sau khi thực hiện dự án, có thể thấy rõ rằng phương pháp Teachable Machine thu được
hiệu suất nhận dạng cao nhất, sau đó đến phương pháp ANN (1 lớp ẩn) và cuối cùng so
khớp mẫu. Thuật toán của Google phát triển rất tốt khi tốc độ tiếp nhận, xử lý dữ liệu có
kích thước lớn và nhanh chóng thêm vào đó là khả năng nhận dạng với độ chính xác cao.

16 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

Trong khi đó, mô hình Mạng thần kinh nhân tạo ANN cho độ chính xác từ 89 – 92% dựa
trên nền tảng kiểm tra lỗi và huấn luyện lại. Cuối cùng là phương pháp so khớp mẫu là
phương pháp thủ công, ở quy trình thực hiện, phương pháp này không bao gồm trở lại
đánh giá mô hình và tốn khá nhiều thời gian.
Hướng phát triển:
• Để tăng hiệu suất cho mô hình ta cần tăng số lượng và chất lượng dữ liệu đầu vào.
• Mở rộng số lượng đối tượng nhận dạng, cải thiện tốc độ xử lý tập dữ liệu.
• Ứng dụng nhận dạng vào các khâu sản xuất có tính lặp lại.
• Tìm hiểu thêm các phương pháp trích đặc trưng khác để cải thiện cho Hu moments.
• Tăng số lớp ẩn trong phương pháp mạng thần kinh nhân tạo nhằm nâng cao hiệu suất
cũng như độ chính xác cho đầu ra.

17 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

Tài liệu tham khảo:


Phụ lục:
I.CODE
1.thresholding
function J=thresholding(I,threshold)

I= imresize(I,[256 256]);
gray = rgb2gray(I);
J=uint8(zeros(size(gray)));

% mask Sobel huong ngang

for i = 1 : 256
for j = 1 : 256
if(gray(i,j)>=threshold)
J(i,j)=255;
else
J(i,j)=0;
end
end
end

2.Code trắng đen

clc;
clear all;
close all;
inputs_path='./inputs/'; % path of input
outputs_path =('./trangdenhihi/');%path of output

list=dir(inputs_path);
filenames={list(~[list.isdir]).name};
whos filenames
%thay doi nguong phu hop
threshold=110;

for i=1:length(filenames)
I=imread(strcat(inputs_path,filenames{i}));

18 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

J=thresholding(I,threshold);
H=imbinarize(J)
name{i} = strcat(filenames{i}, '.jpg');
output_name=strcat(outputs_path,name{i},'.bmp');
imwrite(H,output_name);
end
3.code hu-moment

function S=hu_moment(J)
format long;
[w,h]=size(J);
%initialize x_center, y_center, sum
x_=0;
y_=0;
S=0;
for i =1:w
for j=1:h
S=S+double(J(i,j));
x_=x_+double(i*J(i,j));
y_=y_+double(j*J(i,j));

end
end
% caculate x_ceter, y_center
x_=x_/S;
y_=y_/S;

%calculate Mpq : p,q=0,1,2,3


m_pq=zeros(4,4);
M=zeros(4,4);
for p=0:3
for q=0:3
m=0;
for i=1:w
for j=1:h
m=m+double( ((i-x_)^p)*((j-y_)^q)*J(i,j) );
end
end
%m_pq(p+1,q+1)=m;
M(p+1,q+1)=double( m/(S^((p+q)/2+1)) );
end
end
%Calculate Si, i=1..7

19 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

S1=M(3,1)+M(1,3);
S2=( M(3,1)-M(1,3) )*(M(3,1)+M(1,3)) +4*M(2,2)*M(2,2);
S3=(M(4,1) -3*M(2,3))^2 +(M(1,4)-3*M(3,2))^2;
S4=(M(4,1)+M(2,3))^2+(M(1,4)+M(3,2))^2;
S5=(M(4,1)-3*M(2,3))*(M(4,1)+M(2,3))*( (M(4,1)+M(2,3))^2 -3*(M(1,4)+M(3,2))^2
) +(3*M(3,2) -M(1,4))*(M(1,4)+M(3,2))*(3*(M(4,1)+M(2,3))^2-(M(1,4)+M(3,2))^2);
S6=(M(3,1)-M(1,3))*( (M(4,1)+M(2,3))^2 -(M(1,4) +M(3,2)^2) )
+4*M(2,2)*(M(4,1)+M(2,3))*(M(1,4)+M(3,2));
S7=(3*M(3,2)-M(1,4))*(M(4,1) +M(2,3))*( (M(4,1)+M(2,3))^2
-3*(M(1,4)+M(3,2))^2 ) +(M(4,1) -3*M(2,3)*( M(3,2)+M(1,3))*( 3*(M(4,1)+M(2,3))^2
-(M(1,4)+M(3,2))^2 ));

S=[S1 S2 S3 S4 S5 S6 S7];
%logarit S
S=-sign(S).*log10(abs(S));
%replace Nan values = zeros
S(isnan (S)) = 0;
4.extract-feature

format long;

class= {'chen','dia','dua','muong'};
data_base=struct;
for i=1: length(class)
inputs_folder=strcat('./train/',class{i},'/')
fprintf(strcat('processing...'),inputs_folder);
list=dir(inputs_folder);
filenames={list(~[list.isdir]).name};
features=[];
for j=1:length(filenames)
image_path=strcat(inputs_folder,filenames{j});
I=imread(image_path);
I=I/255;
features=[features;[i,hu_moment(I)]]; %label,features

end
data_base.class{i}=features;
end
save train data_base

5.predict
function kq=predict(test,k)
%I: binary iLage that you want predict

20 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

%initialize a Latrix containing k LiniLuL distances


%Latrix : k rows <=> the nuLber LiniLuL distances
% 2 cols <=> label,distance
classes= {'chen','dia','dua','muong'};
X=load('E:\ktnd\cuoiky\train\train.mat');
L=100000*ones(k,2);
for j=1:length(classes)
object=X.data_base.class{j};
for i=1 : length(object)
train=object(i,:);
d= sum((test(2:end)-train(2:end)).^2);
if d<L(k,1)
L(k,:)=[d,train(1)];
if k==1
continue
else
L=sortrows(L);
end
end
end
end
kq=mode(L(:,2));
%kq=classes{kq};
6.validation

input_folder='./test/';
classes= {'chen','dia','dua','muong'};
tagets=[];
outputs=[];
k=1;
for i=1:length(classes)
input_folder=strcat('./test/',classes{i})
list=dir(input_folder);
filenames={list(~[list.isdir]).name};
for j=1:length(filenames)
image_path=strcat(input_folder,'/',filenames{j});
I=imread(image_path)
% I=I/255;
feature=[i,hu_moment(I)]; %label,features
tagets=[tagets,i];
outputs=[outputs,predict(feature,k)];
end
end
21 | P a g e
GVHD:Lê Hoàng Uyên Thục nhóm:7A

cm = confusionmat(outputs,tagets,'Order', [1,2,3,4]);

plotConfMat(cm,{'chen','dia','dua','muong'});

22 | P a g e

You might also like