Python Yolo Darknet仅检测特定类别,如人、猫、狗等
我们使用YOLO Darknet进行目标检测。我们正在使用Python3、tensorflow1.0、numpy和opencv3。使用yolo.weight进行检测。 根据以下链接中给出的信息: 当我们在视频上运行它时,它会同时检测所有不需要的对象 请指导我们如何仅检测要搜索的特定类名Python Yolo Darknet仅检测特定类别,如人、猫、狗等,python,image-processing,object-detection,darknet,Python,Image Processing,Object Detection,Darknet,我们使用YOLO Darknet进行目标检测。我们正在使用Python3、tensorflow1.0、numpy和opencv3。使用yolo.weight进行检测。 根据以下链接中给出的信息: 当我们在视频上运行它时,它会同时检测所有不需要的对象 请指导我们如何仅检测要搜索的特定类名 谢谢根据我的发现,您可以按如下方式进行操作: 将原始yolo cfg文件复制到新文件中,并编辑其值 [region]部分中的类,以指定要创建的类的数量 探测 创建标签文本文件并放置要检测的类名 (原始类的子
谢谢根据我的发现,您可以按如下方式进行操作:
flow --model cfg/your_new_copied_file.cfg --load path/to/weight_file --demo your_video.mp4 --labels your_labels.txt --saveVideo
就这样
但问题是,总体检测准确率显著下降。通常,它会将完全不同的对象检测为标签中的对象。
(如果高于阈值,也许暗流只是在标签中选择最自信的猜测?)
因此,如果您只想在跳过其他对象时检测其他类中的一些对象(即识别它们但跳过),我认为最好编辑暗流源以接受其他参数(如--marklabels.txt).如果您只按照@JP Kim提到的步骤进行操作,您将获得一个仅带有标签的视频,但它也会将其他对象作为标签之一输出 如果您希望有不同的输出,它确切地告诉您应该做什么。TLDR-您应该重新培训您的模型。他们举了3个类的例子来说明这一点 但是,不管怎样,让我带你走过这个过程。让我们考虑你有一个视频,你只需要跟踪它里面的所有人。所以,我们只需要跟踪一种类型的对象——“person”
cfg
目录中复制了tiny yolo voc.cfg
文件。让我们按照他们的惯例将其命名为tiny-yolo-voc-1c.cfg
,其中后缀1c
表示类的数量。之所以选择tiny yolo voc
而不是其他配置作为我们的基本模型,是因为它是一个较小的网络,可以在较小的GPU上进行训练。从我观察到的情况来看,其他配置需要10GB+的图形内存,它们过去常常使我的机器内存不足tiny-yolo-voc-1c.cfg
文件中进行必要的更改:
- 将
变量编辑为classes
classes=1
- 在
前面的最后一个区域
部分中,我们将卷积
变量更改为过滤器
。因此,设置5*(num_class+5)=5*(1+5)=30
filters=30
labels.txt
文件,其中只有一行写着person
,因为我们只需要一种标签类型- 现在,如果您的标签是VOC数据集或CoCo数据集的现有标签之一,那么您可以下载一个VOC/CoCo数据集。在我们的例子中,
是我们需要跟踪的对象类型,它已经是VOC数据集中的对象类型。所以,我们将使用VOC数据集person
- 但是,如果希望使用YOLO对新类型的对象进行分类和跟踪,则需要准备自己的数据集和注释。对于此自定义对象,您可以遵循的第5-8部分。这些视频展示了如何使用YOLO跟踪和分类
fidget\u spinner
person
# Download the Pascal VOC dataset:
curl -O https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
tar xf VOCtest_06-Nov-2007.tar
微型yolo voc
模型加载权重,并从那里开始重新训练,以适应我们的特定用例(只需个人
类)。为此,我们必须下载tiny yolo voc
的重量。你可以找到重量。我们将下载的重量为。下载后,将文件移动到/darkflow/bin/
目录yolov2 tiny voc.weights
下载的权重重命名为tiny yolo voc.weights
。这是必需的,因为当我们训练时,我们提供了权重文件,而暗流试图获取相应的配置文件作为训练新模型的参考--gpu 0.9
部件
# Train the net on the Pascal dataset:
flow --model cfg/tiny-yolo-voc-1c.cfg --load bin/tiny-yolo-voc.weights --train --dataset "~/VOCdevkit/VOC2007/JPEGImages" --annotation "~/VOCdevkit/VOC2007/Annotations" --gpu 0.9
ckpt/
目录中保存检查点。一旦停止训练,就可以使用这些检查点中的任何一个来测试模型
flow --model cfg/tiny-yolo-voc-1c.cfg --load 1500 --demo video-input.mp4 --gpu 0.9 --saveVideo