深度學習圖像預處理——分類


利用python進行圖像預處理——分類



from pexels.com 在計算機視覺的分類任務中,需要給不同類別的數據打上標簽。常見的深度學習框架一般可以直接處理**文件夾**,並按照文件夾來給圖像打上對應的標簽。一般來說文件夾下的結構如下所示:
./train_images
|--class1
    |--001.png
    |--002.png
    |--003.png
    |--xxx.png
|--class2
|--class3
|--classxxx

其中train_images為保存訓練數據的根目錄。但我們拿到的數據集往往都是下面這個樣子的:
這里寫圖片描述
form flickr.com
隨機附帶一個標簽文件·label.json。我們需要按照標簽文件將文件放到不同的文件夾中去。

1.處理標簽

如果一個label的格式如下:
[...,
{"image": "7e25ef0a-7cef-2429b82cafd6___YLCV_GCREC 1896.JPG", "disease_class": 4},
{"image": "e1a78324ca1d0c04f514b4372f.jpg", "class": 8},
{"image": "1ecd651560ebf9eaffbff791d3.jpg", "class": 6},...]

我們需要利用json包來進行處理:

import os  #構建目錄
import sys
import json  #讀取json
import shutil  #復制文件


train_label = './label.json'
train_img_path = './train_images/'
train_data = json.load(open(train_label))  #讀入label數據,讀入后為字典組成的list數據
print("This dataset totally has %d images"%len(train_data))  #顯示數據量


if not os.path.exists('./train'):
    os.mkdir('./train) #首先建立一個文件夾保存整理好的數據 for i in range(class_num): #分類數目,為不同類別生產對應的子文件夾 if not os.path.exists('./train/'+str(i)): os.mkdir('./train/'+str(i)) ## 按照標簽整理數據 count = 0 #計數器,確保所有圖片轉換完成 for item in train_data: count+=1 class_id = item.get('class') #讀取字典中的分類值,為整數 name_id = item.get('image') #讀取字典中的圖像文件名 shutil.copyfile(train_img_path+name_id, './train_dis/'+str(class_id)+'/'+name_id) #將文件copy到對應的分類文件夾中去 if count%1000==0:
        print('processed:',count)
print("Totally %d images is prepared"%count)   #這里的輸出應該和上面輸出的文件數量一致

""" 最后的文件結構如下: ./train |--1 |--1.jpg |--2.jpg |--xxx.jpg |--2 |--3 |--xxx """


from stock.adobe.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM