示例#1
0
def main():
    input_size = (320, 480, 3)
    classes = 21
    weight_path = './checkpoint/final_stage.h5'
    filename = '../seg_train_images/seg_train_images/train_1118.jpg'
    color_index = [[0, 0, 255], [193, 214, 0], [180, 0, 129], [255, 121, 166],
                   [255, 0, 0], [65, 166, 1], [208, 149, 1], [255, 255, 0],
                   [255, 134, 0], [0, 152, 225], [0, 203, 151], [85, 255, 50],
                   [92, 136, 125], [69, 47, 142], [136, 45, 66], [0, 255, 255],
                   [215, 0, 255], [180, 131, 135], [81, 99, 0], [86, 62, 67]]
    net = Unet(input_size, classes)
    net.load_weights(weight_path)
    img = Image.open(filename).resize((input_size[1], input_size[0]))
    img = np.asarray(img, dtype='float32')
    img = img / 255.0
    img = np.expand_dims(img, axis=0)
    pred = net.predict(img)
    b, w, h, c = pred.shape
    res = []
    for i in range(w):
        tmp = []
        for j in range(h):
            tmp.append(color_index[np.argmax(pred[0, i, j, :])])
        res.append(tmp)
    img = Image.fromarray(np.asarray(res, dtype='uint8'))
    img.save('result.png')
            nclasses=NUM_CLASSES,
            filters=UNET_FILTERS)
unet.load_weights(args.weights)
unet.compile(optimizer='adam',
             loss=SparseCategoricalFocalLoss(gamma=2),
             metrics=['accuracy'])

image_paths = glob.glob(args.images + '/*.jpg')
images = [
    x[0] for x in [
        get_resized_image_and_mask_label(cv2.imread(p), NEGATIVE)
        for p in image_paths
    ]
]

mpreds = unet.predict(np.array(images, dtype=np.uint8))
preds = maskpred(mpreds)

cmap = copy.copy(plt.cm.get_cmap("gist_rainbow", 20))
cmap.set_under(color="black")

print(f"Generating predictions for {len(images)} images...")

if args.generate_images:
    for img_path, pred in zip(image_paths, preds):
        np.savez(f"{img_path.split('.jpg')[0]}_PRED.npz", pred)

        pred[pred == 18] = -1

        plt.imshow(pred, cmap=cmap, interpolation='none', vmin=0, vmax=19)
        plt.colorbar(ticks=range(0, 20))
示例#3
0
文件: train.py 项目: W0207/Test

model = Unet(1, image_size=512)
trainset = DataGenerator("dataset/train", batch_size=2)
model.fit_generator(trainset, steps_per_epoch=100, epochs=1)
model.save_weights("model.h5")

testSet = DataGenerator("dataset/test", batch_size=1)
alpha = 0.3
model.load_weights("model.h5")
if not os.path.exists("./results"): os.mkdir("./results")

for idx, (img, mask) in enumerate(testSet):
    oring_img = img[0]
    # 开始用模型进行预测
    pred_mask = model.predict(img)[0]

    pred_mask[pred_mask > 0.5] = 1
    pred_mask[pred_mask <= 0.5] = 0
    # 如果这里展示的预测结果一片黑,请调整lr,同时注意图片的深度是否为8
    # cv2.imshow('pred_mask', pred_mask)

    # cv2.waitKey()
    img = cv2.cvtColor(img[0], cv2.COLOR_GRAY2RGB)
    H, W, C = img.shape
    for i in range(H):
        for j in range(W):
            if pred_mask[i][j][0] <= 0.5:
                img[i][j] = (1 - alpha) * img[i][j] * 255 + alpha * np.array(
                    [0, 0, 255])
            else: