直接上效果图:
代码仓库和视频演示b站视频004期:
到此一游7758258的个人空间-到此一游7758258个人主页-哔哩哔哩视频
代码展示:
数据集在data文件夹下
需要检测的目标对象数据集放在positive文件夹下
不需要的检测对象放在negative文件夹下
运行01train_SVM.py即可训练
训练结束后会保存模型在weights文件夹下
运行02pyqt.py会有一个可视化的界面,通过点击按钮加载图片识别。
科普相关知识:
PyQt 是一个用于开发图形用户界面(GUI)的Python绑定库。它将Qt框架与Python编程语言结合起来,使开发者可以使用Python语言创建功能强大、跨平台的GUI应用程序。
Qt 是一种流行的C++开发框架,提供了丰富的GUI组件和工具,可用于构建各种类型的应用程序,包括桌面应用程序、移动应用程序和嵌入式系统。PyQt允许开发者通过简单而直观的Python语法来利用Qt的功能,从而加快应用程序的开发速度。
PyQt提供了一系列模块和类,使开发者能够创建窗口、按钮、文本框、列表框等各种GUI元素,并为这些元素添加交互性和事件处理。此外,PyQt还支持多线程、数据库连接、网络通信等功能,使开发者能够构建复杂的GUI应用程序。
总之,PyQt是一个强大的工具,使开发者能够使用Python语言开发跨平台的GUI应用程序,并利用Qt框架提供的丰富功能和工具。
HOG(Histogram of Oriented Gradients)是一种计算机视觉中常用的特征描述子。它被广泛应用于目标检测和人体姿态估计等任务。
HOG特征描述子通过对图像进行局部梯度计算,提取了图像中不同区域的方向梯度信息。具体而言,HOG将图像划分为小的局部块,并计算每个块内像素点的梯度方向和强度。然后,将这些局部块的梯度方向信息统计到直方图中,形成一个特征向量表示该块的特征。最后,将所有块的特征向量拼接在一起,形成整个图像的HOG特征描述子。
HOG特征具有以下特点:
- 对于光照变化、阴影以及一定程度的几何变换具有一定的鲁棒性。
- 通过统计局部块的梯度方向信息,能够捕捉到物体的边缘和纹理特征。
- HOG特征描述子维度相对较低,便于快速计算和存储。
在目标检测领域,HOG特征通常与机器学习算法(例如支持向量机)结合使用,通过训练模型来识别图像中的目标。HOG特征在人体检测方面表现良好,尤其在行人检测上应用广泛,并为其他目标检测任务提供了一种有效的特征表示方法。
SVM(Support Vector Machine)是一种常见的监督学习算法,广泛应用于模式分类和回归任务中。
SVM的目标是找到一个最优的超平面,将不同类别的样本点在特征空间中尽可能地分开。超平面可以被看作是一个决策边界,用于对新的未标记数据进行分类。SVM通过选择支持向量(距离超平面最近的训练样本点)来确定分类边界,从而实现对样本的有效分类。
SVM具有以下特点:
- 可以处理高维特征空间,并且在处理高维数据时表现良好。
- 通过引入核函数,可以将低维非线性可分问题映射到高维空间进行线性分类,从而提高分类准确率。
- SVM具有较强的鲁棒性,对于一些噪声和异常值具有一定的容忍度。
- 在训练过程中,SVM只使用支持向量,大大减少了存储和计算开销。
SVM的应用包括图像分类、文本分类、生物信息学、人脸识别等领域。它在机器学习中被认为是一种经典的方法,因其稳定性和分类性能而备受关注。