前言

大家能看到这篇文章,想必对HOG还是有些了解了,那我就不赘述了,其实我自己不太懂,但是还是比刚开始好一些了。下面我的代码是参考这位博主的:点我查看

上面那位博主是用的cifar-10数据集,但是我们的数据集很可能是普通的图片,所以我进行了一些改进。

注意事项:

  1. 你的图片长宽可以不相等,设置好image_heightimage_width即可。
    如果图片大小不相等,可以使用change_size.py,把所有图片大小resize成一样的。

  2. 你图片对应的标签必须是这样的:

    001.jpg 1
    003.jpg 2

    前面是图片名称,后面是对应的类别(类别用数字表示),中间要用空格隔开,每个标签占一行。
    你要准备两个文件,一个是训练用的,一个是测试用的。
    训练样本标签和预测的都是一样的格式
    大家可以看github上面的实例.(image文件夹)

  3. 你的训练和测试的图片可以放在同一个文件夹下面,也可以不同,设置好train_image_pathtest_image_path即可。

  4. 你要根据你图片的大小,对这行代码进行一些调整,这个调整需要你先了解hog的知识:

    fd = hog(gray, orientations=18, pixels_per_cell=[8,8], cells_per_block=[4,4], visualise=False, transform_sqrt=True)

    这是我为128x128大小图片设置的提取hog特征的参数,你需要适当改变一些,到时候的效果也不同。

    orientations我是选9或18,即梯度方向的个数

    一般来说,图片越大,pixels_per_cell 和cells_per_block里面的值可以相应变大。

  5. 如果你要进行多次,建议你把文件位置的参数写死

    #训练集图片的位置
    train_image_path = '/home/icelee/Downloads/dataset/small_shixun/'
    #测试集图片的位置
    test_image_path = '/home/icelee/Downloads/dataset/small_shixun/'
    #训练集标签的位置
    train_label_path = '/home/icelee/Downloads/dataset/mydata.txt'
    #测试集标签的位置
    test_label_path = '/home/icelee/Downloads/dataset/test.txt'
    #图片大小
    image_height = 128
    image_width = 128
    
  6. 你需要安装sk-learn库,hog,PIL库等。可能还有一些零碎的库,大家用pip安装就好。

  7. 实验都是彩色图片,如果你的图片是纯黑白的,很有可能需要改一下代码,看一下代码注释即可

采用这个测试cifar-10,准确率有50%多一点点(乱猜的准确率是10%),所以效果还是可以的,虽然比不上深度学习。

为了方便大家查看,代码放在了github:https://github.com/xiaobingchan/HOG_SVM

可能出现的错误

ValueError: Expected 2D array, got 1D array instead: array=[]. Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
出现上面的错误说明没有正常读取到图片,所以请检查图片宽高是不是和设置的size一样,路径是否正确。更改之后运行程序时,请选择重新获取特征。

HOG + SVM 实现图片分类(python3)相关推荐

  1. 车牌识别技术详解五--采用LBP+HOG SVM做目标分类,车牌检测,字符检测等

    在样本数量比较少的情况下,可以采用HOG.SVM对样本进行初步的筛选出,正负样本,本文接着上一节二值化出来部分样本后,用pictureRelate做初步筛选出正负样本各500,准确训练. 1.pict ...

  2. hog svm 视频 matlab,matlab版hog+svm图像二分类

    开始接触svm分类器是opencv中的使用起来很方便,后来根据实际需要需要使用matlab版的,以前没怎么接触过,开始有点头大,不知从何下手,查阅相关例子后,就开始 开始接触svm分类器是opencv ...

  3. svm实现图片分类(python)

    目录 前言 knn vs. svm svm & linear classifier bias trick loss function regularization optimization 代 ...

  4. svm实现图片分类(python)_SVM分类器python实现

    本作业的目标如下: implement a fully-vectorized loss function for the SVM implement the fully-vectorized expr ...

  5. 【实战类】Hog SVM进行图像分类任务

    目录 一.训练数据准备:cifar转图像操作 二.训练和验证部分 三.hog梯度图可视化 案例训练数据:cifar 10 图像下载地址(后面我们要用这批数据作为训练数据):CIFAR-10 and C ...

  6. svm+特征提取做分类

    使用SVM做一个图片分类器,主要使用的技术是,各种特征提取方法加上PCA主成分提取,最后用SVM进行图片分类处理. 特征提取这个东西还是比较简单的,前人做的工作很多,源代码也不少.主要采用的不变距.H ...

  7. SVM 图片分类python实现

    文章目录 前言 一.数据集准备 二.安装环境 三.执行代码 总结 前言 SVM分类器就不介绍了,代码是网友通过github共享下载到的,源链接大家可以自行搜索一下.名称是SVMImageClassif ...

  8. 行人检测HOG+SVM:综述、INRIADATA数据集、线性SVM

    目录 1. 行人检测算法研究综述 2. 基于机器学习的方法:人工特征+分类器 2.1 HOG+SVM 2.2 HOG+Adaboost 2.3 ICF+AdaBoost 2.4 DPM+ latent ...

  9. HOG+SVM进行行人检测(github代码解读)

    HOG+SVM进行行人检测 代码参考+数据集来源:https://github.com/FrankMa123/- 注意使用的scikit-learn库的版本为0.22,高于该版本的scikit-lea ...

最新文章

  1. Data - 数据思维 - 下篇
  2. linux配置中心自动化,centos下搭建git服务 基于git服务配置自动化部署 遇到的Linux知识补充...
  3. 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)
  4. STM32的IIC应用详解3
  5. JS实现select去除option的使用注意事项
  6. linux之循环执行任务
  7. 【Magicodes.IE 2.0.0-beta1版本发布】已支持数据表格、列筛选器和Sheet拆分
  8. oracle之基本的过滤和排序数据
  9. Ubuntu 安装调整工具移动 Launcher 启动器位置
  10. linux下u盘的使用
  11. 计算机运算法则图鉴,AP微积分BC TI-Nspire计算器使用指南 正确使用计算器5分到手轻而易举...
  12. html表格中加入斜线,使用css给table表格表头添加斜线(斜线表格)
  13. 使用防火墙禁止软件联网
  14. 新股高中签率的技巧|提高新股中签率技巧
  15. 蓝牙4.0、经典蓝牙、BT、BLE的关系与区别
  16. echart简单使用
  17. Java-对象数组以及内存图解
  18. 域名状态REGISTRAR-HOLD的含义 及其它状态解析
  19. NC瑞士军刀 网络工具
  20. 工厂生产现场怎样制定6s管理制度?

热门文章

  1. mysql备份:一,Xtrabackup
  2. stateful set 学习笔记
  3. [转]“Ceph浅析”系列之(—)—Ceph概况
  4. JVM系列(一)--JVM运行时数据区
  5. MYSQLMANAGER实例管理器总结
  6. oracle中创建游标,oracle 存储过程创建游标
  7. 利用类定义一个指针会调用默认构造函数吗_C++的拷贝构造函数
  8. 磁盘阵列怎么做_设计与后期制作该怎么选择笔记本电脑?朋克老师来教你
  9. Tomcat 内存调大
  10. MyEclipse2014破解