日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/11 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HOG + SVM 实现图片分类(python3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

大家能看到這篇文章,想必對HOG還是有些了解了,那我就不贅述了,其實我自己不太懂,但是還是比剛開始好一些了。下面我的代碼是參考這位博主的:點我查看

上面那位博主是用的cifar-10數據集,但是我們的數據集很可能是普通的圖片,所以我進行了一些改進。

注意事項:

  • 你的圖片長寬可以不相等,設置好image_height和image_width即可。
    如果圖片大小不相等,可以使用change_size.py,把所有圖片大小resize成一樣的。

  • 你圖片對應的標簽必須是這樣的:

    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, transform_sqrt=True)

    這是我為128x128大小圖片設置的提取hog特征的參數,你需要適當改變一些,到時候的效果也不同。

    orientations我是選9或18,即梯度方向的個數

    一般來說,圖片越大,pixels_per_cell?和cells_per_block里面的值可以相應變大。

  • 如果你要進行多次,建議你把文件位置的參數寫死

    #訓練集圖片的位置 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
    • ?
  • 你需要安裝sk-learn庫,hog,PIL庫等。可能還有一些零碎的庫,大家用pip安裝就好。

  • 實驗都是彩色圖片,如果你的圖片是純黑白的,很有可能需要改一下代碼,看一下代碼注釋即可

  • 采用這個測試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)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。