VOC2012
第一步:將VOC數據集的類別標簽放入Label文件夾中,使用以下代碼將VOC2012數據集的圖片按照類別分組保存新的文件夾
import os
import shutil
# 文件目錄結構:
# D:/VOC2012/JPEGImages
# D:/VOC2012/Label
# D:/VOC2012/SegmentationClass
# D:/VOC2012/VOC2012-CoSaliency
Set_Data_Dir = 'D:/VOC2012/Label/'
for group_file in os.listdir(Set_Data_Dir):
? ? Group_File_Dir = Set_Data_Dir + group_file
? ? with open(Group_File_Dir) as f:
? ? ? ? lines = f.read().splitlines()
? ? for line in lines:
? ? ? ? if line[-2:] != '-1':
? ? ? ? ? ? origin_gt = 'D:/VOC2012/SegmentationClass/' + line[:-3] + '.png'
? ? ? ? ? ? if os.path.exists(origin_gt):
? ? ? ? ? ? ? ? origin_image = 'D:/VOC2012/JPEGImages/' + line[:-3] + '.jpg'
? ? ? ? ? ? ? ? new_fold = 'D:/VOC2012/VOC2012-CoSaliency-Origin/' + str(group_file[:-13])
? ? ? ? ? ? ? ? if not os.path.exists(new_fold):
? ? ? ? ? ? ? ? ? ? os.mkdir(new_fold)
? ? ? ? ? ? ? ? new_image = 'D:/VOC2012/VOC2012-CoSaliency-Origin/' + str(group_file[:-13]) + '/' + line[:-3] + '.jpg'
? ? ? ? ? ? ? ? new_gt = 'D:/VOC2012/VOC2012-CoSaliency-Origin/' + str(group_file[:-13]) + '/' + line[:-3] + '.png'
? ? ? ? ? ? ? ? shutil.copyfile(origin_image, new_image)
? ? ? ? ? ? ? ? shutil.copyfile(origin_gt, new_gt)
第二步 轉化語義分割真值圖為顯著性檢測真值圖
import os
import shutil
import cv2
from PIL import Image
import numpy as np
Set_Data_Dir = 'D:/VOC2012/VOC2012-CoSaliency-Origin/'
New_Data_Dir = 'D:/VOC2012/VOC2012-CoSaliency/'
i = 0
for group_file in os.listdir(Set_Data_Dir):
? ? i = i + 1
? ? for imgPath in [imgName for imgName in os.listdir(Set_Data_Dir + group_file + "/") if 'jpg' in imgName]:
? ? ? ? origin_image = Set_Data_Dir + group_file + "/" + imgPath
? ? ? ? new_fold = New_Data_Dir + group_file
? ? ? ? if not os.path.exists(new_fold):
? ? ? ? ? ? os.mkdir(new_fold)
? ? ? ? newImg = New_Data_Dir + group_file + "/" + imgPath
? ? ? ? shutil.copyfile(origin_image, newImg)
? ? for gtPath in [gtName for gtName in os.listdir(Set_Data_Dir + group_file + "/") if 'png' in gtName]:
? ? ? ? origin_gt_path = Set_Data_Dir + group_file + "/" + gtPath
? ? ? ? origin_gt = Image.open(origin_gt_path)
? ? ? ? origin_gt = np.array(origin_gt)
? ? ? ? origin_gt[origin_gt != i] = 0
? ? ? ? origin_gt[origin_gt == i] = 255
? ? ? ? newGt_path = New_Data_Dir + group_file + "/" + gtPath
? ? ? ? cv2.imwrite(newGt_path, origin_gt)
第三步 每張圖片在組中與最相似的一張組成新組
import cv2
import os
import numpy as np
import shutil
import random
def CopyPic(img_path, j, Set_dir_len, group_dir_len, img_dir_len):
? ? rgbOld = img_path
? ? rgbFolder = "D:/VOC2012/processed_datasets/" + img_path[Set_dir_len:group_dir_len-1] + '_' + str(j)
? ? print(rgbFolder)
? ? if not os.path.exists(rgbFolder):
? ? ? ? os.mkdir(rgbFolder)
? ? rgbNew = "D:/VOC2012/processed_datasets/" + img_path[Set_dir_len:group_dir_len-1] + '_' + str(j) + "/" + img_path[group_dir_len:-4] + ".jpg"
? ? print(rgbNew)
? ? gtOld = img_path[:-4] + ".png"
? ? print(gtOld)
? ? gtNew = "D:/VOC2012/processed_datasets/" + img_path[Set_dir_len:group_dir_len-1] + '_' + str(j) + "/" + img_path[group_dir_len:-4] + ".png"
? ? print(gtNew)
? ? print()
? ? shutil.copyfile(rgbOld, rgbNew)
? ? shutil.copyfile(gtOld, gtNew)
? ? return
Set_Data_Dir = "D:/VOC2012/VOC2012-CoSaliency-Delete/"
Set_dir_len = len(Set_Data_Dir)
#[p for p in os.listdir(Group_Data_Dir) if 'jpg' in p]
for group_name in os.listdir(Set_Data_Dir):
? ? i = 1
? ? Group_Data_Dir = Set_Data_Dir + group_name + "/"
? ? group_dir_len = len(Group_Data_Dir)
? ? for img_name in [p for p in os.listdir(Group_Data_Dir) if 'jpg' in p]:
? ? ? ? img_path = Group_Data_Dir + img_name
? ? ? ? img_dir_len = len(img_path)
? ? ? ? img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
? ? ? ? hist = cv2.calcHist(img, [0], None, [256], [0, 256])
? ? ? ? list_loss = []
? ? ? ? list_path = []
? ? ? ? for o_img_name in [p for p in os.listdir(Group_Data_Dir) if 'jpg' in p]:
? ? ? ? ? ? o_img_path = Group_Data_Dir + o_img_name
? ? ? ? ? ? if img_path != o_img_path:
? ? ? ? ? ? ? ? o_img = cv2.imread(o_img_path, cv2.IMREAD_GRAYSCALE)
? ? ? ? ? ? ? ? o_hist = cv2.calcHist(o_img, [0], None, [256], [0, 256])
? ? ? ? ? ? ? ? o_loss = cv2.compareHist(hist, o_hist, cv2.HISTCMP_BHATTACHARYYA)
? ? ? ? ? ? ? ? list_loss.append(o_loss)
? ? ? ? ? ? ? ? list_path.append(o_img_path)
? ? ? ? loss_sort_index = np.argsort(list_loss)
? ? ? ? CopyPic(img_path, i, Set_dir_len, group_dir_len, img_dir_len)
? ? ? ? CopyPic(list_path[loss_sort_index[0]], i, Set_dir_len, group_dir_len, img_dir_len)
? ? ? ? i = i + 1
總結
- 上一篇: 群晖(Synology)配置 NAS +
- 下一篇: Android 监听 摇杆,Androi