Python OpenCV车辆检测

Python OpenCV车辆检测,python,opencv,image-processing,Python,Opencv,Image Processing,我正在尝试实施一个程序,以在视频/图片中识别车辆。一个主要的要求是性能(几乎实时),所以我放弃了ImageAI和我使用Keras-VGG16进行额外训练的模型 OpenCV为我提供了所需的性能,但accuray远远不能接受:虽然有时它工作良好,但在下一帧时却失败了 我正在考虑可能的选择: A) 用我自己的图像重新训练一个模型 b) 使用一些图像预处理 任何帮助或线索都将不胜感激 我的代码: import cv2 import os car_cascade = cv2.CascadeClassi

我正在尝试实施一个程序,以在视频/图片中识别车辆。一个主要的要求是性能(几乎实时),所以我放弃了ImageAI和我使用Keras-VGG16进行额外训练的模型

OpenCV为我提供了所需的性能,但accuray远远不能接受:虽然有时它工作良好,但在下一帧时却失败了

我正在考虑可能的选择: A) 用我自己的图像重新训练一个模型 b) 使用一些图像预处理

任何帮助或线索都将不胜感激

我的代码:

import cv2
import os
car_cascade = cv2.CascadeClassifier('cars3.xml')

#input_path = ...
files = os.listdir(input_path)

for f in files:
    input_file = input_path + '/' + f;
    print(input_file)
    img = cv2.imread(input_file, 1)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    cars = car_cascade.detectMultiScale(gray, 1.1, 1)
    for (x, y, w, h) in cars:
        cv2.rectangle(img, (x,y), (x+w,y+h), (0,0,255), 2)
        ncars = ncars + 1
    cv2.imshow('img',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
例如:


您是否尝试过dnn目标检测模块

有几种可用的模型体系结构可以在速度和准确性之间进行权衡

至于测量速度,请尝试执行多个推断并在以后的推断中测量速度,通常第一个推断速度较慢,因为它正在加载模型

下面是一些在视频上运行的示例代码:

如果您的硬件支持,您可以设置后端以进一步提高速度。我看到的最好的表现是今年的GSOC:英伟达后端:


级联分类器比深度学习要差得多,实际上甚至没有快得多。尝试使用opencv dnnGood point预先训练的yolo v3或tinyYolo v3。我在ImageAI库中使用了yolo模型,但它没有提供我需要的性能。我刚刚检查了另一个答案提供的例子——与你的答案在同一行——这是一个好的方向。谢谢根据硬件平台和您使用的深度学习框架,您可以尝试使用像intel movidius U盘这样的深度学习加速器插件。非常好的建议我做了一个快速测试,它大大提高了检测效率,同时在没有硬件加速的情况下,将笔记本电脑中的每帧时间保持在100ms以下。非常感谢!!接受它作为正确答案,除非它没有完全解决你的问题,它确实解决了,但我忘了这么做!