Hồ sơ dự án · Computer Vision Pipeline

Lọc video an ninh thành clip 1 phút đã gán nhãn

VSF Candidate Mining tách video giám sát dài hàng giờ thành từng đoạn nghi vấn, gán nhãn và xuất ra clip ~1 phút để đội QC/QA dùng train & test model phát hiện vi phạm. Chạy hoàn toàn cục bộ, từ dò người bằng RT-DETR/YOLO11 đến giao diện thao tác cho người vận hành.

Perimeter Vision Intelligence — AI Security Operations
Dự án
VSF Candidate Mining
Vai trò
Kỹ sư phát triển
Công nghệ
Python · PyTorch · PySide6
Quy mô xử lý
~90GB → 279 clip
01Bài toán

Video giám sát thô không dùng trực tiếp để train model được

Dữ liệu gốc là file ghi hình trọn ca trực, dài nhiều giờ nhưng chỉ chứa rất ít khoảnh khắc đáng chú ý. Đội QC/QA cần đúng những đoạn có khả năng chứa hành vi vi phạm, đã cắt ngắn và gán nhãn theo kịch bản / hành vi / khoảng cách.

Đầu vào

Video dài liên tục

File ghi hình từ camera NVR, dài nhiều giờ, phần lớn thời lượng không có sự kiện.

Cần tạo ra

Clip ngắn, đúng thời lượng

Đa số ~1 phút; một số hành vi đặc thù dài hơn theo quy ước (lảng vảng gần hàng rào ≥ 5 phút).

Đi kèm

Nhãn đúng cấu trúc

Mỗi clip gán nhãn kịch bản / hành vi / khoảng cách, lưu đúng thư mục để nạp thẳng vào tập train và test.

Người dùng đầu ra: QC/QA (train & test model) và đội gắn nhãn (thao tác trực tiếp trên từng clip).

02Đặc tả đầu ra

Mỗi clip đi kèm một file nhãn, sẵn sàng nạp vào tập train/test

Kết quả là thư mục theo cấu trúc cố định: clip .mp4 cắt đúng đoạn nghi vấn, kèm .json mô tả đầy đủ nhãn và mốc thời gian.

Thành phầnNội dung
Clip (.mp4)Đoạn cắt quanh thời điểm sự kiện, đa số dài khoảng 1 phút
Nhãn (.json)Kịch bản, hành vi, khoảng cách, thời gian bắt đầu/kết thúc, thời điểm sự kiện chính
Vị trí lưuCamera → kịch bản → hành vi → khoảng cách, đúng chuẩn thư mục QC/QA đã thống nhất
Ví dụdata/output/Cam 01/positive/treo_rao_xam_nhap/lang_vang_gan_hang_rao/15m/Cam 01_2026_08_01_03_22.mp4

Tên file giữ nguyên camera và thời điểm ghi hình — truy ngược về video gốc được mà không cần tra bảng.

03Quy trình xử lý

Năm bước, từ video dài đến clip đã gán nhãn

AI chỉ hỗ trợ khoanh vùng nghi vấn; người vận hành luôn là người quyết định nhãn cuối cùng.

  1. 01Import videoĐăng ký theo camera
  2. 02Vẽ ROIKhoanh vùng theo dõi
  3. 03ProcessTìm đoạn nghi vấn
  4. 04ReviewRà soát candidate
  5. 05Gán nhãn & ExportXuất clip vào thư mục

Ở bước Process: dò người trên khung hình lấy mẫu bằng RT-DETR-L (chính xác hơn) hoặc YOLO11n (nhanh hơn), chọn theo yêu cầu từng lần chạy, chỉ giữ phát hiện nằm trong vùng ROI. Đó là toàn bộ phần “AI” của hệ thống — phần còn lại là thao tác của người vận hành.

04Áp dụng trên dữ liệu thật

Lọc gần 90GB video thô từ 11 camera xuống 279 clip có hành vi vi phạm

Candidate ban đầu giữ nguyên ~120 giây ngữ cảnh quanh sự kiện. Tôi bổ sung công cụ cắt hàng loạt để rút gọn về đúng 60 giây lõi hành vi và đồng bộ lại nhãn thời gian, thay cho việc sửa tay từng file.

~90GBVideo thô đầu vào, 11 camera
279Clip 1 phút đã cắt và gán nhãn
>30GBDữ liệu đầu ra sẵn sàng train & test
TRƯỚC · 120s ngữ cảnh 30s lõi hành vi 60s ngữ cảnh 30s SAU · 60s 2093.524s → 2153.524s
Bỏ 30s ngữ cảnh mỗi đầu · ghi đè video gốc và cập nhật JSON nhãn cùng lúc qua file tạm

Có kiểm tra để không cắt cộng dồn khi chạy lại trên cùng một file — chạy hai lần vẫn ra đúng 60 giây.

05Đóng góp kỹ thuật

Lớp kiểm soát ghi đè: clip đã gán nhãn không bao giờ tự mất

Bước xuất clip trước đó có thể ghi đè nhầm khi hai clip khác nội dung trùng tên. Tôi bổ sung lớp kiểm soát tự nhận diện ngữ cảnh: cập nhật nhãn cho clip đã có, hoặc lưu clip mới tách biệt hoàn toàn.

Cập nhật nhãn

Ghi đè đúng clip đã có

Xuất lại cùng một clip để sửa nhãn vẫn lưu vào đúng vị trí cũ, không tạo bản sao thừa.

Dữ liệu mới

Giữ lại toàn bộ

Clip khác nội dung nhưng trùng tên được tự động phân biệt — không clip nào bị loại bỏ.

Quy ước đặt tên clip mà QC/QA đang dùng (theo camera và thời điểm ghi hình) được giữ nguyên; lớp kiểm soát vận hành phía sau, không thay đổi thao tác của người dùng.

06Kết quả đo được

Dữ liệu đầu ra bảo toàn 100%, có kiểm thử tự động bảo chứng

100%Clip xuất ra được giữ nguyên vẹn, sẵn sàng đưa vào tập train/test
0Clip hao hụt kể từ khi triển khai lớp kiểm soát
6Tình huống thực tế được kiểm thử tự động

Toàn bộ luồng xuất clip được kiểm chứng bằng test tự động, đảm bảo dữ liệu gán nhãn phục vụ train và test model luôn đầy đủ và đáng tin cậy.

07Công nghệ & thuật toán

Ba nhóm xử lý độc lập: dò người, khoanh vùng ROI, bất thường camera

Mỗi module giải quyết đúng một bài toán, không lẫn logic — dễ kiểm thử và thay thế riêng lẻ.

ROI 0.91 0.84 loại
Chỉ giữ phát hiện nằm trong ROI — ngoài vùng thì loại, dù model vẫn thấy
Dò người — 2 model đổi được

RT-DETR-L ưu tiên độ chính xác, YOLO11n khi cần nhanh. Cả hai pretrained COCO, chỉ giữ lớp person, lấy mẫu 2 khung/giây.

Khoanh vùng ROI

Người vận hành chỉ vẽ một nét tự do; hệ thống tự khép kín thành vùng theo đúng ý định — không cần vẽ chính xác bằng tay.

Bất thường camera

Tính gradient · entropy · histogram trên khung hình để phát hiện camera bị che hoặc mất khả năng giám sát.

Nền tảng

Python 3.11

Một mã nguồn chạy cả CLI, GUI và pipeline xử lý, hoàn toàn cục bộ.

Suy luận

PyTorch + CUDA

Tự nhận GPU nếu máy có CUDA, tự rơi về CPU nếu không.

Xử lý ảnh

OpenCV + NumPy

Đọc khung hình và tính đặc trưng số cho cả dò người lẫn phát hiện bất thường.

08Vận hành & giao diện

Ba giao diện tách biệt, mỗi màn hình đúng một nhiệm vụ

Ứng dụng desktop chạy hoàn toàn cục bộ, không cần trình duyệt hay server. Mỗi vai trò chỉ thấy đúng màn hình mình cần thao tác.

Giao diệnDùng để làm gì
Cửa sổ chínhVẽ ROI → xử lý tìm khung hình nghi vấn → rà soát → xuất kết quả
Gắn nhãn candidateXem từng đoạn nghi vấn, gán nhãn kịch bản / hành vi / khoảng cách, xuất clip kèm nhãn
Clip cutterCắt nhanh một đoạn theo mốc thời gian, không cần chạy model dò người

Mọi thông số vận hành (ngưỡng tin cậy, tốc độ lấy mẫu, khối lượng mỗi lượt) nằm trong một file cấu hình riêng — đổi hành vi hệ thống mà không cần sửa mã nguồn. Mỗi giao diện có lệnh CLI tương ứng để tự động hoá thành script khi chạy hàng loạt.

09Bằng chứng thực tế

Chạy thật trên 62,7 giờ video NVR chứ không phải ảnh minh hoạ

Mỗi khung hình dưới đây do chính công cụ sinh ra, vẽ lại từ toạ độ đã lưu trong hồ sơ candidate. Người trong khung hình đã được làm mờ; tên camera, tên file và dấu thời gian in chìm đã được che.

vùng ROI người vận hành vẽ người được phát hiện, đã làm mờ điểm chân dùng để xét ROI
18 người trong cùng một khung hình · 153 track kỹ thuật trong đoạn · RT-DETR-L lấy mẫu 2 FPS
2.719Candidate kỹ thuật sinh ra từ 384 video nguồn
354.008Detection được lưu kèm trong hồ sơ candidate
85Camera đã có ROI dùng chung hoặc riêng

Một detection chỉ được tính khi điểm chân (giữa đáy khung) nằm trong vùng ROI — model vẫn chạy trên toàn khung hình, ROI chỉ lọc kết quả. Đây là candidate kỹ thuật, chưa phải nhãn sự kiện, mức độ nghiêm trọng hay ground truth.

10Ảnh chụp ứng dụng

Ảnh chụp trực tiếp khi ứng dụng đang chạy

Không phải mockup. Cây thư mục nguồn, tên file và đường dẫn tuyệt đối đã được che trong ảnh.

Màn hình vẽ ROI trên khung hình tham chiếu
Vẽ ROI — một nét vẽ tay khép thành vùng theo tiếp tuyến hai đầu
Màn hình rà soát candidate
Rà soát — 4 candidate của video, vẽ lại hộp và ROI trên khung hình đã giữ
Màn hình gắn nhãn candidate
Gắn nhãn — 85 camera, 2.350 chờ xử lý, 347 đã xong tại thời điểm chụp

Ba màn hình chạy hoàn toàn cục bộ bằng PySide6, mỗi màn hình có lệnh CLI tương ứng để chạy hàng loạt.

11Mã nguồn & tài liệu

Toàn bộ công cụ và tài liệu hướng dẫn quản lý trên GitHub

Repo gồm mã nguồn bốn công cụ, bộ test tự động, tài liệu quy trình ROI, hướng dẫn gán nhãn và quy ước metadata.

Repositorygithub.com/theluu/pit-Perimeter-Vision-Intelligence
Kiểm thử tự động

Bao phủ luồng xử lý, xuất clip, khoanh ROI và các thao tác giao diện.

Tài liệu vận hành

Quy trình ROI trên desktop, hướng dẫn gán nhãn, quy ước metadata và nhóm nhãn cảnh báo.

Cài đặt một bước

Tạo môi trường, tải trọng số model và chạy giao diện bằng vài lệnh.

Xem hướng dẫn cài đặt và danh mục tài liệu →

—Liên hệ

Sẵn sàng trao đổi sâu hơn về kiến trúc và cách triển khai.

Rất vui được trình bày chi tiết từng quyết định kỹ thuật trong dự án, hoặc thảo luận cách áp dụng quy trình tương tự vào bài toán của quý công ty.

Mã nguồn
github.com/theluu
Tài liệu dự án
Hướng dẫn cài đặt & docs
Email
— cần bổ sung —
Điện thoại
— cần bổ sung —