目标检测技术是当今计算机视觉领域的发展趋势。在场景图像和视频中,有许多方法被用来检测物体。在资源和执行时间方面,每种技术都有自己的优势和局限性。检测视频中的物体也需要大量的技术知识和资源。
因此,人们一直在寻找一种简单、快速的目标检测方法。在本文中,我们将演示如何检测视频中看到的对象,只需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获取视频并将其直接传递给上面的函数。
因此,利用以上步骤,我们可以讨论一种非常简单的方法来实现视频中的目标检测任务。刚入门计算机视觉的可以用这种方法检测物体。