前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ImageAI:视频对象检测和跟踪(预览版)

ImageAI:视频对象检测和跟踪(预览版)

原创
作者头像
Action
修改2021-04-01 10:06:03
8260
修改2021-04-01 10:06:03
举报
文章被收录于专栏:WEB开发~WEB开发~

ImageAI 提供方便,灵活和强大的方法来对视频进行对象检测和跟踪。目前仅支持当前最先进的 RetinaNet 算法进行对象检测和跟踪,后续版本会加入对其他算法的支持。虽然这只是预览版本,但提供了很多令人难以置信的选项。在开始视频对象检测和跟踪任务前,您必须通过以下链接下载 RetinaNet 模型文件:

RetinaNet (文件大小=145MB)

由于视频对象检测是非常消耗硬件资源的任务,所以我们建议您使用安装了 NVIDIA GPU 和 GPU 版 Tensorflow 的计算机来完成此实验。使用CPU进行视频对象检测将比使用 NVIDIA GPU 驱动的计算机慢。您也可以使用 Google Colab 进行此实验,因为它具有可用的 NVIDIA K80 GPU。下载 RetinaNet 模型文件后,应将模型文件复制到.py文件所在的项目文件夹中。然后创建一个python文件并为其命名; 例如 FirstVideoObjectDetection.py 。然后将下面的代码写入python文件中:

代码语言:txt
复制
from imageai.Detection import VideoObjectDetection
import os
execution_path = os.getcwd()
detector = VideoObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel(detection_speed="fastest")
custom_objects = detector.CustomObjects(person=True, car=True)
video_path = detector.detectCustomObjectsFromVideo(custom_objects=custom_objects, input_file_path=os.path.join(execution_path, "traffic.mp4"), output_file_path=os.path.join(execution_path, "traffic_custom_detected"), frames_per_second=20, log_progress=True, frame_detection_interval=5, minimum_percentage_probability=50)
print(video_path)

输入的视频

输出的视频

文档

imageai.Detection.VideoObjectDetection class

在任何的Python程序中通过实例化VideoObjectDetection类并调用下面的函数即可进行视频对象检测:

  • setModelTypeAsRetinaNet() 如果您选择使用RetinaNet 模型文件来进行对象检测,你只需调用一次该函数。
  • setModelPath() 该函数用于设定模型文件的路径。模型文件必须与您设置的模型类型相对应。loadModel() 该函数用于载入模型。该函数接收一个prediction_speed参数。该参数用于指定对象检测的速度模式,当速度模式设置为’fastest’时预测时间可缩短60%左右,具体取决于图像的质量。 detection_speed(可选); 可接受的值是”normal”, “fast”, “faster” and “fastest”
  • detectObjectsFromVideo() 此函数用于通过接收以下参数来进行视频对象检测: input_file_path,该参数用于指定输入视频的文件路径output_file_path,该参数用于指定输出视频的文件路径 frames_per_second 该参数用于指定输出视频中的每秒帧数fpsframe_detection_interval(可选,默认为1)),该参数用于指定视频检测的帧间隔,即间隔多少帧检测一次。 minimum_percentage_probability(可选,默认为50),用于设定预测概率的阈值,只有当百分比概率大于等于该值时才会返回检测到的对象。 log_progress(可选),该参数用于指定是否将检测进度输出到控制台

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档