1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng

86 7 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Tác giả Trần Cơ Tâm
Người hướng dẫn TS. Phạm Việt Cường, PGS.TS. Huỳnh Thái Hoàng, PGS.TS. Lê Mỹ Hà
Trường học Đại học Bách Khoa - ĐHQG TP. HCM
Chuyên ngành Kỹ thuật Điều khiển và Tự động hóa
Thể loại Luận văn thạc sĩ
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 86
Dung lượng 3,37 MB

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

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN ĐỀ TÀI (16)
    • 1.1 Lý do chọn đề tài (16)
    • 1.2 Những công trình nghiên cứu gần đây (16)
    • 1.3 Mục tiêu đề tài (19)
    • 1.4 Nhiệm vụ đề tài (19)
  • CHƯƠNG 2. CƠ SỞ LÝ THUYẾT (21)
    • 2.1 Nhận dạng đối tượng (21)
      • 2.1.1 Giới thiệu YOLOv7 (21)
      • 2.1.2 Kiến trúc YOLOv7 (21)
      • 2.1.3 Những trainable Bag-of-freebies của YOLOv7 (24)
      • 2.1.4 Training trên Google Colab (27)
    • 2.2 Thuật toán theo dõi Deep SORT (28)
      • 2.2.1 Giới thiệu Deep SORT (28)
      • 2.2.2 Liên kết dữ liệu trong Deep SORT (29)
      • 2.2.3 Quản lý vòng đời 1 track (32)
    • 2.3 Chuyển đổi góc nhìn của hai camera quan sát cùng một bề mặt phẳng (32)
      • 2.3.1 Chuyển đổi từ mặt phẳng cảnh sang điểm ảnh trên ảnh (33)
      • 2.3.2 Homography với hai camera và một bề mặt quan sát (34)
      • 2.3.3 Tìm ma trận homography giữa hai ảnh (35)
    • 2.4 Thêo dõi đối tượng trên nhiều camera sử dụng Homography (0)
  • CHƯƠNG 3. THỰC HIỆN HỆ THỐNG (42)
    • 3.1 Hệ thống giám sát kệ hàng (42)
    • 3.2 Xây dựng mô hình YOLOv7 phát hiện đối tượng (47)
      • 3.2.2 Thu thập data (47)
    • 3.3 Thêo dõi đối tượng (0)
    • 3.4 Quản lý kệ hàng và giỏ hàng (55)
  • CHƯƠNG 4. KẾT QUẢ (63)
    • 4.1 Mô hình phát hiện đối tượng (63)
      • 4.1.1 Đánh giá kết quả huấn luyện mô hình nhận dạng giỏ hàng và tay cầm sản phẩm (YOLOv7-tiny) (63)
      • 4.1.2 Đánh giá kết quả huấn luyện mô hình phát hiện sản phẩm (YOLOv7) (67)
    • 4.2 Phát hiện lấy và trả sản phẩm (72)
      • 4.2.1 Khảo sát tốc độ xử lý (72)
      • 4.2.2 Khảo sát tỷ lệ theo dõi và nhận dạng sản phẩm của hệ thống với một khách hàng (73)
      • 4.2.3 Khảo sát tỷ lệ theo dõi và nhận dạng sản phẩm của hệ thống với (75)
      • 4.2.4 Khảo sát tỷ lệ lấy và trả sản phẩm (78)
      • 4.2.5 Khảo sát tỷ lệ lấy và trả những sản phẩm được nhận dạng tốt (79)
  • CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (82)
    • 5.1 Những kết quả đạt được (82)
    • 5.2 Những hạn chế còn tồn tại (82)
    • 5.3 Hướng phát triển (83)
  • TÀI LIỆU THAM KHẢO (84)

Nội dung

CƠ SỞ LÝ THUYẾT

Nhận dạng đối tượng

YOLO - You Only Look Once là một trong những mô hình phát hiện vật hiệu quả nhất hiện nay, với nhiều phiên bản cải tiến đáng kể Từ YOLOv1 đến YOLOv3 do Josêph Rêdmon phát triển, các phiên bản tiếp theo như YOLOv4 của Alexey Bochkovskiy, YOLOv5 của Glenn Jocher, YOLOv6 của nhóm nghiên cứu Meituan, và YOLOv7 của Chien-Yao Wang cùng Alexey Bochkovskiy đã ra đời, mang đến những nâng cấp vượt trội trong khả năng phát hiện đối tượng.

YOLOv7 is a one-stage detector model that simultaneously performs bounding box detection and object classification, which contributes to its high speed and accuracy.

Kiến trúc của YOLO nói chung:

Hình 2.1 Kiến trúc của YOLO

Các khung hình ảnh đầu vào được trích xuất thông qua một backbone, sau đó được kết hợp và xử lý trong neck Cuối cùng, YOLO sẽ dự đoán các hộp giới hạn, lớp (class) và các đối tượng trong các hộp giới hạn đó.

Input layêr là thành phần đầu vào của hình ảnh, có thể được biểu diễn dưới dạng mảng hai chiều với ba kênh màu đỏ, xanh lá cây và xanh dương Ngoài ra, nó cũng có thể là đầu vào từ video, với mỗi khung hình của video được coi là một layêr riêng biệt.

Backbone là mạng nơron sâu chủ yếu gồm các lớp tích chập, có vai trò quan trọng trong việc trích xuất đặc trưng cần thiết cho phát hiện đối tượng Việc lựa chọn backbone phù hợp có thể nâng cao hiệu suất của hệ thống Các mạng nơron tiền huấn luyện như VGG-16, Imagênêt, Routinênêt và Rêsnêt50 thường được sử dụng để huấn luyện backbone Đặc biệt, YOLOv7 áp dụng các trọng số tiền huấn luyện như VoVNêt, CSPVONêt và ÊLAN, với backbone hoàn chỉnh bao gồm các ELAN Block và Transition block.

Hình 2.2 Cấu trúc Backbone của YOLOv7

Neck đóng vai trò quan trọng trong việc thu thập các feature map từ các giai đoạn khác nhau, thường bao gồm các phần bottom-up và top-down để tăng cường tính năng Để cải thiện hiệu suất, chúng ta sử dụng các phương pháp như FPN, RFB và PAN Neck của Yolov7 chủ yếu bao gồm các khối như SPPCSPC, PANet và RepConv.

Hình 2.3 Cấu trúc Neck của YOLOv7

Quá trình phát hiện đối tượng trong mô hình YOLOv7 diễn ra ở phần hêad, hay còn gọi là dênsê prêdiction, nhằm tách biệt nhiệm vụ định vị và phân loại đối tượng cho từng module Khi các module thực hiện dự đoán cho cả định vị và phân loại đồng thời, layer này chỉ xuất hiện ở một stage duy nhất sau các module phát hiện như YOLO, SSD, RPN trong quá trình tự phát hiện YOLOv7 có nhiều head, trong đó phần head chính được gọi là Lead Head, còn phần head hỗ trợ cho việc training các lớp giữa được gọi là Auxiliary Head.

Hình 2.4 Cấu trúc Head của YOLOv7

Sparse prediction giúp tối ưu hóa quy trình dự đoán bằng cách giảm thiểu số lượng dự đoán không cần thiết, từ đó tăng tốc độ tính toán và nâng cao độ chính xác của mô hình Thay vì dự đoán cho tất cả các ô vuông trên hình ảnh, mô hình chỉ tập trung vào một số lượng nhỏ các bounding box thông qua chỉ số thưa thớt (sparse index), được tính toán dựa trên các tiêu chí nhất định.

9 trên các giá trị của các nêuron trong mô hình, giúp xác định các vị trí quan trọng để dự đoán bounding box

2.1.3 Những trainable Bag-of-freebies của YOLOv7:

Bag-of-freebies (BoF) là một phương pháp tối ưu hóa hiệu suất cho mô hình mạng nơ-ron, sử dụng các kỹ thuật và công nghệ tiên tiến mà không làm tăng chi phí tính toán hay số lượng tham số Nhờ đó, BoF có khả năng cải thiện đáng kể độ chính xác của mô hình.

Mạng tổng hợp (aggregation networks) đóng vai trò quan trọng trong việc tăng tốc độ xử lý của mạng YOLO bằng cách tối ưu hóa hiệu suất các lớp tích chập trong backbone Trong YOLOv7, tác giả đã phát triển các mạng liên kết chéo "cross stage partial" nhằm tối ưu hóa mô hình và giảm thiểu bộ nhớ cần thiết để lưu trữ các lớp Việc giảm khoảng cách mà gradient phải lan truyền qua các lớp giúp mạng học hiệu quả hơn ở lớp cuối cùng Để tổng hợp các lớp cuối, tác giả đã áp dụng phương pháp tổng hợp E-ELAN trong phiên bản mở rộng của khối tính toán ELAN.

Hình 2.5 Cấu trúc của khối ELAN

Trong khối ELAN, gồm ba phần chính: Cross Stage Partial, Computation Block và PointWiseConv Kỹ thuật CSP được áp dụng để thêm một nhánh

"Cross stage partial" là một kỹ thuật quan trọng trong YOLOv4, giúp cải thiện khả năng nhận diện đặc trưng của đối tượng mà không làm mất đi các đặc trưng này sau khi trải qua nhiều lớp Dênsê Computation Block bao gồm các lớp Conv, được thiết kế để tạo ra các feature map mới thông qua các lớp Conv kích thước 3x3 Cuối cùng, các feature map được tổng hợp lại ở cuối bằng cách sử dụng toán tử concatenate trên chiều kênh.

Mô hình Compound Scaling được giới thiệu trong EfficientNet, cho phép tối ưu hóa ba khía cạnh quan trọng của mạng nơ-ron: chiều sâu, chiều rộng và độ phân giải của ảnh đầu vào Kỹ thuật này giúp khuếch đại kích thước của mô hình một cách hiệu quả, từ đó nâng cao hiệu suất tổng thể.

Re-parameterization là một kỹ thuật được sử dụng sau khi training để cải thiện mô hình Nó làm tăng thời gian training nhưng cải thiện kết quả inference

Trong mô hình infêrêncê đơn nhánh, kiến trúc này tối ưu hóa chi phí bộ nhớ bằng cách giải phóng ngay sau khi hoàn tất tính toán Đồng thời, kiến trúc đơn nhánh cũng mang lại sự linh hoạt hơn trong thiết kế mô hình.

Hình 2.6 Cấu trúc mô hình đơn nhánh

Mô hình training đa nhánh mang lại hiệu quả vượt trội so với mô hình đơn nhánh nhờ vào khả năng hội tụ dễ dàng hơn và tăng cường việc học các đặc trưng Bên cạnh đó, mô hình này giúp tránh hiện tượng vanishing gradient và không phụ thuộc vào bất kỳ lớp nào nhờ vào việc có nhiều đường độc lập.

Hình 2.7 Cấu trúc mô hình đa nhánh

Phương pháp này cho phép chuyển đổi tham số giữa các mô hình khác nhau, tận dụng ưu điểm của cả hai kiến trúc Trong quá trình huấn luyện, chúng ta áp dụng cấu trúc đa nhánh và thực hiện Re-paramêtêrization để nâng cao khả năng nhận diện.

Hình 2.8 Compund model scaling trong YOLOv7

Thuật toán theo dõi Deep SORT

Trong việc áp dụng học máy vào xử lý video, theo dõi nhiều đối tượng qua các khung hình là một thách thức quan trọng Các thuật toán hiện nay, như Dêêp SORT do Nicolai Wojke và Alex Bewley phát triển, đã cải thiện khả năng theo dõi đối tượng trong video, đặc biệt là trong các tình huống phức tạp như thay đổi góc nhìn và đối tượng chồng lấn Thuật toán này giải quyết hiệu quả vấn đề chuyển đổi số lượng ID cao và liên kết giữa các phát hiện và theo dõi sau khi nhận diện từ các khung hình Hơn nữa, nó cho phép sử dụng bất kỳ mô hình nhận diện đối tượng nào phù hợp.

Hình 2.11 Mô hình tổng quát thuật toán Deep SORT

Trong lớp thuật toán tracking-by-detection, việc theo dõi nhiều đối tượng đòi hỏi giải quyết hai yếu tố chính để đạt được hiệu suất tối ưu:

• Data Association: vấn đề liên kết dữ liệu, bao gồm các tiêu chí để liên kết một detection mới với các track đã được lưu trữ trước đó

Quản lý vòng đời của các track bao gồm quá trình từ khởi tạo, theo dõi đối tượng cho đến khi track bị ngừng hoạt động và xóa khỏi bộ nhớ.

Deep SORT giải quyết vấn đề liên kết dữ liệu thông qua thuật toán Hungary, sử dụng khoảng cách giữa detection và track trong không gian vector Phương pháp này cũng dựa vào khoảng cách cosine giữa hai vector đặc trưng được trích xuất từ detection và track Nếu hai vector đặc trưng đến từ cùng một đối tượng, chúng sẽ có độ tương đồng cao hơn so với hai vector từ hai đối tượng khác nhau.

2.2.2 Liên kết dữ liệu trong Deep SORT

Bộ lọc Kalman là một công cụ hiệu quả để theo dõi và dự đoán vị trí của vật thể trong tương lai Khi một vật thể mới xuất hiện sau khi đã xác định bounding box, bộ lọc Kalman sẽ được sử dụng để dự đoán vị trí của nó Quá trình liên kết sau đó được thực hiện thông qua các hàm prêdict và updatê.

Mỗi track bao gồm 8 thành phần:

Tọa độ tâm của đối tượng, được xác định bởi tâm của bounding box, cùng với tỷ lệ khung hình γ và chiều cao h của bounding box, là những yếu tố quan trọng trong việc tính toán các vận tốc tương ứng.

Trong quá trình theo dõi mục tiêu, hai yếu tố quan trọng cần ước lượng là giá trị trung bình (Mean), cung cấp thông tin về vị trí và tốc độ của mục tiêu.

Bộ lọc Kalman sử dụng 8 vectơ chiều, với mỗi giá trị tốc độ khởi tạo bằng 0 Hiệp phương sai (Covariance) thể hiện độ bất định của trạng thái ước lượng, với ma trận 8x8 càng lớn thì độ bất định càng cao.

Bảng 2.1 Tóm tắt bộ lọc Kalman

Tính Kalman gain matrix K: Ước lượng giá trị x:

1 1 ˆ k ˆ k k ˆ k x =x − +K z −Hz − Ước lượng covariance của bộ lọc Kalman:

Thuật toán matching Hungary được áp dụng để giải quyết sự tương quan giữa trạng thái dự đoán và trạng thái đo được trong bộ lọc Kalman Thuật toán này sử dụng cặp trạng thái gồm trạng thái dự đoán do bộ lọc Kalman ước lượng và trạng thái đo được từ thiết bị phát hiện.

Chỉ số sử dụng để đạt được sự tương quan bao gồm thông tin chuyển động, được tính theo khoảng cách Mahalanobis, và đặc điểm ngoại hình, được tính theo khoảng cách cosin Cuối cùng, hai chỉ số này được kết hợp thông qua tổng trọng số tuyến tính.

MatchingHungary - khoảng cách Mahalanobis tương quan chuyển động:

Khoảng cách Mahalanobis, hay còn gọi là khoảng cách covariance, là một phương pháp hiệu quả để tính toán sự tương quan giữa hai tập mẫu chưa biết Phương pháp này giúp đo lường mức độ phù hợp của dự đoán và phát hiện.

Trong đó (yi,Si) là giá trị kỳ vọng và ma trận covariance của biến ngẫu nhiên track thứ i, và dj là giá trị của detection thứ j

Khoảng cách Mahalanobis không chỉ được sử dụng để đo lường khoảng cách giữa track và detection, mà còn giúp loại trừ các liên kết không chắc chắn thông qua việc thiết lập ngưỡng khoảng cách Mahalanobis t.

MatchingHungary - khoảng cách Mahalanobis tương quan đặc điểm ngoại hình:

Deep SORT sử dụng một độ đo đặc trưng độc đáo để đảm bảo liên kết chính xác của đối tượng, ngay cả khi chúng biến mất và xuất hiện lại trong khung hình Đặc trưng này được học từ mạng ReID, cho phép mỗi lần phát hiện có những đặc điểm riêng biệt Mặc dù kiến trúc chỉ có 16 lớp, nhưng nó vẫn đạt hiệu suất vượt trội so với các kiến trúc hàng nghìn lớp khác, đồng thời thời gian đào tạo và suy diễn cũng nhanh hơn đáng kể.

Mỗi lần phát hiện, đặc trưng rj được trích xuất với giá trị ||rj ||=1 Đối với mỗi track, một danh sách dài khoảng 100 được sử dụng để lưu trữ các đặc trưng này.

100 track gần nhất: Khi đó, độ đo mới giữa track và dêtêction được tính bằng khoảng cách cosine:

Nếu khoảng cách cosin nhỏ hơn mức ngưỡng t, nó được coi là khớp

17 Để thiết lập tương quan, Deep SORT sử dụng tổng có trọng số để kết hợp hai chỉ số:

Có thể sử dụng trọng số để kiểm soát tác động của từng chỉ số đối với chỉ số tổng

Để cải thiện độ chính xác của liên kết, cần lưu ý rằng khi đối tượng biến mất trong thời gian dài, độ không chắc chắn của bộ lọc Kalman sẽ gia tăng đáng kể, dẫn đến phân tán xác suất dự đoán liên tục Nếu không cập nhật dự đoán, phương sai của phân phối chuẩn sẽ tăng lên, khiến giá trị khoảng cách Mahalanobis giữa các điểm xa và gần giá trị kỳ vọng trở nên tương đương.

Chiến lược đối sánh theo tầng thực hiện việc lấy từng track từ các frame trước đó, nhằm xây dựng ma trận chi phí và giải quyết bài toán phân công theo từng tầng.

2.2.3 Quản lý vòng đời 1 track

Deep SORT sử dụng một biến trạng thái có ba giá trị (tentative, confirmed, dêlêtêd) để quản lý vòng đời của một track:

• Ban đầu, track sẽ được gán trạng thái têntativê để thăm dò

• Nếu track duy trì được trong ít nhất 3 frame tiếp theo, trạng thái sẽ chuyển sang confirmed

• Các track có trạng thái confirmed sẽ được duy trì trong 30 frame tiếp theo ngay cả khi mất dấu

• Nếu track bị mất dấu trước khi đạt được 3 frame, trạng thái sẽ chuyển sang deleted và track sẽ bị xóa khỏi trình theo dõi.

Chuyển đổi góc nhìn của hai camera quan sát cùng một bề mặt phẳng

2.3.1 Chuyển đổi từ mặt phẳng cảnh sang điểm ảnh trên ảnh

Giả sử có một bề mặt phẳng trong thế giới thực, chẳng hạn như bức tường hoặc mặt đất, và chúng ta quan sát bề mặt này thông qua một máy ảnh sử dụng ma trận chiếu P.

Bề mặt phẳng 2D cho phép định hệ tọa độ (s, t) cho các điểm nằm trong không gian 3D Vị trí của các điểm này có thể được biểu diễn bằng tọa độ camera XYZ Để chuyển đổi từ hệ tọa độ (s, t) sang tọa độ camera XYZ, ta nhân vector (s, t, 1) với một ma trận 4x3.

    Điểm ( ) x y , tương ứng với một điểm ( ) s t , trên mặt phẳng của cảnh thu được bằng cách:

Hai ánh xạ này cùng định nghĩa một ma trận 3 × 3 H ánh xạ ( s t , ,1 ) đến ( wx wy w , , ) trong không gian ảnh

Ma trận H được gọi là ma trận homography Đảo ngược của phép ánh xạ này là:

Hình 2.12 Minh hoạ cho phép biến đổi homography 2.3.2 Homography với hai camera và một bề mặt quan sát

Hai camera quan sát một bề mặt và do đó có hệ tọa độ XYZ khác nhau Chúng ta có hai phép ánh xạ tuyến tính H1 và H2, được xác định bởi hai máy ảnh Mỗi máy ảnh định nghĩa một phép ánh xạ tuyến tính với dạng cụ thể.

Hình 2.13 Minh hoạ hai camera và một bề mặt quan sát

2.3.3 Tìm ma trận homography giữa hai ảnh

Giả sử chúng ta có N cặp điểm tương ứng ( x y i , i )và ( x y i , i ) giữa hai hình ảnh, gần như có mối quan hệ với một homography H không xác định

Sử dụng N điểm, để tìm ma trận H ta có thể viết lại công thức:

Ma trận H có thể được xác định thông qua nhiều điểm trên bảng cờ vua, một công cụ phổ biến trong lý thuyết và thực hành thị giác máy tính Hình học của bảng cờ vua rất thích hợp cho việc phát hiện và xử lý các thuật toán trong lĩnh vực này.

Hình 2.14 Thực hiện phép biến đổi homography bằng chessboard

Kết quả thực hiện chuyển đổi:

Hình 2.15 cho thấy ba góc nhìn khác nhau: bên trái là hình ảnh quan sát từ camera bên trái, ở giữa là góc nhìn tham chiếu của kệ hàng mà chúng ta muốn chuyển đổi, và bên phải là hình ảnh từ camera bên phải.

Sau khi thực hiện chuyển đổi homography về góc nhìn tham chiếu ta được kết quả:

Hình 2.16 Kết quả camera trái và phải sau khi được chuyển đổi về mặt phẳng tham chiếu kệ hàng

Hình 2.17 minh họa ba góc nhìn khác nhau: bên trái là hình ảnh từ camera bên trái, ở giữa là góc nhìn tham chiếu của giỏ hàng mà người dùng mong muốn chuyển đổi, và bên phải là hình ảnh từ camera bên phải.

Sau khi thực hiện chuyển đổi homography về góc nhìn tham chiếu ta được kết quả:

Hình 2.18 Kết quả camera trái và phải sau khi được chuyển đổi về mặt phẳng tham chiếu giỏ hàng

2.4 Theo dõi đối tượ ng trên nhi ề u camera s ử d ụ ng Homography

Trong luận văn này, chúng tôi nghiên cứu các máy quay trùng nhau, ghi lại cùng một cảnh từ các góc nhìn khác nhau Môi trường bao gồm hai camera quay một cảnh chung với một hoặc hai khách hàng trong khung hình Đối tượng cần theo dõi là tay của khách hàng đang cầm sản phẩm và giỏ hàng Để liên kết các track tương ứng với mỗi đối tượng được nhận diện ở từng camera, tôi đã quyết định sử dụng phương pháp Homography.

Hình 2.19 minh họa sơ đồ theo dõi toàn cục thông qua homography Ảnh từ camera được xử lý bởi mô hình YOLOv7 để xác định thông tin về các đối tượng trong khung hình Kết quả này được đưa vào mô hình DeepSORT để gán ID cục bộ cho từng đối tượng và duy trì ID đó ngay cả khi đối tượng biến mất trong một vài khung hình Cuối cùng, thông tin theo dõi từ hai camera sẽ được liên kết bằng homography khi các đối tượng nằm trong mặt phẳng tham chiếu, nhằm tạo ra ID toàn cục.

Mỗi camera sẽ có một bộ theo dõi với các track ID được đánh dấu bằng số độc nhất, giúp dễ dàng liên kết giữa các camera khác nhau Sau khi nhận diện, các bounding box của đối tượng sẽ được chuyển đổi từ góc nhìn nghiêng sang góc nhìn thẳng vuông góc với mặt phẳng tham chiếu.

Hình 2.20 Các bounding box của đối tượng ở mỗi camera được chuyển đổi homography về mặt phẳng tham chiếu

Các track hiện tại bao gồm thông tin về bounding box đã được chuyển đổi sang cùng góc nhìn tham chiếu và ID Để liên kết ID giữa các camera, tôi sử dụng phương pháp xác định khu vực chồng lấn lớn nhất giữa các bounding box của đối tượng ở mỗi camera được chuyển đổi homography về mặt phẳng tham chiếu Đầu tiên, tôi xây dựng danh sách các bounding box đã chuyển đổi homography để đại diện cho vị trí của các đối tượng từ khung ảnh bên trái và bên phải Tôi tạo ma trận chồng lấn để biểu diễn sự chồng lấn giữa các đối tượng trong hai danh sách từ hai khung ảnh.

Tiếp theo, tiến hành xử lý ma trận chồng lấn bằng cách xác định các khu vực chồng lấn lớn nhất và gán các đối tượng từ khung ảnh bên trái với các đối tượng tương ứng từ khung ảnh bên phải Quá trình này sẽ tiếp tục cho đến khi không còn khu vực chồng lấn nào lớn hơn.

Hàm trả về left_to_right và right_to_left, thể hiện mối liên hệ giữa các đối tượng trong khung ảnh bên trái và khung ảnh bên phải, cũng như ngược lại.

Bảng 2.2 Ví dụ về tìm ánh xạ của các track ID của mỗi camera

Kết quả cho thấy ID 1001 ở camera bên trái tương ứng với ID 1002 ở camera bên phải, ID 1004 tương ứng với ID 1003, và ID 1005 tương ứng với ID 1006 Do đó, ta có kết quả left_to_right là {{1001: 1002}, {1004: 1003}, {1005: 1006}} và right_to_left là {{1002: 1001}, {1003: 1004}, {1006: 1005}}.

Sau khi ánh xạ các đối tượng từ camera trái sang camera phải, tôi sử dụng thuật toán SIFT để trích xuất các đặc trưng từ bounding box trong ánh xạ nhằm đảm bảo tính chính xác và tránh chồng chéo giữa các đối tượng khác nhau Nếu không có sự tương đồng đáng kể giữa các đặc trưng, tôi sẽ tiến hành xóa ánh xạ đó.

Chiến lược gán ID toàn cục là phương pháp quản lý các track thông qua việc sử dụng các tập hợp không chồng chéo, trong đó mỗi phần tử đại diện cho một ID cục bộ thuộc về một tập hợp cụ thể Track toàn cục được hình thành từ các ID cục bộ của các camera và một phần tử đại diện cho track toàn cục đó Tôi đánh dấu các ID của các track cục bộ để dễ dàng quản lý và nhận diện.

ID độc nhất và đều lớn hơn 1000, còn các phần tử đại diện của track toàn cục sẽ bắt đầu từ 0

Thêo dõi đối tượng trên nhiều camera sử dụng Homography

THỰC HIỆN HỆ THỐNG

Hệ thống giám sát kệ hàng

Sơ đồ của hệ thống:

Hình 3.1 Sơ đồ hệ thống

Chương trình sẽ xử lý từng luồng riêng biệt từ mỗi camera, giúp nhận diện và theo dõi đối tượng qua các khối xử lý Ảnh đầu vào sẽ được phân tích để phát hiện đối tượng và gán ID cục bộ Sau khi theo dõi, kết quả sẽ được chuyển qua khối quản lý kệ hàng và giỏ hàng, cho phép theo dõi sản phẩm được đặt vào hoặc lấy ra Cuối cùng, sản phẩm sẽ được liên kết giữa hai camera thông qua ID toàn cục.

Trong hệ thống nhận dạng và theo dõi, đối tượng chính bao gồm giỏ hàng, tay cầm sản phẩm và sản phẩm trên kệ Mô hình YOLOv7 được chọn để nhận diện sản phẩm trên kệ nhờ khả năng nhận dạng đa dạng và độ chính xác cao Đối với giỏ hàng và tay cầm sản phẩm, mô hình YOLOv7-tiny được sử dụng do chỉ có hai loại với đặc điểm nhận dạng khác biệt Quá trình nhận dạng cung cấp thông tin như tọa độ bounding box, loại đối tượng và độ tin cậy, sau đó truyền tải những phát hiện này cho mô hình.

DêêpSORT cho phép theo dõi 28 đối tượng, mỗi đối tượng được gán một ID duy nhất và ID này được duy trì qua các khung hình Nhờ vào phương pháp này, tôi có thể quản lý hiệu quả các đối tượng trong từng khung hình của camera bằng các ID cục bộ.

❖ Khối quản lý kệ hàng:

Khối này có chức năng theo dõi việc đặt và lấy sản phẩm từ kệ, sử dụng thông tin về tay cầm sản phẩm và danh sách sản phẩm có sẵn Nó lưu trữ dữ liệu nhận dạng sản phẩm, bao gồm tọa độ bounding box, loại sản phẩm, độ tin cậy, ID và hình ảnh theo thời gian Bằng cách phát hiện sự xuất hiện hoặc biến mất của tay cầm, khối này xác định sản phẩm mà khách hàng đang tương tác với kệ.

Nhận diện sản phẩm được lấy ra khỏi kệ hàng thông qua việc so sánh vị trí của tay khách hàng cầm vật với các bounding box của sản phẩm đã biến mất sau khi mua sắm Quá trình này bao gồm ba giai đoạn: a Trước khi lấy sản phẩm, b Khi đang lấy sản phẩm, và c Sau khi sản phẩm đã được lấy.

Hình 3.2 Quá trình lấy sản phẩm trên kệ hàng

Để nhận diện sản phẩm trên kệ hàng, chúng ta cần so sánh vị trí biến mất của tay khách hàng đang cầm sản phẩm với các bounding box xuất hiện sau khi quá trình mua sắm kết thúc Giai đoạn này được minh họa rõ ràng trong hình bên dưới.

29 a Trước khi đặt vào b Trả sản phẩm c Sau khi đặt vào

Quá trình đặt sản phẩm vào kệ hàng liên quan đến việc quản lý thông tin về sản phẩm thông qua ID cục bộ của tay cầm Những thông tin này bao gồm việc sản phẩm được đặt vào hoặc lấy ra khỏi kệ, giúp theo dõi và kiểm soát hàng hóa hiệu quả.

❖ Khối quản lý giỏ hàng:

Hệ thống sẽ theo dõi và ghi nhận các sản phẩm được thêm vào hoặc lấy ra khỏi giỏ bằng cách nhận diện tay cầm sản phẩm trong khung hình Thông tin về loại sản phẩm và trạng thái (được đặt vào hay lấy ra) sẽ được lưu trữ cùng với ID tương ứng của giỏ và tay cầm sản phẩm.

❖ Khối theo dõi toàn cục:

Khối theo dõi toàn cục trong hệ thống giúp liên kết các đối tượng trùng nhau giữa các camera Bằng phương pháp homography, tôi phát hiện diện tích chồng chéo của các đối tượng trên mặt phẳng kệ hàng và giỏ hàng, cho phép ánh xạ đối tượng giữa các camera và gán ID toàn cục cho mỗi ID cục bộ Điều này giúp liên kết tay cầm sản phẩm và giỏ hàng trên các camera khác nhau, cung cấp dữ liệu quan trọng cho quản lý kệ hàng và giỏ hàng.

❖ Bố trí kệ và camera thực tế:

Hình 3.4 Kệ hàng sử dụng trong luận văn

Hình 3.5 Giỏ hàng được sử dụng trong luận văn

Hình 3.6 Bố trí camera trong luận văn a Góc nhìn camera bên trái b Góc nhìn camera bên phải

Hình 3.7 Ảnh quan sát từ hai camera

Trong luận văn tôi sử dụng camera rapoo c260, hai camera này được đặt trên cao ở hai góc chéo nhau và cùng nhìn vào một cảnh

Cấu hình máy tính được sử dụng trong luận văn: GPU là NVIDIA RTX 3060Ti và CPU là Intel® Core™ i5-12600K

Xây dựng mô hình YOLOv7 phát hiện đối tượng

3.2.1 Mô hình tổng quát Để xây dựng mô hình YOLOv7 nhận diện sản phẩm tôi triển khai qua hai giai đoạn:

Giai đoạn đầu tiên trong quá trình huấn luyện mô hình nhận diện bao gồm việc chụp ảnh sản phẩm từ nhiều góc độ khác nhau Sau đó, dữ liệu này sẽ được làm giàu để tăng cường chất lượng và độ chính xác, trước khi tiến hành đào tạo mô hình.

• Giai đoạn 2: Triển khai mô hình đã được huấn luyện Điều chỉnh hoặc tiến hành lại giai đoạn 1 nếu mô hình nhận diện không đạt yêu cầu

Hình 3.8 Mô hình phát hiện sản phẩm 3.2.2 Thu thập data

Trong bài viết này, tôi đã chọn mô hình YOLOv7-tiny để phân loại tay cầm vật và giỏ hàng, đồng thời sử dụng mô hình YOLOv7 để phân loại 19 loại sản phẩm khác nhau.

Các sản phẩm khảo sát bao gồm:

Bảng 3.1 Danh sách loại sản phẩm nhận dạng bằng YOLOv7

Bảng 3.2 Danh sách loại sản phẩm nhận dạng bằng YOLOv7-tiny

0 Tay có cầm sản phẩm

❖ Tập dữ liệu sản phẩm: Ứng với mỗi class sản phẩm tiến hành chụp ảnh với các góc độ, các mặt khác nhau và background khác nhau

Hình 3.9 Một số hình chụp sản phẩm nhận dạng bằng YOLOv7

Trong quá trình lấy mẫu cho 19 lớp, chúng tôi đã thu thập tổng cộng 1201 bức ảnh Sau khi chọn ra 50 bức ảnh ngẫu nhiên từ tập dữ liệu để kiểm tra sau khi huấn luyện mô hình, số lượng bức ảnh còn lại là 1151.

❖ Tập dữ liệu tay cầm sản phẩm và giỏ hàng:

Tôi chụp ảnh tay cầm sản phẩm và giỏ hàng từ nhiều góc độ và khu vực khác nhau Đối với tay cầm sản phẩm, tôi thực hiện chụp toàn bộ sản phẩm và đồng thời lấy những bức ảnh có nền là tay cầm nhưng không có sản phẩm, cũng như tay cầm không có sản phẩm.

Hình 3.10 Một số hình chụp sản phẩm nhận dạng bằng YOLOv7-tiny

Trong quá trình lấy mẫu cho 2 lớp, chúng tôi đã thu thập tổng cộng 16,381 bức ảnh Sau khi chọn ra 381 bức ảnh ngẫu nhiên để kiểm tra sau khi huấn luyện mô hình, chúng tôi còn lại 16,000 bức ảnh Số lượng ảnh lớn như vậy là do tay phải cầm nhiều loại sản phẩm khác nhau, và mỗi bức ảnh chỉ chứa một đến hai đối tượng.

Ta tiến hành gán nhãn cho các bức ảnh còn lại bằng phần mềm labelimg

Hình 3.11 Gán nhãn bằng phần mềm labelimg

Kết quả sau khi thực hiện gán nhãn ta được các file.txt có chứa thông tin của từng sản phẩm có trong ảnh

Hình 3.12 File ảnh và file.txt sau khi được gán nhãn

Mỗi file này có thông số của 1 vêctơ có kích thước 1x5:

Hình 3.13 Thông số được lưu trong file.txt

Chia tập training và validation:

Chúng tôi đã chia tập dữ liệu thu thập được theo tỷ lệ 80/20, với 80% ảnh dành cho tập training và 20% cho tập validation cho mỗi lớp Cụ thể, tập training của dữ liệu sản phẩm bao gồm tổng cộng 921 ảnh, trong khi tập validation có 230 ảnh Đối với dữ liệu tay cầm vật và giỏ hàng, tập training chứa 12,800 ảnh, và tập validation có 3,200 ảnh.

Sử dụng wêbsitê roboflow.com để tiến hành augmentation cho tập training:

Các phương pháp augmêntation được sử dụng:

Bảng 3.3 Các phương pháp augmentation sử dụng

STT Các phương pháp augmentation được sử dụng

2 Shear (làm méo ảnh thay đổi góc nhận hình lon nước): +15% / -

15% cho cả chiều dọc và chiều ngang

4 Saturation (độ bão hòa màu): +25% / -25%

Thực hiện các phương pháp augmentaion và làm giàu gấp đôi ngẫu nhiên cho tập training, dữ liệu sản phẩm bao gồm 921x242 ảnh cho tập training và 230 ảnh cho tập validation Đối với dữ liệu tay cầm vật và giỏ hàng, có 12800x2%600 ảnh cho tập training và 3200 ảnh cho tập validation.

Các file cần cho huấn luyện bao gồm:

• test.zip: đây là tập cũng chứa data và labêl dùng để kiểm tra mô hình trong quá trình training

• data.zip: đây là tập cũng chứa data và labêl dùng để huấn luyện mô hình trong quá trình training

Hình 3.15 Các file cần cho việc huấn luyện

Tải mã nguồn mở YOLOv7 về thư mục:

!git clone https://github.com/augmentedstartups/yolov7.git

Tạo file mydataset.yaml file chứa thông số dữ liệu huấn luyện:

!echo 'train: /mydrive/yolov7/data/train' >> data/mydataset.yaml

!echo 'val: /mydrive/yolov7/data/valid' >> data/mydataset.yaml

!echo 'test: /mydrive/yolov7/data/valid' >> data/mydataset.yaml

# !echo 'nc: 2' >> data/mydataset.yaml

# !echo "names: ['can','ro']" >> data/mydataset.yaml

!echo 'nc: 19' >> data/mydataset.yaml

!echo "names: ['247', '7up', 'aqua', 'banhmi', 'c2', 'coca', 'iceplus', 'laukinh', 'mirinda', 'nhadam', 'nuoccam', 'olong', 'redbull', 'revieve', 'saigon', 'stingchai', 'stinglon', 'tigerbac', 'tigernau']" >> data/mydataset.yaml

Giải nén 2 file data và test:

Tải initialweights: weights đã được khởi tạo yolov7

!wget https://github.com/WongKinYiu/yolov7/releases/download /v0.1/yolov7.pt

!python train.py workers 8 batch 16 cfg cfg/training/yolov7- tiny.yaml epochs 20 data data/mydataset.yaml weights pretrain/yolov7-tiny.pt device 0

Hình 3.16 Quá trình huấn luyện

3.3 Theo dõi đối tượ ng

Sau khi nhận diện đối tượng bằng mạng YOLOv7, chúng ta sử dụng mô hình DeepSORT để theo dõi các đối tượng trong khung hình Mô hình này phát hiện và gán ID cho từng đối tượng, đảm bảo rằng các ID này không thay đổi qua các khung ảnh khác nhau.

Mô hình này nâng cao khả năng nhận diện tất cả các đối tượng, đảm bảo rằng ID luôn được gán cho một đối tượng ngay cả khi bị che khuất một phần hoặc toàn bộ Nó cũng hạn chế việc thay đổi ID khi đối tượng ra khỏi khung hình và sau đó xuất hiện trở lại, đồng thời giảm thiểu hiện tượng gán nhầm ID khi các đối tượng có quỹ đạo chuyển động chồng chéo lên nhau.

Hình 3.17 Kết quả nhận diện và theo dõi sản phẩm của YOLOv7 và DeepSORT

Trong quá trình xử lý hình ảnh từ camera, tôi triển khai hai bộ theo dõi DeepSORT: một bộ theo dõi sản phẩm trên kệ và một bộ theo dõi tay khách hàng cầm sản phẩm và giỏ hàng Để thuận tiện trong việc liên kết ID giữa các camera, tôi gán cho từng đối tượng những ID cục bộ riêng biệt Thông qua các ID và dữ liệu từ các track này, tôi sẽ thực hiện liên kết giữa hai camera để tạo ra ID toàn cục tương ứng.

3.4 Qu ả n lý k ệ hàng và gi ỏ hàng

Trong luận văn, tôi giám sát kệ hàng qua từng camera riêng biệt, bao gồm phát hiện sản phẩm, theo dõi và quản lý kệ hàng Sử dụng mô hình YOLOv7, quá trình phát hiện đối tượng diễn ra nhanh chóng và chính xác, cho phép xác định các vật phẩm trên kệ hàng, giỏ hàng và tay cầm sản phẩm Sau khi xác định, tôi áp dụng thuật toán DeepSORT để theo dõi và cập nhật vị trí của các đối tượng theo thời gian Cuối cùng, luận văn tập trung vào việc quản lý kệ hàng và giỏ hàng dựa trên các ID đã được đánh dấu.

Hình 3.18 Sơ đồ quản lý ở mỗi kệ hàng ở mỗi camera

Quản lý kệ hàng bao gồm hai quá trình: theo dõi sản phẩm trên kệ hàng và quá trình phát hiện khách hàng lấy hoặc trả sản phẩm

Quá trình theo dõi sản phẩm trên kệ hàng diễn ra khi không có khách hàng tương tác, nhằm ghi nhận thông tin về các sản phẩm có mặt trên kệ theo thời gian.

Quá trình phát hiện khách hàng lấy hoặc trả sản phẩm diễn ra khi tay khách hàng chạm vào kệ Nếu tay khách hàng rời khỏi kệ, hệ thống sẽ kiểm tra sản phẩm bị lấy Ngược lại, nếu tay khách hàng quay lại kệ, hệ thống sẽ xác định sản phẩm được trả lại Thông tin sản phẩm cùng với ID cục bộ của tay khách hàng sẽ được lưu trữ để quản lý hiệu quả.

Phát hiện khách hàng cầm sản phẩm:

Tôi áp dụng mô hình YOLOv7-tiny để phát hiện tay của khách hàng và xác định xem họ có đang cầm sản phẩm hay không Tiếp theo, tôi sử dụng DêêpSORT để theo dõi đối tượng, ghi lại thông tin về vị trí và hướng di chuyển của tay cầm sản phẩm theo thời gian Đồng thời, hệ thống cũng lưu trữ vị trí bounding box của tay cầm sản phẩm khi chúng bắt đầu xuất hiện.

42 thông tin ở các camêra để gán ID toàn cục cho những ID cục bộ của tay có cầm sản phẩm ở mỗi camera

Để phát hiện hành động của khách hàng khi đặt hoặc lấy sản phẩm ra khỏi kệ, tôi thiết lập các đường thẳng xác định cho mỗi tầng kệ hàng Khi tay khách hàng chạm vào đường thẳng và có hướng ra ngoài, tôi ghi lại thông tin bao gồm ID, bounding box của tay và trạng thái lấy sản phẩm vào danh sách "check_shelf" Ngược lại, nếu tay chạm vào đường thẳng và hướng vào trong, thông tin sẽ được lưu vào danh sách "check_shelf" với trạng thái đặt sản phẩm vào kệ Để xác định việc chạm vào đường thẳng, tôi sử dụng tích vô hướng để kiểm tra vị trí tương đối của các điểm trong không gian, nếu hai điểm ở thời điểm t và t -1 nằm ở hai bên đường thẳng kệ hàng thì được coi là đã chạm.

Quản lý kệ hàng và giỏ hàng

Trong luận văn, tôi thực hiện giám sát kệ hàng qua từng camera với quá trình phát hiện sản phẩm, theo dõi và quản lý kệ hàng Sử dụng mô hình YOLOv7, tôi phát hiện và xác định vị trí các đối tượng trong ảnh một cách nhanh chóng và chính xác, cho phép nhận diện các vật phẩm trên kệ hàng, giỏ hàng và tay cầm sản phẩm Sau khi xác định các đối tượng, tôi áp dụng thuật toán DeepSORT để theo dõi và cập nhật vị trí của chúng theo thời gian Cuối cùng, luận văn tập trung vào việc quản lý kệ hàng và giỏ hàng dựa trên các ID đã được đánh dấu.

Hình 3.18 Sơ đồ quản lý ở mỗi kệ hàng ở mỗi camera

Quản lý kệ hàng bao gồm hai quá trình: theo dõi sản phẩm trên kệ hàng và quá trình phát hiện khách hàng lấy hoặc trả sản phẩm

Quá trình theo dõi sản phẩm trên kệ hàng diễn ra khi không có khách hàng tương tác, nhằm ghi lại thông tin về các sản phẩm có mặt trên kệ theo thời gian.

Quá trình phát hiện khách hàng lấy hoặc trả sản phẩm diễn ra khi có tay khách hàng trên kệ Khi tay khách hàng rời khỏi kệ, hệ thống sẽ kiểm tra sản phẩm bị lấy, còn khi tay khách hàng vào kệ, hệ thống sẽ kiểm tra sản phẩm được trả lại Thông tin sản phẩm cùng với ID cục bộ của tay khách hàng sẽ được lưu lại.

Phát hiện khách hàng cầm sản phẩm:

Tôi áp dụng mô hình YOLOv7-tiny để phát hiện tay của khách hàng và xác định xem họ có đang cầm sản phẩm hay không Sau đó, tôi sử dụng DêêpSORT để theo dõi đối tượng, ghi lại thông tin về vị trí và hướng di chuyển của tay cầm sản phẩm theo thời gian Thông tin này bao gồm vị trí bounding box của tay cầm sản phẩm khi bắt đầu xuất hiện, giúp liên kết các dữ liệu theo dõi một cách hiệu quả.

42 thông tin ở các camêra để gán ID toàn cục cho những ID cục bộ của tay có cầm sản phẩm ở mỗi camera

Để phát hiện hành động của khách hàng khi đặt hoặc lấy sản phẩm khỏi kệ, tôi thiết lập các đường thẳng xác định cho mỗi tầng kệ hàng Khi tay khách hàng chạm vào đường thẳng và di chuyển ra ngoài, tôi ghi lại thông tin bao gồm ID, bounding box và trạng thái lấy sản phẩm vào danh sách "check_shelf" Ngược lại, nếu tay khách hàng chạm vào đường thẳng và di chuyển vào trong kệ, thông tin bounding box sẽ biến mất, nhưng ID và trạng thái đặt sản phẩm vào kệ sẽ được lưu lại Để xác định việc chạm vào đường thẳng, tôi sử dụng tích vô hướng để kiểm tra vị trí tương đối của các điểm trong không gian, nếu hai điểm tại thời điểm t và t-1 nằm ở hai bên đường thẳng, thì được coi là đã chạm vào.

Trong hệ thống của tôi, tôi áp dụng mô hình YOLOv7 để phát hiện sản phẩm và sử dụng DeepSORT để theo dõi chúng trên từng camera Thông tin theo dõi bao gồm ID sản phẩm, bounding box và hình ảnh theo dõi của các đối tượng được lưu trữ Quá trình theo dõi sản phẩm trên kệ chỉ diễn ra khi không có tay khách hàng xuất hiện trong khu vực kệ hàng.

Danh sách “check_shelf” lưu trữ thông tin về ID sản phẩm, bounding box vị trí tay khách hàng khi thực hiện thao tác lấy hoặc trả sản phẩm, cùng với trạng thái của quá trình này Khi kệ hàng không có sản phẩm và không có tay khách hàng, hệ thống sẽ tiến hành kiểm tra.

Hệ thống “check_shelf” giúp xác định chính xác sản phẩm đã được lấy ra hoặc đặt vào kệ Khi trạng thái trong danh sách "check_shelf" là lấy hàng, hệ thống sẽ kiểm tra các ID sản phẩm đã biến mất bằng cách so sánh danh sách sản phẩm trên kệ trước và sau khi có tay khách hàng Tiếp theo, hệ thống sẽ đối chiếu thông tin bounding box của những ID đã biến mất với bounding box tay khách hàng để xác định sản phẩm đã được lấy ra.

Chồng lấn giữa hai bounding box lớn nhất và khoảng cách giữa chúng nhỏ nhất Sản phẩm được lưu với ID toàn cục của tay khách hàng đã lấy sản phẩm Nếu ID toàn cục đã có sản phẩm lưu ở camera khác, thì lưu sản phẩm có độ tin cậy cao nhất.

Hình 3.19 Kệ hàng trước khi có tay khách hàng lấy vật

Hình 3.20 Kệ hàng có tay khách hàng lấy vật

Hình 3.21 Kệ hàng sau khi có tay khách hàng lấy vật

Khi trạng thái trong danh sách "check_shelf" cho biết rằng có hàng trả, hệ thống sẽ kiểm tra các ID sản phẩm mới bằng cách so sánh danh sách sản phẩm trên kệ trước và sau khi phát hiện tay khách hàng Sau đó, hệ thống sẽ đối chiếu thông tin bounding box của các ID mới với bounding box tay trả hàng để xác định sản phẩm được trả Sản phẩm này sẽ có diện tích chồng lấn giữa hai bounding box lớn nhất và khoảng cách giữa hai bounding box nhỏ nhất Sản phẩm sẽ được lưu lại với ID toàn cục của tay khách hàng đã trả hàng Nếu ID toàn cục đã có sản phẩm được lưu ở camera khác, hệ thống sẽ lưu sản phẩm có độ tin cậy cao nhất.

Hình 3.22 Kệ hàng trước khi có tay khách hàng trả vật

Hình 3.23 Kệ hàng có tay khách hàng trả vật

Hình 3.24 Kệ hàng sau khi có tay khách hàng trả vật

Mỗi camera trong hệ thống sử dụng mô hình YOLOv7-tiny để phát hiện giỏ hàng, sau đó áp dụng DeepSORT để theo dõi các đối tượng Thông tin theo dõi bao gồm danh sách vị trí của giỏ hàng theo thời gian và ID cục bộ Đồng thời, thông tin từ hai camera được liên kết thông qua Homography để xác định ID toàn cục cho các ID cục bộ của giỏ hàng.

Khi tay khách hàng chạm vào bounding box và hướng vào giỏ hàng, sản phẩm có ID toàn cục sẽ được thêm vào giỏ hàng từ kệ hàng.

Khi khách hàng cầm vật và di chuyển ra khỏi giỏ hàng (chạm vào bounding box), hệ thống sẽ tự động loại bỏ những sản phẩm đã được trả về kệ hàng theo ID toàn cục của tay khách hàng.

Hình 3.26 Sản phẩm được quản lý ở mỗi giỏ hàng

KẾT QUẢ

Mô hình phát hiện đối tượng

4.1.1 Đánh giá kết quả huấn luyện mô hình nhận dạng giỏ hàng và tay cầm sản phẩm (YOLOv7-tiny)

Sau khi hoàn thành huấn luyện mô hình YOLOv7-tiny, tôi đã tiến hành đánh giá kết quả bằng cách tính toán chỉ số mAP trên tập validation Tập test được sử dụng trong quá trình huấn luyện và quan sát thực nghiệm cũng được xem xét.

Bảng 4.1 Kết quả sau khi huấn luyện nhận diện tay người có cầm sản phẩm và giỏ hàng với tập validation

Loại precision recall mAP@.5 mAP@.5:.95

Giá trị mAP@.5 đạt 0.988 cho thấy mô hình của tôi có độ chính xác cao trong việc phát hiện đối tượng với ngưỡng IOU 0.5 Đồng thời, giá trị mAP@.5:.95 là 0.782, cho thấy mô hình ổn định trong việc phát hiện đối tượng trong khoảng từ ngưỡng IOU 0.5 Mặc dù giá trị mAP@.5:.95 chỉ đạt 0.782 do sử dụng mô hình YOLOv7-tiny, nhưng việc nhận diện chỉ có hai loại đối tượng là giỏ hàng và tay người cầm sản phẩm với nhiều kiểu cầm khác nhau vẫn mang lại những thách thức đáng kể.

49 sản phẩm khác nhau và đối tượng này rất dễ nhầm lẫn với tay không cầm sản phẩm nên chỉ số mAP@.5:.95 ở đối tượng này chỉ là 0.669

Hình 4.1 Đồ thị quá trình huấn luyện nhận diện tay người có cầm sản phẩm và giỏ hàng

Box loss và val box giảm dần, cho thấy sự hội tụ của mô hình Precision đã tăng từ 0.9 lên 0.98, trong khi Recall cũng tăng từ 0.85 lên 0.975 Các đồ thị minh chứng cho sự cải thiện và hội tụ của mô hình.

Hình 4.2 Kết quả confusion matrix nhận diện tay người có cầm sản phẩm và giỏ hàng

Trong ma trận phân tích, tỷ lệ nhận diện sai ở lớp tay cầm sản phẩm là 0.89, trong khi lớp giỏ hàng chỉ có 0.11 Sự khác biệt này xuất phát từ việc lớp giỏ hàng sở hữu nhiều đặc điểm nhận dạng hơn.

Sản phẩm có tay cầm được thiết kế phức tạp và khó nhận diện hơn, nhưng vẫn giữ được đặc điểm gần gũi với tay khi không cầm Ma trận nhận diện giúp xác định chính xác mô hình tay cầm sản phẩm và giỏ hàng.

Bảng 4.2 Kết quả nhận diện tay người có cầm sản phẩm và giỏ hàng với tập test

Loại precision recall mAP@.5 mAP@.5:.95

Chỉ số mAP@.5:.95 ở lớp tay cầm sản phẩm đạt 0.669, cho thấy độ nhận diện của lớp này còn khó khăn Tuy nhiên, chỉ số mAP@.5 của mô hình là 0.987 và mAP@.5:.95 đạt 0.771, cho thấy hiệu suất của mô hình khá ổn để sử dụng.

Hình 4.3 Kết quả nhận diện tay người có cầm sản phẩm, tay không cầm sản phẩm và giỏ hàng

Hình 4.4 Kết quả nhận diện hai tay người có cầm sản phẩm

Hình 4.5 Kết quả nhận diện nhiều tay có cầm sản phẩm và giỏ hàng

Hình 4.6 Kết quả nhận diện nhiều tay có cầm sản phẩm và nhiều giỏ hàng 4.1.2 Đánh giá kết quả huấn luyện mô hình phát hiện sản phẩm (YOLOv7)

Sau khi hoàn thành huấn luyện mô hình YOLOv7 để nhận dạng sản phẩm, tôi tiến hành đánh giá kết quả bằng cách tính toán chỉ số mAP trên tập validation và tập test đã sử dụng trong quá trình huấn luyện, đồng thời thực hiện quan sát thực nghiệm.

Bảng 4.3 Kết quả sau khi huấn luyện sản phẩm có trên kệ với tập validation

Loại Precision Recall mAP@.5 mAP@.5:.95

53 mirinda 0.989 1 0.996 0.819 nhadam 0.999 0.995 0.996 0.837 nuoccam 0.998 1 0.997 0.874 olong 0.996 1 0.996 0.816 redbull 0.993 0.995 0.996 0.786 revieve 0.989 0.985 0.992 0.804 saigon 0.992 0.988 0.995 0.829 stingchai 0.983 0.993 0.996 0.848 stinglon 0.999 1 0.997 0.848 tigerbac 0.957 1 0.994 0.804 tigernau 0.995 0.982 0.994 0.803

Giá trị mAP@.5 đạt 0.995 và mAP@.5:.95 là 0.826, cho thấy mô hình có độ chính xác và ổn định cao trong việc phát hiện đối tượng với ngưỡng IOU lớn Các lớp đều có giá trị mAP@.5:.95 xung quanh 0.8, tuy nhiên một số lớp như laukinh và redbull có giá trị thấp do đối tượng thiếu đặc điểm nổi bật, dễ nhầm lẫn với các lớp khác và có kích thước nhỏ.

Hình 4.7 Đồ thị quá trình huấn luyện nhận diện tay người có cầm sản phẩm và giỏ hàng

Box loss và val box giảm dần và hội tụ Precision và rêcall tăng dần và hội tụ Các đồ thị chứng tỏ mô hình có hội tụ

Hình 4.8 Kết quả confusion matrix nhận diện sản phẩm có trên kệ

Nhìn vào ma trận này, mô hình có hiệu suất tốt trong việc phân loại các đối tượng

Bảng 4.4 Kết quả sau khi huấn luyện sản phẩm có trên kệ với tập test

Loại Precision Recall mAP@.5 mAP@.5:.95

C2 1 1 0.996 0.867 coca 0.987 0.987 0.993 0.86 iceplus 0.999 0.993 0.996 0.826 laukinh 1 0.991 0.996 0.797 mirinda 1 0.991 0.996 0.834 nhadam 0.999 1 0.996 0.829 nuoccam 0.999 1 0.996 0.872 olong 0.995 1 0.996 0.815 redbull 0.993 1 0.995 0.787 revieve 0.988 0.98 0.996 0.886 saigon 0.999 1 0.996 0.838 stingchai 1 0.996 0.996 0.834 stinglon 1 1 0.996 0.854 tigerbac 0.988 1 0.98 0.819 tigernau 1 0.989 0.996 0.807

Tương tự với tập validation, chỉ số mAP@.5 của mô hình là 0.994 và mAP@.5:.95 là 0.827 chỉ số này khá ổn để dùng

Hình 4.9 Kết quả nhận diện các sản phẩm có trên kệ hàng 1

Hình 4.10 Kết quả nhận diện các sản phẩm có trên kệ hàng 2

Hình 4.11 Kết quả nhận diện các sản phẩm có trên kệ hàng 3

Phát hiện lấy và trả sản phẩm

4.2.1 Khảo sát tốc độ xử lý

Xác định tốc thực thi trung bình của hệ thống qua nhiều lần đo

- Thực hiện động tác cầm sản phẩm từ kệ hàng và đặt vào giỏ hàng, và ngược lại lấy sản phẩm từ giỏ hàng và đặt vào kệ hàng

- Tốc độ xử lý mỗi khung hình được đo ở mỗi lượt khảo sát

- Tiến hành lặp lại quá trình đo nhiều lần Sau đó, tính trung bình tốc độ thực hiện trong tất cả các lần đo

Khảo sát thời gian và tốc độ thực thi của hệ thống:

Bảng 4.5 Thời gian và tốc độ thực thi của hệ thống

Lượt khảo sát Thời gian xử lý một khung ảnh

Số khung ảnh được xử lý trong một giây (fps/s)

Nhận xét: tốc độ xử lý trung bình của hệ thống là 15.77(fps) Với tốc độ này có thể xử lý gần với thời gian thực

4.2.2 Khảo sát tỷ lệ theo dõi và nhận dạng sản phẩm của hệ thống với một khách hàng

Thực nghiệm nhằm đánh giá khả năng theo dõi tay cầm sản phẩm trong suốt quá trình sử dụng và khả năng nhận diện sản phẩm khi tương tác với một người.

Tôi thực hiện việc lấy sản phẩm từ kệ hàng và cho vào giỏ hàng, đồng thời cũng lấy sản phẩm từ giỏ hàng để đặt lại vào kệ hàng với nhiều loại sản phẩm khác nhau.

- Tiến hành nhiều lần và thống kê lại số lượt theo dõi không bị mất dấu đối tượng, nhận diện đúng loại sản phẩm

- Cuối cùng, tôi tính toán trung bình kết quả thu được từ các lần thực hiện để có kết quả cuối cùng

Hình 4.12 Trước khi lấy sản phẩm

Hình 4.13 Sau khi lấy sản phẩm bỏ vào giỏ hàng

Bảng 4.6 Kết quả khảo sát với việc lấy trả hàng với một người

Loại Số lượt nhận dạng

Số lượt nhận dạng đúng

Tỷ lệ nhận diện đúng (%)

Tổng số lượt theo dõi

Số lượt theo dõi không mất dấu

Tỷ lệ theo dõi không mất dấu (%)

7up 15 14 93.3333 16 15 93.75 c2 20 18 90 21 20 95.2380 iceplus 19 18 94.7368 22 19 86.3636 laukinh 15 14 93.3333 18 15 83.3333 mirinda 20 18 90 22 19 86.3636 nhadam 19 19 100 22 18 81.8181 nuoccam 16 16 100 20 16 80 olong 19 18 94.7368 21 19 90.4761 redbull 22 22 100 25 22 88 revieve 24 21 87.5 25 22 88 saigon 20 16 80 21 20 95.2380

Mô hình nhận diện đạt tỷ lệ chính xác 92.31%, cho thấy khả năng nhận diện đối tượng tốt Tuy nhiên, một số sản phẩm dễ bị nhầm lẫn như chai 247 và c2 màu vàng với chai Redbull, hay Sting lon với Sting chai, dẫn đến độ chính xác chỉ dưới 85% cho những sản phẩm này Tỷ lệ theo dõi không bị mất dấu đạt 86.87%, nhưng các đối tượng nhỏ hoặc đặt ở kệ trệt thường khó theo dõi và có thể bị biến mất trong quá trình nhận diện Tổng thể, phương án này cho phép theo dõi tay của khách hàng, từ đó đếm được số lượng sản phẩm được lấy vào và bỏ ra khỏi giỏ.

4.2.3 Khảo sát tỷ lệ theo dõi và nhận dạng sản phẩm của hệ thống với hai khách hàng

Thực nghiệm nhằm đánh giá khả năng theo dõi tay cầm sản phẩm trong suốt quá trình sử dụng và khả năng nhận diện sản phẩm được thực hiện với sự tham gia của hai người.

Khảo sát được thực hiện nhằm nghiên cứu hành vi lấy sản phẩm từ kệ hàng và cho vào giỏ hàng, cũng như việc trả lại sản phẩm từ giỏ hàng về kệ Các sản phẩm được lựa chọn ngẫu nhiên, và hai người có thể cùng lúc hoặc lần lượt thực hiện các thao tác này.

- Tiến hành nhiều lần và thống kê lại số lượt thêo dõi được đối tượng, nhận diện đúng loại sản phẩm

- Cuối cùng, tôi tính toán trung bình kết quả thu được từ các lần thực hiện để có kết quả cuối cùng

Hình 4.14 Hai người lấy sản phẩm cùng thời điểm

Hình 4.15 Hai người trả sản phẩm liên tiếp

Bảng 4.7 Kết quả khảo sát với việc lấy trả hàng với hai người

Lượt Số lượt nhận dạng

Số lượt nhận dạng đúng

Tỷ lệ nhận diện đúng (%)

Tổng số lượt theo dõi

Số lượt theo dõi không mất dấu

Tỷ lệ theo dõi không bị mất dấu (%)

Nhận xét: tỷ lệ nhận dạng đúng đạt được 96.313% chứng tỏ mô hình nhận diện được chính xác đối tượng Đồng thời có những trường hợp sản phẩm

Số 63 nằm ở tầng cuối với kích thước nhỏ trên ảnh, dẫn đến việc nhận diện sai loại Tỷ lệ theo dõi không bị mất dấu đạt 86.752% Một số trường hợp không theo dõi đúng do tay của khách hàng chồng chéo hoặc theo dõi ở kệ hàng trệt khi lượt lấy vào và lấy ra nhanh khiến hệ thống không đáp ứng kịp Tỷ lệ khảo sát một người gần giống với khảo sát hai người.

4.2.4 Khảo sát tỷ lệ lấy và trả sản phẩm:

Tôi đã tiến hành một thí nghiệm nhằm đánh giá khả năng phát hiện sản phẩm khi chúng được đặt vào và lấy ra khỏi giỏ hàng Việc phát hiện chính xác được xác định khi theo dõi tay cầm sản phẩm không bị mất dấu và xác định đúng loại sản phẩm được lấy ra.

Tôi thực hiện việc lấy sản phẩm từ kệ hàng và cho vào giỏ hàng, sau đó lại lấy sản phẩm từ giỏ hàng và đặt trở lại kệ hàng với nhiều loại sản phẩm khác nhau.

- Tiến hành nhiều lần và thống kê lại số lượt phát hiện sản phẩm được bỏ vào và lấy ra khỏi giò hàng

- Cuối cùng, tôi tính toán trung bình kết quả thu được từ các lần thực hiện để có kết quả cuối cùng

Bảng 4.8 Kết quả khảo sát với việc lấy trả hàng với hai người

Loại Tổng số lượt lấy

Số lượt phát hiện lấy đúng

Số lượt phát hiện trả đúng

7up 8 8 100 7 6 85.7142 c2 10 9 90 11 9 81.8181 iceplus 11 10 90.9090 11 8 72.7272 laukinh 9 7 77.7777 9 7 77.7777 mirinda 15 11 73.3333 15 13 86.6666 nhadam 16 14 87.5 16 14 87.5

64 nuoccam 10 7 70 10 9 90 olong 10 9 90 11 9 81.8181 redbull 16 14 87.5 16 14 87.5 revieve 8 7 87.5 6 5 83.3333 saigon 11 8 72.7272 10 8 80 stingchai 11 11 100 11 8 72.7272 stinglon 11 9 81.8181 11 10 90.9090 tigerbac 9 9 100 9 7 77.7777 tigernau 8 7 87.5 8 7 87.5

Tỷ lệ phát hiện lấy sản phẩm đúng đạt 85.1428%, trong khi tỷ lệ phát hiện trả lại đúng chỉ đạt 83.1395% Hệ thống gặp khó khăn trong việc nhận diện khi tay cầm sản phẩm di chuyển nhanh hoặc ở những góc khuất của camera, dẫn đến sai sót Tỷ lệ phát hiện khi lấy sản phẩm từ kệ cao hơn do vị trí dễ quan sát và thông tin sản phẩm rõ ràng Ngược lại, khi đưa sản phẩm từ giỏ hàng lên kệ, vị trí tay cầm thấp làm giảm khả năng nhận diện chính xác, dẫn đến tỷ lệ phát hiện trả lại sản phẩm thấp hơn.

4.2.5 Khảo sát tỷ lệ lấy và trả những sản phẩm được nhận dạng tốt

Tôi tiến hành thí nghiệm để đánh giá khả năng phát hiện sản phẩm khi được đặt vào và lấy ra khỏi giỏ hàng Sự phát hiện được coi là chính xác khi theo dõi tay cầm sản phẩm không bị mất dấu và xác định đúng loại sản phẩm Trong nghiên cứu này, tôi lựa chọn những đối tượng có khả năng nhận diện tốt để đánh giá ảnh hưởng của việc nhận dạng đến độ chính xác của hệ thống.

Tôi thực hiện quy trình lấy sản phẩm từ kệ hàng và cho vào giỏ hàng, đồng thời cũng có thể đưa sản phẩm từ giỏ hàng trở lại kệ hàng Các loại sản phẩm này được nhận diện một cách rõ ràng và dễ dàng.

- Tiến hành nhiều lần và thống kê lại số lượt theo dõi không bị mất dấu đối tượng, nhận diện đúng loại sản phẩm

- Cuối cùng, tôi tính toán trung bình kết quả thu được từ các lần thực hiện để có kết quả cuối cùng

Bảng 4.9 Kết quả khảo sát với việc lấy trả hàng với một người và sản phẩm tốt

Loại Số lượt nhận dạng

Số lượt nhận dạng đúng

Tỷ lệ nhận diện đúng (%)

Tổng số lượt theo dõi

Số lượt theo dõi không mất dấu

Tỷ lệ theo dõi không mất dấu (%)

Tỷ lệ phát hiện lấy trả sản phẩm đúng (%)

7up 18 17 94.4444 20 18 90 85 c2 19 19 100 20 19 95 95 iceplus 23 21 91.3043 24 23 95.8333 87.5 mirinda 20 19 95 22 20 90.9090 86.3636 olong 19 18 94.7368 21 19 90.4761 85.7142 redbull 20 20 100 22 20 90.90901 90.9090 revieve 18 17 94.4444 20 18 90 85 saigon 20 19 95 22 19 86.3636 86.3636 tigerbac 16 16 100 19 16 84.2105 84.2105

Tỷ lệ phát hiện sản phẩm trả lại đúng đạt 87.3684%, cao hơn so với các khảo sát trước Sự cải thiện này nhờ vào khả năng nhận diện tốt hơn, giúp theo dõi các đối tượng trong khung hình hiệu quả hơn Hệ thống không bỏ sót thông tin về sản phẩm được đặt vào hoặc trả lại kệ, từ đó nâng cao độ chính xác trong việc phát hiện sản phẩm Tuy nhiên, việc sử dụng bộ nhận diện YOLOv7-tiny và số lượng sản phẩm khảo sát lớn đã hạn chế khả năng học hỏi của mô hình đối với tất cả các đối tượng.

Ngày đăng: 25/10/2023, 22:13

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] N. James and N. T. Antony, "Automated Checkout for Stores: A Computer Vision Approach," Revista Gestóo Inovaỗóo e Tecnologias, vol. 11, pp. 1830-1841, July 2021 Sách, tạp chí
Tiêu đề: Automated Checkout for Stores: A Computer Vision Approach
Tác giả: N. James, N. T. Antony
Nhà XB: Revista Gestóo Inovaỗóo e Tecnologias
Năm: 2021
[3] W. Kirti, W. Bharati and N. Vidhya, "Just Walk-Out Technology and its Challenges:A," Proceedings of the International Conference on Inventive Research in Computing Applications (ICIRCA), pp. 254-257, 2018 Sách, tạp chí
Tiêu đề: Proceedings of the International Conference on Inventive Research in Computing Applications (ICIRCA)
Tác giả: W. Kirti, W. Bharati, N. Vidhya
Năm: 2018
[4] A. Bochkovskiy, C.-Y. Wang and H.-Y. M. Liao, "YOLOv4: Optimal Speed and Accuracy of Object Detection," ArXiv Preprint arXiv:2004.10934, 23 Apr 2020 Sách, tạp chí
Tiêu đề: YOLOv4: Optimal Speed and Accuracy of Object Detection
Tác giả: A. Bochkovskiy, C.-Y. Wang, H.-Y. M. Liao
Năm: 2020
[10] Tzutalin, "LabelImg," [Online]. Available: https://github.com/tzutalin/labelImg, 2015 Sách, tạp chí
Tiêu đề: LabelImg
Tác giả: Tzutalin
Năm: 2015
[5] A. Bochkovskiy, C.-Y. Wang and H.-Y. M. Liao, "Real-time object detection method based on improved YOLOv4-tiny," ArXiv Preprint arXiv:2011.04244, 2022 Link
[8] Y. Hou, L. Zheng and S. Gould, "Multiview Detection with Feature Perspective Transformation," ArXiv Preprint arXiv:2007.07247, 2020 Link
[9] M. Al-Sa’d, S. Kiranyaz and I. Ahmad, "A Social Distancê Êstimation and Crowd Monitoring System forSurveillance Cameras," Sensors 2022, 22(2), 418; https://doi.org/10.3390/s22020418, 2022 Link
[2] R. Shetty and P. Darshana, "Smart Shopping Cart using Machine Vision along with Machine," International Research Journal of Engineering and Technology (IRJET), vol. 08, no. 10, pp. 1731-1735, Oct 2021 Khác
[6] K. Shailender, S. Pranav, Vishal and P. Nitin, "Object tracking and counting in a zone using YOLOv4, DeepSORT and TensorFlow,"Proceedings of the International Conference on Artificial Intelligence and Smart Systems (ICAIS), pp. 1017-1022, 2021 Khác
[7] N. Wojke, A. Bewley and D. Paulus, "Simple online and realtime tracking with a deep association metric," 2017 IEEE International Conference on Image Processing (ICIP), pp. 3645-3649, 21017 Khác

HÌNH ẢNH LIÊN QUAN

Hình 2.3 Cấu trúc Neck của YOLOv7 - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 2.3 Cấu trúc Neck của YOLOv7 (Trang 23)
Hình 3.6 Bố trí camera trong luận văn - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 3.6 Bố trí camera trong luận văn (Trang 46)
Hình 3.11 Gán nhãn bằng phần mềm labelimg - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 3.11 Gán nhãn bằng phần mềm labelimg (Trang 50)
Hình 3.17 Kết quả nhận diện và theo dõi sản phẩm của YOLOv7 và DeepSORT - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 3.17 Kết quả nhận diện và theo dõi sản phẩm của YOLOv7 và DeepSORT (Trang 55)
Hình 3.20 Kệ hàng có tay khách hàng lấy vật - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 3.20 Kệ hàng có tay khách hàng lấy vật (Trang 58)
Hình 3.21 Kệ hàng sau khi có tay khách hàng lấy vật - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 3.21 Kệ hàng sau khi có tay khách hàng lấy vật (Trang 59)
Hình 3.26 Sản phẩm được quản lý ở mỗi giỏ hàng - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 3.26 Sản phẩm được quản lý ở mỗi giỏ hàng (Trang 62)
Hình 4.4 Kết quả nhận diện hai tay người có cầm sản phẩm - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 4.4 Kết quả nhận diện hai tay người có cầm sản phẩm (Trang 66)
Hình 4.5 Kết quả nhận diện nhiều tay có cầm sản phẩm và giỏ hàng - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 4.5 Kết quả nhận diện nhiều tay có cầm sản phẩm và giỏ hàng (Trang 66)
Hình 4.9 Kết quả nhận diện các sản phẩm có trên kệ hàng 1 - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 4.9 Kết quả nhận diện các sản phẩm có trên kệ hàng 1 (Trang 71)
Hình 4.11 Kết quả nhận diện các sản phẩm có trên kệ hàng 3 - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 4.11 Kết quả nhận diện các sản phẩm có trên kệ hàng 3 (Trang 72)
Hình 4.12 Trước khi lấy sản phẩm - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 4.12 Trước khi lấy sản phẩm (Trang 73)
Hình 4.15 Hai người trả sản phẩm liên tiếp - Ứng dụng thị giác máy tính trong tính tiền tự động trong cửa hàng
Hình 4.15 Hai người trả sản phẩm liên tiếp (Trang 76)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w