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
Thiết kế cụ thể 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
3.1.4.3 Rulo
34
Hình 3.4 Rulo
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
Thiết kế cụ thể
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 hoàn toà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 toán Yolo
36
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 toá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
37
Thiết kế cụ thể
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ự đoá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ự đoá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
38
Ứng dụng:
• Hệ thống theo dõi người
• Đếm số lượng vật thể
• Thanh toán tiền tại quầy hàng
• Chấm công tự động
c. Thuật toá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ả.
Quá trình xây dựng thuật toá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
39
Thiết kế cụ thể
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
3. Chiều dài và chiều rộng của hộp giới hạn Training:
40
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ự đ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ự đoán 1,152 tỉ bounding boxes
• Thời gian huấn luyện dự đoán là 24h.
41
Thiết kế cụ thể
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 quá 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 42
Hình 3.13 Kết quả nhận diện
Hình 3.14 Kết quả nhận diện
43
Thiết kế cụ thể
Hình 3.15 Kết quả nhận diện
44
Hình 3.16 Kết quả nhận diện
45
Thiết kế cụ thể 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 Công thái học
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
Thiết kế cụ thể
3.2 Tích hợp hệ thống