|

讓你也能成為智能影音分析大師 – Intel OpenVINO DL Streamer

   
作者:Jack Hsu

時光飛逝,轉眼2022年也過了四分之三,Intel OpenVINO Toolkit (以下簡稱OpenVINO) 2022.1版也在今年作出不少重大變革,其中一項重要又實用的功能「Deep Learning Streamer (以下簡稱DL Streamer)」也有許多更新。

假若各位看過小弟在2018年寫過的「【Intel OpenVINO教學】 GStreamer串流影片智能分析不再慢吞吞 ─ 看Intel OpenVINO DL Stream如何加速影片推論」,相信應該會對這項工具有一些初步認識。

如果您是剛入門的朋友,也不用太擔心,透過本文依序從「什麼是 DL Streamer」、「認識DL Streamer架構」、「如何安裝DL Streamer」、「DL Streamer小試身手」及「DL Streamer表現分析」等小節的介紹,相信應該能更快速、深入了解OpenVINO這項好用的工具。

1. 什麼是DL Streamer

首先幫大家科普一下什麼是「串流媒體(Streaming Media)」。一般使用數位照相機或手機拍照時得到的是一張張靜態影像(Images),而使用數位錄影機或手機錄製視訊時得到的一段一段自帶聲音的動態視訊(Videos)或稱為視訊片段(Video Clips)。

通常這兩類的數位媒體都會以檔案方式儲存在如硬碟、記憶卡等本地端儲存裝置,而靜態影像會以jpg, png等格式儲存,動態視訊(含聲音)則會以mp4, mov等格式儲存。

以上這兩種用法多半是拍完後再使用播放器進行回播,若使用者想要從網路上查看一張數位照片時,大概還有耐心等影像傳完後再開啟觀賞,但若是一段較長的(如數百MB)數位視訊,則大概很少人有耐心等待數分鐘甚至數十分鐘讓視訊檔案傳完後再啟動播放軟體來觀看,於是就有了一邊傳送、一邊播放的「串流媒體」技術出現了。

一般「串流媒體」分為供應端和接收端,供應端就像自來水廠或電廠,會一直源源不斷地提供水電,接收端就像家中的水管、電線,當打開水龍頭或電源開關時就有源源不斷的水電可用。

通常在視訊串流供應端,會以穩定的速度連續取得特定解析度的數位影像進行傳送,如每秒30個影格(Frames) / FHD(1920 x 1080像素)解析度 / mp3聲音格式。

但不幸地是我們的傳送通道(如ADSL/光纖有線網路,WiFi/4G/5G無線網路等)並沒有足夠大的頻寬來傳送這些大量的原始影像資料,就像水管不夠大,電線不夠粗的類似問題。

所以在傳送前會以人眼或人耳難以辨識的破壞性壓縮編碼(Encoding)方式(如MP4/H.264/H.265等)來大幅降低資料資傳輸量,待用戶接收到這些訊號時,再以反向解壓縮解碼(Decoding)來取得接近原始影音品質的訊號。

雖然上述作法解決了傳輸資料頻寬問題,但為了讓使用者能一面接收一面觀看視訊,所以接收端還要先緩衝一小段(如數秒)視訊後再開始播放,以免傳輸速度不穩定時,無法順暢的播放,就像自來水會先配送到大樓的水塔(緩衝區)再接到各個用戶家中(播放器)。

瞭解了「串流媒體」後,就不難理解為什麼在很多賣場、工廠甚至家中都裝設有大量的網路協議攝影機(Internet Protocol Camera, 以下簡稱IP Cam)提供串流媒體,來幫助大家進行即時同步的安全監控的工作了。

為了方便大家架設及使用,很多廠商都有推出對應的軟體產品,而在開源世界中最知名的莫過於「GStreamer」這項工具了,它把錄製(含影像及聲音)、壓縮、傳送、解壓縮、播放等功能都包含在其中了,所以非常受到歡迎。傳統上有一些安全監控設備供應商會整合這些串流媒體工具用來開發一些中低階的智能安全監控軟體,完成如闖入、遺失、遺留、人流、人臉辨識等應用。

隨著「深度學習」AI算法的普及加上邊緣運算硬體的推論能力提升,Intel也將此項概念整合進OpenVINO Toolkit中,結合GStreamer和OpenVINO的Runtime函式庫(2022.1以前版本稱為推論引擎Inference Engine, IE)推出免費開源串流媒體分析工具「DL Streamer」,讓串流媒體不只可以同步監看,更能高效即時運行「影像分類」、「物件偵測」、「影像分割」、「姿態估測」等方面的邊緣智能影像分析。在OpenVINO 2022.1版後更加入對「聲音辨識」的功能,完整串流媒體影音的全方位智能分析能力。

2. 認識DL Streamer架構

如上一小節所述,DL Streamer 是一項基於 GStreamer 的開源串流媒體分析框架(Streaming Media Analytics Frame),它可適用於雲端和邊緣端串流媒體智能影音分析應用,主要包含下列三大項流水線(Pipeline)功能:

  • DL Streamer Pipeline Framework:用於設計、創建、建置和運行媒體分析流水線,它包含了C++和Python APIs。
  • DL Streamer Pipeline Server:可將媒體分析流水線部署到一個或多個節點上擴展成微服務,包括REST APIs的管理。
  • DL Streamer Pipeline Zoo:協助媒體分析流水線進行基準測試及優用,包括顯示可即時使用的目錄清單。

如Fig. 1所示,即為 DL Streamer 工作流水線示意圖。串流影音媒體可透過單隻或多隻 IP Cam 傳送到運行 DL Streamer 的硬體上,接著執行解碼(解壓縮)取得原始影音內容,再來將影像縮放截切到AI模型要求的大小後送去進行推論工作。

由於串流媒體影像中的物件可能要經好幾個影格(frames)才有較明顯的移動,所以一直分析影像是很浪費硬體資源,同時也造成分析速度無法提升問題。因此有時會根據使用者設定,啟用「物件追蹤」功能,每隔幾個影格才進行推論一次,而中間的影格就使用計算量較低的追蹤算法來協助提升分析速度。

當完成影像分析後,會依不同功能得到分類結果(分類名稱、置信度等)、物件資訊(位置、尺寸、內容等)、姿態節點(特徵點座標等)等文字或數字資訊。有時為了方便使用者觀看,會將以上資訊以繪圖方式將線、框、文字等內容重新繪回原影像上。

最後可依不同需求採取即時顯示或發出警報,亦可儲存完整/部份結果影像或數據到本地或雲端儲空間,方便後續進行查詢使用。當然為了節省儲存空間,通常也是會使用通用壓縮(編碼)格式(如mp4, H.264, H.265等)來儲存。

從Fig.1的下方側說明,還可了解到在工作流水線的每個步驟可以使用到的運算資源是不同的。在前後段的編碼/解碼(COdeing / DECoding, CODEC)部份和一般多媒體影音編輯/存儲都類似,所以大部份都可使用硬體(GPU, CPU內專用CODEC)來加快編解碼處理速度。

而推論部份 OpenVINO 可以支援 Intel 全系列硬體(CPU, iGPU, VPU, FPGA)來進行加速運算,若啟用物件追蹤功能則可使用 CPU / iGPU 來處理,最後一些後處理部份,如結果影像繪圖、文字輸出等工作較無加速處理需求,則使用 CPU 即可。

本文為會員限定文章

立即加入會員! 全站文章無限看~

                               

已經是會員? 按此登入

只需不到短短一分鐘...

輸入您的信箱與ID註冊即可享有一切福利!

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

許 哲豪

Author: 許 哲豪

工作經驗超過二十年,主要專長機電整合、電腦視覺、人機互動、人工智慧、專利分析及新創輔導。曾任機電整合工程師、機器視覺研發副理、技轉中心商業發展經理。目前擔任多家公司兼任技術顧問並積極推廣實境互動相關技術。 主持歐尼克斯實境互動工作室(OmniXRI):http://omnixri.blogspot.com Edge AI Taiwan邊緣智能交流區:https://www.facebook.com/groups/edgeaitw/

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *