目標檢測技術是當今計算機視覺領域的發展趨勢。在場景圖像和視頻中,有許多方法被用來檢測物體。在資源和執行時間方面,每種技術都有自己的優勢和局限性。檢測視頻中的物體也需要大量的技術知識和資源。
因此,人們一直在尋找一種簡單、快速的目標檢測方法。在本文中,我們將演示如何檢測視頻中看到的對象,只需5個步驟。
我們將在本任務中使用pixellib庫,該庫使用實例分割檢測對象。我們還將使用預訓練Mask R-CNN模型來識別視頻中看到的物體。
在這個實現中,我們將檢測交通視頻中的車輛對象。
實例分割
實例分割是計算機視覺中的一種技術,它利用圖像分割的方法進行目標檢測。它在像素級識別圖像或視頻中存在的每個對象實例。
在圖像分割中,視覺輸入被分割成若干段,通過形成像素集合來表示對象或對象的一部分。實例分割識別圖像中每個對象的每個實例,而不是像語義分割那樣對每個像素進行分類。
Mask R-CNN
Mask R-CNN是由Kaiming He等人在Facebook人工智能研究所提出的深層神經網絡的變體。該模型用于解決計算機視覺中的對象實例分割問題。
它檢測圖像中的對象,同時為每個實例生成一個高質量的分割掩碼。它是Faster R-CNN的一個擴展,它增加了一個預測目標掩碼的分支,與現有的邊界盒識別分支并行。
下面給出了用于實例分割的Mask R-CNN框架。
實現
現在,我們將討論在視頻中檢測物體的步驟。
1.安裝庫和依賴項
在第一步中,我們需要安裝pixellib庫及其依賴項。
!pip install pixellib
2.加載預先訓練的Mask RCNN權重
由于我們將使用Mask R-CNN模型來檢測目標,我們將下載其預訓練的權重。
!wget --quiet https://github.com/matterport/Mask_RCNN/releases/download/v2.0/mask_rcnn_coco.h5
3.導入庫
現在,我們將導入已安裝的pixellib庫。我們還將導入instance_segmentation 類,因為我們將使用實例分割方法檢測對象。
import pixellib
from pixellib.instance import instance_segmentation
4.實例化實例分割模型并加載MASK R-CNN權重
在這一步中,我們將實例化pixellib提供的instance_segmentation類,并使用其預訓練的權重加載Mask R-CNN模型。
segment_video = instance_segmentation()
segment_video.load_model("mask_rcnn_coco.h5")
5.檢測物體
在這一步中,我們將通過在視頻中MASK R-CNN來處理目標檢測任務。我們會用隨機使用一段交通視頻
視頻:https://analyticsindiamag.com/wp-content/uploads/2020/07/traffic_vid2.mp4?_=1
在這種方法中,我們設置每秒幀數,即視頻輸出每秒的幀數。
segment_video.process_video("traffic_vid2.mp4", show_bboxes = True, frames_per_second= 15, output_video_name="object_detect.mp4")
最后,我們將在工作目錄中獲得輸出視頻。這個過程的時間取決于視頻的長度和大小。你應該使用GPU來加快處理速度。對于上面的交通視頻,結果為
視頻:https://analyticsindiamag.com/wp-content/uploads/2020/07/Object_Detect.mp4?_=2
你可以定義一個函數來從YouTube獲取視頻并將其直接傳遞給上面的函數。
因此,利用以上步驟,我們可以討論一種非常簡單的方法來實現視頻中的目標檢測任務。剛入門計算機視覺的可以用這種方法檢測物體。