1. Trang chủ
  2. » Công Nghệ Thông Tin

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

37 239 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 37
Dung lượng 3,6 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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ú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 2

Mụ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 3

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

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 4

II GIẢI PHÁP

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

Trang 5

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

Trang 6

C 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 7

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

+ Độ 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 9

Power 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 10

Hì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 11

Hì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 12

D 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 13

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

Trang 14

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ạ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 15

Fully-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 16

2.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 17

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 độ (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 18

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ấ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 19

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 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 20

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ô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

Ngày đăng: 19/08/2020, 08:51

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w