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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何使用GIST+LIBLINEAR分类器提取CIFAR-10 dataset数据集中图像特征,并用测试数据进行实验

發布時間:2025/7/25 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用GIST+LIBLINEAR分类器提取CIFAR-10 dataset数据集中图像特征,并用测试数据进行实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


上學期開了多媒體的課程,把其中一個課程設計實現的過程與大家分享。

?



轉載請注明出處,謝謝。





最近整理文件的時候,發現了我以前寫的文檔和源碼,附上github的下載地址



https://github.com/bigfishman/Gist-LIBLINEAR-CIFAR-10 ??



喜歡的朋友可以fork


這個課程設計是為了實現圖像分類的整個過程,通過完成整個的工作過程,更好的理解圖像分類這一概念,提高自己的理論與實踐結合的能力。整個項目分為四大步:導入數據、特征提取部分、分類器訓練部分、標簽預測部分。根據課程,我們選擇的數據集為CIFAR-10,特征提取采用的是GIST特征提取方法,分類方法我們使用的是LIBLINEAR中自帶的TrainPredict程序。到最后得出結果,進行結果分析。

工具及設計方案詳細介紹

CIFAR-10 dataset

CIFAR-10數據集包括6000032x32彩色圖像,分布在在10,每個類有6000幅圖像。這60000幅圖片中分別包括50000幅訓練圖像和10000幅測試圖像。  

數據集被分成了五個訓練文件和一個測試文件,每一個文件都有10000張圖片。測試文件中隨機的包含了每個類的1000幅圖片,但是每個訓練批次中的圖像是隨機的,其中包含的圖像并不是固定一樣的。所以一些培訓批次可能某一個類包含更多的圖像。而五個訓練文件,每個類的總數為5000個,這樣就保證了樣本的概率平衡。

還需要注意的是,從CIFAR-10中加載的內容中的data數據是整數,需要我們轉換成圖片,在網站上面我們可以看到也給出了相應的解釋。每一個文件中有一個10000x3072N數組。數組的每一行存儲一個32x32的彩色圖像。前1024項代表的紅色,中間1024個代表的是綠色,和最后1024代表的是藍色。圖像存儲是按行主序,使數組的前32項是圖像的第一排紅色通道值。

GIST特征提取

根據項目提供的網站,我們可以大致知道,GIST特征提取是提出一個識別現實世界的計算模型,這個模型繞過個別對象或區域的分割和處理。用一個五維的感知維度來代表一個場景的主要內容,包括自然性、開放性、粗糙度、擴張性和堅固性。這些維度能夠可靠的估計使用的光譜和粗定位信息,雖有可用這些維度來代表一個場景圖片。

LIBLINEAR分類器

LIBLINEAR是一個用于大規模數據分類的線性分類器,支持邏輯回歸和向量機。同時,LIBLINEAR還為開發者提供了好用的命令行和庫接口。不管是開發者還是深層次的使用者,LIBLINEAR都有對應的文檔供其查閱。實驗證明,LIBLINEAR對于大規模數據分析十分有效。

從上面的數據集我們可以知道,數據的數量為60000,而相應的類卻僅僅為10,數據數量遠遠大于數據類別。所以我們使用LIBLINEAR分類器,

具體設計方案

從相應網站下載相應軟件。這里CIFAR-10我們下載MATLAB版,解壓數據得到訓練和測試數據,可以在MATLAB中用LOAD加載,只是現在的數據是整數類型,我們需要將其轉換成圖片,然后對轉換后的圖片進行特征提取,將相應的結果保存下來,保存的格式非常重要,我們可以將從LIBLINEAR中下載的數據中的heart-scale打開,記住相應的格式為:labelIDfeartures。重復將所有的圖片都做一遍,然后將所有的結果保存到一個特定的地方(Feartures.txt),就相當于特征已經提取出來,接下來要做的只是運用LIBLINEAR分類器將所得的特征進行分類(Train),然后用相應的數據進行測試然后進行標簽預測(Predict)。從而完成整個圖片分類過程。

實踐操作

導入數據

實踐部分我們根據上面的具體設計來進行



圖一:下載的CIFAR-10數據集包

將下載的數據在MATLABload后如下圖所示:


圖二:MATLAB中加載數據集

從上圖我們可以看到,data中的數據是以二維數組的形式存儲的圖片信息,每一行有3072個數據,剛好包括了紅、綠、藍三色,每一色的大小為102432*32大小,每一行則代表一幅圖片。

下面進行二維數組到圖片的轉換。

RGB圖片的每一個色由32*32的矩陣表示

所以我們可以設置變量RedGreenBlue三個數組來用于讀取相應的顏色,然后將相應的顏色值存進Image里面,這時Image就表示一幅圖片了

過程如下:


圖三:將data數據轉換成圖片


Imshow(Image)結果如下:


圖四:CIFAR-10第一幅圖片


對著一幅圖片進行特征提取,利用從網站下載下來的LMgist文件,可以得到如下的結果:


圖五:GIST特征提取效果圖


下面我們要對整個的數據進行收集,有50000個圖片信息要進行處理。分別load加載,可以得到相應的數據我們設為data1data2data3data4data5,然后用一個新的data合并這五個數據data=[data1;data2;data3;data4;data5]。這樣我們就得到一個50000*3072大小的矩陣了,這樣整個的數據就都導出來了。方法如下:


圖六:導入所有訓練數據


這樣數組sumdata中的數據就包含所以訓練數據了,sumdata1中的數據就是每一幅圖片的label了,表明每幅圖片屬于哪個類。


特征提取

這里我們使用的是Gist特征提取,下載的gistdescriptor包中已經有了一個Gist函數,我們只要進行調用就可以,如下:


[gist1,param] = LMgist(Image,'',param);


這里的Image就是數據導入的Image圖片,直接放入LMgist當中,可以返回一個gist1數組,

我們每導入一幅圖片的內容就進行相應的特征提取,用一個150000的循環,將每一幅圖片都提取特征。

過程如下:


圖七:調用LMgist進行特征提取


將提取的特征保存到相應的文件當中:


fid= fopen('E:/Feartrues.txt','w');

fprintf(fid,'%d',sumdata1(t));

fprintf(fid,'%d:%g', ii, gist1(1, ii));

fprintf(fid,'\n');


上面代碼將會在EFeartures.txt文件中保存提取的特征,格式是按照前面提到的heart_scale文件中的格式的,labelIDFeartures。其中Feartures用一個512的向量進行保存。


分類器訓練

在前面我們介紹到,下載的數據包為Liblinear-1.94,我們找到其中一個文件heart_scale,已經介紹了,相應的數據格式,在第二步中已有詳細介紹。

將特征提取的Feartures.txt文件作為訓練數據的輸入,即Train Feartures.tx?我們可以得到一個Feartures.model,這個model就是由訓練得出的分類器模型。其中在windows環境下,我們可以直接使用已經編譯連接好的可執行文件,該文件在解壓后windows目錄下。

Train的格式為:

train[options] training_set_file [model_file];其中train_set_file為我們要測試的文件,就是上面的Feartures.txtmodel_file為輸出文件。

Options的一些操作,如multiclassclassification

-stype :對于多分類,指定使用的分類器(默認是1):

0-- L2-regularized logistic regression(primal)

1-- L2-regularized L2-loss support vectorclassification (dual)

2-- L2-regularized L2-loss support vectorclassification (primal)

3-- L2-regularized L1-loss support vectorclassification (dual)

4-- support vector classification by Crammerand Singer

5-- L1-regularized L2-loss support vectorclassification

6-- L1-regularized logistic regression

7-- L2-regularized logistic regression (dual)

我們可以在訓練的時候使用multiclassclassification


標簽預測

我使用的是下載包中自帶的Predict程序,在下載包中windows目錄下面可以找到。然后用上面生成的Feartures.txt.model文件作為一個輸入,然后從CIFAR-10中提出test_batch.mat文件作為測試數據,然后output.txt為輸出文件。

Predict用法:

predict[options] test_file model_file output_file

options:

-bprobability_estimates:是否輸出概率估計。默認是0,不輸出。只對logistic回歸有用

-q:安靜模式(無輸出信息)

需要注意的是-b只在預測階段用到。這個和LIBSVM不同。

結果及其分析

實驗結果

特征提取的結果:】


圖八:特征提取結果

從上面可以看出,總共50000幅圖片,特征提取的時間為55.808367分鐘,電腦CPUOCRE-i5,執行速度還是相對較快的。特征提取完之后,在E盤下面生成了一個Feartures.txt文件,打開要花點時間,有300MB


圖九:Feartures.txt內容

文件中的格式,跟我們設計的是一樣的,總共50000行,每一行有512個特征值,第一個數字為label,符合項目要求。

按照前面訓練數據提取特征的方法,將test_batch.mat測試文件中的數據也進行特征提取,存進Test_data.txt中,然后就可以當作Predict程序的一個輸入了。


圖十:提取測試數據

下表是Train的不同方法所用的時間和相應Predict的結果:

Train–S type Feartures.txt默認為1

表一:訓練和預測結果表

-Stypemulticlass classification

Train

時間

Predict時間

Predict結果

Accuracy

-S0L2-regularizedlogistic regression(primal)

91s

4.6s


58.23%(5823/10000)


-S1L2-regularizedL2-loss support vectorclassification (dual)

48s

7.9s

58.23%(5823/10000)


-S2L2-regularizedL2-loss support vectorclassification (primal)

75s

3.8s

58.2%(5820/10000)


-S3L2-regularizedL1-loss support vectorclassification (dual)

39s

3.6s


56.08%(5608/10000)


-S4supportvector classification by Crammerand Singer

45s

3.9s


57.84%(5784/10000)


-S5L1-regularizedL2-loss support vectorclassification

591s

2.6s

58.2%(5820/10000)


-S6L1-regularizedlogistic regression

46s


3.9s


57.98%(5798/10000)


-S7L2-regularizedlogistic regression (dual)

28.2s

3.4s


58.23%(5823/10000)



結果分析

從表中可以看出不同模式下面的Train時間和Predict時間有所差距,但是差距都不是特別大,其中和其他有較大差距的-S5Train時間,是其他的十倍左右。Predict時間集中模式都差不多,predict結果Accuracy都在60%以下,其中有幾項數據一樣,比如-S0-S1-S7都為58.23%-S2-S5都是58.2%,其中-S7train時間和Predict時間和結果綜合起來是這8種模式中最好的。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的如何使用GIST+LIBLINEAR分类器提取CIFAR-10 dataset数据集中图像特征,并用测试数据进行实验的全部內容,希望文章能夠幫你解決所遇到的問題。

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