o Thu thập dữ liệu, gắn nhãn và huấn luyện mô hình YOLOv8 để phát hiện người.o Triển khai thuật toán line-crossing kết hợp tracking để đếm người vào/ra.. o Tích hợp module nhận diện tuổi
Trang 1HUMAN ACTIVITY MONITORING SYSTEM IN STORES AND PUBLIC PLACES
ĐỒ ÁN TỐT NGHIỆP
HỆ THỐNG GIÁM SÁT HOẠT ĐỘNG CON NGƯỜI TẠI CÁC CỬA HÀNG VÀ
NƠI CÔNG CỘNG GVHD: TS Phạm Việt Cường
Sinh viên thực hiện
Mai Nguyễn Luân - 2111702
Trang 2NỘI DUNG
GIỚI THIỆU ĐỀ TÀI VÀ THIẾT BỊ SỬ DỤNG 1
CÁC THUẬT TOÁN SỬ DỤNG 2
KẾT QUẢ THỰC NGHIỆM 3
Trang 31 THIẾT BỊ SỬ DỤNG
1 GIỚI THIỆU ĐỀ TÀI VÀ THIẾT BỊ SỬ DỤNG
Trang 41.1 Giới thiệu đề tài
• Việc quản lý hoạt động con người tại các cửa hàng, nơi công cộng đóng vai trò quan trọng nhằm đảm bảo an
ninh, trật tự Chính vì vậy, đồ án HỆ THỐNG GIÁM SÁT HOẠT ĐỘNG CON NGƯỜI TẠI CÁC CỬA
HÀNG VÀ NƠI CÔNG CỘNG được thực hiện.
Trang 5o Thu thập dữ liệu, gắn nhãn và huấn luyện mô hình YOLOv8 để phát hiện người.
o Triển khai thuật toán line-crossing kết hợp tracking để đếm người vào/ra
o Tích hợp module nhận diện tuổi, giới tính (Caffe + OpenCV DNN), module nhận diện thuộc tính ngoại hình
o Thiết kế cơ sở dữ liệu SQLite lưu trữ log sự kiện và ảnh minh chứng
o Phát triển ứng dụng C# WinForms (giám sát cục bộ, điều khiển line)
o Phát triển ứng dụng Flask Web (dashboard, logs, thống kê)
o Kiểm thử hệ thống trên dữ liệu thực tế (camera 720p, video)
1.1 Giới thiệu đề tài
CÁC CÔNG VIỆC ĐÃ THỰC HIỆN TRONG ĐỒ ÁN TỐT NGHIỆP:
Trang 6Ứng dụng chính Hội nghị video, giám sát, phân tích hành vi
trong môi trường công cộng
Camera 2D
Trang 7Thông số của Laptop
1.2 Thiết bị phần cứng sử dụng
Thành phần Thông số kỹ thuật CPU Intel Core i7-12800H
GPU NVIDIA GeForce RTX3050
RAM 16GB DDR4
Lưu trữ 512GB SSD M.2 NVMe PCIe
Pin 76Wh
Trọng lượng Khoảng 1.6kg
Hệ điều hành Windows 11 Home
Kết nối Wi-Fi 6, Bluetooth 5.1, USB-C
Máy tính cá nhân ACER Nitro V
Trang 82 CÁC THUẬT TOÁN SỬ DỤNG
Trang 92.1 Thuật toán nhận diện người
a) Training mô hình AI nhận diện người bằng YOLOv8
• Chuẩn bị dữ liệu ảnh
• Gắn nhãn bằng Robo-flow Mỗi vật thể khi gắn nhãn bằng mộtbounding box sẽ có chuẩn mã hóa có định dạng theo thứ tự là sốthứ tự class (class_id), các cột còn lại là tọa độ của bounding box (tọa độ tâm x, y của bbox, chiều rộng, chiều cao bbox)
• Bộ dữ liệu bao gồm 32187 tấm ảnh Được chia thành 2 tập theo
tỉ lệ 80% cho tập huấn luyện (training) bao gồm 25780 tấm ảnh, 20% cho tập thẩm định (validation) bao gồm 6437 tấm ảnh
Trang 102.1 Thuật toán nhận diện người
a) Training mô hình AI nhận diện người bằng YOLOv8
• Tiền xử lý đưa ảnh về kích thước 640x640, đồng thời thực hiện thêm
kỹ thuật auto-orient và auto-adjust contrast để đảm bảo các hình ảnh trong tập dữ liệu đều có 1 hướng nhất quán và độ tương phản nhất định
để hiệu suất cao hơn
• Tăng cường dữ liệu thông qua việc xoay, lật ảnh, đổi màu,…
Trang 112.1 Thuật toán nhận diện người
a) Training mô hình AI nhận diện người bằng YOLOv8
• Huấn luyện mô hình với các tham số cơ bản
model YOLO("yolo8n.pt") Mô hình YOLOv8n phiên bản nhỏ (nano - n).
batch 16 Số lượng ảnh trong mỗi lần huấn luyện (batch size).
epochs 300 Số chu kỳ huấn luyện.
patience 15 Số epochs tối đa không cải thiện trước khi dừng sớm (early stopping) Tránh mô hình bị
overfitting khi không còn cải thiện sai số (loss).
optimizer 'AdamW' Thuật toán tối ưu hóa AdamW cải tiến từ Adam giúp điều chỉnh learning rate linh hoạt và giảm
overfitting hiệu quả hơn so với Gradient Descent truyền thống.
lr0 0.0005 Learning rate ban đầu Giá trị nhỏ giúp mô hình học ổn định, nhất là trong những epoch đầu.
dropout 0.35 Xác suất loại bỏ ngẫu nhiên một số neuron trong quá trình huấn luyện để tránh overfitting.
imgsz 640 Kích thước hình ảnh đầu vào (640x640) Giá trị tiêu chuẩn cho YOLO.
plots True Tạo biểu đồ trực quan trong quá trình huấn luyện để theo dõi hiệu suất.
val True Sử dụng tập validation trong quá trình huấn luyện để theo dõi độ chính xác và tránh overfitting.
Trang 122.1 Thuật toán nhận diện người
b) Đánh giá chất lượng mô hình
Sai số (loss) trên tập huấn luyện: Giảm dần theo từng epochs cho thấy rằng mô hình đang có xu hướng học tốt, cải thiện khả năng dự đoán đối tượng của mình trên tập huấn luyện.
Sai số (loss) trên tập kiểm chứng
− Với sai số trên box, class đang giảm dần cho thấy mô hình có khả năng cải thiện và hoạt động chính xác trên tập validation, một tập mà mô hình chưa từng thấy trong quá trình học.
− Tuy nhiên, ở những epochs sau, sai số có khuynh hướng giảm nhẹ và bắt đầu không có khả năng cải thiện đáng kể, ngoài ra ở dfl_loss thì sai số bắt đầu có khuynh hướng tăng Điều này, cho thấy mô hình đang có khuynh hướng bắt đầu bị học quá khớp (overftting).
Trang 132.2 Thuật toán đếm dựa trên đường mốc (Line Crossing Counting)
• Để xác định việc một người đã đi vào hay đi ra, hệ thống xây dựng hai đường tham chiếu (entry line và
exit line) Mỗi đường thẳng đi qua hai điểm , được biểu diễn bởi phương trình:
• Hàm kiểm tra vị trí điểm đối với đường thẳng được định nghĩa: f x y ( ) , = Ax By C + +
0
Ax By C + + =
( 1, 1)
A x y B x y( 2, 2)
• Khi quỹ đạo của một track ID cho thấy sự
thay đổi dấu của hàm f(x,y), người đó đã
vượt qua đường mốc Hướng di chuyển đượcxác định dựa trên quỹ đạo của tâm bbox theotrục tung
Trang 142.2 Thuật toán đếm dựa trên đường mốc (Line Crossing Counting)
• Mục tiêu: Đếm số lượng người ra/vào trong khu vực giám sát (cửa hàng, lối đi…) dựa trên
hướng di chuyển, đảm bảo mỗi người chỉ được đếm một lần
• Quy trình hoạt động
o Phát hiện người bằng YOLOv8 → lấy bounding box và track_id
o Xác định tâm bbox và lưu quỹ đạo di chuyển trong track_memory
o Ước lượng hướng di chuyển (“up” hoặc “down”) dựa trên chuỗi điểm quỹ đạo
o So sánh với 2 line đếm (Entry & Exit): Nếu đi qua line đỏ → line xanh theo chiều xuống →tăng count_in Nếu đi qua line xanh → line đỏ theo chiều lên → tăng count_out
o Cơ chế arming/trigger: ID phải đi qua lần lượt 2 line theo đúng thứ tự mới được đếm →tránh đếm sai khi người đứng lại, đổi hướng hoặc dao động gần line
Trang 152.3 Thuật toán nhận diện khuôn mặt, tuổi và giới tính
• Mục tiêu: Xác định khuôn mặt người trong khung hình từ camera Từ đó suy luận
giới tính và nhóm tuổi (0–2, 4–6, 8–12, 15–20, 25–32, 38–43, 48–53, 60–100
• Quy trình hoạt động
o Sử dụng mô hình SSD + MobileNet (OpenCV DNN) để phát hiện khuôn mặt
o Xuất bounding box + confidence (chỉ chọn khuôn mặt có confidence > 0.7)
o Tiền xử lý khuôn mặt (crop và resize)
o Sử dụng mô hình GenderNet nhận diện giới tính, đầu ra vector 2 chiều [Male, Female], giới tính có xác suất cao nhất được chọn làm kết quả
o Đồng thời khuôn mặt sau chuẩn hóa cũng được đưa vào mô hình AgeNet Kết
Trang 162.4 Thuật toán nhận diện một số đặc điểm bề ngoài
Mục tiêu: Xác định các thuộc tính ngoại hình của người trong khung hình, ví dụ: giới tính,
balo, túi xách, mũ, áo dài tay, quần dài, tóc dài, áo khoác
• Quy trình hoạt động
o Sử dụng mô hình Person Attributes Recognition (OpenVINO), kiến trúc CNN đã huấn luyện sẵn
o Đầu vào: ảnh toàn thân của người (crop từ bounding box YOLO)
o Tiền xử lý: resize ảnh về 80×160 px, chuẩn hóa theo yêu cầu của model
o Mô hình xuất vector 8 giá trị xác suất, mỗi giá trị tương ứng một thuộc tính ngoại hình
o Kết quả: trả về dict gồm các đặc điểm bề ngoài kèm theo độ tin cậy (confidence)
Trang 172.5 Xây dựng cơ sở dữ liệu SQLite
• Mục tiêu: Quản lý ghi nhận và lưu trữ sự kiện từ camera, gồm: ID, hướng di chuyển, thời gian, ảnh bằng
chứng, tuổi, giới tính, thuộc tính ngoại hình, độ tin cậy Đảm bảo có dữ liệu phục vụ thống kê và phân tích
o Lưu ảnh bằng chứng: theo thư mục thời gian, tên file theo ID + timestamp
o Ghi DB: chèn đầy đủ thông tin sự kiện vào SQLite
Trang 182.6 Xây dựng ứng dụng quan sát và điều khiển hệ thống
• Ứng dụng giám sát và điều khiển được phát triển bằng ngôn ngữ C# trên nền tảng Visual Studio 2022 Đây làthành phần trọng tâm, giữ vai trò cầu nối giữa các khối chức năng khác nhau trong hệ thống, bao gồm mô-đun
xử lý hình ảnh bằng Python (Flask kết hợp với YOLO), cơ sở dữ liệu SQLite để lưu trữ thông tin, cùng vớigiao diện người dùng đảm nhận nhiệm vụ quan sát và điều khiển trực tiếp
Điều khiển hệ thống Khởi động/Dừng hệ thống Quan sát video Hiển thị luồng video thời gian thực Điều chỉnh vạch đếm Thiết lập và hiệu chỉnh các đường đếm
(Line Setup, Red Line, Green Line) Điều chỉnh góc nghiêng Thay đổi độ dốc của vạch đếm Xác nhận thay đổi Lưu cấu hình vạch đếm sau khi điều chỉnh Điều khiển đếm Bắt đầu/Tạm dừng quá trình đếm
Hỗ trợ quan sát Hiện/ẩn hộp bao quanh đối tượng
Trang 191 THIẾT BỊ SỬ DỤNG
3 KẾT QUẢ THỰC NGHIỆM
Trang 203.1 Kết quả mô hình nhận diện người
Trang 213.2 Kết quả mô hình nhận diện tuổi và giới tính
• Thử nghiệm mô hình trên tập dữ liệu ảnh thu thập từ camera giám sát, mỗi đối tượng được dự đoán đồng thời vềgiới tính và độ tuổi (theo 8 dải giá trị rời rạc: 0–2, 4–6, 8–12, 15–20, 25–32, 38–43, 48–53, 60–100)
• Mô hình có khả năng dự đoán tương đối tốt đối với những đối tượng có hình ảnh rõ ràng Tuy nhiên, vẫn tồn tạisai số nhất định trong các trường hợp đặc thù như góc chụp không thuận lợi, kết quả sẽ là N/A
Trang 223.3 Kết quả thử nghiệm mô hình nhận diện một số đặc điểm bên ngoài
• Tiến hành thử nghiệm trên tập 100 ảnh được lựa chọn từ hệ thống camera giám sát
• Trong quá trình đánh giá, mỗi ảnh được gán nhãn tham chiếu thủ công (ground truth) bằng quan sát trực tiếp từcon người, sau đó so sánh với kết quả dự đoán của mô hình
• Mô hình đạt độ chính xác tương đối cao đối với các đặc điểm dễ nhận diện như giới tính, tóc dài, mặc quần dài,
Trang 233.4 Kết quả thử nghiệm toàn bộ hệ thống giám sát
a) Mô tả tình huống lắp đặt và thử nghiệm hệ thống
• Camera lắp đặt ở tầng cao hơn trong trung tâm thương mại,cho phép quan sát được toàn cảnh bao gồm lối đi chính, hànhlang và khu vực cửa hàng
• Trong quá trình triển khai và thử nghiệm, hệ thống giám sátđược xây dựng với kiến trúc kết nối như sau camera giám sát; máy tính có cài đặt ứng dụng GUI Camera để quan sát,
• Tín hiệu hình ảnh được ghi nhận từ camera có độ phân giải720p với tốc độ 30 khung hình/giây, đảm bảo dữ liệu ở mứcchất lượng đủ cao để nhận diện và phân tích hành vi
b) Thử nghiệm hệ thống
Trang 243.4 Kết quả thử nghiệm toàn bộ hệ thống giám sát
Giao diện trang web khi đã đăng nhập thành côngvv
b) Thử nghiệm hệ thống
Giao diện GUI Camera
Trang 253.4 Kết quả thử nghiệm toàn bộ hệ thống giám sát
Giao diện web khi cho phép nhận diện và đếm Giao diện ứng dụng về dữ liệu ghi nhận lại được
Trang 263.4 Kết quả thử nghiệm toàn bộ hệ thống giám sát
• Trang Statistics & Analysis trong hệ thống đóng vai trò tổng hợp và trực quan hóa dữ liệu từ các sự kiệnnhận diện người Giao diện được chia thành ba phần chính: bộ lọc (filter), biểu đồ thống kê, và phần đánhgiá (chart evaluation)
Trang 274 KẾT QUẢ THỰC NGHIỆM
CẢM ƠN QUÝ THẦY CÔ VÀ CÁC BẠN ĐÃ LẮNG NGHE