日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

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

前言

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

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

注意事項(xiàng):

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

  • 你圖片對(duì)應(yīng)的標(biāo)簽必須是這樣的:

    001.jpg 1
    003.jpg 2

    前面是圖片名稱,后面是對(duì)應(yīng)的類別(類別用數(shù)字表示),中間要用空格隔開,每個(gè)標(biāo)簽占一行。
    你要準(zhǔn)備兩個(gè)文件,一個(gè)是訓(xùn)練用的,一個(gè)是測(cè)試用的。
    訓(xùn)練樣本標(biāo)簽和預(yù)測(cè)的都是一樣的格式
    大家可以看github上面的實(shí)例.(image文件夾)

  • 你的訓(xùn)練和測(cè)試的圖片可以放在同一個(gè)文件夾下面,也可以不同,設(shè)置好train_image_path和test_image_path即可。

  • 你要根據(jù)你圖片的大小,對(duì)這行代碼進(jìn)行一些調(diào)整,這個(gè)調(diào)整需要你先了解hog的知識(shí):

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

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

    orientations我是選9或18,即梯度方向的個(gè)數(shù)

    一般來(lái)說(shuō),圖片越大,pixels_per_cell?和cells_per_block里面的值可以相應(yīng)變大。

  • 如果你要進(jìn)行多次,建議你把文件位置的參數(shù)寫死

    #訓(xùn)練集圖片的位置 train_image_path = '/home/icelee/Downloads/dataset/small_shixun/' #測(cè)試集圖片的位置 test_image_path = '/home/icelee/Downloads/dataset/small_shixun/' #訓(xùn)練集標(biāo)簽的位置 train_label_path = '/home/icelee/Downloads/dataset/mydata.txt' #測(cè)試集標(biāo)簽的位置 test_label_path = '/home/icelee/Downloads/dataset/test.txt' #圖片大小 image_height = 128 image_width = 128
    • ?
  • 你需要安裝sk-learn庫(kù),hog,PIL庫(kù)等。可能還有一些零碎的庫(kù),大家用pip安裝就好。

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

  • 采用這個(gè)測(cè)試cifar-10,準(zhǔn)確率有50%多一點(diǎn)點(diǎn)(亂猜的準(zhǔn)確率是10%),所以效果還是可以的,雖然比不上深度學(xué)習(xí)。

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

    可能出現(xiàn)的錯(cuò)誤

    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.
    出現(xiàn)上面的錯(cuò)誤說(shuō)明沒有正常讀取到圖片,所以請(qǐng)檢查圖片寬高是不是和設(shè)置的size一樣,路徑是否正確。更改之后運(yùn)行程序時(shí),請(qǐng)選擇重新獲取特征。

    總結(jié)

    以上是生活随笔為你收集整理的HOG + SVM 实现图片分类(python3)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。