MỞ ĐẦU 1. Lý do chọn đề tài Sự phát triển của Thương mại điện tử trong những năm gần đây đã hoàn toàn đảo lộn lĩnh vực bán lẻ và thay đổi vai trò cũng như chức năng của cửa hàng thực tế. Các cửa hàng truyền thống hiện phải đối mặt với sự cạnh tranh lớn hơn cũng như kỳ vọng của khách hang thay đổi nhanh chóng. Ngày càng có nhiều cửa hàng đã ứng dụng các công nghệ kỹ thuật số dé nhấn mạnh đến sự tiện lợi và tốc độ dé đáp ứng những kỳ vọng nay.
Công nghệ cửa hàng không thu ngân là tính năng trọng tâm của cuộc cách mạng bán lẻ lấy cảm hứng từ kỹ thuật số này. Xếp hàng chờ thanh toán dài luôn là một trong những điểm khó khăn nhất của hoạt động bán lẻ thực tế và người mua hàng ngày càng mat kiên nhẫn hơn về những xích mich tại cửa hàng. Nhận thức vấn đề thực tiễn này, nhóm em đã quyết định chọn đề tài “Nghiên cứu các kỹ thuật dựa trên thị giác máy tinh và máy học dé xây dựng ứng dung Just Walk Out Shopping” để nghiên cứu cho khóa luận và cũng là cơ hội để nhóm em áp dụng các kiến thức đã học ở trường. Mục đích nghiên cứu e Xây dựng thành công hệ thống dùng camera dé nhận diện hành động lấy, trả sản phẩm của khách hàng đồng thời ghi lại số lượng sản pham sau mỗi hành động.
e Xây dựng website dùng để kiểm tra đánh giá lại hệ thống trên. Đối tượng nghiên cứu e Hệ thống dành cho các cửa hàng không thu ngân sử dụng mô hình Just Walk Out. Phạm vi nghiên cứu e Nghiên cứu khái niệm, luồng hoạt động và các đặc điểm cơ bản của mô hình mua săm Just Walk Out. e _ Nghiên cứu các công nghệ và kỹ thuật cần thiết dé xây dựng một hệ thống mua sắm Just Walk Out với tính năng lấy trả hàng cho một người mua sắm duy nhất dùng một camera và cập nhật giỏ hàng lên một trang web trong thời gian thực.
14 Chương 2: KIÊN THỨC CƠ BẢN Chương 2: Kiến thức cơ bản này sẽ trình bày các kiến thức tổng quát về các kỹ thuật thị giác máy tính và máy học liên quan đến mô hình Just Walk Out. Ngoài ra, chương này cũng trình bày các kiến thức về công nghệ được sử dụng trong đồ án bao gồm kiến trúc phần mềm, kiến thức về ngôn ngữ lập trình liên quan đến phần Backend, Frontend và cơ sở dữ liệu cũng như các kiên thức liên quan. WebRTC WebRTC Hình 2.1: Logo của WebRTC WebRTC là viết tắt của Giao tiếp thời gian thực trên web. Day là một dự án nguồn mở cho phép giao tiếp ngang hàng trực tiếp trong trình duyệt web và ứng dụng di động thông qua các API JavaScript đơn giản.
WebRTC cho phép chia sẻ âm thanh, video và dữ liệu giữa các trình duyệt mà không cần plugin hoặc phần mềm của bên thứ ba khác. Các tính năng chính của WebRTC bao gồm: e_ Giao tiếp ngang hàng: WebRTC cho phép giao tiếp trực tiếp giữa các trình duyệt hoặc giữa trình duyệt và ứng dụng gốc mà không cần máy chủ trung gian (mặc dù máy chủ vẫn có thé được sử dụng dé báo hiệu và truyền tải NAT). e Am thanh và video thời gian thực: Nó cung cấp các API dé thu và truyền phát âm thanh và video trong thời gian thực, cho phép các ứng dụng như hội nghị video, gọi thoại và phát trực tiếp. 15 e Kénh dữ liệu: Ngoài âm thanh và video, WebRTC còn hỗ trợ các kênh dữ liệu ngang hàng cho phép trao đổi dữ liệu tùy ý giữa các thiết bị ngang hàng, khiến kênh này phù hợp dé chơi trò chơi nhiều người chơi, chia sẻ tệp và các ứng dụng sử dụng nhiều đữ liệu khác.
e_ Mã hóa: WebRTC kết hợp các tính năng bảo mật như DTLS (Bảo mật lớp truyền tải dữ liệu) và SRTP (Giao thức truyền tải thời gian thực an toàn) dé đảm bảo rằng thông tin liên lạc được mã hóa và bảo mật. e Kha năng tương thích đa nền tảng: WebRTC được hỗ trợ bởi các trình duyệt web chính bao gồm Google Chrome, Mozilla Firefox, Microsoft Edge và Opera, cũng như các nền tảng như Android và iOS, khiến nó có khả năng tương tác cao. e Tiêu chuẩn mở: Nó được xây dựng trên các tiêu chuẩn và API mở, được phát triển và duy trì bởi World Wide Web Consortium (W3C) và Lực lượng đặc nhiệm kỹ thuật Internet (IETF), đảm bảo tính minh bach và khả năng tương thích trong quá trình triển khai. WebRTC có nhiều ứng dụng trong nhiều ngành khác nhau, bao gồm: e Hội nghị truyền hình: Cho phép gọi video chất lượng cao trực tiếp trên trình duyệt web mà không cần phần mềm chuyên dụng.
e Voice Calling: Hỗ trợ các ứng dụng VoIP (Voice over IP) dé liên lạc thoại theo thời gian thực. e Phát trực tiếp: Cho phép các đài truyền hình truyền trực tiếp nội dung âm thanh và video đến người xem. e Hỗ trợ từ xa: Tạo điều kiện chia sẻ màn hình và các phiên duyệt cộng tác. e© IoT (Internet of Things): Hỗ trợ giao tiếp thời gian thực giữa các thiết bị trong ứng dụng IoT.
Nhìn chung, WebRTC đơn giản hóa việc phát triển các ứng dụng giao tiếp theo thời gian thực bằng cách cung cấp các giao thức và API được tiêu chuẩn hóa, biến nó thành một công cụ mạnh mẽ cho các nhà phát triển muốn kết hợp khả năng giao tiếp đa phương tiện vào ứng dụng web và di động của họ.2: Logo cua OpenCV OpenCV, viết tắt của Thư viện thị giác máy tính nguồn mở, là một thu viện phần mềm máy học và thị giác máy tính nguồn mở. Nó được thiết kế để cung cấp cơ sở hạ tầng chung cho các ứng dụng thị giác máy tính va day nhanh việc sử dụng nhận thức máy trong các sản phâm thương mại. Ban dau được phát triển bởi Intel, OpenCV hiện có một cộng đồng lớn và được OpenCV Foundation duy trì. Dưới đây là một số tính năng và cách sử dụng chính của OpenCV: e Xử lý hình ảnh: OpenCV cung cấp nhiều chức năng cho các tác vụ xử lý hình ảnh như lọc, chuyền đôi và trích xuất tinh năng.
e_ Thuật toán thị giác máy tính: Nó bao gồm việc triển khai các thuật toán thị giác máy tính khác nhau, bao gồm phát hiện đối tượng, nhận dạng khuôn mặt, ghép ảnh, tam nhìn âm thanh nổi và theo dõi chuyển động. e _ Tích hợp máy học: OpenCV tích hợp với các khung máy học như TensorFlow và PyTorch, cho phép áp dụng các mô hình máy học phức tạp vao dữ liệu trực quan. e Đa nền tang: Nó hỗ trợ nhiều ngôn ngữ lập trình (C++, Python, Java, v.) và nền tảng (Windows, Linux, macOS, Android, iOS), giúp nó linh hoạt cho các ứng dụng khác nhau. e Cộng đồng va Tài liệu: OpenCV có một cộng đồng người dùng và cộng tác viên rộng lớn, cung cấp tài liệu, hướng dẫn và mã ví dụ phong phú dé hỗ trợ các nhà phát triên.
17 e Ứng dụng thương mại: Nó được sử dụng rộng rãi trong các ngành như robot, ô tô, chăm sóc sức khỏe, giám sát và giải trí cho các nhiệm vụ từ lãi xe tự động đến thực tế tăng cường. Nhìn chung, OpenCV là bộ công cụ mạnh mẽ dành cho bat ky ai lam viéc voi dữ liệu trực quan và các ứng dụng thị giác máy tính, cung cấp cả thuật toán sẵn sàng sử dụng và tính linh hoạt đề tùy chỉnh và phát triển các giải pháp mới. Apache Kafka APACHE J ka ka ø Hình 2.3: Logo của Apache Kafka Apache Kafka là một nền tảng phát trực tuyến phân tán được sử dụng dé xây dựng các đường dẫn dữ liệu thời gian thực và các ứng dụng phát trực tuyến. Ban đầu nó được phát triển bởi LinkedIn và sau đó được cung cấp nguồn mở và duy trì bởi Quy phần mềm Apache.
Dưới đây là một số tính năng và khía cạnh chính của Apache Kafka: e _ Hệ thống nhắn tin phân tan: Kafka hoạt động như một hệ thống nhắn tin phân tán, nơi nhà sản xuất có thé xuất bản tin nhắn đến các chủ đề và người tiêu dùng có thé đăng ký chủ đề dé nhận những tin nhắn đó trong thời gian thực. 18 Khả năng mở rộng: Kafka có khả năng mở rộng cao do tính chất phân tán của nó. Nó cho phép mở rộng quy mô theo chiều ngang bằng cách thêm nhiều nhà môi giới (máy chủ) vào cụm Kafka. Khả năng chịu lỗi: Kafka cung cấp khả năng chịu lỗi bằng cách sao chép các phân vùng dữ liệu trên nhiều nhà môi giới.
Nếu bất kỳ nhà môi giới nào không thành công, dữ liệu vẫn có sẵn và hệ thống có thê tiếp tục hoạt động. Xử lý luồng: Kafka hỗ trợ xử lý luồng thông qua API Kafka Streams, cho phép các nhà phát triển xây dựng các ứng dụng chuyền đổi luồng dữ liệu đầu vào thành luồng đầu ra. Lưu giữ: Kafka lưu trữ các luồng bản ghi (tin nhắn) trong các chủ đề. Nó giữ lại các bản ghi này trong một khoảng thời gian có thể định cấu hình, giúp có thé phát lại hoặc xử lý lại dữ liệu.
Tích hợp: Nó tích hợp tốt với các dự án Apache khác như Apache Storm và Apache Hadoop, cũng như với các hệ thống bên ngoài khác nhau thông qua các trình kết nồi. Các trường hợp sử dung: Các trường hợp sử dụng phổ biến của Kafka bao gồm phân tích thời gian thực, tông hợp nhật ký, tìm nguồn cung ứng sự kiện và nhật ký cam kết cho các hệ thống phân tán. Tóm lại, Kafka được sử dụng rộng rãi trong các kiên trúc dữ liệu hiện đại nhờ khả năng xử lý hiệu qua các nguồn cấp dit liệu thông lượng cao, có khả năng chịu lỗi và dir liệu thời gian thực. Nó đã trở thành một thành phan quan trọng dé xây dựng các đường ống đữ liệu và ứng dụng phát trực tuyến có thể mở rộng, đáng tin cậy và theo thời gian thực.
Pytorch © PyTorch 19 Hình 2.4: Logo của PyTorch PyTorch là thư viện máy học mã nguồn mở được phát triển chủ yếu bởi phòng thí nghiệm Nghiên cứu AI (FAIR) của Facebook. Nó được biết đến với tính linh hoạt và dé sử dụng trong việc xây dựng các mô hình deep learning. PyTorch được sử dụng rộng rãi cho nhiều ứng dụng khác nhau bao gồm xử lý ngôn ngữ tự nhiên (NLP), thị giác máy tính và học tăng cường. Dưới đây là một số tính năng và khía cạnh chính của PyTorch: e Tính toán Tensor: Về cốt lõi, PyTorch cung cấp tính toán Tensor (tương tự như NumPy) với khả năng tăng tốc GPU mạnh mẽ thông qua CUDA, giúp nó phù hợp với các tác vụ tính toán hiệu năng cao.