足球賽偵測器將裁判禿頭評為信心度 98% 的足球。我打造了一道物理閘門,在任何偵測器下游直接拒絕物理上不可能的假偵測。
電腦視覺運動分析物件追蹤

自動化攝影機在整場足球賽中追著禿頭跑。我打造了予以否決的物理閘門。

Ashutosh SinghalAshutosh Singhal2026年7月15日10 min

2020 年 10 月,印威內斯喀里多尼亞薊花(Inverness Caledonian Thistle)的一台自動化攝影機在一場足球賽的大半時間裡,都在追蹤邊線裁判的禿頭,而不是足球。在球場泛光燈下,那顆禿頭亮得像一顆球,Pixellot 攝影機跟隨了交給它的最高信心度偵測結果,家中的觀眾看著鏡頭長久而執著地特寫一位沿著邊線慢跑的光頭男子,而比賽本身卻發生在鏡頭之外(記錄在我們的 WP43 解決方案頁面上)。

這個故事在我的整個建構過程中一直縈繞在心,因為這是我所知最清楚的一幅縮影,描繪了電腦視覺領域每個人都感受過、卻幾乎無人能正確命名的失敗。偵測器並沒有壞。它完全履行了偵測器的職責。它為一塊像素區塊評分,頭頂的光澤得到了高分,而下游的每一個系統都信任了這個分數。我所建構的示範系統 Plumbline 位於 https://veriprajna.com/demos/physics-constrained-computer-vision,而它的核心論點只有一個:解方並不在偵測器內部。

當我不再怪罪模型的那一刻

我花了一整天試圖想像出一個更好的偵測器,但怎麼也無法讓這個問題消失。物件偵測器是獨立於畫格的。它根據紋理與形狀為每張影像評分,完全沒有前一刻真實物體在哪裡、或者物理上下一步可能在哪裡的記憶。因此,在球場燈光下,一顆禿頭在局部看起來就是一顆極佳的球。你可以訓練一個更敏銳的模型,而在光澤達到頂峰的畫格上,它依然會交給你一顆位於某人頭頂、信心度達 98% 的足球。信心度並沒有對像素說謊。它回答的是一個與那裡究竟能否存在一顆球毫無關聯的問題。

就在那一刻,我的思考框架徹底翻轉了。

你的視覺系統遇到的不是信心度問題。它遇到的是物理問題。

真實的足球遵守著禿頭所不具備的約束條件,而這些約束條件沒有一項存在於偵測器的分數中。光是這個重新框架,就決定了整套架構。我不再試圖讓偵測器變得更聰明,而是開始打造一個位於偵測器之後的圖層,用來強制執行偵測器從未察覺的物理法則。

「物理上不可能」在程式碼中是什麼模樣

我想親眼看著一個偵測結果因一個能以白話閱讀的理由被拒絕,因此這是我最先建構的東西。Plumbline 位於任何偵測器的下游,在採取任何行動前,會對每個候選物件執行三個確定性閘門。運動學閘門使用 Kalman filter——在帶有拋體運動模型的合成路徑上使用 Unscented Kalman Filter——來預測真實足球下一步可能出現在何處,接著將每個候選物件與該預測之間的偏離程度測量為 Mahalanobis distance:3 sigma 以下接受,超過 5 sigma 拒絕,3 到 5 sigma 區間則標記以待審查。光流閘門將候選物件的局部像素運動與軌跡的預期速度進行比對,並拒絕光流方向錯誤或在開闊戰局中幾乎不動的「球」。幾何閘門則使用針孔模型來詢問一顆 22 cm 的球在候選物件所隱含的深度下應對應多少像素,並剔除在物理上不可能呈現的尺寸。

這些都不是模型。它們是你能逐行閱讀的純粹 numpy 與 scipy,存在於任何神經網路之外,這也正是我信任它們的全部原因。在這裡,信任並不取決於事後自我解釋的黑盒子。

那顆禿頭同時未能通過這三個閘門。我是故意注入這個冒充者的,作為 2020 年印威內斯事件的重現,而非偶然發生的自然錯誤,因為會讓攝影機崩潰的情況,恰恰是永遠不會出現在偵測器測試集中的那種案例。在合成片段中最糟糕的一幅畫格中,頭部偏離足球預測運動達到 82.3 sigma,這根本不是毫釐之差,而是在運動學上荒謬絕倫。真實的足球信心度為 0.87、偏離為 0.4 sigma,乾淨俐落地通過,攝影機也穩定保持在它身上。

Plumbline 閘門饋送拒絕信心度達 98% 的禿頭,而天真的追蹤器卻鎖定在它身上
禿頭邊線裁判場景。偵測器交給兩個追蹤器一個位於邊審頭頂的高信心度「球」(高達 98%);左側的天真窗格鎖定在它身上,而右側窗格的閘門饋送則同時在三個閘門上拒絕了這個冒充者(在比賽中途靜止不動、在最差畫格上達到運動學荒謬的 82.3 sigma、在該深度下尺寸不可能符合),並依靠自身預測繼續滑行。

每一次拒絕都在檔案中留下依據

我不希望這一切成為你必須盲目信任的東西,因此每項決策都會寫入一筆你可以開啟的記錄。匯出的決策日誌在頂端帶有 seed、場景、偵測器 ID 以及閘門門檻,接著每個畫格中的每個候選物件占一行:偵測器輸出的類別與信心度、每個閘門的數值判決與其白話英文理由(「Mahalanobis 82 sigma >= 5 sigma: kinematically impossible」),以及最終採取的動作。在禿頭邊審場景中,閘門拒絕了冒充者全部 18 次高信心度的錯誤偵測,而物理追蹤器在 97.7% 的時間裡鎖定足球,相較之下追隨最高信心度的基準線僅有 59.1%,提高門檻的基準線僅有 20.5%(合成場景,seed 7)。

對於任何為自動化視覺決策承擔責任的人來說,這筆記錄就是事故報告與無奈聳肩之間的差別。它的設計初衷是作為攝影機為何做出該動作的可歸檔證據,而不是合規證書——只是將逐格的物理理由妥善記錄在案。

bald_linesman 場景匯出的物理閘門決策日誌
匯出的決策日誌,場景 bald_linesman,seed 7。物理追蹤的目標鎖定時間達 98%,相較之下兩個基準線分別為 59% 與 20%,下方逐格列出各閘門判決與白話理由。

提高信心度門檻是調錯了旋鈕

當我向工程師展示禿頭拒絕案例時,第一直覺幾乎總是一樣的:只要提高信心度門檻,直到那顆假球被過濾掉為止。我打造這個示範就是為了用數據回應這種直覺,因為它感覺很合理,實際上卻是錯的。在完全沒有冒充者的乾淨合成場景中,提高門檻會拋棄 43.2% 信心度較低的真實足球,而物理閘門在乾淨集上的漏失率僅為 2.3%,這僅僅是一幅畫格的擷取延遲,而不是丟失了足球。提高門檻是用一個假陽性換來了一大堆假陰性。

物理閘門完全在另一個維度上運作。它們可以拒絕不可能的偵測,而不會捨棄微弱的真實目標,因為它們所檢查的內容(一顆球能否出現在這裡、以這種方式運動、具有這種尺寸)與偵測器投票的強烈程度完全無關。這種正交性,正是我建構乾淨場景測試要證明到不容置疑的事實。

乾淨場景上的公平性檢查,物理閘門 2% 漏失率對比提高門檻基準線的 43%
乾淨、無冒充者場景上的公平性檢查。物理閘門僅漏失 2% 的畫格(一幅畫格的擷取延遲),而提高門檻基準線則漏失 43%,且備註明確指出禿頭冒充者是 2020 年印威內斯事件的注入式重現,而非自然浮現的錯誤。

在測試過程中,還有一個讓我特別鍾情的小插曲,那就是遮擋案例。一名球員在足球前方橫越十幾個畫格,每個候選物件都被拒絕,但物理追蹤器沒有胡亂抓住該球員,而是依靠自身的預測在間隙中滑行,並在足球重新出現時再次鎖定。看著它保持一條空白軌跡而不是虛張聲勢地鎖定錯誤目標,那是這個圖層第一次讓我感覺它不像個濾波器,而更像具備了判斷力。

我差點沒有展示的那個數字

我差點刪掉了真實影片的運行測試,而保留它是我在整個建構過程中最自豪的決定。上述所有測試都在已知基準真值(ground truth)的合成場景上運行,這正是乾淨基準測試成為可能的原因,但合成數據的勝利很容易遭人懷疑。於是我截取了一段真實的轉播片段,逐格運行真實的 YOLO11x 偵測,從實際的人體偵測中將邊審的頭部作為假球注入,並在不作改動的情況下運行相同的三個閘門。隨之而來的是兩個坦誠的妥協。單一未校準的轉播片段沒有公制度量深度,因此那裡的運動學閘門是在影像平面上作為 2D Kalman filter 運行,而非世界空間中的濾波器,若是偽造 3D 濾波器將會是一場謊言。分數確實下降了。在真實片段中,物理閘門鎖定足球的時間為 68.3%,相較之下追隨最高信心度為 43.8%,提高門檻則為 30.0%。

我對著 68.3% 沉思了許久,因為 97.7% 是容易推銷的數字,而 68.3% 則是在高難度影片中的真實數字。我把這個坦誠的數字留在了計分板上、放在應用程式內部讓任何人都能看見。一個過度吹噓自己的驗證層,就已經在它聲稱要履行的唯一職責上失敗了。真正說明問題的是方向:同一套未經改動的閘門程式碼,無論在真實偵測還是模擬偵測中,都擊敗了兩個基準線,而且它坦率地交代了自己的局限性。

真實影片計分板,物理追蹤 68% 目標鎖定率對比天真追蹤器的 44%
真實影片「關於此示範」面板。在帶有真實 YOLO11x 偵測的真實轉播片段中,物理閘門達到 68% 的目標鎖定率,相較之下追隨最高信心度為 44%,誠實地低於合成上限,因為真實影片更具挑戰性,且就是以此標準衡量的。

這項技術真正奠定的基石

我最初的目的並不是打造一款足球產品,而且我想審慎釐清這個示範是什麼、以及不是什麼。這並不是宣稱我們的追蹤表現超越了市面上任何現役攝影機系統,因為 Pixellot 後續的韌體早已解決了字面上的禿頭問題,而且偵測器本身並不是這款產品。這項產品是位於偵測器與任何依據其輸出採取動作的系統之間,那層輕薄且可受檢驗的圖層。這些指標衡量的是追蹤品質,而不是偵測器錯誤率,這也正是為何無論底層偵測器變得多麼優秀,這項價值依然成立的原因。

那一層在現在比我剛開始時更加重要。電腦視覺正走向代理化(agentic),各系統不再只是標記畫格,而是依據畫格採取行動;而在這一切背後懸而未決的治理問題,就是你該如何阻止自主代理針對物理上不可能的偵測結果採取行動。SoccerNet 至今仍將多物件追蹤稱為「遠未解決」,其基準測試中尚未整合任何具備物理感知的方法。對我而言,禿頭從來不是有趣的部分。有趣的部分在於,捕捉到它的約束條件——真實物體必須遵守物理法則——對未來完美的偵測器同樣有效,因為一顆以每小時三英里速度、在恆定高度飄浮的球,在任何信心度下都是錯的。如果你想親眼觀看偵測結果如何被否決,並閱讀其被否決的確切理由,示範系統位於 https://veriprajna.com/demos/physics-constrained-computer-vision,並排運行著真實片段與合成場景。

如果你寧願親眼觀看而不是聽我描述,這裡是整套系統端到端運行的過程,並排展示真實片段與合成場景。

攝影機之所以跟著禿頭跑,是因為從未有人告訴過它一顆足球能做什麼。我所建構的一切,只不過是將那條規則明確寫下來,讓你可以親自檢驗。

相關研究

同步發佈於

自信打造您的 AI。

與一支在打造新世代企業級 AI 方面擁有深厚經驗的團隊攜手合作。讓我們協助您設計、建置並部署值得信賴的 AI 策略。

Veriprajna 深度科技顧問公司 專精於為醫療、金融及法規監管領域打造攸關安全的 AI 系統。我們的架構均依循既定規範進行驗證,並備有完整的合規文件。