首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用HOG描述符和理解python代码的SVM进行行人检测

使用HOG(Histogram of Oriented Gradients)描述符和SVM(支持向量机)进行行人检测是一种常见的计算机视觉任务。下面是一个使用Python和OpenCV库实现行人检测的示例代码,并解释其工作原理。

安装必要的库

首先,确保你已经安装了OpenCV和scikit-learn库。如果没有安装,可以使用以下命令进行安装:

代码语言:javascript
复制
pip install opencv-python scikit-learn

代码示例

代码语言:javascript
复制
import cv2
import numpy as np
from sklearn import svm
from sklearn.metrics import accuracy_score

# 加载预训练的HOG描述符和SVM分类器
hog = cv2.HOGDescriptor()
svm_classifier = svm.SVC(kernel='linear')

# 加载训练好的SVM模型(假设你已经训练好并保存了模型)
svm_classifier.load('svm_model.pkl')

# 读取测试图像
image = cv2.imread('test_image.jpg')
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 设置HOG检测器的参数
winStride = (8, 8)
padding = (8, 8)
scale = 1.05
finalThreshold = 2.0

# 检测行人
(rects, weights) = hog.detectMultiScale(gray_image, winStride=winStride, padding=padding, scale=scale, finalThreshold=finalThreshold)

# 绘制检测结果
for (x, y, w, h) in rects:
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

# 显示结果图像
cv2.imshow('Pedestrian Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码解释

  1. 加载预训练的HOG描述符和SVM分类器: hog = cv2.HOGDescriptor() svm_classifier = svm.SVC(kernel='linear')
  2. 加载训练好的SVM模型: svm_classifier.load('svm_model.pkl') 这里假设你已经训练好了一个SVM模型并保存为svm_model.pkl文件。
  3. 读取测试图像: image = cv2.imread('test_image.jpg') gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  4. 设置HOG检测器的参数: winStride = (8, 8) padding = (8, 8) scale = 1.05 finalThreshold = 2.0 这些参数控制了检测窗口的步长、填充、缩放因子和最终阈值。
  5. 检测行人: (rects, weights) = hog.detectMultiScale(gray_image, winStride=winStride, padding=padding, scale=scale, finalThreshold=final对照组) hog.detectMultiScale函数会在图像中检测行人,并返回检测到的矩形框和对应的权重。
  6. 绘制检测结果: for (x, y, w, h) in rects: cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2) 这段代码会在原图像上绘制检测到的行人矩形框。
  7. 显示结果图像: cv2.imshow('Pedestrian Detection', image) cv2.waitKey(0) cv2.destroyAllWindows()

训练SVM模型

如果你还没有训练好的SVM模型,可以按照以下步骤进行训练:

  1. 准备训练数据: 收集并标注行人图像数据集。
  2. 提取HOG特征: def extract_hog_features(image): fd = hog.compute(image) return fd.flatten()
  3. 训练SVM模型: from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 假设X是特征矩阵,y是标签向量 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) svm_classifier.fit(X_train, y_train)
  4. 保存训练好的模型
代码语言:javascript
复制
import joblib
joblib.dump(svm_classifier, 'svm_model.pkl')
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Histograms of Oriented Gradients for Human Detection

    以基于线性SVM的人体检测为例,研究了鲁棒视觉目标识别的特征集问题。在回顾了现有的基于边缘和梯度的描述符之后,我们通过实验证明了方向梯度(HOG)描述符的直方图网格在人类检测方面明显优于现有的特征集。我们研究了计算的各个阶段对性能的影响,得出结论:在重叠描述符块中,细尺度梯度、细方向边距、相对粗的空间边距和高质量的局部对比度归一化都是获得良好结果的重要因素。新方法在原有MIT行人数据库的基础上实现了近乎完美的分离,因此我们引入了一个更具挑战性的数据集,其中包含1800多张带注释的人类图像,具有大范围的姿态变化和背景。

    04

    干货!一文读懂行人检测算法

    行人检测可定义为判断输入图片或视频帧是否包含行人,如果有将其检测出来,并输出bounding box 级别的结果。由于行人兼具刚性和柔性物体的特性 ,外观易受穿着、尺度、遮挡、姿态和视角等影响,使得行人检测成为计算机视觉领域中一个既具有研究价值同时又极具挑战性的热门课题。 行人检测系统的研究起始于二十世纪九十年代中期,是目标检测的一种。从最开始到2002 年,研究者们借鉴、引入了一些图像处理、模式识别领域的成熟方法,侧重研究了行人的可用特征、简单分类算法。自2005 年以来,行人检测技术的训练库趋于大规模化、检测精度趋于实用化、检测速度趋于实时化。随着高校、研究所以及汽车厂商的研究持续深入,行人检测技术得到了飞速的发展。本文主要介绍行人检测的特征提取、分类器的发展历程以及行人检测的现状。

    05

    ORSIm:A Novel Object Detection Framework in Optical Remote Sensing Imagery Using Spatial-Feature

    近年来,随着星载成像技术的飞速发展,光学遥感图像中的目标检测受到了广泛的关注。虽然许多先进的研究工作都使用了强大的学习算法,但不完全特征表示仍然不能有效地、高效地处理图像变形,尤其是目标缩放和旋转。为此,我们提出了一种新的目标检测框架,称为光学遥感图像检测器(ORSIm检测器),它集成了多种通道特征提取、特征学习、快速图像金字塔匹配和增强策略。ORSIm检测器采用了一种新颖的空频信道特征(SFCF),它综合考虑了频域内构造的旋转不变信道特征和原始的空间信道特征(如颜色信道和梯度幅度)。随后,我们使用基于学习的策略对SFCF进行了改进,以获得高级或语义上有意义的特性。在测试阶段,通过对图像域中尺度因子的数学估计,实现了快速粗略的通道计算。对两种不同的机载数据集进行了大量的实验结果表明,与以往的先进方法相比,该方法具有优越性和有效性。

    01

    Object Detection in 20 Years: A Survey

    目标检测作为计算机视觉中最基本、最具挑战性的问题之一,近年来受到了广泛的关注。它在过去二十年的发展可以说是计算机视觉历史的缩影。如果我们把今天的物体检测看作是深度学习力量下的一种技术美学,那么让时光倒流20年,我们将见证冷兵器时代的智慧。本文从目标检测技术发展的角度,对近四分之一世纪(20世纪90年代至2019年)的400余篇论文进行了广泛的回顾。本文涵盖了许多主题,包括历史上的里程碑检测器、检测数据集、度量、检测系统的基本构件、加速技术以及最新的检测方法。本文还综述了行人检测、人脸检测、文本检测等重要的检测应用,并对其面临的挑战以及近年来的技术进步进行了深入分析。

    05
    领券