HOG + SVM 进行图片分类(python)

前言

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

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

注意事项:

  1. 你的图片必须是正方形,如果需要调整图片大小,建议百度一下,python几行就可以搞定了,最后把图片全部换成宽高相等的。

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

    001.jpg 1
    003.jpg 2

    前面是图片名称,后面是对应的类别(类别用数字表示),中间要用空格隔开,每个标签占一行。
    你要准备两个文件,一个是训练用的,一个是测试用的。
    训练样本标签和预测的都是一样的格式
    注意,文件末尾不能有多余的空白行,一行空白的也不能有

  3. 你的训练和测试的图片可以放在同一个文件夹下面

  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_cellcells_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'
    
    #图片大小
    
    size = 128
  6. 你需要安装sk-learn库,hog,PIL库等。可能还有一些零碎的库,大家用pip安装就好。

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

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

为了方便大家查看,代码放在了github点我查看

猜你喜欢

转载自blog.csdn.net/q1242027878/article/details/74271694