Báo cáo đò án lập trình hệ thống Đề tài: Nhận diện sản phảm trên băng chuyền Sử dụng các phần cứng: Raspberri Pi 4, Băng chuyền và các vật dụng kèm theo Sử dụng AI, Machine Learning với thuật toán chính là SVM để nhận diện sản phẩm bằng cách chụp ảnh Điểm số: 9.510
Trang 1sử 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úpcon 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ảnphẩ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ôngnghiệ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ảnphẩ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ạithô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.
Trang 2Mục lục
I GIỚI THIỆU 3
A ĐẶT VẤN ĐỀ 3
B BẢNG PHÂN CÔNG CÔNG VIỆC 3
II GIẢI PHÁP 4
A SƠ ĐỒ KHỐI MODULE HỆ THỐNG 4
B SƠ ĐỒ KHỐI LUỒNG CHẠY CỦA HỆ THỐNG 5
C CHUẨN BỊ PHẦN CỨNG 6
1 Danh sách linh kiện 6
2 Cơ sở lý thuyết phần cứng 6
D CHUẨN BỊ PHẦN MỀM 12
1 Danh sách phần mềm 12
2 Cơ sở lý thuyết phần mềm 12
III KẾT QUẢ 26
A Các tính năng trong hệ thống 26
B Điều kiện kiểm thử 27
C Quy trình và kết quả kiểm thử 28
D Đánh giá hệ thống 33
IV KẾT LUẬN 34
V TÀI LIỆU THAM KHẢO 35
Trang 3Phâ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
1 Nguyễn Tiến Văn (Nhóm trưởng) Đọ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ựngthuật toán giao tiếp với băng chuyền
Trang 4II GIẢI PHÁP
Hình 1: Sơ đồ khối module hệ thống
Trang 5Hình 2: Sơ đồi khối luồng chạy hệ thống
Trang 6C CHUẨN BỊ PHẦN CỨNG
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
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]
Trang 7Mộ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
+ Độ phân giải tối đa: 720p/30Fps
+ Loại tiêu cự: Lấy nét cố định
Trang 8+ 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
- 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ậnchuyể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ăngchuyền Conveyor được sản xuất bởi IMWI Technology tại Việt Nam
Trang 9Power 12V/2A
- Băng chuyền sử dụng giao tiếp UART thông qua USBTOTTL và sử dụng Code để điều khiển băng chuyền theo ý muốn
G-Hình 5: G-Hình ảnh Conveyor X
- Một phương tiện phổ biến dùng để hiển thị text và biểu tượng là LCD (LiquidCrystal 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ộtdò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ìnhcần, thêm điện trở để cung cấp điện thế Trong màn hình được sử dụng, màn hìnhLCD 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]
Trang 10Hình 6: Hình ảnh LCD text 1602
- Servo là một dạng động cơ điện đặc biệt Không giống như động cơ thông 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í
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]
Trang 11Hình 7: Servo G90 và bên trong Servo
- Để có thể thực hiện đầy đủ chức năng và chạy được OS, mọi chiếc Raspberry
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
Trang 12D CHUẨN BỊ PHẦN MỀM
SVM 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
Database
Là hệ quản trị cơ sở dữ liệu đám mây thời gian thực nhóm đã sử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
Trang 13Hình 9: Mô hình chung cho các bài toán Machine Learning
Trang 14Hì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ạngVGG nói chung: 2 hoặc 3 layers Convolution (Conv) và tiếp nối sau đó là 1 layerMax Pooling 2D Ngay sau Conv cuối cùng là 1 Flatten Layer để chuyển ma trận 4chiều của Conv Layer về ma trận 2 chiều Tiếp nối sau đó là các Fully-ConnectedLayers 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ằmmụ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
Trang 15Fully-Connected-các tham số đã truyền vào
Load_img<path,
target_size>
Path: đường dẫn dữ liệuTarget_size: kích thước 1khung ảnh
Chuyển đổi các ảnh sang PILFormat để thuận tiện việc xửlý
preprocess_input<x> X: mảng Data input 3 chiều
hoặc 4 chiều được truyền vào
Tiền xử lý một vector hoặcmảng numpy đã mã hóa mộtloạt hình ảnh
- 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ủatậ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ácbiế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ăngchí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ệcgiả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 chotốc độ học tập và khái quát hóa trong quy học học máy.[8]
c) 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ừ InputLayer đến Max Pooling Layer (được đánh dấu bởi 7 x 7 x 512) sẽ được coi là phầntrí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ạimodel.Thuật toán phân loại Support Vector Machine
Trang 162.1.2 Thuật toán Support Vector Machine (SVM)
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 ảnhtuyến tính Support Vector Machine (SVM) Phân loại ảnh là quá trình lấy dữ liệuinput (ví dụ như ảnh chụp từ camera) và đưa ra lớp (ví dự như “chìa khóa”) hoặcphầ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”)
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ácnhau 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ố
Trang 17Hì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 độ (x0, 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 độ(x0, y0, z0) tớimộ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àmcho 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
Trang 18gọ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ấugiá 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ằmtrê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áchbằng không-
- Việ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 wTx + b
= 0 được xác định bởi công thức:[10]
- SVM là một thuật toán rất được ưa chuộng bởi nó có độ chính xác tương đốicao 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êuphẳ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ộtcá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ởicá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ạimộ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ânchia 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ủasiê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
Trang 19thẳ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 chokhoả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 đườngthẳng là như nhau, như thế thì mới đạt được sự “công bằng” Khoảng cách như nhaunà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ó đượcphân chia phần “lãnh thổ” lớn nhất
Trang 20Hì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ôngbằ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ụctiê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
- Đầ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ìakhóa (key), chuột máy tính (mouse), thẻ sinh viên (card) và 1 bộ ảnh trống (chỉ chứamặ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 đó
- 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 3chiề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ảngnumpy, 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ínhtoá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ảngnày về với kích thước phù hợp để sử dụng với model SVM mà thư viện sklearn củaPython 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 ảnhdùng để Test Và khi tất cả quá trình này kết thúc, ta sẽ thu được 3 mảng numpy 2chiều:
+ listImages: data của bộ ảnh dùng để huấn luyện