基于PaddleDetection进行视频检测

该博客介绍如何利用PaddleDetection将训练好的模型应用到视频物体检测中,通过按帧抽取出视频图片,进行预测并画框,最后将图片合成回视频,详细步骤包括模型导出、图片预测和视频合成。
摘要由CSDN通过智能技术生成

想实时检测视频中感兴趣的物体,并通过视频的方式展现出来吗?

如果答案是“想”,那么请往下看
前文讲过,如何使用PaddleDetection训练自己的数据集

那么如何将最后的检测效果以视频的形式展现出来呢?

解决思路:将视频按帧抽取存为图片,输入自己训练好的目标检测模型进行预测,将得到的物体预测框画在图片上,保存图片,最后将图片合成视频。
本文主要参考了博客https://blog.csdn.net/yzl819819/article/details/104743106
以及视频人脸检测项目https://aistudio.baidu.com/aistudio/projectdetail/757390
1.首先导出训练好的模型及训练参数,使用PaddleDetection的export_model.py

# 导出模型
!python PaddleDetection/tools/export_model.py -c PaddleDetection/configs/yolov4/yolov4_cspdarknet_voc.yml -o weights=output/yolov4_cspdarknet_voc/best_model.pdparams

得到三个文件,如图
在这里插入图片描述
2.将PaddleDetection中的infer.py封装为一个类inference(),用于预测单张图片

import numpy as np
import time
import cv2
import paddle.fluid as fluid
from PIL import Image
from PIL import ImageDraw
# 画图展示目标物体边界框
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib.image import imread
import math

# # 定义画矩形框的程序    
# def draw_rectangle(currentAxis,bbox, edgecolor = 'red', facecolor = 'yellow', fill=False, linestyle='-'):
#     # currentAxis,坐标轴,通过plt.gca()获取
#     # bbox,边界框,包含四个数值的list, [x1, y1, x2, y2]
#     # edgecolor,边框线条颜色
#     # facecolor,填充颜色
#     # fill, 是否填充
#     # linestype,边框线型
#     # patches.Rectangle需要传入左上角坐标、矩形区域的宽度、高度等参数
#     rect=patches.Rectangle((bbox[0], bbox[1]), bbox[2]-bbox[0]+1, bbox[3]-bbox[1]+1, linewidth=2,
#                            edgecolor=edgecolor,facecolor=facecolor,fill=fill, linestyle=linestyle)
#     currentAxis.add_patch(rect)

train_parameters = {
   
    "label_dict": {
   0:"HS",1:"DS",2:"B",3:"SMac",4:"TelP",5:"HSN",6:"DSN",7:"Number of TelP",8:"Unclear"},
    "use_gpu": True,
    "anchors": [[12, 16], [19, 36], [40, 28], [36, 75], [76, 55],[72, 146], [142, 110], [192, 243], [459, 401]],
    "a
  • 5
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值