Tài liệu: Ứng dụng công nghệ ai trong bài toán xác định thời

Tài liệu nghiên cứu Ứng dụng công nghệ ai trong bài toán xác định thời gian chờ của khách hàng tại, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên

Trường đại học

Trường Đại học Bách Khoa

Chuyên ngành

Điện – Điện Tử

Người đăng

Ẩn danh

Thể loại

Luận văn tốt nghiệp

2019

119
0
0

Phí lưu trữ

35 Point

Tóm tắt

I. Ứng Dụng Công Nghệ AI Trong Bài Toán Xác Định Thời Gian Chờ Khách Hàng

Công nghệ AI đang trở thành một giải pháp hiệu quả cho các điểm bán lẻ hiện đại. Xác định thời gian chờ khách hàng là một thách thức quan trọng mà các nhà bán lẻ phải đối mặt hàng ngày. Thay thế các phương pháp thủ công tốn kém và phức tạp, hệ thống AI giúp tự động hóa quá trình theo dõi khách hàng. Luận văn này trình bày một hệ thống thông minh kết hợp mô hình YOLOthuật toán DeepSORT để nhận diện và theo dõi khách hàng tại cửa hàng. Hệ thống có khả năng phân tích video theo thời gian thực, cung cấp dữ liệu chính xác về thời gian chờ mỗi khách. Điều này giúp cải thiện trải nghiệm dịch vụ và tối ưu hóa quy trình bán hàng.

1.1. Tầm Quan Trọng Của Việc Theo Dõi Thời Gian Chờ

Thời gian chờ là yếu tố quan trọng ảnh hưởng đến sự hài lòng khách hàng. Các cửa hàng bán lẻ cần hiểu rõ mô hình chờ đợi để tối ưu hóa nhân lực và quy trình. Công nghệ AI cho phép thu thập dữ liệu tự động, chính xác hơn so với phương pháp quan sát thủ công. Dữ liệu này giúp quản lý cửa hàng đưa ra quyết định kịp thời, tăng hiệu suất phục vụ.

1.2. Ưu Điểm Của Hệ Thống Tự Động

Hệ thống xác định thời gian chờ tự động giúp loại bỏ sai sót từ con người. Công nghệ computer vision cho phép nhận diện chính xác từng khách hàng và theo dõi liên tục. Điều này tiết kiệm chi phí nhân lực đáng kể. Hệ thống cung cấp báo cáo chi tiết về mô hình lưu lượng khách, hỗ trợ quản lý bán lẻ hiệu quả.

II. Mô Hình YOLO Và Nhận Diện Vật Thể Trong Video

YOLO (You Only Look Once) là một mô hình nhận diện vật thể tiên tiến dựa trên mạng nơron tích chập CNN. Mô hình này xử lý hình ảnh chỉ một lần để phát hiện tất cả các đối tượng, giúp tăng tốc độ xử lý. Trong bối cảnh bán lẻ, YOLO có thể nhận diện khách hàng với độ chính xác cao. Khung giới hạn được tạo ra để xác định vị trí chính xác của mỗi người. Mô hình CNN học các đặc trưng hình ảnh từ các lớp tích chập, giúp hệ thống phân biệt khách hàng với các vật thể khác. YOLO là nền tảng quan trọng cho bước tiếp theo là tracking.

2.1. Cấu Trúc Mô Hình YOLO

YOLO sử dụng kiến trúc mạng nơron sâu với nhiều lớp tích chập để trích xuất đặc trưng. Mô hình chia hình ảnh thành lưới và dự đoán bounding box cùng lớp đối tượng. Điều này giúp xác định vị trí khách hàng trong từng khung hình video nhanh chóng.

2.2. Huấn Luyện Mô Hình YOLO

Huấn luyện mô hình YOLO đòi hỏi tập dữ liệu lớn với hình ảnh người được gắn nhãn. Quá trình học tối ưu hóa các trọng số để tăng độ chính xác. Mô hình được huấn luyện có khả năng nhận diện khách hàng tại các điểm bán lẻ khác nhau.

III. Thuật Toán DeepSORT Cho Tracking Đối Tượng

DeepSORT là một thuật toán tracking kết hợp SORT (Simple Online and Realtime Tracking) với mô hình học sâu trích xuất đặc trưng. Thuật toán này sử dụng hai metric khoảng cách: khoảng cách Mahalanobiskhoảng cách cosine. Các metric này so sánh đặc trưng hình ảnh của đối tượng hiện tại với dữ liệu quá khứ để định danh cùng một khách hàng qua các khung hình. Thuật toán Hungarian được áp dụng để gán ID cho mỗi khách hàng theo cách tối ưu. DeepSORT giúp theo dõi liên tục từng khách từ lúc vào đến khi rời khỏi cửa hàng.

3.1. Nguyên Lý Hoạt Động Của DeepSORT

DeepSORT kết hợp dự đoán chuyển động với so sánh đặc trưng hình ảnh. Khoảng cách Mahalanobis đánh giá sự thay đổi vị trí của đối tượng. Khoảng cách cosine so sánh đặc trưng sâu để xác định danh tính. Phương pháp gán Hungarian tìm ra kết quả tối ưu cho quá trình định danh.

3.2. Ứng Dụng Trong Theo Dõi Khách Hàng

Tracking khách hàng bằng DeepSORT cung cấp quỹ đạo chuyển động chi tiết. Hệ thống có thể theo dõi cùng một khách qua nhiều khung hình liên tiếp. Điều này tạo cơ sở để tính toán thời gian chờ chính xác từ lúc khách xuất hiện đến khi rời đi.

IV. Tích Hợp Timer Và Tính Toán Thời Gian Chờ

Timer là thành phần quan trọng trong hệ thống xác định thời gian chờ. Bộ đếm thời gian được tích hợp để ghi lại thời điểm xuất hiện và biến mất của mỗi khách hàng. Thời gian chờ được tính bằng hiệu giữa thời gian rời khỏithời gian vào. Hệ thống kết hợp dữ liệu từ YOLO (vị trí) và DeepSORT (danh tính) để xác định chính xác mỗi khách. Python được sử dụng để lập trình timer, tích hợp với OpenCV để xử lý video. Kết quả cuối cùng cung cấp thống kê chi tiết về thời gian chờ mỗi khách tại cửa hàng.

4.1. Cơ Chế Hoạt Động Của Timer

Timer được kích hoạt khi YOLO phát hiện khách hàng mới. Mỗi khách được gán một ID duy nhất thông qua DeepSORT. Đếm thời gian liên tục cho đến khi khách rời khỏi vùng quan sát. Dữ liệu thời gian được lưu trữ để phân tích sau này.

4.2. Công Nghệ Hỗ Trợ Và Triển Khai

Python cùng thư viện AnacondaJupyter Lab được sử dụng để lập trình toàn bộ hệ thống. OpenCV giúp xử lý video và hiển thị kết quả. MXNet hỗ trợ huấn luyện mô hình học máy. Hệ thống chạy hiệu quả trên các thiết bị có GPU, tăng tốc độ xử lý.

18/12/2025

Trích đoạn nội dung tài liệu

chương 1 còn trình bày về việc ứng dụng các cơ sở lý thuyết trong dự án.1 Giới thiệu Trong học máy nói riêng và toán tối ưu nói chung, chúng ta thường xuyên phải tìm các giá trị lớn nhất hoặc nhỏ nhất của một hàm số. Nếu chỉ xét riêng các hàm khả vi liên tục, việc giải phương trình đạo hàm bằng không thường rất phức tạp hoặc có thể ra vô số nghiệm. Thay vào đó, người ta thường cố gắng tìm các điểm cực tiểu, và ở một mức độ nào đó, coi đó là một nghiệm cần tìm của bài toán. Các điểm cực tiểu là nghiệm của phương trình đạo hàm bằng không (ta vẫn đang giả sử rằng các hàm này liên tục và khả vi).

Nếu bằng một cách nào đó có thể tìm được toàn bộ (hữu hạn) các điểm cực tiểu, ta chỉ cần thay từng điểm cực tiểu đó vào hàm số rồi tìm điểm làm cho hàm có giá trị nhỏ nhất. Tuy nhiên, trong hầu hết các trường hợp, việc giải phương trình đạo hàm bằng không là bất khả thi. 4 Luận văn tốt nghiệp SVTH: Lê Tuấn Vũ Nguyên nhân có thể đến từ sự phức tạp của dạng của đạo hàm, từ việc các điểm dữ liệu có số chiều lớn, hoặc từ việc có quá nhiều điểm dữ liệu. Thực tế cho thấy, trong nhiều bài toán học máy, các nghiệm cực tiểu thường đã cho kết quả tốt, đặc biệt là trong mạng neuron.

Hướng tiếp cận phổ biến nhất để giải quyết các bài toán tối ưu là xuất phát từ một điểm được coi là gần với nghiệm của bài toán, sau đó dùng một phép toán lặp để tiến dần đến điểm cần tìm, tức đến khi đạo hàm gần với không. Gradient descent (GD) và các biến thể của nó là một trong những phương pháp được dùng nhiều nhất.1 mô tả sự biến thiên của hàm số ᵢ(ᵔ) =  (ᵔ − 1) − 2. Điểm màu xanh lục là một điểm cực tiểu (local minimum), và cũng là điểm làm cho hàm số đạt giá trị nhỏ nhất (global minimum). Global minimum là một trường hợp đặc biệt của local minimum.

Giả sử ta đang quan tâm đến một hàm số một biến có đạo hàm mọi nơi. Cùng ôn lại một vài điểm cơ bản:  Điểm cực tiểu ᵔ∗ của hàm số là điểm có đạo hàm ᵢ  (ᵔ∗ ) bằng không. Hơn thế nữa, trong lân cận của nó, đạo hàm của các điểm phía bên trái ᵔ∗ là không dương, đạo hàm của các điểm phía bên phải ᵔ∗ là không âm.  Đường tiếp tuyến với đồ thi hàm số đó tại một điểm bất kỳ có hệ số góc chính bằng đạo hàm của hàm số tại điểm đó.1, các điểm bên trái của điểm cực tiểu màu xanh lục có đạo hàm âm, các điểm bên phải có đạo hàm dương.

Và đối với hàm số này, càng xa về phía trái của điểm cực tiểu thì đạo hàm càng âm, càng xa về phía phải thì đạo hàm càng dương. 5 Luận văn tốt nghiệp SVTH: Lê Tuấn Vũ Hình 1. Khảo sát sự biến thiên của một đa thức bậc hai [1].2 Bài toán Gradient Descent cho hàm một biến Xét các hàm số một biến ᵢ: ℝ → ℝ. Quay trở lại Hình 1.1 và một vài quan sát đã nêu.

Giả sử ᵔ là điểm tìm được sau vòng lặp thứ t. Ta cần tìm một thuật toán để đưa ᵔ về càng gần ᵔ∗ càng tốt. Có hai quan sát sau đây:  Nếu đạo hàm của hàm số tại ᵔ là dương (ᵢ  (ᵔ )) > 0 thì ᵔ nằm về bên phải so với ᵔ∗ , và ngược lại. Để điểm tiếp theo ᵔ+ gần với ᵔ∗ hơn, chúng ta cần di chuyển ᵔ về phía bên trái, tức về phía âm.

Nói các khác, ta cần di chuyển ngược dấu với đạo hàm: ᵔ+ = ᵔ + ∆ (1.1) Trong đó ∆ là một đại lượng ngược dấu với đạo hàm ᵢ (ᵔ ).   ᵔ càng xa x* về phía bên phải thì ᵢ  (ᵔ ) càng lớn hơn 0 (và ngược lại). Vậy, lượng di chuyển ∆, một cách tự nhiên nhất, là tỉ lệ thuận với −ᵢ  (ᵔ ). Hai nhận xét phía trên cho chúng ta một cách cập nhật đơn giản là ᵔ+ = ᵔ − ᵱᵢ  (ᵔ ) (1.2) Trong đó ᵱ là một số dương được gọi là tốc độ học (learning rate).

Dấu trừ thể hiện việc chúng ta phải đi ngược với đạo hàm (Đây chính là lý do phương pháp này được gọi là gradient descent – descent nghĩa là đi ngược). Việc lựa chọn learning rate rất quan trọng trong các bài toán thực tế. Việc lựa chọn giá trị này phụ thuộc 6 Luận văn tốt nghiệp SVTH: Lê Tuấn Vũ vào từng bài toán cụ thể và đôi khi phải qua một vài thí nghiệm để chọn ra giá trị tốt nhất. Các quan sát đơn giản phía trên, mặc dù không phải đúng trong tất cả các trường hợp, là nền tảng cho rất nhiều phương pháp tối ưu.3 Bài toán Gradient Descent cho hàm nhiều biến Giả sử ta cần tìm giá trị nhỏ nhất cho hàm ᵢ(ᵲ) trong đó ᵲ là tập hợp các tham số cần tối ưu.

Đạo hàm của hàm số đó tại một điểm ᵲ bất kỳ được ký hiệu là ∇󰅧 ᵢ(ᵲ). Tương tự như hàm một biến, thuật toán GD cho hàm nhiều biến cũng bắt đầu bằng một điểm dự đoán ᵲ , sau đó, ở vòng lặp thứ t, quy tắc cập nhật là ᵲ+ = ᵲ − ᵱ∇󰅧 ᵢ(ᵲ ) (1.3) Hoặc viết dưới dạng đơn giản hơn: ᵲ ← ᵲ − ᵱ∇󰅧 ᵢ(ᵲ) (1.4 Stochastic gradi gradient ent descent 1.1 Batch gra gradient dient d descent escent Thuật toán GD được đề cập từ đầu chương tới hiện tại còn được gọi là batch GD. Batch ở đây được hiểu là tất cả, tức khi cập nhật các tham số ᵲ, chúng ta sử dụng tất cả các điểm dữ liệu x. Hạn chế của việc này là khi lượng cơ sở dữ liệu lớn, có thể tới hàng triệu, việc tính toán đạo hàm trên toàn bộ dữ liệu tại mỗi vòng lặp sẽ tốn rất nhiều thời gian.

Online learning là khi cơ sở dữ liệu được cập nhật liên tục, mỗi lần tăng thêm vài điểm dữ liệu mới, yêu cầu cập nhật mô hình mới. Kéo theo đó là mô hình cũng phải được thay đổi một chút để phù hợp với dữ liệu mới. Nếu làm theo batch GD, tức tính lại đạo hàm của hàm mất mát tại tất cả các điểm dữ liệu, độ phức tạp tính toán sẽ rất cao. Lúc đó, thuật toán có thể không còn mang tính “online” nữa do mất quá nhiều thời gian tính toán.

Một thuật toán đơn giản hơn, chấp nhận việc có sai số một chút nhưng lại lợi ích tính toán cao, thường được sử dụng có tên gọi là Stochastic Gradient Descent (SGD).2 Stochastic gradien gradientt descen descentt Trong SGD, tại một thời điểm (vòng lặp – iteration), ta chỉ tính đạo hàm của hàm mất mát dựa trên chỉ một điểm dữ liệu x rồi cập nhật ᵲ dựa trên đạo hàm 7 Luận văn tốt nghiệp SVTH: Lê Tuấn Vũ này. Chú ý rằng hàm mất mát thường được lấy trung bình trên mỗi điểm dữ liệu nên đạo hàm tại một điểm cũng được kỳ vọng là khá gần với đạo hàm của hàm mất mát trên mọi điểm dữ liệu. Sau khi duyệt qua tất cả các điểm dữ liệu, thuật toán lặp lại quá trình trên. Biến thể đơn giản này trên thực tế làm việc rất hiệu quả.

Mỗi lần duyệt một lượt qua tất cả các điểm trên toàn bộ dữ liệu được gọi là một epoch (số nhiều epoches). Với GD thông thường, mỗi epoch ứng với một lần cập nhật ᵲ. Với SGD, mỗi epoch ứng với N lần cập nhật ᵲ với N là số điểm dữ liệu. Nhìn vào một mặt, việc cập nhật từng điểm một như thế này có thể làm giảm đi tốc độ thực hiện một epoch.

Nhưng nhìn vào một mặt khác, với SGD, nghiệm có thể hội tụ sau vài epoch. Vì vậy, SGD phù hợp với các bài toán có lượng cơ sở dữ liệu lớn và các bài toán yêu cầu mô hình thay đổi liên tục như online learning. Với một mô hình đã được huấn luyện từ trước, khi có thêm dữ liệu, ta có thể chỉ cần chạy thêm một vài epoch nữa là đã có nghiệm hội tụ. Ví dụ về giá trị hàm mất mát sau mỗi iteration khi sử dụng mini-batch gradient descent.

Hàm mất mát dao động (fluctuate) sau mỗi lần cập nhật nhưng nhìn chung giảm dần và có xu hưóng hội tụ [1] Thứ ttự ự lựa chọn điểm dữ liệu Một điểm cần lưu ý đó là sau mỗi epoch, chúng ta cần xáo trộn (shuffle) thứ tự của các dữ liệu để đảm bảo tính ngẫu nhiên. Việc này cũng ảnh hưởng tới hiệu năng của SGD. Đây cũng chính là lý do thuật toán này có chứa từ stochastic ( ngẫu nhiên). 8 Luận văn tốt nghiệp SVTH: Lê Tuấn Vũ Một cách toán học, quy tắc cập nhật của SGD là ᵲ ← ᵲ − ᵱ∇󰅧 ᵌ(ᵲ; x , y ) (1.5) Trong đó ᵌ (ᵲ; x , y ) ≜ ᵌ (ᵲ) là hàm mất mát với chỉ một điểm dữ liệu thứ i.

Các thuật toán biến thể của GD như momentum hay NAG hoàn toàn có thể được áp dụng vào SGD.3 Mini-bat Mini-batch ch grad gradient ient des descent cent Khác với SGD, mini-batch sử dụng một số lượng k lớn hơn một (nhưng vẫn nhỏ hơn tổng số điểm dữ liệu N rất nhiều) để cập nhật ở mỗi iteration. Giống với SGD, mini-batch GD bắt đầu mỗi epoch bằng việc xáo trộn ngẫu nhiên dữ liệu rồi chia toàn bộ dữ liệu thành các mini-batch, mỗi mini-batch có k điểm dữ liệu (trừ mini-batch cuối có thể có ít hơn nếu N không chia hết cho k). Ở mỗi vòng lặp, thuật toán này lấy ra một mini-batch để tính toán đạo hàm rồi cập nhật. Một epoch cũng là khi thuật toán chạy hết dữ liệu một lượt.

Như vậy, một epoch bao gồm xấp xỉ ᵐ /ᵇ lần iteration. Mini-batch GD được sử dụng trong hầu hết các thuật toán học máy, đặc biệt là trong học sâu. Giá trị k được gọi là batch size (không phải mini-batch size) thường được chọn là khoảng từ vài chục đến vài trăm. Quy tắc cập nhật của mini-batch gradient descent là ᵲ ← ᵲ − ᵱ∇󰅧 ᵌ(ᵲ; x+ ; y+ ) (1.6) Sử dụng phương pháp này giúp giảm thiểu variance của những lần cập nhật tham số dẫn tới việc hội tụ ổn định hơn.

Mini-batch gradient descent là thuật toán tiêu biểu khi huấn luyện một mạng neuron và khái niệm SGD thường được dùng khi mini-batch được sử dụng.2 là ví dụ về giá trị của hàm mất mát của một bài toán khác phức tạp hơn mỗi khi cập nhật tham số d khi sử dụng mini-batch gradient descent.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ