YOLO v3 视频检测(检测特定类别)

YOLO v3的安装可以使用参考博客:YOLO v3 安装并训练自己数据 - quanwei的博客

检测视频

在这篇博客中我们将介绍如果使用YOLO V3进行视频检测。其实在darknet官网中我们已经看到了作者关于使用YOLO v3的视频接口对视频进行检测,现在使用模型对自己本地的视频进行检测。

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <File Name>

上边就是进行视频检测接口,直接将最后半段的<File Name>换成自己的模型即可。

在这里插入图片描述

上边就是我进行检测的结果,我使用显卡型号是1080Ti,使用YOLO v3原始权重,Resize以后的图片大小为608*608,这样检测速度可以达到平均20帧/秒。

检测固定类别

有很多小伙伴不想检测所有的类别,只想检测某几个类别,这里我们来简单介绍一下如何修改.

确定检测类别的id

我们此次视频目标检测使用的是coco.data索引,所以应该在./darknet/data/coco.names文件夹中找到需要检测目标种类的索引.

person
bicycle
car
motorbike
...

如上边所示,如果我们只需要检测人的话,只需要记住人的索引号为0(行数-1),如果需要检测几个种类我们需要记住几个类别的索引.

修改./darknet/src/image.c

确定类别的index以后,就需要修改程序,在./darknet/src/image.c文件中draw_detections()函数中,将下边的内容

void draw_detections(image im, detection *dets, int num, float thresh, char **names, image **alphabet, int classes)
{
    int i,j;
    char save_txt;
    for(i = 0; i < num; ++i){
        char labelstr[4096] = {0};
        int class = -1;
        for(j = 0; j < classes; ++j){
            if (dets[i].prob[j] > thresh){
                ...

修改为:

 for(i = 0; i < num; ++i){
        char labelstr[4096] = {0};
        int class = -1;

        for(j = 0; j < classes; ++j){

            // Select classes Detection
            if((j != 0)&&(j!=5){                     //person
                continue;
            }
            
            if (dets[i].prob[j] > thresh){
                if (class < 0) {

其实十分简单,就是将不是属于我们需要检测的类别直接跳过,不进行检测.

重新编译

重新进行

make clean
make -j

这样就是可以进行检测的.

  • 10
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 35
    评论
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值