邊緣計算機視覺(jué)可以實(shí)現 AI
文章來(lái)源:EDC
作者:Reese Grimsley德州儀器系統應用工程師
使用邊緣AI處理解碼條形碼的條形碼掃描儀示例
計算機視覺(jué)是指將人類(lèi)視覺(jué)(一種信息豐富且直觀(guān)的傳感器)引入計算機的技術(shù)目標,使裝配線(xiàn)檢查、安全系統、駕駛員輔助和機器人等應用成為可能。
不幸的是,計算機缺乏像人類(lèi)那樣直覺(jué)視覺(jué)和圖像的能力。相反,我們必須為計算機提供算法來(lái)解決特定領(lǐng)域的任務(wù)。
我們經(jīng)常認為我們的愿景是理所當然的,以及這種生物能力如何解釋我們的周?chē)h(huán)境,從看冰箱檢查食物保質(zhì)期到專(zhuān)心觀(guān)察紅綠燈變綠。
計算機視覺(jué)可以追溯到 1960 年代,最初用于從頁(yè)面讀取文本(光學(xué)字符識別)和識別圓形或矩形等簡(jiǎn)單形狀等任務(wù)。此后,計算機視覺(jué)已成為人工智能(AI)的核心領(lǐng)域之一,它涵蓋了任何試圖從數據中感知,合成或推斷更深層次含義的計算機系統。有三種類(lèi)型的計算機視覺(jué):傳統或“基于規則”、經(jīng)典機器學(xué)習和深度學(xué)習。
在本文中,我將從讓計算機使用視覺(jué)來(lái)更像人類(lèi)一樣感知世界的角度來(lái)考慮人工智能。我還將描述每種類(lèi)型的計算機視覺(jué)的權衡,特別是在本地收集、處理和處理數據的嵌入式系統中,而不是依賴(lài)基于云的資源。
傳統計算機視覺(jué)
傳統的計算機視覺(jué)是指解決運動(dòng)估計、全景圖像拼接或線(xiàn)條檢測等任務(wù)的編程算法。
傳統的計算機視覺(jué)使用標準的信號處理和邏輯來(lái)解決任務(wù)。Canny邊緣檢測或光流等算法可以分別找到運動(dòng)的輪廓或矢量,這對于隔離圖像中的對象或后續圖像之間的運動(dòng)跟蹤非常有用。這些類(lèi)型的算法依賴(lài)于過(guò)濾器、轉換、啟發(fā)式和閾值,從圖像或視頻中提取有意義的信息。這些算法通常是特定于應用程序的算法的前身,例如解碼一維條形碼中的信息,其中一系列規則在檢測到單個(gè)條形時(shí)對條形碼進(jìn)行解碼。
傳統的計算機視覺(jué)在其簡(jiǎn)單性和可解釋性方面是有益的,這意味著(zhù)開(kāi)發(fā)人員可以在每一步分析算法并解釋算法為什么會(huì )如此。這在軟件審核或安全關(guān)鍵型應用程序中非常有用。然而,傳統的計算機視覺(jué)往往需要更多的專(zhuān)業(yè)知識才能正確實(shí)現。
算法通常具有一小組參數,需要調整這些參數才能在不同環(huán)境中實(shí)現最佳性能。實(shí)施可能很困難,特別是對于優(yōu)化的高通量應用程序。某些規則、算法決策或參數值可能會(huì )對不符合原始期望的圖像產(chǎn)生意想不到的影響,從而有可能欺騙算法。如果不暴露新的邊緣情況或增加算法的復雜性,此類(lèi)漏洞和邊緣情況可能很難修復。
用于計算機視覺(jué)的經(jīng)典機器學(xué)習
機器學(xué)習是一類(lèi)算法,它使用數據在算法中設置參數,而不是直接編程或校準。這些算法,如支持向量機、多層感知器(人工神經(jīng)網(wǎng)絡(luò )的前身)和k-最近鄰,被用于傳統計算機視覺(jué)難以解決的應用。例如,在傳統的計算機視覺(jué)算法上編程“識別狗”是一項艱巨的任務(wù),尤其是在存在復雜場(chǎng)景和物體的情況下。訓練機器學(xué)習算法以從 100 秒或 1000 秒的樣本圖像中學(xué)習參數更容易處理。通過(guò)使用包含這些邊緣情況示例的數據集來(lái)解決邊緣情況。
訓練是計算密集型的,但在新數據上運行算法需要的計算資源要少得多,因此可以實(shí)時(shí)運行。這些經(jīng)過(guò)訓練的模型通常具有較低的可解釋性,但對數據中的小計劃外變化(例如對象的方向或背景噪音)更具彈性??梢酝ㄟ^(guò)使用更多數據重新訓練來(lái)修復無(wú)法很好地處理的變體。具有更多參數的較大模型通常具有更高的精度,但具有更長(cháng)的訓練時(shí)間以及運行時(shí)所需的更多計算,這在歷史上阻止了非常大的模型在嵌入式處理器上的實(shí)時(shí)應用程序中使用。
基于機器學(xué)習的經(jīng)典計算機視覺(jué)方法仍然需要專(zhuān)家來(lái)“制作”訓練機器學(xué)習模型的特征集。其中許多功能在傳統的計算機視覺(jué)應用程序中是通用的。并非所有功能都有用,因此需要分析以修剪無(wú)信息功能。有效實(shí)現這些算法需要圖像處理和機器學(xué)習方面的專(zhuān)業(yè)知識。
深度學(xué)習
深度學(xué)習是指在大部分未處理或“原始”數據上運行的非常大的神經(jīng)網(wǎng)絡(luò )模型。深度學(xué)習通過(guò)將特征提取操作拉入模型本身,對計算機視覺(jué)產(chǎn)生了巨大影響,從而使算法根據需要學(xué)習信息量最大的特征。圖1顯示了每種計算機視覺(jué)方法中的數據流。
圖1. 每種計算機視覺(jué)方法中的數據流
深度學(xué)習在計算機視覺(jué)類(lèi)型中具有最普遍性;神經(jīng)網(wǎng)絡(luò )是通用函數逼近器,這意味著(zhù)它們能夠學(xué)習輸入和輸出之間的任何關(guān)系(只要存在這種關(guān)系)。深度學(xué)習擅長(cháng)在數據中發(fā)現微妙和明顯的模式,并且對輸入變化最寬容。物體識別、人體姿勢估計和像素級場(chǎng)景分割等應用是常見(jiàn)的用例。
深度學(xué)習需要最少的直接調諧和圖像處理專(zhuān)業(yè)知識。這些算法依賴(lài)于大型和高質(zhì)量的數據集,通過(guò)逐步找到在訓練期間優(yōu)化損失或錯誤指標的參數來(lái)幫助通用算法學(xué)習模式。新手開(kāi)發(fā)人員可以有效地利用深度學(xué)習,因為重點(diǎn)從算法的實(shí)現轉移到數據集管理。此外,許多深度學(xué)習模型是公開(kāi)可用的,因此可以針對特定用例對其進(jìn)行重新訓練。使用這些公開(kāi)可用的模型很簡(jiǎn)單;但是,開(kāi)發(fā)完全自定義的體系結構確實(shí)需要更多的專(zhuān)業(yè)知識。
與傳統的計算機視覺(jué)和經(jīng)典機器學(xué)習相比,深度學(xué)習具有更高的準確性,并且由于在研究(以及不斷增長(cháng)的商業(yè))社區中的巨大普及而迅速提高。然而,深度學(xué)習通常具有較差的可解釋性,因為算法非常大且復雜;與訓練數據集完全不同的圖像可能會(huì )導致意外、不可預測的行為。由于它們的大小,深度學(xué)習模型的計算量非常大,因此需要特殊的硬件來(lái)加速它們的實(shí)時(shí)操作。在大型數據集上訓練大型模型的成本可能很高,并且管理大型數據集通常既耗時(shí)又乏味。
然而,處理能力、速度、加速器(如神經(jīng)處理單元和圖形處理單元)的改進(jìn),以及對矩陣和矢量運算的軟件支持的改進(jìn),使得計算需求的增加變得不那么重要,即使在嵌入式系統上也是如此。AM6xA 產(chǎn)品組合等嵌入式微處理器利用硬件加速器以高幀速率運行深度學(xué)習算法。
比較不同類(lèi)型的計算機視覺(jué)
那么哪種類(lèi)型的計算機視覺(jué)最好呢?
這最終取決于其應用,如圖 2 所示。
圖2. 計算機視覺(jué)類(lèi)型及其應用
簡(jiǎn)而言之,對于大多數屬性,具有經(jīng)典機器學(xué)習的計算機視覺(jué)介于其他兩種方法之間;與其他兩種方法相比,受益的應用程序集很小。傳統的計算機視覺(jué)在簡(jiǎn)單、高通量或安全關(guān)鍵型應用中可以足夠準確和高效。深度學(xué)習是最通用的,最容易開(kāi)發(fā)的,并且在復雜的應用和環(huán)境中具有最高的精度,例如在高密度設計的PCB組裝驗證期間識別微小的缺失組件。
一些應用程序受益于串聯(lián)使用多種類(lèi)型的計算機視覺(jué)算法,以便它們覆蓋彼此的弱點(diǎn)。這種方法在處理高度可變環(huán)境的安全關(guān)鍵應用中很常見(jiàn),例如駕駛員輔助系統。例如,您可以使用傳統的計算機視覺(jué)方法和深度學(xué)習模型來(lái)跟蹤附近的車(chē)輛,并使用算法融合結果以確定這兩種方法是否相互一致。如果他們不這樣做,系統可以警告駕駛員或開(kāi)始優(yōu)雅的安全操作?;蛘?,可以按順序使用多種類(lèi)型的計算機視覺(jué)。條形碼閱讀器可以使用深度學(xué)習來(lái)定位感興趣的區域,裁剪這些區域,然后使用傳統的CV計算機視覺(jué)算法進(jìn)行解碼。
計算機視覺(jué)實(shí)踐
計算機視覺(jué)的進(jìn)入門(mén)檻正在逐步降低。OpenCV 等開(kāi)源庫提供了邊緣檢測和顏色轉換等常見(jiàn)功能的高效實(shí)現。像tensorflow-lite和ONNX運行時(shí)這樣的深度學(xué)習運行時(shí)使深度學(xué)習模型能夠在嵌入式處理器上高效運行。這些運行時(shí)還提供了自定義硬件加速器可以實(shí)現的接口,以簡(jiǎn)化開(kāi)發(fā)人員在準備將算法從 PC 或云上的訓練環(huán)境移動(dòng)到嵌入式處理器上進(jìn)行推理時(shí)的體驗。許多深度學(xué)習架構也是公開(kāi)發(fā)布的,因此它們可以重用于各種任務(wù)。
德州儀器 (TI) AM6xA 產(chǎn)品組合中的處理器(如 AM62A7)包含深度學(xué)習加速硬件以及針對各種傳統和深度學(xué)習計算機視覺(jué)任務(wù)的軟件支持。C66x 等數字信號處理器內核和用于光流和立體深度估計的硬件加速器也支持高性能的傳統計算機視覺(jué)任務(wù)。
借助能夠同時(shí)進(jìn)行傳統和深度學(xué)習計算機視覺(jué)的處理器,可以構建可與科幻夢(mèng)想相媲美的工具。自動(dòng)購物車(chē)將簡(jiǎn)化購物;手術(shù)和醫療機器人將引導醫生發(fā)現疾病的早期跡象;移動(dòng)機器人將修剪草坪并運送包裹。如果您可以設想它,那么您將要構建的應用程序也可以。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。