


下载链接
提取码:2022
数据集文件夹中存放了样例image和label,可以查看他们的通道等信息,方便处理自己的数据集。
参考另一篇文章:图像预处理
如果您的数据集标签取值为255,需要转化为0,1,2,等(视自己情况而定)
例如:
Background [0,0,0]--------------0
Person [192,128,128]--------------1
Bike [0,128,0]----------------------2
Car [128,128,128]----------------- 3
Drone [128,0,0]--------------------4
Boat [0,0,128]--------------------- 5
Animal [192,0,128]---------------- 6
Obstacle [192,0,0]------------------7
Construction [192,128,0]-----------8
Vegetation [0,64,0]-----------------9
Road [128,128,0]-------------------10
Sky [0,128,128]---------------------11
如果显存不够,可以裁剪图像为256大小,对应代码如下:
裁剪后的图像保存在image和label中
import os
import numpy as np
import cv2
images_path = './JPEGImages/'
labels_path = './SegmentationClass/'
image_files = os.listdir(images_path)
for s in image_files:
image_path = images_path + s
label_path = labels_path + s[:-4]+'.png'
image = cv2.imread(image_path)
label = cv2.imread(label_path)
#print(image.shape)
index = 0
for i in range(4):
for j in range(4):
#print(i*256, ((i+1)*256-1), j*256, ((j+1)*256-1))
new_image = image[i*256 : ((i+1)*256), j*256 : ((j+1)*256), :]
new_label = label[i*256 : ((i+1)*256), j*256 : ((j+1)*256), :]
cv2.imwrite('./image/'+ 'b_' + s[:-4] +'_'+ str(index) + '.png', new_image)
new_label = cv2.cvtColor(new_label, cv2.COLOR_BGR2GRAY)
cv2.imwrite('./label/'+ 'b_' + s[:-4] +'_'+ str(index) + '.png', new_label)
index+=1
print(s)
voc_annotation.py文件,生成数据列表,运行命令:python voc_annotation.py,此处一般不会报错,如果报错可以按照下面的方式检查:
检查标签是否是8位深度,如果不是,运行下面的代码:
import os
import cv2
file_names = os.listdir('./SegmentationClass/')
for s in file_names:
image_path = os.path.join('./SegmentationClass/', s)
image = cv2.imread(image_path)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imwrite('./SegmentationClass/' + s , image)
检查标签中是否有其他值,比如说类别为3,那么标签中的取值只能是0,1,2,如果出现其他值,就可能会报错;即便此处不报错,也可能在训练中出现问题,所以如果有这个问题,一定要记得修改。如果这种值不是特别多,可以直接设为0;如果特别多,那就需要检查是哪一步造成这个问题,如果找不到建议换数据集吧。



python train.py来训练


python get_miou.py命令


python predict.py命令