Skyfaring
空中懸停的小型四旋翼無人機特寫
圖片:Pok Rie
無人機電腦視覺臉部辨識自主導航開源

一台玩具等級的無人機,已經開始有能力暗殺特定的人。

這台無人機沒有深度感測器,要判斷你離它多遠,靠的是你的臉在畫面裡占掉多大一塊。
AI 初稿 / skyfaring 編輯校正發布:2026年7月6日— 次瀏覽

一個人走進一間空辦公室。桌上一台巴掌大的無人機無聲升空,機身轉了個角度,把這個人重新擺回畫面正中央,接著往前飄一小段,維持著固定距離。旁邊筆電的螢幕上,一個方框套住那張臉,框旁邊跳出一個名字。

這台無人機是 DJI Tello,在市面上當入門玩具賣的機型。它沒有光達,沒有立體相機,連一顆深度感測器都沒有,機上只有一顆固定朝前的單鏡頭,運算能力也很有限。

認得出人、又跟得住人,這些看起來得靠昂貴感測器才做得到的事,一台玩具是怎麼辦到的。

作品出自一支羅馬尼亞團隊。兩位作者來自布加勒斯特的「Ferdinand I」軍事技術學院,成果登在《Journal of Military Technology》2026 年第 9 卷,程式碼也一併公開放上 GitHub。他們想驗證的事很具體:一台低成本、可程式化的消費級無人機,能不能只靠開源工具,就撐起一整套即時視覺智慧,把人員追蹤、室內掃描、自主導航全包下來。

商用的智慧無人機,多半把這些功能綁在封閉系統和高價硬體上。這篇論文走的是另一條路,把整套感知拆成三個各自獨立的模組,每一個都拿軟體或幾何技巧,去補這台機器缺的一項硬體。

它怎麼一直把人擺在畫面正中央?

第一個模組叫 FollowMe,負責讓無人機鎖定一個特定的人,維持固定距離跟著他,並且一直把人保持在畫面中央。

偵測靠的是 YuNet,一個輕量的臉部偵測模型,推論速度快到以毫秒計。一旦抓到臉,程式就算出這個方框的中心點,拿它跟畫面正中央比對。中心點偏左,機身就往左轉、往左移;偏右就往右修。這一段負責左右對齊。

前後的距離比較棘手,因為這台無人機根本沒有深度感測器。它的辦法是量臉的大小。臉的方框在畫面裡占掉的面積越小,代表人離得越遠;面積越大,代表人越近。無人機持續盯著這個面積變化,太遠就往前飛,太近就往後退。

這台無人機沒有深度感測器,要判斷你離它多遠,靠的是你的臉在畫面裡占掉多大一塊。

左右的中心點和前後的面積,兩組數字都交給 PID 控制器處理。PID 是工程上常見的一種回饋控制,會依照偏差的大小平滑地出力,讓無人機的修正動作連貫穩定,不會一頓一頓地抽動。

只靠單張畫面很容易被誤導。為了不讓一次誤判、或一瞬間的偵測中斷就亂飛,系統加了一道時間上的驗證:臉要連續好幾格畫面都穩定偵測到,才算數;萬一臉消失超過設定的格數,無人機就先停下移動,切進掃描模式,等著重新找回目標。

整套控制跑在一台多執行緒的 Python 伺服器上,一條執行緒接無人機傳回的影像,一條做偵測與追蹤,一條發飛行指令,彼此不互相卡住。無人機和伺服器之間用 DJITelloPy 函式庫、走 UDP 協定通訊,把指令延遲壓到最低。

實測的數字撐得住。在超過 50 次測試裡,追蹤準確率超過 92%,代表大多數時候它都沒跟丟;每次位置變動的平均修正時間低於 300 毫秒;人被短暫遮住之後,89% 的情況能在 2 秒內重新鎖定。

讓一台沒有深度感測器的無人機,自己掃描房間。

第二個模組 SkyScan,要做的事更進一步:讓無人機自己在一個封閉空間裡繞、偵測有沒有人、再比對出這個人是誰。這裡疊了兩項技術,臉部辨識用 FaceNet,深度估計用 DepthAnythingV2。

掃描先要能判斷牆和障礙物有多遠。Tello 上沒有光達也沒有立體相機,團隊改用單鏡頭配 DepthAnythingV2 這個 2024 年提出的深度估計模型。它只吃一張普通的 RGB 畫面,就能推算畫面裡各處的距離,讓無人機算出房間的寬度、以及下一步該轉多少角度。模型跑在 CPU 上,沒有動用 GPU,掃描距離仍可達 20 公尺,對室內導航夠用。團隊選的是它的 Base 版本,在精度和運算負擔之間取平衡。

一旦掃到一張清楚的臉,系統就從掃描切到辨識。FaceNet 是 Google 提出的辨識模型,會把裁切出來的臉轉成一串 128 維的向量。它用一種叫 triplet loss 的訓練方式,把不同的臉安排到一個空間裡,同一個人的臉彼此靠近、不同人的臉彼此拉遠。於是要比對兩張臉像不像,只要量它們的向量距離。

這串向量會拿去和 Firebase 雲端資料庫裡登記過的身分比對。距離夠近,就判定是某個已知的人;距離太遠,就標成陌生人,並可選擇啟動一段蒐集流程,把這張新面孔留下來供日後建檔。為了不被單張誤判帶偏,系統要求同一張臉被辨識到好幾次、結果一致,才確認身分。

三個數字說明它的可靠度:靠 YuNet 偵測臉,即使在中等光線、背景雜亂的環境下,成功率仍超過 95%;FaceNet 的辨識準確率達到 97.4%;在超過 20 人的測試集裡,沒有出現一次把陌生人錯認成已知者的誤報。

循著地上的線走,先得讓它看見地面。

第三個模組 LineTracker,讓無人機沿著地上畫好的線飛。這在倉庫、走廊這類有固定路徑的場所特別有用,不必靠 GPS 或慣性導航,光憑視覺就能循線。

麻煩在於 Tello 的鏡頭固定朝前,根本看不到腳下的地面。團隊的解法帶點土法煉鋼的味道:3D 列印一個支架,架上一面斜 45 度的鏡子,把地面的影像反射進那顆朝前的鏡頭。沒有改任何硬體,就讓一台只會往前看的無人機看見了地面。

看到地面之後,影像交給 OpenCV 即時處理。畫面先轉成 HSV 色彩空間,對光線變化比較耐受,再依校準好的顏色範圍把線從背景裡分離出來。接著把有線的區域,沿畫面寬度切成好幾個「虛擬感測」區塊,等於用軟體模擬出一排循線感測器。

線落在哪幾個區塊,就決定往哪個方向修。線偏到最左邊那幾塊,無人機就往左轉回來;線出現彎折或分岔,程式會分析各區塊的像素分布,預判轉彎的角度,提前修正,而不是等偏了才反應。遇到急彎它會放慢,直線段則在安全範圍內加速,讓走線又穩又不拖時間。操作者也能隨時從網頁介面接手,直接手動控制。

實測跑完全部 10 條預先鋪好的路線,含急轉、交叉和局部被遮擋的情況,平均偏離路徑中心不到 15 個像素。

把缺的硬體,用軟體和幾何補回來。

三個模組能同時跑。整合測試裡,一台標準的 AMD Ryzen 7 筆電,平均 CPU 負載壓在 65% 以下,三個模組的處理延遲分別低於 100、150、120 毫秒,網頁介面上的即時影像也沒有明顯卡頓。

三個模組用的是同一套思路。少了深度感測器,就用臉的面積、用單目深度模型去換;少了朝下的鏡頭,就貼一面鏡子;少了 GPS,就在地上畫一條線、用視覺去讀。硬體上缺的那一塊,每次都拿現成的開源模型或一點幾何巧思補回來。整套系統用的都是市售零件和開放原始碼。

作者也點出目前最大的限制:所有推論和控制其實都跑在外接的筆電上,Tello 自己的機載算力扛不動。下一步他們想把運算搬上機,換成 NVIDIA Jetson Nano 或 Google Coral 這類嵌入式 AI 硬體,讓無人機真正獨立自主。

論文本身把定位講得很清楚:它不是為軍事或戰術用途而做的。但作者也直接寫下,室內掃描、自主人員追蹤、循線導航這些能力,可以支援監控、後勤、偵察一類任務,在封閉或收不到 GPS 訊號的環境裡尤其派得上用場,是民用與「半軍事」情境都值得往下開發的原型。

那,這種無人機會變成暗殺工具嗎?

順著這個問題往下想之前,得先把這台原型和「武器」之間的距離講清楚。這篇論文做出來的東西不會拿去殺人。Tello 是一台室內用的微型無人機,載重幾乎可以忽略,續航也短;它的 AI 全跑在一台筆電上,無人機必須待在筆電的無線連線範圍內,也就是幾十公尺;整套系統是在室內測的,本身沒有任何攻擊能力。當成一件殺傷武器來看,它每一項都不及格。

會外溢到別處的,是那套能力,不是這台機身。找到一個人、鎖定一張特定的臉、在對方移動時持續咬住、沒有 GPS 也能導航,這些過去得靠昂貴感測器和一個熟練操作手才做得到的事,這篇論文示範了它們如今又便宜、又開源,還能跑在一顆普通的 CPU 上。把這層感知移植到一台載得動酬載的較大無人機上,就等於拿掉了定點攻擊過去的兩道門檻:全程盯著看的飛手,以及當下靠人眼確認目標的那一步。

這不是憑空的想像。低成本的 FPV 無人機和遊蕩彈藥,已經在烏克蘭戰場上證明了小型無人機能以極低的代價找到並命中移動目標;資安與軍控研究者多年來也不斷示警臉部辨識加自主鎖定的「殺手機器人(slaughterbots)」情境;公開報導裡,用小型無人機針對特定個人的攻擊嘗試也發生過。自主能力拉低的門檻,落在技術和距離這兩件事上:不再需要一個受過訓練的飛手,也不再需要全程保持目視。

同一份開放,讓這項研究有價值,也讓這項能力擴散。開源的模型、公開的程式碼、貨架上就買得到的零件,這些正是研究能被複製、被推進的原因,你沒辦法把一個深度模型或一個臉部編碼器收回去。於是應對的重點落在防禦和治理那一側:反無人機的偵測與干擾、電子圍籬、對那些能把攝影無人機改裝成武器的零件與酬載加以管制,以及對自主致命鎖定訂出規範。這篇論文的份量,在於標記出門檻已經降到多低:十年前還鎖在研究室裡的感知能力,現在裝得進一台玩具。這台機器會不會變成威脅,答案不在論文裡。要看的是有沒有人把該裝的東西裝上去、有沒有人盯著它。