深度学习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)