深度學習CV-圖像分割 二測
# 由于對圖片中的而每一個像素都要進行標號的話,所以label不能像以前一樣,# 他的做法是將所有的標號轉換成一種顏色,存成一張圖片# 這個數據集中圖片和label是不同文件夾下的同名文件下,文件名存儲在.txt文件中# 使用png格式是為了label不被壓縮。def read_voc_images(voc_dir, is_train=True):
? ?"""讀取所有的VOC圖像并標注"""
? ?txt_fname = os.path.join(voc_dir,'ImageSets','Segmentation',"train.txt" if is_train else 'val.txt')
? ?mode = torchvision.io.image.ImageReadMode.RGB # 模式,用于讀取文件
? ?with open(txt_fname,'r') as f:
? ? ? ?images = f.read().split() # f.read().split()把文件內容當成一個列表返回
? ?features, labels = [],[]
? ?for i ,name in enumerate(images):
? ? ? ?features.append(torchvision.io.read_image(os.path.join(voc_dir,'JPEGImages',f'{name}.jpg')))
? ? ? ?labels.append(torchvision.io.read_image(os.path.join(voc_dir,'SegmentationClass',f'{name}.png'),mode))
? ?return features, labels
train_features, train_labels = read_voc_images(voc_dir,is_train=True)