Stanford Cars數據集的下載與使用

本篇博客主要介紹Stanford Cars數據集的下載與使用

Stanford Cars數據集主要用於細粒度分類任務。數據集中一共包含16185張不同型號的汽車圖片,其中8144張爲訓練集,8041張爲測試集。

官網下載鏈接:
http://ai.stanford.edu/~jkrause/cars/car_dataset.html
在這裏插入圖片描述
官網中有兩個版本的數據集,在舊版本中沒有測試集的標註,我們要下載的是新版本(Update那一行)的圖片和標註。
數據集大小大概爲2G。如果是在linux系統下下載,建議使用axel多線程下載工具,不僅速度有所提升,而且支持斷點下載(下載過程中斷後,可以重新執行命令繼續從中斷位置下載)。axel的下載使用可以參考這條博客
在安裝好axel工具後,若下載該汽車數據集,請執行以下命令。
下載圖片:

axel -n 10 http://imagenet.stanford.edu/internal/car196/car_ims.tgz

下載標籤

axel -n 10 http://imagenet.stanford.edu/internal/car196/cars_annos.mat

標籤是用matlab格式保存的,名爲:cars_annos.mat,需要自行提取其中的信息。

1)提取類別名:

import scipy.io
 
data = scipy.io.loadmat('cars_annos.mat')
class_names = data['class_names']
f_class = open('./label_map.txt','w')
 
num = 1
for j in range(class_names.shape[1]):
    class_name = str(class_names[0,j][0]).replace(' ','_')
    print(num,class_name)
    f_class.write( str(num) + ' ' + class_name + '\n')
    num = num + 1
f_class.close()

得到的結果爲以下樣式:
在這裏插入圖片描述

2)提取 序號, 圖片名, 類別, 屬於測試集還是訓練集(0,1表示)

import scipy.io
 
data = scipy.io.loadmat('cars_annos.mat')
annotations = data['annotations']
f_train = open('./mat2txt.txt','w')

num = 1
for i in range(annotations.shape[1]):
    name = str(annotations[0,i][0])[2:-2]
    test  = int(annotations[0,i][6])
    clas = int(annotations[0,i][5])

    name = str(name)
    clas = str(clas)
    test = str(test)
    f_train.write(str(num) + ' ' + name + ' ' + clas + ' ' + test+'\n')
    num = num + 1
 
f_train.close()

得到的結果爲以下樣式
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章