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

Báo cáo đồ án Lập Trình Hệ Thống Bách khoa Đà Nẵng

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.42 MB, 34 trang )

Báo cáo đồ án, HK2 năm học 2019-2020

TÓM TẮT ĐỒ ÁN
Trong thời đại công nghệ phát triển, nhận diện sản phẩm là một ứng dụng đang được
sử dụng rộng rãi trong công nghiệp. Nó sẽ tự động hóa phân loại các sản phẩm, và giúp
con người không cần phải thủ công phân biệt và đánh dấu các sản phẩm khi lượng sản
phẩm quá lớn. Đồ án này sẽ hướng đến việc áp dụng nhận diện vào trong sản xuất công
nghiệp, đặc biệt là khía cạnh nhận diện và phân loại sản phẩm trên băng chuyền khi sản
phẩm quá lớn và không thể làm thủ công. Ngoài ra, nhóm còn có khả năng thống kê lại
thông tin của các sản phẩm giúp cho việc quản lý của công ty công nghiệp hoặc nhà máy,...
được thông minh hơn, tiết kiệm thời gian, sức lao động và nâng cao hiệu suất phát triển.


2

Nhóm 29, lớp HP: 17Nh14

Mục lục


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

I.

3

GIỚI THIỆU
A.
ĐẶT VẤN ĐỀ
Phân loại sản phẩm là một công đoạn không thể thiếu trong môi trường sản xuất


công nghiệp, thậm chí là các loại hình khác. Trước đây, công việc này sẽ được triển khai
một cách thủ công. Việc làm như vậy sẽ tốn rất nhiều thời gian và cho hiệu suất không cao,
đặc biệt là khi lượng sản phẩm lên đến một con số lớn thì có thể sẽ xảy ra nhầm lẫn, sai sót.
Trong thời đại công nghệ phát triển thì mọi việc đều được thực hiện một cách tự động, do
vậy nó sẽ đáp ứng được nhu cầu về phân loại một lượng lớn sản phẩm.
Nhận thấy nhu cầu trên, nhóm đã tiến hành nghiên cứu và triển khai một hệ thống
nhận diện và phân loại sản phẩm trên băng chuyền. Hệ thống này có thể sử dụng trong công
nghiệp ,nông nghiệp, cho các công ty và các tổ chức khác. Vì đây là một loại mô hình tự
động nên có thể dễ dàng triển khai tiến hành nhận diện và phân loại sản phẩm. Và sau đó
dữ liệu sẽ được xử lý thống kê để thuận tiện cho việc theo dõi và quản lý. Hệ thống tự động
này tiết kiệm rất nhiều thời gian và sức lao động, và nâng cao hiệu quả công việc.
B.
BẢNG PHÂN CÔNG CÔNG VIỆC
STT
1

Họ và tên
Nguyễn Tiến Văn (Nhóm trưởng)

Nhiệm vụ
Đọc tài liệu, viết báo cáo và cài đặt thuật
toán về Database Firebase , Servo G90 và
LCD 16x2.

2

Huỳnh Hữu Phước

Đọc tài liệu, viết báo cáo, cài đặt thuật
toán SVM phân lớp vật thể và chuẩn bị

dataset

3

Nguyễn Việt Cường

Đọc tài liệu, viết báo cáo và cài đặt thuật
toán đối với Camera, xây dựng luồng đi
dữ liệu và thiết kế mô hình đồ án.

4

Trương Anh Vũ

Đọc tài liệu, viết báo cáo và cài đặt thuật
toán về trích xuất đặc trưng, xây dựng
thuật toán giao tiếp với băng chuyền.


4

Nhóm 29, lớp HP: 17Nh14

II.

GIẢI PHÁP

A.

SƠ ĐỒ KHỐI MODULE HỆ THỐNG

Hình 1: Sơ đồ khối module hệ thống


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

B.

B.
SƠ ĐỒ KHỐI LUỒNG CHẠY CỦA HỆ THỐNG

Hình 2: Sơ đồi khối luồng chạy hệ thống

5


6

Nhóm 29, lớp HP: 17Nh14

C.
CHUẨN BỊ PHẦN CỨNG
1.

Danh sách linh kiện

Tên phần cứng

Chức năng phần cứng

Giá tiền (VNĐ)


Raspberry Pi 4 Model B

Trung tâm xử lý chính của 1.800.000đ
hệ thống

Camera Logitech C310

Nguồn thu thập dữ liệu đầu 900.000đ
vào của hệ thống

Thẻ nhớ SD 32GB

Lưu trữ hệ điều hành 250.000đ
Raspbian

LCD 16 x 2

Hiển thị tên của vật vừa 30.000đ
nhận diện và số lượng vật
đó có trong database sau
khi được thêm vào

Băng chuyền

Băng chuyền tự động chạy 3.400.000đ
và dừng để nhận diện vật
phẩm

Servo G90


Phân luồng sản phẩm sau 35.000đ
khi phân lớp

2.

Cơ sở lý thuyết phần cứng
2.1.

Raspberry Pi

Raspberry Pi là một chiếc máy tính kích thước nhỏ tích hợp nhiều phần cứng mạnh
mẽ đủ khả năng chạy hệ điều hành và cài đặt được nhiều ứng dụng trên nó. Raspberry Pi
đang là “Mini Computer” nổi bật nhất hiện nay. Ban đầu nó được Raspberry Pi Foundation
phát triển dự án Raspberry với mục tiêu là dạy học cho trẻ em. Nhưng Pi đang dành được
sự quan tâm và đánh giá cao từ cộng đồng và đang được ứng dụng rộng rãi trong các dự án
nghiên cứu, thiết bị IOT,. …. Bởi khả năng xử lý mạnh mẽ, chi phí thấp và tính di động
cao. [1]


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

7

Trong đồ án này, nhóm sử dụng Raspberry Pi 4 Model B làm trung tâm xử lý chính
của cả hệ thống:
Một số thông số chính của Raspberry Pi 4:


Vi xử lý: Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @

1.5GHz



Ram: 4GB LPDDR4-3200 SDRAM



Kết nối: 2.4 GHz and 5.0 GHz IEEE 802.11ac wireless, Bluetooth 5.0, BLE,
Gigabit Ethernet



Video và âm thanh: 2 cổng micro-HDMI ports ( hỗ trợ đến 4kp60), Cổng MIPI CSI
Camera, cổng stereo output và composite video 4 chân.



40 cổng giao tiếp GPIO.

Hình 3: Hình ảnh module Raspberry Pi 4 Model B

2.2.

Camera Logitech C310

Một trong những webcam định dạng màn hình rộng. Có tính năng điều chỉnh
ánh sáng tự động.



8

Nhóm 29, lớp HP: 17Nh14

-

Thông số kỹ thuật:
+ Độ phân giải tối đa: 720p/30Fps
+ Loại tiêu cự: Lấy nét cố định
+ Công nghệ thấu kính: Tiêu chuẩn
+ Trường ngắm: 60 độ

Hình 4: Hình ảnh Camera Logitech C310

2.3.

Băng chuyền Conveyor

Băng chuyền là một sản phẩm hỗ trợ đắc lực trong các nhà máy, giúp vận

-

chuyển, hỗ trợ chế tạo, lắp ráp, đóng gói, di chuyển vật từ khu vực A sang khu vực
B. Có rất nhiều loại băng chuyền được sử dụng trong nhà máy. Trong đồ án này,
nhóm sử dụng băng chuyền ngắn để dễ dàng phục vụ mục đích nghiên cứu. Băng
-

chuyền Conveyor được sản xuất bởi IMWI Technology tại Việt Nam.
Thông số kỹ thuật


Accuracy

0.02 mm

Length

500 mm


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

Width

120 mm

Mass

2 Kg

Max track speed

2 m/s

Max acceleration

5 m/s

Power

12V/2A


Connection

UART

Control Method

G-code, Potentiometer

-

9

Băng chuyền sử dụng giao tiếp UART thông qua USBTOTTL và sử dụng GCode để điều khiển băng chuyền theo ý muốn.

Hình 5: Hình ảnh Conveyor X

2.4.

LCD text 1602


10

Nhóm 29, lớp HP: 17Nh14

-

Một phương tiện phổ biến dùng để hiển thị text và biểu tượng là LCD (Liquid
Crystal Display - Màn hình tinh thể lỏng). LCD thường được sử dụng để hiển thị

trong máy tính cầm tay và đồng hồ báo thức. Để có thể sử dụng màn hiển thị LCD,
ta cần một chip driver để điều khiển nó; thường được gắn kèm với màn hiển thị. Một

-

dòng driver chip thông dụng là HD44780.[2]
Các linh kiện cần thiết gồm 2 điện trở và một màn LCD. Chân điều khiển độ
tương phản trên LCD phải được nối với điện trở để điều chỉnh mức độ tương phản.
Trở kháng của điện trở này nên ở mức 10k Ôm. Tùy vào điện thế mà đèn màn hình
cần, thêm điện trở để cung cấp điện thế. Trong màn hình được sử dụng, màn hình
LCD yêu cầu điện thế 4.2V. Lắp điện trở thích hợp vào giữa chân cấp nguồn và chân
+5V của màn hình LCD.[3]

Hình 6: Hình ảnh LCD text 1602

Servo
Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông

2.5.
-

thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng
xung PPM) với góc quay nằm trong khoảng bất kì từ 0 độ - 180 độ. Mỗi loại servo
có kích thước, khối lượng và cấu tạo khác nhau. Có loại thì nặng chỉ 9g (chủ yếu
dùng trên máy bay mô mình), có loại thì sở hữu một momen lực rất tốt (vài chục
-

Newton/m), hoặc có loại thì khỏe và nhông sắt chắc chắn.[11]
Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín. Tín hiệu ra
của động cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí



Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

11

sẽ được hồi tiếp về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển
động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí
mong muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm
chính xác. Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ
servo RC (radio-controlled). Trong thực tế, bản thân động cơ servo không phải được
điều khiển bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi.
Động cơ servo nhận tín hiệu từ máy thu này.[11]

Hình 7: Servo

G90 và bên trong

Servo

Thẻ nhớ
Để có thể thực hiện đầy đủ chức năng và chạy được OS, mọi chiếc Raspberry
2.6.

-

Pi cần một thẻ Micro SD. Đối với đại đa số các dự án, sử dụng thẻ Micro SD từ 32
GB trở xuống là tốt nhất. Chúng ta có thể sử dụng thẻ SD 32 GB, nhưng có khá
-


nhiều điều phiền phức.
Sử dụng thẻ SD 32GB yêu cầu định dạng với hệ thống tệp exFAT. Theo
hướng dẫn định dạng chính thức của Raspberry Pi, bootloader của Raspberry Pi chỉ
có thể hỗ trợ đọc từ các hệ thống tập tin FAT16 hoặc FAT32. Sử dụng thẻ SD 32GB
yêu cầu định dạng lại thẻ thành FAT32 trước khi làm bất cứ điều gì khác.[4]

Hình 8: Hình ảnh Micro SD 32GB Class 10


12

Nhóm 29, lớp HP: 17Nh14

D.
CHUẨN BỊ PHẦN MỀM
1.
Tên công nghệ
SVM

Danh sách phần mềm
Chức năng
Là thuật toán phân loại dùng để xác định được dữ liệu ảnh đầu
vào của một vật có nằm trong danh sách vật có các tập ảnh dữ liệu
(Lớp) đã học được hay không.

OpenCV

Là một thư viện nhóm đã sử dụng nhằm mục đích hỗ trợ việc áp
dụng các thuật toán nhận dạng và nhận diện vật thể vào hệ thống.


Scikit-learn

Là một thư viện dùng để sử dụng thuật toán SVM (Support Vector
Machine) dùng trong việc phân loại và nhận diện vật thể

Firebase Realtime Là hệ quản trị cơ sở dữ liệu đám mây thời gian thực nhóm đã sử
Database

dụng để lưu trữ các dữ liệu liên quan tới dữ liệu của vật

Keras

Là thư viện chứa pre-trained Model VGG16 mà nhóm sử dụng để
trích xuất đặc trưng, tiền xử lý ảnh để hoàn thiện Model.

Adafruit

Là thư viện hỗ trợ giao tiếp với LCD thông qua GPIO với
setMode là GPIO.BOARD giúp trả

GPIO.RPI

Là thư viện hỗ trợ giao tiếp qua các cổng GPIO trên Raspberry,
được sử dụng để giao tiếp với Servo G90 và LCD 16x2


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

2.


13

Cơ sở lý thuyết phần mềm

Mô hình chung cho các bài toán Machine Learning [5] :

Hình 9: Mô hình chung cho các bài toán Machine Learning

2.1. Nhận dạng vật thể
2.1.1. Trích xuất đặc trưngPre-trained Model VGG16
a)

Pre-trained Model VGG16

Được phát triển năm 2014, là một biến thể sâu hơn nhưng lại đơn giản hơn so với kiến
trúc convolution (từ gốc: convolutional structure) thường thấy ở CNN Kiến trúc như hình
dưới, có thể thấy số mặc dù các tầng cao hơn được đơn giản hóa so với LeNet, AlexNet …
thu gọn về kích thước nhưng số lượng lại lớn hơn, sâu hơn. [6]


14

Nhóm 29, lớp HP: 17Nh14

Hình 10: Model VGG16 (số lượng tham số: 138.000.000)

VGG16 - Kiến trúc mạng có 16 layers. Nguyên tắc thiết kế của các mạng

-


VGG nói chung: 2 hoặc 3 layers Convolution (Conv) và tiếp nối sau đó là 1 layer
Max Pooling 2D. Ngay sau Conv cuối cùng là 1 Flatten Layer để chuyển ma trận 4
chiều của Conv Layer về ma trận 2 chiều. Tiếp nối sau đó là các Fully-Connected
Layers và 1 Softmax Layer. Do VG được training trên tập dữ liệu của ImageNet có
1000 class nên ở Fully-Connected Layer cuối cùng sẽ có 1000 Units.[7]
Thư viện Keras cung cấp một API function để có sử dụng model này nhằm

-

mục đích trích xuất đặc trưng của hình ảnh dữ liệu đầu vào nhằm mục đích tăng độ
chính xác của model huấn luyện. Các hàm quan trọng được sử dụng
Trong bài báo cáo này, nhóm sử dụng Pre-trained Model VGG16 không có

-

Fully-Connected Layer và sử dụng Pre-trained weights từ ImageNet

Tên hàm
VGG16
Ý nghĩa tham số

Chức năng

= Weights = ‘imagenet’ : sử Khởi tạo model VGG16 với


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

'imagenet',


dụng Pre-trained Weight của các tham số đã truyền vào

include_top = False>

ImageNet

15

Include_top = False: Không
sử

dụng

Fully-Connected-

Layer
Load_img
Path: đường dẫn dữ liệu

target_size>

Target_size: kích thước 1 Format để thuận tiện việc xử
khung ảnh

preprocess_input<x>

Chuyển đổi các ảnh sang PIL



X: mảng Data input 3 chiều Tiền xử lý một vector hoặc
hoặc 4 chiều được truyền vào

mảng numpy đã mã hóa một
loạt hình ảnh.

b)
-

Features Extractions (Trích xuất đặc trưng)
Là một quá trình giảm chiều mà tập hợp dữ liệu ban đầu (Raw input Data) sẽ

được giảm xuống thành các nhóm để dễ quản lý và xử lý dữ liệu. Một đặc trưng của
tập dữ liệu lớn là một số lượng lớn các biến yêu cầu nhiều tài nguyên của máy tính
để xử lý được. Do đó, trích xuất đặc trưng là phương pháp chọn hoặc kết hợp các
biến thành các đặc trưng, nhờ đó sẽ giảm lượng dữ liệu phải xử lý, tăng khả năng
-

chính xác trong khi vẫn mô tả đầy đủ hoàn toàn dữ liệu gốc.
Ngoài ra, Trích xuất đặc trưng có thể giảm và loại bỏ đi lượng dữ liệu dư thừa. Việc
giảm dữ liệu và máy tính xây dựng các tổ hợp đặc trưng tạo điều kiện thuận lợi cho

c)
-

tốc độ học tập và khái quát hóa trong quy học học máy.[8]
Quá trình thực hiện Trích xuất đặc trưng từ Pre-trained Model VGG16
Trong bài báo cáo này, chúng ta sẽ sử dụng Pre-trained Model VGG16 không sử
dụng Fully-Connected Layer và sử dụng Pre-trained Weight từ Imagenet. Từ Input

Layer đến Max Pooling Layer (được đánh dấu bởi 7 x 7 x 512) sẽ được coi là phần
trích xuất đặc trưng của model, trong khi phần còn lại sẽ được gọi là phần phân loại
model.Thuật toán phân loại Support Vector Machine

2.1.2 Thuật toán Support Vector Machine (SVM)


16

Nhóm 29, lớp HP: 17Nh14

Hình 11: Support Vector Machine

Trong đồ án này, nhóm chúng ta sẽ xây dựng thuật toán phân loại hình ảnh

-

tuyến tính Support Vector Machine (SVM). Phân loại ảnh là quá trình lấy dữ liệu
input (ví dụ như ảnh chụp từ camera) và đưa ra lớp (ví dự như “chìa khóa”) hoặc
phần trăm xác suất dữ liệu input thuộc một lớp cụ thể nào đó (ví dụ “có khoảng 90%
input này thuộc lớp “chìa khóa”)
a)

Khái niệm siêu phẳng (hyperplane) và khoảng cách từ một điểm tới một
siêu phẳng:

-

Siêu mặt phẳng là đường biên quyết định giúp phân loại các điểm dữ liệu.
Các điểm dữ liệu rơi ở hai bên của siêu phẳng có thể được quy cho các lớp khác

nhau. Ngoài ra, kích thước của siêu phẳng phụ thuộc vào số lượng đặc trưng. Nếu số
lượng đặc trưng đầu vào là 2, thì siêu phẳng chỉ là một đường thẳng. Nếu số lượng


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

17

đặc trưng đầu vào là 3, thì siêu phẳng trở thành mặt phẳng hai chiều. Nó trở nên khó
tưởng tượng khi số lượng đặc trưng vượt quá 3.[9]

Hình 12. Siêu phẳng trong không gian đặc trưng 2D và 3D
-

Trong không 2 chiều, ta biết rằng khoảng cách từ một điểm có tọa độ (x 0, y0,)
tới đường thẳng có phương trình w1x + w2y + b = 0 được xác định bởi công thức:

-

Trong không gian ba chiều, khoảng cách từ một điểm có tọa độ(x 0, y0, z0) tới
một mặt phẳng có phương trình w1x + w2y + w3z + b = 0 được xác định bởi:

-

Hơn nữa, nếu ta bỏ dấu trị tuyệt đối ở tử số, chúng ta có thể xác định được
điểm đó nằm về phía nào của đường thẳng hay mặt phẳng đang xét. Những điểm làm
cho biểu thức trong dấu giá trị tuyệt đối mang dấu dương nằm về cùng 1 phía ( tạm
gọi đây là phía dương của đường thẳng), những điểm làm cho biểu thức trong dấu
giá trị tuyệt đối mang dấu âm nằm về phía còn lại (gọi là phía âm). Những điểm nằm



18

Nhóm 29, lớp HP: 17Nh14

trên đường thẳng, mặt phẳng sẽ làm cho tử số có giá trị bằng 0, tức khoảng cách
-

bằng khôngViệc này có thể được tổng quát lên không gian nhiều chiều: Khoảng cách từ
một điểm (Vector) có tọa độ x0 tới siêu phẳng (hyperplane) có phương trình w Tx + b
= 0 được xác định bởi công thức:[10]

b)
-

Tối ưu của thuật toán SVM
SVM là một thuật toán rất được ưa chuộng bởi nó có độ chính xác tương đối

cao với ít dung lượng tính toán. Mục đích của máy vector hỗ trợ để tìm một siêu
phẳng trong một không gian N chiều (N - số lượng đặc trưng) mà nó sẽ phân lớp một
cách riêng biệt các điểm dữ liệu. Giả sử rằng có hai class khác nhau được mô tả bởi
các điểm trong không gian nhiều chiều, hai lớp được phân tách tuyến tính, tức tồn tại
một siêu phẳng phân chia chính xác hai classes đó. Để tìm một siêu mặt phẳng phân
chia hai classes đó, tức tất cả các điểm thuộc một class nằm về cùng một phía của
siêu mặt phẳng đó và ngược phía với toàn bộ các điểm thuộc class còn lại.

Hình 13. Đường siêu phẳng phân cách hai lớp được tách tuyến tính


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

-

19

Trong vô số các mặt phân chia đó, đâu là mặt phân chia tốt nhất theo một tiêu
chuẩn nào đó? Trong ba đường thẳng minh họa trong Hình 1 phía trên, có hai đường
thẳng khá lệch về phía class hình tròn đỏ. Chúng ta cần tìm được đường phân chia để
cả hai class đều được phân chia “công bằng”.

Hình 14. Đường phân chia nằm lệch hẳn về phía lớp màu đỏ
-

Để tìm được đường phân chia đó, chúng ta lại cần một đường thẳng sao cho
khoảng cách từ điểm gần nhất của mỗi class (các điểm được khoanh tròn) tới đường
thẳng là như nhau, như thế thì mới đạt được sự “công bằng”. Khoảng cách như nhau
này được gọi là margin (lề). Thế nhưng lại nảy sinh thêm vấn đề, sau khi đạt được sự
“công bằng”, chúng ta lại phải tối ưu hóa sự công bằng đó để mỗi class có được
phân chia phần “lãnh thổ” lớn nhất.


20

Nhóm 29, lớp HP: 17Nh14
Hình 15. Margin của hai lớp là bằng nhau và lớn nhất có thể

Như ở hình trên cả hai đường đen và lục đều phân chia các lớp một cách công

-

bằng. Nhưng đường màu đen đem lại một margin rộng hơn hẳn đường màu lục. Mục

tiêu tối ưu của thuộc toán này là tìm một siêu phẳng có lề tối đa, tức là khoảng cách
tối đa giữa các điểm dữ liệu của cả hai lớp. Tối đa hóa khoảng cách lề cung cấp một
số củng cố để các điểm dữ liệu trong tương lai có thể được phân loại với độ tin cậy
cao hơn, mang lại hiệu ứng phân lớp tốt hơn vì sự phân chia giữa các hai lớp sẽ rạch
ròi hơn.
2.1.3 Quá trình Train bộ DataSet
Dữ liệu ban đầu

a)

Đầu tiên, ta sẽ cung cấp các tập dữ liệu của vật thể các lớp cần nhận diện.

-

Trong đồ án này, chúng ta sẽ cần 4 bộ ảnh: 3 của các vật thể cần nhận dạng: chìa
khóa (key), chuột máy tính (mouse), thẻ sinh viên (card) và 1 bộ ảnh trống (chỉ chứa
mặt băng chuyền). Đặt các ảnh vào folder khác nhau, tên folder là các nhãn của tập
dữ liệu đó và các ảnh trong mỗi folder sẽ là dữ liệu tương ứng với từng nhãn đó.
Trích dẫn và xử lý dữ liệu đầu vào

b)

Sau khi xác định model (VGG16), vấn đề tiếp theo là chúng ta cần phải đưa

-

dữ liệu đầu vào với kích thước mà mô hình mong muốn là 224 x 224. Sau đó, hình
ảnh cần phải được convert sang Array ứng với nhãn và được mở rộng từ mảng 3
chiều thành mảng 4 chiều bao gồm: mẫu, hàng, cột, kênh và trong đó chúng ta chỉ có
một mẫu. Các giá trị pixel cần được thay đổi một cách phù hợp với Model VGG.

Lúc này chúng ta đã có thể lấy được các Đặc trưng. Lúc này ta sẽ có được 2 mảng
numpy, 1 mảng chứa Đặc trưng của bộ ảnh và mảng kia chứa các nhãn. Chúng ta sẽ
phải chuẩn hóa lại data trong mảng chứa các Đặc trưng để thuận lợi cho việc tính
toán cũng như tăng tốc độ hội tụ. Bước tiếp ta cần chỉnh sửa lại kích thước 2 mảng
này về với kích thước phù hợp để sử dụng với model SVM mà thư viện sklearn của
Python cung cấp. Chúng ta cũng lặp lại các bước trên tương tự với bộ dữ liệu ảnh
dùng để Test. Và khi tất cả quá trình này kết thúc, ta sẽ thu được 3 mảng numpy 2
chiều:
+ listImages: data của bộ ảnh dùng để huấn luyện
+ test_data: data của bộ ảnh dùng để kiểm tra


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

21

+ labels: bộ nhãn ứng với từng ảnh trong listImages

c)

Train dữ liệu

Hình 16: Sơ đồ khối Train model nhận dạng vật thể

2.1.4. Quá trình nhận dạng vật thể:
a)

Dữ liệu cần được nhận dạng

Ta sẽ nhận dạng vật thể được camera chụp được trên băng chuyền. Camera sẽ

chụp 5 ảnh rồi lưu nó vào thư mục output để xử lí.
b)

Xử lý dữ liệu cần được nhận dạng

Bước tiếp theo ta sẽ cũng load ảnh từ thư mục output và xử lí ảnh như khi
chúng ta xử lí đối với ảnh dùng để train. Quá trình kết thúc ta cũng thu được một mảng
numpy 2 chiều chứa đặc trưng của ảnh chụp vật thể cần nhận dạng.


22

Nhóm 29, lớp HP: 17Nh14

c) Sơ đồ khối quá trình nhận dạng

Hình 17: Sơ đồ khối quá trình nhận diện

2.1.6. Kết quả đầu ra
-

Kết quả thu được sau khi chạy chương trình. Camera chụp 5 ảnh có chứa vật

và sử dụng model đã được huấn luyện để phân loại, khả năng nhận dạng được sẽ


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

23


càng được cải thiện nếu ảnh được chụp có cùng điều kiện chụp (độ sáng, nền, ..)
càng giống với lúc chụp ảnh dữ liệu.

Hình 18: Gửi tín
hiệu đến băng
chuyền
Hình 19: Kết quả
thu được nếu
không có vật trên
băng chuyền

Hình
20: Kết
quả thu
được
khi phát hiện

ra chìa

khóa
Hình 21: Kết

quả thu

được khi

phát

hiện ra thẻ


sinh

viên


24

Nhóm 29, lớp HP: 17Nh14
Hình 22:
Kết quả thu
được khi
phát hiện
chuột

2.2.
Firebase

Realtime Database
2.2.1. Giới thiệu về FireBase
-

Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây - cloud.

Kèm theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp
người dùng lập trình ứng dụng bằng cách đơn giản hoá các thao tác với cơ sở dữ liệu. Cụ
thể là những giao diện lập trình ứng dụng API đơn giản. Mục đích nhằm tăng số lượng
người dùng và thu được nhiều lợi nhuận hơn.
_

Trong đồ án này, nhóm sử dịch Firebase làm dịch vụ cơ sở dữ liệu thời gian


thực lưu trữ thông tin bao gồm mã ID sinh ra lúc nhận diện vật cũng như thời gian mà hệ
thống nhận diện được vật. Với khả năng đồng bộ hoá dữ liệu người dùng kể cả khi mất kết
nối mạng giúp cho việc lưu trữ và lấy dữ liệu đồng thời trả về kết quả rất chính xác.
2.2.2. Cấu trúc của DataBase


Nguyễn Tiến Văn, Huỳnh Hữu Phước, Trương Anh Vũ, Nguyễn Việt Cường

Hình 23 : Cấu trúc Firebase Realtime Database

III. KẾT QUẢ
A.
Các tính năng trong hệ thống
Tên tính năng

Mô tả tính năng

Phát hiện và nhận dạng vật

Tương tác với Raspberry Pi để mở Camera
thu nhận hình ảnh của vật và xử lý vật

Thống kê vật

Theo dõi số lượng, tên, và ngày của các
vật đang được phân loại trên băng chuyền.

25



×