.4 Lựa chọn cấu trúc làm việc

Một phần của tài liệu (TIỂU LUẬN) bài tập lớn THIẾT kế hệ THỐNG cơ điện tử thiết kế hệ thống tự động phân loại bánh kẹo sử dụng công nghệ xử lý ảnh (Trang 36)

 Concept 1 là giải pháp tối ưu nhất →

Lựa chọn concept 1 để thiết kế cụ thể

Phần 3: Thiết kế cụ thể

3.1 Xây dựng các bước thiết kế cụ thể

3.1.1 Bắt đầu với giải pháp nguyên tắc và danh sách yêu cầu-Phần băng tải -Phần băng tải

+ Đảm bảo kích thước theo danh sách yêu cầu + Đảm bảo an tồn, cơng thái học và tính thẩm mỹ

+ Khung băng tải chắc chắn, chịu rung động tốt, chống rỉ sét, cách điện + Đảm bảo về độ bền khi chịu lực

+ Băng tải vận hành ổn định

+ Đảm bảo về các tiêu chí an tồn khi vận hành + Chế tạo chính xác, tháo lắp dễ dàng

+ Vật liệu chế tạo than thiện với mơi trường, giá thành hợp lí

-Phần cơ khí

+ Hoạt động êm, tiếng ồn và độ rung nhỏ + Đảm bảo tốc độ của băng tải

+ Tính chọn kích thước rulo phù hợp với kích thước hệ thống và yêu cầu phân loại

Thiết kế cụ thể

+ Đảm bảo số lượng bánh kẹo phân loại được theo yêu cầu + Đảm bảo cung cấp đủ áp suất khí cho hệ thống phân loại

- Phần nhận diện bánh kẹo

+ Đảm bảo nhận diện chính xác theo yêu cầu + Đảm bảo tốc độ nhận diện sản phẩm

+ Có khả năng điều chỉnh khả năng nhận diện + Giao diện dễ sử dụng

+ Đếm được số sản phẩm đã phân loại

- Các yêu cầu ràng buộc khác của hệ thống

+ Sai số của các chi tiết trong dung saic cho phép + Tối giản thiết kế hệ thống, dễ dàng bảo trì thay thế + Đảm bảo tiêu chí về giá thành sản phẩm

3.1.2 Xác định điều kiện biên hoặc không gian cưỡng bức của bước thiết kếcụ thể cụ thể

- Khung băng tải

+Kích thước: Chiều dài: 5-7.5m

Chiều rộng: 0.5 -.0.75 m Chiều cao: 0.8 – 1.2m - Dung sai cho phép: 1mm

- Thùng chứa bánh kẹo: 1m x 1m x1m -Chọn rulo băng tải:

Chu vi rulo = ố độ ă ℎ ề

ố ị

Trong đó: Tốc độ băng chuyền yêu cầu cần đạt 10 -12 m/ph

Số vòng quay rulo: 10-15 vòng/ ph ⇒Chu vi rulo= 0.8 – 1m

Vậy chọn rulo có đường kính từ 0.25-0.3 m Vật liệu: thép C15

Phần cơ khí

- Cơng suất của động cơ P= .( + ). .

6120

F:hệ số ma sát = 0,3 l: chiều dài băng tải w: chiều rộng băng tải

M: Khối lượng các bộ phận chuyển động của băng tải (lấy M = 150 kg) V:Vận tốc chuyển động của băng tải (10 – 12 m/ph)

⇒ Chọn cơng suất động cơ ≥ 1.5 kW

Đường kính xylanh chọn bằng: 32 mm Hành trình xylanh: 25 mm Kiểu tác động: tác động kép Chu kỳ xylanh: 1s - Chọn máy nén khí P = (F/A).n

P: áp suất khí nén của máy nén khí F: Tải trọng đáp ứng ( F= 4kg)

A:Diện tích xylanh

n = số xylanh của hệ thống (n=4) ⇒ P = (4./(1.62)).4 = 6.25 (kg/cm2) = 6.13 (bar)

Vậy chọn máy nén khí có áp suất ≥7 bar để đáp ứng hệ thống

3.1.3 Xác lập các layout thô – xác định các bộ phận thực hiện chức năngchính chính

Thiết kế cụ thể

Nhóm

Cơ khí

Điện- Điện tử

Thiết kế cụ thể PLC Thiết sản phẩm Máy phần mềm điều khiển

3.1.4 Giải pháp cho các chức năng phụ trợ3.1.4.1 Bộ phận lọc thô sản phẩm 3.1.4.1 Bộ phận lọc thơ sản phẩm

Hình 3.2 Bộ phận lọc thơ sản phẩm

Chức năng: Đưa lần lượt từng sản phẩm vào băng chuyền tránh việc sản phẩm bị đưa vào quá nhiều gây tắc băng chuyền

3.1.4.2 Máng dẫn sản phẩm Hình 3.3 Máng dẫn sản phẩm Kích thước Dài: 2.5 m Rộng: 0.5 m Cao: 0.3 m

Chức năng: Dẫn sản phẩm từ bộ phận lọc thô đưa vào băng chuyền

Thiết kế cụ thể Kích thước: Dài: 0.5 m Đường kính: 0.3 m 3.1.4.4 Bộ phận dẫn truyền Hình 3.5 Puley 35 Hình 3.6 Dây đai

3.1.4.5 Thuật toán phân loại sản phẩm a. Về Python

Python là một ngơn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do

Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991. Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python là ngơn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python cịn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu.

Python hồn tồn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động, do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.

Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời gian, Python dần mở rộng sang mọi hệ điều hành từ MS-DÓ đến MAC-OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python. Ơng giữ vai trị chủ chốt trong việc quyết định hướng phát triển của Python. Ứng dụng: • Web development • Machine learning • Data analysis • Data visualization b. Về YOLO Hình 3.7 Thuật tốn Yolo

Thiết kế cụ thể

YOLO (You only look once) là một mơ hình CNN để detect object với ưu điểm

nổi trội là độ chính xác tốt hơn và tốc độ nhanh hơn nhiều so với những mơ hình cũ. Thậm chí có thể chạy tốt trên những IOT device như Raspberry Pi.

Đầu vào của mơ hình là một bộ lữ liệu ảnh. Đối với bài toán Object detection, Yolo không chỉ hỗ trợ chúng ta phân loại Object mà cịn giúp xác định được chính xác vị trí của Object trong Video.

Hình 3.8 Sơ đồ thuật tốn

Đầu vào của mơ hình là một ảnh, mơ hình sẽ nhận dạng ảnh có đối tượng nào hay khơng, sau đó sẽ xác định toạ độ của đối tượng trong bức ảnh. Ảnh đầu vào được chia thành S x S ô (thường là 3 x 3, 7 x 7, 9 x 9…)

Hình 3.9 Predict Object

Với đầu vào là 1 ảnh, đầu ra của mơ hình sẽ là một ma trận 3 chiều có kích thước S x S x (5 x N + M) với N và M lần lượt là số lượng Box và Class mà mỗi ơ cần dự đốn. Mỗi bouding box cần dự đoán 5 thành phần: x, y, w, h và predicttion. Với (x, y) là toạ độc tâm của bounding box, (w, h) lần lượt là chiều rộng và chiều cao của bounding box.

Prediction là xác suất của vật được tính là:

Pr(Object)∗ IOU(pred,truth)

Trong đó:

Pr (Object): điểm dự đốn vật

IOU (pred, truth): là tỉ lệ diện tích 2 bounding box chồng chéo nhau với diện tích tổng

Thiết kế cụ thể

Ứng dụng:

• Hệ thống theo dõi người

• Đếm số lượng vật thể

• Thanh tốn tiền tại quầy hàng

• Chấm cơng tự động

c. Thuật tốn

Với bài toán Object detection (nhận diện vật thể), thuật toán sử dụng YOLO v4 để

training dữ liệu sản phẩm và dùng OpenCV (thư viện xử lý ảnh của Python) để xử lí và đưa ra kết quả.

Q trình xây dựng thuật tốn gồm 3 bước

Thu thập dữ liệu

Hình 3.10 Quá trình xây dựng thuật toán

Thu thập dữ liệu

Hệ thống dữ liệu ảnh đầu vào bao gồm 3 loại nhãn hàng bánh kẹo khác nhau:

• Chocopie: 1020 ảnh

• Oishi: 1046 ảnh

• Oreo: 989 ảnh

• Goute: 950 ảnh

• Alpenlibe: 940 ảnh

Dữ liệu hình ảnh đầu vào được chụp ngẫu nhiên với nhiều backgound khác nhau, cường độ ánh sáng khác nhau và nhiều góc cạnh khác nhau.

Gán nhãn và training

Gán nhãn:

Gắn nhãn là 1 bước cần có trước khi training dữ liệu.

Dữ liệu ảnh bánh kẹo được dán nhãn bằng Labelimage với 3 loại nhãn: “Oreo”, “Chocopie” và “Oishi”.

Quá trình dán nhãn sẽ cung cấp thông tin cần thiết của vật trong ảnh cho hệ thống training.

Hình 3.11 Quá trình gán nhãn

Khi dán nhãn, hệ thống xuất ra 1 file “.txt” chứa các thông tin của vật trong ảnh bao gồm:

1. Thứ tự của nhãn

2. Tọa độ tâm của hộp giới hạn

Thiết kế cụ thể

Do không gian máy giới hạn, chúng ta sử dụng Google Colab - là một sản phẩm từ Google Research, nó cho phép chạy các dịng code python thơng qua trình duyệt. Google Colab bộ nhớ đám mây 40GB với Ram ảo là 13GB cho phép chúng ta training dữ liệu một cách nhanh chóng và hiệu quả.

Sau khi tải lên dữ liệu ảnh đầu vào, Google Colab tự động training dữ liệu một cách ổn định và an toàn.

Nhược điểm: Do là tài khoản miễn phí nên Google Colab sẽ hủy tồn bộ dữ liệu của chúng ta sau 10 tiếng.

Ước tính thời gian training:

• Với mỗi ảnh chúng ta có 1 bounding box, YOLO sẽ cần dự đoán tổng cộng 3000 bounding boxes. Giả sử mỗi batch của chúng ta có kích thước 64 ảnh và số lượng max_batches = 6000. Như vậy chúng ta cần dự đốn 1,152 tỉ bounding boxes

• Thời gian huấn luyện dự đoán là 24h.

Kết quả khi thử nghiệm hệ thống

Chương trình được chạy thử nghiệm trên Laptop sử dụng camera 2D và cho ra kết quả với tỉ lệ chính xác cao.

Sau q trình xử lí ảnh, chương trình cho ra một kết quả nhận diện chính xác từng loại bánh kẹo, Những thông tin của vật sẽ được hiển thị trên màn hình máy tính, bao gồm: • Bounding box • Label • Confidence • Fps Hình 3.12 Kết quả nhận diện

Thiết kế cụ thể

Hình 3.13 Kết quả nhận diện

Hình 3.14 Kết quả nhận diện

Thiết kế cụ thể

Hình 3.16 Kết quả nhận diện

3.1.4.6 Checklist Danh sách Chức năng Ngun tắc làm việc Bố trí An tồn

Thiết kế cụ thể Sản xuất Kiểm tra chất lượng Lắp ráp Vận chuyển Bảo dưỡng Hoạt động Chi phí Lịch trình 47

3.2 Tích hợp hệ thống

Thiết kế cụ thể

3.3 Phác thảo hệ thống

Hình 3.19 Phác thảo hệ thống

Phần 4: Phụ lục

4.1 Chương trình lập trình

import cv2

import numpy as np

# Load Yolo

net = cv2.dnn.readNet("yolov4-tiny-custom_last.weights", "yolov4-tiny- custom.cfg") classes = []

with open("obj.names", "r") as f:

classes = [line.strip() for line in f.readlines()]

print(classes)

layer_names = net.getLayerNames() #print(layer_names)

output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] #print(output_layers)

colors = np.random.uniform(0, 255, size=(len(classes), 3))

# Loading image

img = cv2.imread("chocopie.jpg")

#img = cv2.resize(img, None, fx=0.2, fy=0.2) height, width, channels = img.shape

Thiết kế cụ thể

# Detecting objects

blob = cv2.dnn.blobFromImage(img, 0.00392, (416, 416), (0, 0, 0), True, crop=False)

net.setInput(blob)

outs = net.forward(output_layers)

#Showing informations on the screen class_ids = []

confidences = [] boxes = [] for out in outs:

for detection in out: scores = detection[5:] class_id = np.argmax(scores)

confidence = scores[class_id] if confidence > 0.5:

# Object detected

center_x = int(detection[0] * width) center_y = int(detection[1] * height) w = int(detection[2] * width) h = int(detection[3] * height) # Rectangle coordinates x = int(center_x - w / 2) y = int(center_y - h / 2) boxes.append([x, y, w, h]) confidences.append(float(confidence)) class_ids.append(class_id) 51

indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4) print(indexes) font = cv2.FONT_HERSHEY_PLAIN for i in range(len(boxes)): if i in indexes: x, y, w, h = boxes[i] label = str(classes[class_ids[i]]) color = colors[class_ids[i]]

cv2.rectangle(img, (x, y), (x + w, y + h), color, 2) cv2.putText(img, label, (x, y + 30), font, 3, color, 3)

cv2.imshow("Image", img) cv2.waitKey(0)

4.2 Bản vẽ

Hình 4.1 Bản vẽ hệ thống đẩy phân loại

Hình 4.3 Biên dạng khung

Một phần của tài liệu (TIỂU LUẬN) bài tập lớn THIẾT kế hệ THỐNG cơ điện tử thiết kế hệ thống tự động phân loại bánh kẹo sử dụng công nghệ xử lý ảnh (Trang 36)

Tải bản đầy đủ (DOCX)

(64 trang)
w