Trận đấu có
nhiều lớp để đọc.

footlytics biến video bóng đá thành dữ liệu sân. Từ nhận diện và hình học tới tracking, radar và phân tích cấu trúc đội.

Xem demo thật

Prototype đang phát triển · Xử lý offline

Video trận đấu + annotationsMở toàn bộ showcase
Trích lớp video từ showcase ground truth · SoccerTrack v2, trận 117092. Có annotations cung cấp sẵn; đây không phải kết quả model tự nhận diện.

Computer visionCamera geometryTracking trong métMatch StateTactical analytics

Xem trận đấu.
Rồi mở từng lớp.

Bốn đoạn phim từ repository Footlytics. Ground truth cho thấy cách đọc dữ liệu; video prediction cho thấy cả đầu ra và lỗi còn lại của model.

Ground truth · 40 giây · 25 fpsMở video riêng

Chọn Phát để tải video. Không tự tải cả thư viện.

Video & radar đồng bộ

Footage thật, bbox và số áo từ annotations, cùng radar và quỹ đạo. Hai góc nhìn của cùng một đoạn trận đấu.

Dùng ground truth cung cấp sẵn, không đo accuracy của model.

Hai video prediction đổi cả confidence lẫn pitch margin. Chưa thể dùng chúng như thí nghiệm chỉ thay một ngưỡng.

Nguồn footage, giấy phép và giới hạn phép chiếu

SoccerTrack v2 / AtomScott và các contributors · Dataset gốc · CC BY 4.0. Footlytics trích đoạn, mã hoá lại và thêm bbox, radar, quỹ đạo, smoothing và bố cục ghép. Không hàm ý tác giả dataset bảo chứng sản phẩm.

Radar legacy dùng giả định sân 105 × 76m chưa xác minh, trong khi dataset card ghi 105 × 68m. Những demo này minh hoạ cách hiển thị; chưa chứng minh calibration trong mét, tốc độ, formation hay identity chính xác.

Đọc README của bản demo đã công bố · Commit c787ff6.

Đổi model.
Giữ một chuẩn dữ liệu.

Perception nhìn điểm ảnh. Analytics đọc vị trí trong mét. Match State là hợp đồng nối hai phần, để đầu ra có thể kiểm tra và dùng lại.

  1. 01

    Video

    Camera & thời gian

  2. 02

    Perception

    Detection & geometry

  3. 03

    Match State

    Tracking · mét · validate

  4. 04

    Analytics

    Đặc trưng & chỉ số

  5. 05

    Đầu ra

    Radar · overlay · quality

17 cột. Một observation mỗi frame.

Frame, thời gian, track, vai trò, đội, bbox, confidence, vị trí và động học. Parquet lưu quan sát; metadata giữ ngữ cảnh trận.

validate() kiểm cấu trúc và điều kiện dữ liệu; không tự chứng minh vị trí đúng ground truth.

frame_idx   period   timestamp
track_id    role     team     jersey
bbox_x      bbox_y   bbox_w   bbox_h
det_conf    x        y        z
speed       accel

tracks.parquet  +  meta.json
Đọc kiến trúc và hợp đồng dữ liệu

Camera đổi góc.
Sân giữ hệ toạ độ.

Độ chính xác bắt đầu trước tracking: mô hình sân, điểm chân và phép chiếu. Sai số hình học đi qua mọi lớp phía sau.

Khám phá phép chuyển đổiToạ độ sân · mét
Minh hoạ khái niệm vị trí và phép chiếu trên sânDữ liệu tổng hợp, không phải output của trận thật. Chọn lớp bên dưới để xem hình ảnh phối cảnh, phép chiếu xuống sân hoặc quỹ đạo minh hoạ. x dọc sân / y ngang sân / gốc tâm sân

Minh hoạ cơ chế · dữ liệu tổng hợp. Các điểm được đưa về hệ toạ độ sân; không phải bản chạy pipeline.

Từ camera tới mặt sân.

Đổi lớp để khám phá phép chiếu và quỹ đạo. Đây là minh hoạ tương tác dùng dữ liệu tổng hợp; các video trận thật nằm ở showcase phía trên.

Đối chiếu với demo thật
Sơ đồ khái niệm điểm ảnh về frame neo rồi chiếu xuống sânIMAGE SPACEPITCH SPACE · METRESDLT + TPS
Minh hoạ geometry. Landmark/calibration vẫn cần được chọn và kiểm overlay theo camera.

DLT + TPS

Mô hình sân có 35 landmark. DLT ánh xạ điểm ảnh; TPS hiệu chỉnh méo còn lại. Điểm chân từ bbox được chiếu xuống sân.

KLT + SIFT

Theo chuyển động giữa frame và neo lại vào frame tham chiếu để hạn chế drift khi lia/zoom. Điểm được đưa về frame neo trước khi qua calibration.

Mất calibration có trạng thái

Frame không xác định được phép chiếu không được dùng như vị trí mét hợp lệ. Tracking coast có giới hạn; cut dài có thể tạo tracklet mới.

Residual, drift và accuracy khác nhau thế nào?

Residual trên landmark đã dùng để fit không đại diện sai số vị trí toàn sân. Drift camera đo bằng pixel không là tracking error trong mét. Cần ground truth và phép đo riêng để khẳng định độ chính xác.

Camera cố định là trường hợp biến đổi gần identity; không có cam kết tự hiệu chuẩn hoặc hỗ trợ mọi broadcast cut.

Theo dõi chuyển động.
Giữ ranh giới giữa những người.

Pixel không có một tỷ lệ vận tốc ổn định khi camera thay đổi. Tracking trên sân dùng vị trí và chuyển động trong mét.

Quan sát

YOLO cho người; pass riêng cho bóng nhỏ. Tile và độ phân giải là cấu hình từng lượt chạy.

bbox → feet → (x, y)

Dự đoán & ghép

Kalman giữ trạng thái vị trí/vận tốc. Hungarian ghép quan sát với track; appearance và gate chuyển động hỗ trợ phân biệt.

[x, y, vx, vy] · metres

Nối tracklet

Ràng buộc thời gian, đội và jersey veto khi có dữ liệu đọc. Quota đội theo thời gian hạn chế ghép thiếu cân bằng.

track → tracklet → identity

Identity vẫn là bài toán mở.

Giao cắt, occlusion và mất calibration còn gây phân mảnh. Interface nhận số áo chưa là OCR hoàn thiện; quota 11 người không chứng minh luôn có 22 ID chính xác. Tách trọng tài còn hạn chế trên clip 3 phút.

Làm sạch quỹ đạo.
Rồi mới đọc chỉ số.

Jitter không tự triệt tiêu khi cộng quãng đường. Pipeline dùng Hampel và làm mượt trước khi tính động học.

Minh hoạ khái niệm quỹ đạo có spike và quỹ đạo đã làm mượt, không phải dữ liệu trận thậtTHỜI GIANRaw / smoothed
Minh hoạ tín hiệu tổng hợp. Smoothing có thể làm mất chuyển động ngắn; cần chọn theo mục đích.

Hampel → smoothing → kinematics

Tốc độ, gia tốc, quãng đường; add_kinematics dùng cửa sổ làm mượt mặc định 0.8 giây.

Đọc cấu trúc đội

Width, depth, centroid, formation, press distance và transitions có nền tảng module. Mỗi hàm cần dữ liệu đầu vào phù hợp.

Possession hiện lấy từ ballStatus/event feed. PPDA cần events; chưa tự suy ra mọi sự kiện từ video.

Bằng chứng có điều kiện.
Giới hạn có mẫu số.

Quality report ghi phần dữ liệu xuất được. Presence, calibration, sai số vị trí và độ đúng identity là các phép đo khác nhau.

F2 · 23/09/2026

Brazil–France tactical cam · M2 · YOLOv8x6 tile=0 / 1280 + bóng riêng 1920 · stride 1

Số đo lịch sử từ tài liệu feasibility §3.4; chưa chạy lại cho bản landing
Phép đoKết quảPhạm vi & giới hạn
Presence bóng · 30 giây745 / 75099.3% frame; không phải accuracy
Presence bóng · 3 phút3605 / 365798.6% frame có calibration; 80.1% toàn clip
Calibration · 3 phút81.23%139 re-anchor; cut cảnh 34 giây bị loại
Identity · 3 phút261 → 179Raw track → tracklet; còn phân mảnh
Compute trên M2~595 sMỗi phút trận, có model bóng; xử lý offline

Các cửa sổ 30 giây và 3 phút khác nhau. Không ngoại suy sang cả trận, GPU hoặc mọi camera; không đổi presence thành accuracy.

Đọc nguồn, cấu hình và ca lỗi

Detector thấy bóng.
Bộ lọc vẫn làm mất bóng.

Báo cáo F2 ghi nhận dùng lề sân cầu thủ cho cả bóng làm mất output gần biên. Tách ball margin đưa presence clip 30 giây từ 11.7% lên 99.3%.

11.7% 99.3%

Bài học: kiểm cả geometry và bộ lọc sau detector. Presence tăng không tự chứng minh sai số toạ độ giảm.

Case báo cáo lịch sử; chưa có before/after footage công bố trên trang.

Tactical Query.
Phần chúng tôi đang xây.

Match State và đặc trưng đội là nền tảng. Tìm chuỗi chiến thuật trong nhiều trận cần thêm các lớp suy luận, xác thực và chỉ mục.

Video → Match State → metrics

L0–L2 · Nền tảng có mã

Vị trí và cấu trúc đội tạo đầu vào cho bước diễn giải.

Possession → chuỗi có kiểm chứng

L3–L4 · Còn thiếu để thành sản phẩm

Suy ra possession độc lập event feed; phát hiện chuỗi bằng quy tắc, để analyst chấm và điều chỉnh.

Index nhiều trận → query

L5 · Lộ trình

Thiết kế DuckDB index, đồng bộ clip/radar và vòng rule → analyst → classifier.

“Tìm các đoạn đối thủ dựng khối phòng ngự thấp.”

Câu hỏi concept · Chưa có app query hoặc kết quả trận thật trên landing
Đọc tầm nhìn và các lớp còn thiếu

Xây cùng người
đọc trận đấu.

footlytics là dự án khởi nghiệp đang phát triển pipeline phân tích video và dữ liệu sân. Pilot kỹ thuật tập trung vào một tác vụ, footage có quyền xử lý và đầu ra analyst có thể chấm.

  1. Chọn tác vụ & camera

    Xác định câu hỏi chuyên môn và điều kiện footage.

  2. Kiểm một clip

    Đối chiếu geometry, tracking, quality và đầu ra.

  3. Analyst phản hồi

    Chấm lỗi, điều chỉnh phạm vi, xác định điều kiện mở rộng.

Pilot chưa mở đăng ký. Bắt đầu từ mã nguồn, demo công khai và một câu hỏi chuyên môn có thể kiểm chứng.

Xem dự án trên GitHub