1.训练了两轮,发现都只能识别到背景,看评论是数据集标签的问题。
2.数据集问题:仅仅识别背景像素值为0的部分。把255转成像素值为1,再用voc_annotation.py分集即可。
具体原因为crack500的标签值为布尔值,只有0和1,不符合此模型的识别范围,查看数据集标签的代码如下:
from PIL import Image
import numpy as np
I = Image.open('crack20\SegmentationClass\IMG_2940_1945_485.png')
I.show()
I_array = np.array(I)
# print(I_array.shape)
print(I_array.dtype)
再进行格式转换:
import os
from PIL import Image
import numpy as np
path = './crack20/SegmentationClass/'
savedpath = './crack20/SegmentationClass2/'
filelist = os.listdir(path)
for item in filelist:
if item=='desktop.ini': #windows下有时候会莫名其妙的出现这个配置文件,我们遇见了就跳过该次循环
continue
im = Image.open(path + item) # 打开图片
im = im.convert('L') #转成L型后,布尔型0和1会变成0和255的像素值
width = im.size[0] # 获取宽度
height = im.size[1] # 获取长度
for x in range(width):
for y in range(height):
b = im.getpixel((x,y))
if (b == 255):
im.putpixel((x, y), 1) #把像素值255改成1,以对应1标签
im.save(savedpath + item, 'png')
print('item of %s is saved ' % (item))