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
lý
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