因为我在前言中看到了这篇文章,所以我想我对HOG还有点了解,对此不做说明。 其实我自己不太清楚,比刚开始要好一点。 我的代码参考了这个博客。 让我看一下
上面的博主使用的是cifar-10数据集,但我们的数据集很可能是普通图像,所以我们做了一些改进。
注意事项:你的图像长宽可以不相等。 请设置image_height和image_width。
如果图像大小不相同,可以使用change_size.py使所有图像大小相同。
与你的照片对应的标签必须是这样的:
001.jpg 1
003.jpg 2
前面是图像名称,后面是相应的类别(类别用数字表示),中间用空格分隔,每个标签占一行。
必须准备训练用和测试用两个文件。
培训样本标签和预测的格式相同
大家可以看到github上的实例。 () image文件夹) )。
你的训练和测试图像可以放在同一个文件夹下,也可以不一样。 请设置train_image_path和test_image_path。
根据你图像的大小,需要对这个代码进行一些调整。 要进行这个调整,首先需要了解hog的知识:
FD=hog(gray,orientations=18,pixels _ per _ cell=[ 8,8 ],cells _ per _ block=[ 4,4 ],visualise=False
这是我为128x128大小的图像设定的提取hog特征的参数,你需要适当改变,那时的效果也不同。
orientations我选择9或18,也就是梯度方向的数量
通常,图像越大,pixels_per_cell和cells_per_block的值越大。
如果多次执行,建议您将文件位置参数置于死位置
#训练集图像位置train _ image _ path='/home/ice lee/downloads/dataset/small _ Shi Xun/' #测试集图像位置test _ image ice lee/downloads/dataset/my data.txt ' #测试集标签的位置test_label_path='/home图像大小image _ height=128 image _ wwt 也可能有零碎的库,大家用pip安装就好了。
实验都是彩色图像。 如果你的图像是纯黑白的,你可能需要更改代码,看看代码注释
如果采用该测试cifar-10,命中率为50%多()一点点),虽然达不到深度学习,但效果很好。
为了方便大家观看,代码放在了github :https://github.com/xiaobing chan/hog _ SVM上
可能发生的错误ValueError: Expected 2D array,got1darrayinstead : array=[ ].reshapeyourdataeitherusingarray.reshape (-) 1 ) ifyourdatahasasinglefeatureorarray.reshape (1,-1) if it contains a单一样本。
如果发生上述错误,图像读取不成功,请检查图像宽度是否设置为与size相同,以及路径是否正确。 如果要在更改后运行程序,请选择“重新获取特征”。