在過去的幾年里,深度學(xué)習(xí)已經(jīng)成為人工智能領(lǐng)域發(fā)展最快的領(lǐng)域之一,它已經(jīng)取得了顯著的成果,特別是在計(jì)算機(jī)視覺領(lǐng)域中。
例如,自動(dòng)駕駛汽車,使計(jì)算機(jī)用接近人類的能力來識(shí)別物體。工程界對(duì)OpenCV的評(píng)價(jià)非常高,因?yàn)樗俗钕冗M(jìn)的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)算法。
當(dāng)深度學(xué)習(xí)技術(shù)部署到機(jī)器和物聯(lián)網(wǎng)設(shè)備中時(shí),你將運(yùn)行預(yù)先訓(xùn)練的深度學(xué)習(xí)模型。世界級(jí)的計(jì)算機(jī)視覺軟件和運(yùn)行深度學(xué)習(xí)模型的能力,都是在廉價(jià)的硬件上實(shí)現(xiàn)的。
OpenCV是一個(gè)開源的計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫(kù),它可能是目前最流行的計(jì)算機(jī)視覺軟件,該庫(kù)有超過2500個(gè)優(yōu)化算法,其中包括經(jīng)典和最先進(jìn)的計(jì)算機(jī)視覺及機(jī)器學(xué)習(xí)算法,這些算法可以用來檢測(cè)和識(shí)別人臉,識(shí)別物體,對(duì)視頻中的人類行為進(jìn)行分類,跟蹤攝像機(jī)運(yùn)動(dòng)和移動(dòng)物體等。
OpenCV是用C++編寫的,你也可以為OpenCV使用Python包裝器。OpenCV還具有與Java和MATLAB的接口,并且受Windows、Linux、Android和macos的支持。
OpenCV神奇的深度學(xué)習(xí)
OpenCV的深度學(xué)習(xí)模塊被稱為DNN,現(xiàn)在DNN模型并不是一個(gè)成熟的深度學(xué)習(xí)框架。
DNN沒有反向傳播,所以我們無(wú)法使用它訓(xùn)練任何深度學(xué)習(xí)網(wǎng)絡(luò)。我們可以獲取一個(gè)輸入數(shù)據(jù),通過之前訓(xùn)練過的深度神經(jīng)網(wǎng)絡(luò)模型,然后進(jìn)行前向計(jì)算得到輸出結(jié)果。
這就是所謂的推理。在深度學(xué)習(xí)術(shù)語(yǔ)中,這意味著只有前向傳播。
只有前向傳播也有好處,這會(huì)使得代碼更簡(jiǎn)單,深度學(xué)習(xí)網(wǎng)絡(luò)的安裝和組裝速度更快,在CPU上也足夠快。DNN模塊的OpenCV支持Caffe、TensorFlow、Torch、Darknet和ONNX格式的模型。由于OpenCV的深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)不依賴于一個(gè)框架,因此沒有框架的限制。
另一個(gè)優(yōu)點(diǎn)是,由于這是模型的內(nèi)部表示,因此OpenCV開發(fā)人員可以有辦法來優(yōu)化和加速代碼。隨著OpenCV實(shí)現(xiàn)了自己的深度學(xué)習(xí)實(shí)現(xiàn),這將外部依賴性降低到最低。一個(gè)簡(jiǎn)單的推理機(jī)將簡(jiǎn)單地通過網(wǎng)絡(luò)傳遞輸入數(shù)據(jù)來得到輸出結(jié)果。
然而,有許多優(yōu)化可以執(zhí)行,使推理速度更快。例如,一個(gè)高效的推理機(jī)可以刪除神經(jīng)網(wǎng)絡(luò)中未激活的部分,或者將多個(gè)層合并到一個(gè)單獨(dú)的計(jì)算步驟中。如果硬件支持16位浮點(diǎn)運(yùn)算,其速度通常是32位版本的兩倍,則推理機(jī)可以利用這一點(diǎn)來加快處理速度,而幾乎不會(huì)損失精度。
現(xiàn)在在物聯(lián)網(wǎng)和邊緣設(shè)備的世界里,世界上大多數(shù)推理都是在CPU上完成的。你不會(huì)在你的監(jiān)控?cái)z像頭里放一個(gè)幾百美元的GPU,這就是OpensCV的深度學(xué)習(xí)模塊非常適合的原因。你只需運(yùn)行一個(gè)自主選擇的深度學(xué)習(xí)模型作為推理機(jī)。
英特爾為此投入了大量資金,并發(fā)布了OpenVINO工具包。OpenVINO或openvisualinferencing and Neural network Optimization,簡(jiǎn)稱OpenVINO,旨在加速神經(jīng)網(wǎng)絡(luò)在圖像分類和目標(biāo)檢測(cè)等任務(wù)中的速度。
那么背后發(fā)生了什么呢?
加載模型后,它們將轉(zhuǎn)換為OpenCV中的內(nèi)部表示形式,這與Caffe非常相似。
如果我們轉(zhuǎn)到OpenCV網(wǎng)站,我們可以看到它支持幾個(gè)基本的神經(jīng)網(wǎng)絡(luò)層。它還包含了池化層、激活函數(shù),比如Tanh、ReLU、Sigmoid和Softmax,還有Reshape, Flatten, Slice, 和Split等函數(shù)。
在opencv的Deep Learning wiki中,你可以看到對(duì)經(jīng)典神經(jīng)網(wǎng)絡(luò)架構(gòu)的支持,比如AlexNet、GoogleNet、VGG和ResNet等。DNN模塊具有可用的圖像分類、目標(biāo)檢測(cè)和語(yǔ)義分割等模型。
現(xiàn)在,如果每個(gè)模型都被翻譯成一個(gè)內(nèi)部表示,我們?nèi)绾未_保在翻譯過程中沒有丟失一些東西呢?OpenCV已經(jīng)發(fā)布了一些測(cè)試結(jié)果,表明在準(zhǔn)確性上,使用DNN模塊的ResNet 50和原始的ResNet 50之間沒有任何區(qū)別,這意味著無(wú)論使用OpenCV的DNN模塊還是原始的體系結(jié)構(gòu),都將得到相同的結(jié)果。
責(zé)任編輯:tzh
-
人工智能
+關(guān)注
關(guān)注
1806文章
49007瀏覽量
249275 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8501瀏覽量
134573 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5561瀏覽量
122783
發(fā)布評(píng)論請(qǐng)先 登錄
基于LockAI視覺識(shí)別模塊:C++人臉識(shí)別
【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】視覺實(shí)現(xiàn)的基礎(chǔ)算法的應(yīng)用
【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】人臉識(shí)別
人臉識(shí)別技術(shù)的算法原理解析
人臉識(shí)別技術(shù)在安全監(jiān)控中的應(yīng)用
【小白入門必看】一文讀懂深度學(xué)習(xí)計(jì)算機(jī)視覺技術(shù)及學(xué)習(xí)路線

評(píng)論