機器數據分析就地安全監視
提高網絡物理安全和增加安全系統的努力已形成一個不斷發展的行業,該行業致力于超越這一挑戰。閉路電視模擬攝像機正快速被更高清晰度、功能豐富的數字攝像機所取代,以便實現基于圖像的安全系統。相比之下,數字攝像機更靈活、更智能,能夠與云服務和數據分析更緊密地集成在一起。本文將介紹就地安全監視,它與基于云的數據分析相結合,使得在沒有電源或網絡基礎架構的區域快速部署監視成為了可能。
在不久的將來,我們可能依賴于快速演變的 “機器到機器” 基礎架構,它的高級感知能力與人類的能力不相上下(有時甚至超越了人類的能力)。智能運輸系統和自主駕駛汽車就是證明。豐田和奧迪已與谷歌聯手,在內華達州測試類似的技術。
如今,通過使用高成本的光探測和測距 (LIDAR) 技術,再結合更簡單的儀表和軟件,就可以實現自主操作。但這種裝置的成本在不斷下降,可見光譜計算機視覺解決方案也有降低實現成本的潛力。
還有一些更有趣的應用,比如使用車輛發送車隊行為來優化交通流,使用車輛與基礎架構進行通信,比如交通控制系統(例如紅燈)、機場空中交通控制設備,以及建筑、道路、港口、機場和運輸系統中的基礎架構傳感器、自動化或控制系統。
一種已實現的成果是,沒有人需要為了收費而停車或減速。此技術稱為機器間自動化。
擁堵和游客擁擠的走廊地帶(比如加利福尼亞州的 5 號州際公路)都能從貨車運輸的車隊自動化中受益。在不到 10 年的時間內,私家車或許就能夠利用此功能(參見 參考資料)。谷歌汽車存在已有超過 8 年的時間,自斯坦福大學的 Sebastian Thrun 團隊贏得 2005 年美國國防高級計劃研究署挑戰賽以來,谷歌汽車就一直在運行。
在不太擁堵的地方,比如阿拉斯加,可借助機器間高級感知來監視北極圈的活動,為港口提供更好的安全保護,執行環境調查和保護資源,以及探索北坡油田的能源(參見 參考資料)。
在一些最偏遠、嚴酷和擁堵的環境中,有可能實現機器間系統最大的優勢。在這些地方,自動化帶來的節省會迅速超過初始成本。對于基礎架構更加受限的遠程應用,就地自供電安全監控器能夠發揮其最大的價值。
就地傳感器網絡也已經開發出來一段時間了。或許最為人熟知的就地傳感器網絡是通常被稱為微粒 (mote) 的傳感器網絡,比如 Berkeley Network Embedded Systems Technology (NEST) 和 Smart Dust 項目。類似地,借助采用了從熱成像到 x 射線的全光譜的自動化技術,機器視覺也已經有了數十年的應用歷史。在檢查制造工藝和改善遠程操作的安全上,機器視覺通常優于人類的能力。
本文主要將介紹機器間系統的低成本 3D 和多光譜呈現的就地部署。
就地計算機視覺的價值
許多安全應用可以從市區外圍的電力和數據網絡基礎架構上存在的計算機和機器視覺中獲益。
一個簡單的示例是野外作業,比如阿拉斯加北坡油田開展的能源生產和勘探,以及針對管道(提議的新的天然氣管道)開展的野外作業。另一個示例是災區,這里的電力和數據基礎架構都已損壞。環境合規性、資源管理和調查(由美國的 U.S. Geological Survey 處理;參見 參考資料)涉及到現場數據收集。最終,能源和數據未全面開發的建設項目也可以從就地計算機視覺中獲益。
在過去,安全服務依賴于在高成本、低頻率之上的無人駕駛飛機、人類徒步旅行和艱巨的地面導航。要提供真正有用的數據,就地計算機視覺平臺必須提供與人類相匹敵的、甚至超越人類的觀察力,將視覺擴展到紅外光譜,采用 3D 成像來生成測距和環境的點云模型(參見參考資料)。
點云(point cloud)基于多個攝像機的觀察結果提供了一個場景的 3D 數據模型,通常與雙目取景攝像機一起使用,或者通過多個攝像機從多個協調的視角對同一個場景進行觀察。任何可就地放置(或許裝在三腳架上)或裝在樹上的攝像機都可以經過調整用在無人操縱的天線系統中。想象一臺類似于流行的 GoPro 可穿戴攝像機的多光譜 3D 攝像機(參見 參考資料),但內置了更復雜的探測器和計算能力。
我正在與一些研究贊助商、科羅拉多大學和阿拉斯加大學安克雷奇分校的研究生和大學生一起致力于這種設備的研究。盡管可以使用現成的硬件和軟件創建這樣一種設備,但我們團隊認為我們需要更好的資源。后續幾個小節將介紹各個步驟和所需的技術。
如何構建就地 3D 攝像機
構建一個現成的就地 3D 攝像機很簡單。但是,要讓設備變得實用,則必須讓計算機視覺處理的電源需求、大小、上線鏈路機制、數據存儲和智能切實可行。要使用開源軟件和現成的硬件構建這個設備,必須集成以下組件:
計算光度計開放硬件可以使用來自 Texas Instruments 的運行 Linux® 的 BeagleBoard xM 平臺輕松地構建。實際上,我為此用途預先配置了一個基于 Ubuntu 和 Debian 的預先構建的發行版。我使用這個簡單的處方作為大學課程的移動、嵌入式計算機視覺教學和試驗工作的平臺。xM 平臺有一個針對高清攝像機的內置數字攝像機端口。
BeagleBoard xM 的固態存儲錄制只需要 Linux 文件系統上的文件系統空間或具有正確的編解碼器(使用 Texas Instruments Open Multimedia Applications Platform [TI-OMAP] 硬件加速,分別使用 MPEG 和 JPEG 來壓縮數字視頻和圖像的編碼和解碼軟件)的外部 USB 閃存驅動器。
GStreamer 從計算光度計傳輸無法存儲或必須存儲在云中的視頻。這是參與 Open Computational Photometer 項目的學生研究者打算集成到未來參考 Linux 配置中的一個新特性。
為攝像機接口集成現場可編程門陣列 (FPGA) 或 GPU 協處理,是一個為 Open Computational Photometer 概念的低功耗、高度并行化的像素轉換提供支持的關鍵特性。該項目使用 Altera Development and Education 主板 DE0 和 DE2i。這個集成步驟比較復雜,但很重要,科羅拉多大學和阿拉斯加大學安克雷奇分校的 Open Computational Photometer 項目需要構建自定義硬件,并使用它們作為我們的研究贊助商的開放硬件參考設計來發布。
開放計算光度計的就地部署需要 BeagleBoard xM TI-OMAP 和 FPGA 協處理的電池電源。所幸,許多移動 Linux 用戶已經為 BeagleBoard xM 發明了許多電池電源選項。類似地,Altera 擁有 DE0 Nano 的合適的電池供電解決方案。
無線上行鏈路擁有簡單的現成的 USB 設備解決方案,包含 Xbee、ZigBee 和蜂窩調制解調器 GSM(參見 參考資料)。我們面臨的挑戰在于:支持來自非常遠的位置,通過 MPEG 傳輸帶寬(從 1Mbps 到標清視頻)實現的無線上行鏈路。來自 H.265(2013 年發布的標準)和 H.264 的更高壓縮率將會提供一些幫助,但上行鏈路得到的是有損視頻。市區部署無疑要容易得多,可能只需使用一個 802.11 USB 適配器和一個市區無線熱點。
開放計算光度計的就地部署還需要先進的 Linux 電源管理和感知。需要做的工作比這里介紹的要多得多,但起點仍然是多用途輸入/輸出 (I/O),能夠在不使用時關閉外部設備(參見 參考資料)。使用 Altera DE0 和 DE0 Nano 實現開放計算光度計中的圖像處理特性的一個主要原因是,與數字攝像機端口或 USB 攝像機相比,它具有更高效率的幀轉換。
自定義雙目取景接口板不是一個現成的元素。科羅拉多大學和阿拉斯加大學安克雷奇分銷的團隊正在努力將這個接口板構建為開放硬件。自定義雙目取景接口板尚未公開,但我們打算發布一個參考設計,希望確定一家供應商,讓自定義雙目取景接口板可通過大學計劃購買和供開發人員使用,就像 DE0 一樣。公眾有望在 2014 年,在我們測試了第一個修訂版之后看到它。該團隊最終決定構建攝像機接口板,原因如下:
下至信號級別的完全開放的設計(用于教育);
來自兩個或多個攝像機的全面協調了時間的圖像捕獲,實現準確的時間和圖像注冊;
可靠的幀率和緩沖延遲。
最重要的方面是,攝像機數據路徑直接向一個 FPGA 先入先出 (FIFO) 緩沖區提供數據,以便實現并發執行狀態機驅動的像素轉換,而不是成本高得多的基于 CPU 的轉換。這里所采用的理念是,讓 FPGA 執行與計算機視覺協處理器一樣多的低級逐像素轉換,這非常類似于 GPU 卸載光柵圖的低級處理方面。我們將 FPGA 視為一個計算機視覺處理單元 (CVPU)。
這絕不是計算光度計技術所需組件的完整列表,您可以在 參考資料 中找到更多的組件。這里的目標是調整您對計算攝影和光度計的看法,降低成本,讓計算 3D 和多光譜就地部署的儀器更方便用于教育研究。
計算光度計的設計概念
在許多大學的嵌入式系統和 Capstone 程序中,學生通常基于抓幀器(以及我改編自 Linux 的針對 Bt878 的 VxWorks 驅動程序)來構建立體視覺系統。
Capstone 學生還構建了自定義接口解決方案,但攝像機通常難以(全幀率)集成,難以嵌入用于移動用途,或者難以處理,因為它們是具有糟糕的文檔專用硬件。低成本現成網絡攝像機和移動攝像機的其他挑戰包括:有線的高級光學配置選項(大多數鏡頭都是內置的,您必須忍受它們)、笨拙的封裝,以及讓計算機視覺難以實現的幀編碼(例如沒有原始 RGB 或 YUV 輸出的 MJPEG)。
舊的模擬 National Television System Committee (NTSC) 攝像機和 Bt878 等抓幀器仍然是更好的選擇之一,它們具有大范圍 NTSC 色彩、一致的幀率、針對直接內存存取 (DMA) 和中斷的低級驅動程序集成,以及大量的光學和互補金屬氧化物半導體 (CMOS)/電荷耦合器件 (CCD) 探測器,這些探測器價格從 10 美元到 1,000 美元不等,但對更高成本的攝像機而言,它們具有明確的光學優勢。
網絡攝像頭是一種糟糕的替代選擇 — 專用、固定的光學器件;不一致的幀率和緩沖;有限的文檔;以及與使用 Alpha、Red、Green 和 Blue (ARGB) 通道實現色彩像素照度(例如 YCbCr)相比有損的像素色彩格式。此外,在教育研究方面,直接通過 FIFO 傳輸捕獲的像素數據是一個理想選擇,它具有高度并發的 FPGA 狀態機操作,以及高度準確的立體視覺雙通道協調、時間戳和注冊。
任何這些選擇似乎都無法即取即用,所以我們啟動了一個項目,為 Altera FPGA 板的 DE 行構建了一個雙通道模擬攝像機捕獲板(使用 Texas Instruments TVP 解碼器)。此項目的目標是使用可供教育研究機構用于計算光度測定的開放硬件。Camera Link(參見 參考資料)等替代選擇可通過子卡用于更高端的 Altera DE4 接口板,但此解決方案的費用很高,不適合學生。該項目的一個目標是使雙通道子卡的成本不高于一本教材。
圖 1 顯示了開放計算光度計的概念設計。要注意的關鍵特性是,模擬攝像機直接通過雙 Texas Instruments 模擬視頻解碼器向 DE0 或 DE2i I/O 標頭和 FPGA FIFO 提供數據。
此配置使得開放計算光度計 FGPA 設計能夠轉換 FIFO 中的數據,并為 DE2i 上的交叉鏈接生成有關聯的類似元數據的時間戳,通過 PCIe 將它們傳輸到 Intel Atom 多核微處理器,或者通過雙 USB 2.0 鏈接將它們傳輸到 TI-OMAP BeagleBoard 處理器(或任何 Linux 筆記本電腦)。
開放計算光度計包含對 USB Video Class (UVC) 驅動程序的更新,以便允許這個自定義的雙目取景攝像機輕松地與 Linux 連接。將來可能會發布有關的更多技術信息,參考設計將通過一個與我們的行業供應商合作的大學計劃公開。此設計的具體工作原理有待確定,但我們計劃在 2014 年春季進行測試和集成,希望在 2014 年某個時刻發布它。
圖 1. 包含部分現成組件的開放計算光度計:設計概念
那么為什么僅對計算光度計使用網絡攝像頭、OpenCV 和 Linux 呢?
OpenCV 是 Intel 開發且開源的 Open Computer Vision 應用編程接口 (API),它的誕生是因為研究計算機視覺和交互式系統的大學發現能夠從可重用的圖像處理算法中獲得巨大好處。基于大量優秀的 OpenCV 參考資料,我創建了一個立體網絡攝像頭示例(參見 下載)。
這個示例可以運行,但您可能會發現,幀率不是固定的 29.97Hz,比如 NTSC 閉路攝像機所提供的色彩。幀率可能是變化的。其次,所有幀轉換都在通過從網絡攝像頭到 Linux CPU 的直接內存存取 (DMA) 來訪問數據后完成。假設它們在時間上大體同步(或許是一種安全的假設,除非它是一種高速運動場景)。
CPU Canny 邊緣轉換(甚至是模糊化、銳化和像 Hough linear 這樣更高級的轉換)的真實問題是,CPU 未針對此處理而進行優化。非常類似于 GPU 通過矢量處理和專門構建的多核流處理器,需要從 CPU 卸載呈現數據的光柵化工作,我們還構想了一個 CVPU,Khronos 也是如此 (OpenVX)。
這種卸載 OpenCV 的專門構建的協處理具有很大的優勢。OpenCV 擁有使用 GPU 和通用 GPU 的硬件加速特性,但為什么不直接在來自攝像機的路徑上應用此處理,而不用執行從攝像機到 CPU,到 GPU,再返回到 CPU 的 I/O。
直接與低成本攝像機連接的協處理器非常有用 — 而且可通過 Camera Link 和 DE4 子卡實現,但成本比教材更高(相當于一個高端網絡攝像頭)。現在,讓我們繼續看看 Linux 筆記本電腦上的網絡攝像頭和 OpenCV(如果還沒有網絡攝像頭,最多花 60 美元),探索更多的選擇。我使用了 Logitech C270 網絡攝像頭(參見 參考資料)。
使用 OpenCV 和網絡攝像頭獲取幀和生成視差圖
網絡攝像頭立體視覺的另一個挑戰是計算攝像機的方方面面,這需要基于雙目視差來計算與物體的距離。此過程很復雜,需要觀察參照場景(OpenCV 棋盤),以便參照物理坐標來校準攝像機像素坐標,計算攝像機光學維度(探測器尺寸和焦距),考慮一個基準面上兩個分開的焦平面的任何平面外朝向。
圖 2 描繪了立體視覺測距修正計算,以便完美地放平攝像機(探測器位于由一個已知基準線分開的相同平面上,已知的探測器尺寸和焦距是相同的)。攝像機中的非線性和畸變(球面像差 — 魚眼或沙漏場景畸變),以及平面外探測器及攝像機探測器和焦距差異,都會導致簡單三角測定結果的重大錯誤。
此外,對于網絡攝像頭,您可能很難找到焦距和探測器尺寸(除了通過攝像機的間接描述)。學習 OpenCV 的第 12 章和大量優秀的 OpenCV 參考資料都非常詳細地介紹了此主題(參見 參考資料)。
圖 2. 簡單的平面立體三角測定法
圖 2 顯示了如何通過一個中心交點像素,計算距離每個攝像機探測器上已注冊的某個物體的距離。(需要執行一些處理才能找到交點。本文未介紹此主題,但您可以在 OpenCV samples/cpp/stereo_match.cpp 中了解有關的更多信息。)該圖是概念性的,僅適用于完美對齊的攝像機和焦平面(一種幾乎不可能的壯舉),但該圖展示了得出與雙目取景攝像機觀察到的物體的距離的基本數學運算概念,比如這里提議的攝像機或兩個簡單的網絡攝像頭。
學習 OpenCV 中的第 12 章和 stereo_match.cpp 提供了更好的計算示例;事實上,stereo_match.cpp 可從左側和右側圖像生成一個點云。除了準確對齊之外,雙目取景攝像機的光學原理模型也非常有用。但是,對于更好的光學設計,仍然需要每個相機的特征描述和校準,OpenCV 在這方面提供了很好的支持。
類似于立體測距,兩個攝像機(或雙眼)看到左側和右側圖像上相同的對象偏移,該偏移與從攝像機基準線到所觀察到的(相同)物體的距離成比例。這是一個主要的距離線索,有助于對距離附近物體的距離進行準確判斷,對較遠的物體進行不那么準確的判斷。如 圖 3 中所示,您可以計算一個視差圖,根據左側和右側圖像中的相同點之間的視差為某個灰階映射圖像著色。
該示例有許多由于錯誤對齊而導致的錯誤,由于對象(我 3 歲的兒子)的快速移動和缺乏校準,導致右側圖像模糊,但它至少生成一個視差估算結果。通過花費大量精力來了解 OpenCV 中的視差算法中的參數,使用三腳架或光具座來校準和對齊攝像機,我們可得到一個不錯的視差圖。
圖 3. 來自網絡攝像頭軟件的右側、左側和視差圖
stereo_capture.cpp 下載(參見 下載 中的 example-stereo.zip)的主要作用是支持您試驗并學習 OpenCV,還突出了非專用的、包含計算協處理器的高質量的低成本雙目取景攝像機的價值。如上所述,網絡攝像頭的幀率通常不可靠。
圖 4. 網絡攝像頭通常具有的較低并且不一致的幀率
科羅拉多大學博爾德分校和阿拉斯加大學安克雷奇分校開展的計算光度計工作的目的是,創建一種參考設計供其他對計算機視覺、儀器構建和設計感興趣的研究人員和教育者使用。該項目的重點工作是可視 3D 圖像捕獲,但我們希望這會開啟更多學術性開放硬件工作,以便提供多光譜計算光度計,尤其是紅外光度計。舉例而言,這可能對阿拉斯加的北極圈冰層觀察很有用。請參閱本文的備注部分,獲取有關的更新。
結束語
就地高級計算機視覺系統在安全應用中有很高的應用價值。歡迎與我們一起,通過即將公布的大學和開發人員計劃為開放硬件和 Open Computational Photometer 項目提供支持。盡管我們的設計不太完美,非常類似開源 Linux,但每個人都可以訪問并改進它。
高質量、價格合理的立體計算機視覺將可供所有人使用。當然,它的價值不僅體現在安全方面,還包含簽名等應用(例如,利用無人駕駛飛行器評估谷物損害和自動化的噴灑殺蟲劑)。對于地球物理調查和監視,創建高質量 3D 圖像和模型的能力對航道監視、火山爆發、森林和生態系統都很有價值。對于遠程社交互動,這些設備對遠距離醫學和社交網絡應用具有很大的價值。
仍然存在的一個挑戰是如何提供和顯示 3D 信息。在這方面,Point Cloud Library 提供了豐富的選項以及越來越龐大的消費者顯示信息池。我們將進一步探索這些主題,考慮低成本的硬件加速計算光度測定方面的一些建議。
就地計算光度計和數字視頻分析處理在云中的應用才剛剛開始。提供一個更安全的世界的前景激動人心。與此同時,許多人擔憂不再有隱私。請記住, 全球 70 多億人都是有機的、雙目取景視覺系統,他們每天都在侵犯您的隱私。