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