新聞中心

EEPW首頁 > 智能計算 > 進階指南 > OpenVINO 101:從圖像識別到視頻識別(上)

OpenVINO 101:從圖像識別到視頻識別(上)

作者: 時間:2021-09-26 來源:電子產品世界 收藏

  筆者:梁羽

本文引用地址:http://2s4d.com/article/202109/428499.htm

  計算機視覺(CV)是人工智能研究的熱點方向之一,其核心在于如何讓機器“看見”和“理解”——通過算法從照片、視頻等媒介中提取高層次信息并加以利用。

  隨著全球計算能力和數據量的雙增長,計算機視覺取得了長足的進展,在自動駕駛、智能安防、體育運動(如記錄分析運動員跑姿就使用了AI助力的人體姿勢估計)等領域遍地開花。

1.gif

運動生物力學專家分析蘇炳添訓練時的跑姿

1632622451963382.jpg

英特爾3DAT技術1(三維運動員跟蹤),基于框架開發(fā)

  一般來說,常見的計算機視覺任務基于靜止的單幀圖像進行,主要采用機器學習深度學習兩類方法。

  在GPU算力足以支持復雜神經網絡之前,機器學習方法一度是計算機視覺領域的金標準,作為代表的有用于圖像分類的支持向量機(SVM)、用于特征提取的Bag-of-Features模型(SIFT、MSER等)、用于人臉識別的Viola-Jones算法等。這些經典算法大多在開源計算機視覺庫OpenCV中有實現,可以參考網上的入門資料(比如這篇【OpenCV+Python計算機視覺導學】2)進行學習,在此不再展開。

  而后,以2015年為界,神經網絡在ImageNet圖片分類比賽中超越人類水平3,拉開了深度學習在計算機視覺領域大量應用的序幕?;谏疃葘W習的圖片識別以卷積神經網絡(CNN)進行特征提取、多層感知機(MLP)進行分類,并在其上衍生出了注意力機制、FPN、Transformer、NAS等新架構和研究方法,在計算機視覺任務的準確度、運行速度和泛用性上都有很大提升。

3.gif

使用深度學習進行對象檢測/對象跟蹤

  設備算力的增長也帶來了另一個好處,計算機視覺學者們得以將目標從圖片轉向視頻,讓算法端到端地捕捉視頻每一幀之間的關系。通過單幀圖像,算法能知道某一瞬間的情況(場景里有哪些物體、戶外是晴天還是雨天),而基于視頻的識別能夠挖掘出更多信息,例如讓計算機理解一段時間內發(fā)生的事件:

  圖片識別:“場景里有兩個運動員?!?/em>

  :“場景里的兩個運動員正在打羽毛球?!?/em>

  在開始介紹視頻相關的算法前,我們將先從開始,對基于深度學習的計算機視覺有些概念上的認識。

主流算法

4.png

典型的圖像分類網絡(VGG-16)

  眾多算法中,圖片分類任務最基礎也最重要:通過為圖片分類任務訓練神經網絡,可以得到在其他任務也能使用的主干網絡(base network/backbone network)。主干網絡負責從圖像中抽取出高層的抽象特征,基于這些抽象特征可實現分類、檢測、分割等任務。如上圖架構中輸出224*224*64的卷積層到輸出14*14*512的卷積層就是一種主干網絡(VGG-16)。

  對神經網絡算法進行選型,一般考慮兩組指標:準確率,以及網絡的參數量(params)浮點運算次數(FLOPs)。準確率是量化算法本身效果的指標,而浮點運算次數和參數量可以被用來衡量模型的復雜度,前者描述了神經網絡需要的計算能力,后者描述了運行神經網絡需要的內存大?。ㄒ脖砻髁瞬渴鹉P托枰挠脖P空間/網絡帶寬)。

  在終端設備部署神經網絡時,不同類型的設備(桌面GPU/桌面CPU/Movidus等專用VPU/樹莓派等ARM架構設備)對復雜度有不同的要求。對于嵌入式設備部署,如一些人臉識別和智慧安防類應用,就應選擇盡可能輕量的模型來達到實時處理的目標。其他情況下,就需要因地制宜地在模型準確度和復雜度中取得平衡,挑選最適合自己應用的算法模型。

  實際使用中,我們都希望使用運算量盡可能小、而準確度盡可能高的神經網絡。為了實現這堪稱刁難的需求,深度學習學家們使用了網絡架構搜索(NAS)技術來自動化地進行神經網絡的設計。

圖片分類

1632622619127022.png

常用的主干網絡模型

(左圖為ImageNet Top-1準確率,右圖為模型準確率/浮點運算數對比)

  具體到圖像識別分類任務所使用的主干網絡來看,作為結果之一,Google提出了EfficientNet?,一個對網絡準確度和模型復雜度進行聯合優(yōu)化的神經網絡家族。

1632622635580369.png

EfficientNet的模型參數量-準確率對比

  當然,網絡設計只是第一步,真正要用起來還有訓練、優(yōu)化部署等步驟。一般來說,神經網絡網絡的訓練是最為繁瑣的,其中涉及到遠遠大于部署階段的計算能力、大型數據集和超參數調優(yōu),因此對于通用目的的神經網絡,采用公開的預訓練模型是最常見的做法。

  對于框架來說,預訓練模型和神經網絡的優(yōu)化器都已經集成在框架中一起提供,前文提到的EfficientNet和其他主干網絡的都可以從GitHub上的官方模型庫下載得到。

對象檢測

1632622658825902.png

  目標檢測模型基于主干網絡提取的特征來進行識別,而根據識別和分類物體的內部實現來說,主流對象檢測網絡可以分成Anchor-based的兩階段檢測器和單階段檢測器,以及Anchor-Free的目標檢測器。

Faster-RCNN(Anchor-based二階段檢測器代表)

1632622676319287.png

Faster-RCNN模型架構圖

  兩階段檢測器由候選區(qū)域網絡(RPN)分類器構成。候選區(qū)域網絡基于主干網絡生成的特征,在圖片中劃分出潛在的感興趣區(qū)域(RoI),并將這些其余和先前得到的特征一并送進分類器,得到每個候選框的具體分類。

  Faster-RCNN以模型的復雜度作為代價,換來了相對較高的識別準確度。其處理一張圖片需要約200ms(5FPS),離實時處理還是有一些距離。

SSD/YOLO(Anchor-based一階段檢測器代表)

1632622696974699.png

YOLO v3模型架構圖

  以YOLO v3為例,輸入的圖片會先被劃分為數個單元格,每個單元格上會預測出一些識別框和對應的分類。在訓練時,YOLO v3會根據訓練集中檢測框的大小和位置做預先學習,尋找出最常見的檢測框位置,并根據這些線索來劃分單元格。

  與Faster-RCNN等二階段檢測器不同,YOLO和SSD會同時進行候選框和目標分類的預測,從而節(jié)省了性能開銷。一般較小的YOLO模型都可以在30ms內處理完成一張圖片,達到實時速度。

Anchor-free檢測器

1632622714678643.png

DETR模型架構圖

  無論是Anchor-based還是Anchor-free方法,目標檢測器想要解決的核心問題都是如何預測檢測框和類別。這一類的檢測器代表有CenterNet等基于點的方法、FCOS等利用FPN進行多尺度預測的模型,以及上圖DETR等基于Transformer的模型。

  因為網絡結構簡單,Anchor-free對于工業(yè)應用會更加友好,而且其網絡架構上和實例分割等任務更接近,有實現多功能的潛力。

小結

  在這篇文章中,筆者簡單介紹了圖像識別,以及用深度學習進行計算機視覺任務的相關內容。圖像識別的相關示例可以參考這篇【開發(fā)實戰(zhàn)課程】中的錄播教程進行學習,注冊eepw賬號后即可獲取~

  下篇中,我們會關注視頻理解的相關算法,以及逐步教學如何使用OpenVINO進行,一定要關注哦!

參考資料

[1]騰訊網,2021/3/17報道,《擺脫傳統(tǒng)監(jiān)測手段,英特爾3DAT成體育訓練數據分析“神器”》,https://new.qq.com/rain/a/20210317A03E6J00

[2]EEPW論壇,作者zhuzhaokun1987,【原創(chuàng)】【AI人工智能系列】OpenCV+Python計算機視覺導學——目錄匯總(點擊目錄可跳轉對應章節(jié),長期更新),http://forum.eepw.com.cn/thread/337725/1

[3]微軟亞洲研究院(MSRA)在2015年發(fā)表的工作,作者何愷明等,Delving Deep into Rectifiers:Surpassing Human-Level Performance on ImageNet Classification,https://arxiv.org/pdf/1502.01852.pdf

[4]Google于2019年發(fā)表在ICML上的工作,作者Mingxing Tan等,EfficientNet:Rethinking Model Scaling for Convolutional Neural Networks,https://arxiv.org/pdf/1905.11946v5.pdf



評論


相關推薦

技術專區(qū)

關閉