.11 Quá trình gán nhãn

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 49)

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 toà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ự đố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ự đoán 1,152 tỉ bounding boxes

• Thời gian huấn luyện dự đố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 Nguyên tắc làm việc Bố trí An toà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: (adsbygoogle = window.adsbygoogle || []).push({});

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 49)