最近一個叫 wifi-densepose 的專案登上了趨勢榜,這個專案看起來就很反直覺,它主要是通過分析室內已有的 WiFi 信號來感知人的位置和姿態,從而實現「無攝像頭」的監控。
簡單來說,就是透過 CSI(Channel State Information) 數據來替代原本的 RSSI,具體原理大概是:

那到這裡你應該看出來了,它的關鍵不在於硬體,而在於其複雜的 AI 神經網路算法,因為這裡的核心是需要將無線信號「翻譯」成了視覺元素:

所以從代碼層面,它的核心流程:
densepose_head.py),對生成的特徵圖進行兩類回歸:

看完了大家覺得如何?看起來很高大上,實際上就是對特徵數據的暴力整合,也就是這個專案的核心其實是訓練數據:
為什麼這個信號特徵是睡著,為什麼這個信號特徵是蹲著,這些標籤都需要數據提供。
但是,從開源代碼上看,其中需要進行 WiFi 信號處理和姿態預測的核心功都還沒實現,所以我突然很好奇,這個專案是怎麼飈升到趨勢榜的。
因為從原理上我們可以看出來,計算 WiFi 感知對於軀幹定位較準,但在肢體(手指、四肢末端)的細節捕捉肯定沒辦法精準,除非你有大量的精確特徵數據,而且原理對環境依賴相當敏感,也就是環境發生變化,你數據就要進行校準,不然無法剔除靜態物體的反射干擾。
最重要的是,當室內的人的數量多一點時,信號散射會極度混亂。
所以作者怎麼解決這些問題呢?嗯,作者沒有解決。
是的,作者沒有解決或者沒有開源這些能力,儘管 README 檔案和文檔充寫了很多功能,指標數據也寫得很好看,但是代碼裡很多都沒有實現,而且有一堆 mock 數據,作者沒有提供數據集,你不用 mock 就要自己去標註和做數據。

最過分的是,真實硬體介面是「佔位符」,RouterInterface 中的真實 CSI 採集函數 _collect_real_csi_data() 直接打印警告並返回 None,完全沒有實際實現。

CSI 解析器也用隨機數代替真實數據 ESP32CSIParser 的 amplitude/phase 解析直接用 np.random.rand 生成隨機數,註解寫著 "simplified for now":

就算是在非 mock 模式下,estimate_poses() 方法內部仍也是用 np.random.randn 生成隨機 CSI 數據:

訓練權重和數據也沒有,看下來的感覺就是:
整個代碼庫就像是 Vibe Coding 寫的樣板代碼,幾乎看到完整實現的核心功能
再深挖可以發現,這個專案大概率是基於 "DensePose From WiFi"(ArXiv:2301.00250)的論文實現,而這個過程作者應該是直接讓 AI 復現論文,只是沒有數據集和更新資訊的情況下,AI 根本復現不了,就復現了一個高大上的 README,和一個工程原型殼子。
所以,最後一個問題:大家 star 和 fork 的時候都不看代碼實現嗎?直接一個 README 就嗨起來了?感覺這更像是一場 AI 的「皇帝的新衣」。