HOG + SVM 实现图片分类(python3)

前言

大家能看到这篇文章,想必对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:GitHub - xiaobingchan/HOG_SVM: 使用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一样,路径是否正确。更改之后运行程序时,请选择重新获取特征。

任何程序错误,以及技术疑问或需要解答的,请添加

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql无限递归查询

--------------所有子集数据包括自己---------------------CREATE PROCEDURE ALLSONID INTASBEGINWITH CTE AS(SELECT ID,PID,NAME,0 AS LVL FROM TEST1WHERE ID IDUNION ALLSELECT D.ID,D.PID,D.NAME,LVL1 FROM CTE C INNER JOIN TEST1 DON C.ID D.PID)SELECT * FROM CTEEND…

随机过程及其在金融领域中的应用 第三章 习题 及 答案

随机过程及其在金融领域中的应用 第三章 习题 及 答案 本文地址: http://blog.csdn.net/caroline_wendy/article/details/16879515 包含: 1, 2, 5, 15; 第1题: 第2题: 第5题: 第15题: 转载于:https://blog.51cto.com/spikeking/1388002

Fiddler手机抓包(iPhone)

Fiddler不但能截获各种浏览器发出的HTTP/HTTPS请求,也可以截获各种移动设备(包括Andriod和IOS)发出的HTTP/HTTPS请求。最关键的是,Fiddler还可以断点调试,修改Request和Response,而且即便抓包的是IOS设备&a…

聊聊asp.net中Web Api的使用

扯淡 随着app应用的崛起,后端服务开发的也越来越多,除了很多优秀的nodejs框架之外,微软当然也会在这个方面提供更便捷的开发方式。这是微软一贯的作风,如果从开发的便捷性来说的话微软是当之无愧的老大哥,只是鱼和熊掌…

python脚本去除文件名里的空格

原始文件名里很多空格,写了个python脚本去除文件名里的空格 import osfilepath"image" # 文件目录名 zimulus os.listdir(filepath)for musicname in zimulus:#改目录下的文件名oldmusicpath filepath \\ musicnamenewmusicname musicname.replace( …

plsql查询乱码问题解决

步骤一:新建变量,设置变量名:NLS_LANG,变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,确定即可; 步骤二: 退出plsql,重新登陆plsql。输入sql语句,执行&#xff0…

eclipse打开文件所在目录

设置 添加扩展工具,添加步骤如下: Run-->External Tools-->External Tools Configurations... new 一个 programlocation 里面填 :C:/WINDOWS/explorer.exeArguments 里面填: ${container_loc}设置完成之后,选择文件&#…

python saml2 认证实例程序demo

# pip install pysaml2 from saml2.client import Saml2Client from saml2.config import Config as Saml2Configmetadata_filepath acs_endpoint_url entity_id# 获取跳转网址 saml_settings {metadata: {local: [authenticator_self.metadata_filepath]}, service: {sp: {end…

找回Kitkat的AppOps

2019独角兽企业重金招聘Python工程师标准>>> How to invoke AppOps in Android 4.4 KITKAT % adb shell am start -n com.android.settings/com.android.settings.Settings \ -e :android:show_fragment com.android.settings.applications.AppOpsSummary \ --activ…

检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败

具体解决方法如下: 1:在服务器上安装office的Excel软件; 2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"; 3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM…

win2003 sp2+iis 6.0上部署.net 2.0和.net 4.0网站的方法

网站环境 IIS6.0,操作系统Windows server2003 sp2,服务器之前已经部署了.net 2.0和asp的网站,现在要部署新开发的.net 4.0网站.本来认为很简单,却遇到了很多问题,下面详细描述下过程: 1.官网下载.net framework4.0,下载地址:http://www.micro…

python+opencv实现机器视觉基础技术(2)(宽度测量,缺陷检测,医学检测

本篇博客接着讲解机器视觉的有关技术和知识。包括宽度测量,缺陷检测,医学处理。 一:宽度测量 在传统的自动化生产中,对于尺寸的测量,典型的方法就是千分尺、游标卡尺、塞尺等。而这些测量手段测量精度低、速度慢&…

web api添加拦截器

实现思路 1.标识控制器有拦截特性; 2.控制器拦截处理; 代码实现 1.标识控制器有拦截特性,代码: [MyFilter]public string PostFindUser([FromBody]Userinfo user){return string.Format("{0}是好人~", user.Name);}…

map 与 unordered_map

两者效率对比&#xff1a; #include <iostream> #include <string> #include <map> #include <unordered_map> #include <sys/time.h> #include <list>using namespace std;template<class T> void fun(const T& t, int sum) {f…

YOLO v3 安装并训练自己数据

文章目录 1. 安装1.1 模型安装1.2 运行Demo2.训练自己的数据集2.1数据集准备2.2修改配置文件2.2.1修改cfg/voc.data2.2.2修改data/voc.names2.2.3修改cfg/yolo-voc.cfg2.3 训练3. 测试3.1 单张图像测试3.2多张图像测试3.3 测试数据集测试mAP、recall等参数命令参数总结训练模型…

Chrome浏览器必装的扩展工具

名称作用下载地址Postman模拟各种http请求点击下载JSON Viewer访问json结果自动视图化点击下载Axure RP Extension for Chrome查看Axure原型图点击下载 注意&#xff1a;下载地址都需要FQ。

OpenStack-Mitaka 一键安装测试环境脚本

说明&#xff1a;这个脚本是采用Bash Shell编写&#xff0c;这个版本还只能作为测试环境搭建使用。 此脚本原形的发起人是网友&#xff1a;WuYuLiang.这里有他的博客链接: 第一版的链接: http://blog.csdn.net/wylfengyujiancheng/article/details/51137707 最新版链接: http:…

grunt使用小记之uglify:最全的uglify使用DEMO

grunt-contrib-uglify uglify是一个文件压缩插件&#xff0c;项目地址&#xff1a;https://github.com/gruntjs/grunt-contrib-uglify 本文将以一个DEMO来展示如何使用uglify插件。 DEMO环境 package.json: {"name": "grunt-demo","version": &q…

后台设计中容易被忽略的坑

1.数据关联性删除判断 示例&#xff1a;比如后台发布了一个待抢购的订单&#xff0c;app已经把此单抢购&#xff0c;因为后台没有及时刷新状态&#xff0c;所有如果要删除或下架此笔订单&#xff0c;必须先要验证此订单的状态是否为已经抢购&#xff1b; 2.数据重复录入问题 示…

人生该如何抉择

记得2012年初的时候受公司同事的讲解&#xff0c;我从一个对代码一无所知&#xff0c;了解到了计算机的数据类型、数组在内存中的存储&#xff0c;进而想走进程序员的行业&#xff0c;博客上认识的一个前辈告诉我了一个方向&#xff0c;前辈告诉我&#xff1a;“我建议你学java…