コード例 #1
0
def tryPointMaskerCascaded(model, batch_generator, sample_names=None):
    if sample_names == None:
        sample_names = batch_generator.all_names

    for sample_name in sample_names:
        inputs, _ = batch_generator.getTrainingPairFromName(sample_name)
        #X, Y = batch_generator.getBatchFromNames([sample_name])
        print inputs
        im = inputs[0]
        width = len(im[0])
        height = len(im)
        print 'sample name: ' + sample_name
        base_masks, residual_masks = getNormalizedCascadedMasksFromImage(
            model, im)
        base_coords = utils.getCoordsFromPointMasks(base_masks, width, height,
                                                    'mean')
        residual_coords = utils.getCoordsFromPointMasks(
            residual_masks, 28, 28, 'mean')
        #max_coords = utils.getCoordsFromPointMasks(base_masks, width, height, 'max')
        coords = np.add(base_coords, residual_coords) - 28 / 2.0 - 4.0

        #for i in range(len(residual_masks)):
        #    plt.imshow(residual_masks[i])
        #    plt.show()

        utils.visualizeCoords(im, coords)
        utils.visualizeCoords(im, np.concatenate([base_coords, coords],
                                                 axis=0),
                              np.arange(0, len(coords)))
コード例 #2
0
def tryPointMaskerDilatedOnSamples(model):
    folder = 'downloads/samples/'
    for fname in os.listdir(folder):
        if fname.endswith(('png', 'jpg')):
            im = cv2.imread(folder + fname)
            im = cv2.resize(im, (224, 224))
            im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
            width = len(im[0])
            height = len(im)
            masks = getNormalizedMasksFromImage(model, im)
            coords = utils.getCoordsFromPointMasks(masks, width, height,
                                                   'mean')
            max_coords = utils.getCoordsFromPointMasks(masks, width, height,
                                                       'max')

            #for i in range(len(masks)):
            #    utils.visualizeMask
            #    utils.visualizeCoords(, [[y_avg, x_avg]])
            """masks /= np.max(masks, axis=[1,2])
            summed = np.sum(masks, axis=0)
            summed = cv2.resize(summed, (height, width))
            summed = np.minimum(1, summed)
            """
            masks = np.moveaxis(masks, 0, -1)
            #utils.visualizeCoordMasks(im, masks)
            utils.visualizeCoords(im, coords)
コード例 #3
0
def tryPointMaskerCascadedOnSamples(model,
                                    folder,
                                    output_folder,
                                    compare_coords=None):
    if not os.path.exists(output_folder):
        os.mkdir(output_folder)

    for fname in os.listdir(folder):
        if fname.endswith(('png', 'jpg')):
            im = cv2.imread(folder + '/' + fname)
            im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
            print folder + '/' + fname
            im = cv2.resize(im, (224, 224))
            width = len(im[0])
            height = len(im)
            t1 = time.time()

            base_masks, residual_masks = getNormalizedCascadedMasksFromImage(
                model, im)
            print time.time() - t1
            base_coords = utils.getCoordsFromPointMasks(
                base_masks, width, height, 'mean')
            residual_coords = utils.getCoordsFromPointMasks(
                residual_masks, 28, 28, 'mean')
            #max_coords = utils.getCoordsFromPointMasks(base_masks, width, height, 'max')
            coords = np.add(base_coords, residual_coords) - 28 / 2.0

            # scale back
            full_im = cv2.imread(folder + '/' + fname)
            full_im = cv2.cvtColor(full_im, cv2.COLOR_BGR2RGB)
            scale_width = len(full_im[0]) / float(len(im[0]))
            scale_height = len(full_im) / float(len(im))
            print scale_width

            coords[:, 0] *= scale_height
            coords[:, 1] *= scale_width
            #for i in range(len(residual_masks)):
            #    plt.imshow(residual_masks[i])
            #    plt.show()

            #utils.visualizeCoords(im, base_coords)
            output_path = output_folder + '/' + fname

            key = fname[:-4]
            if key in compare_coords:
                utils.visualizeCoords(full_im,
                                      np.concatenate(
                                          [compare_coords[key], coords],
                                          axis=0),
                                      np.arange(0, len(compare_coords[key])),
                                      output_name=output_path)
            else:
                utils.visualizeCoords(full_im, coords, output_name=output_path)
コード例 #4
0
def trySavedFullyConnected(model, batch_generator, sample_names=None):
    if sample_names == None:
        sample_names = batch_generator.all_names

    for sample_name in sample_names:
        inputs, outputs = batch_generator.getPair(sample_name)

        # alpha channel needs to be cutoff
        #if im.shape[2] > 3:
        #   im = im[:,:,:3]
        im = inputs[0]
        labels = np.array(model.predict(np.array(inputs), batch_size=1))
        label = labels[0]
        label *= len(im)
        utils.visualizeCoords(im, label)
コード例 #5
0
def visualizeSamples(folder, sample_names=[], model=None, special_indices=[]):
    if len(sample_names) == 0:
        with open(folder + '/names.json') as fp:
            sample_names = set(json.load(fp))

    for sample_name in sample_names:
        im = np.load(folder + '/ims/' + sample_name + '.npy')

        if model == None:
            coords = np.load(folder + '/coords/' + sample_name + '.npy')
        else:
            coords = model.predict(np.array([im]), batch_size=1)

        coords = np.reshape(coords, (-1, 2))
        coords *= len(im)-1
        utils.visualizeCoords(im, coords, special_indices)
コード例 #6
0
def tryPointMaskerVanilla(model, batch_generator, sample_names=None):
    if sample_names == None:
        sample_names = batch_generator.all_names

    for sample_name in sample_names:
        inputs, _ = batch_generator.getPair(sample_name)
        X, Y = batch_generator.getBatchFromNames([sample_name])
        im = inputs[0]
        print_str = 'sample name: ' + sample_name
        if batch_generator.isInValSet(sample_name):
            print_str += ', from val set'
        else:
            print_str += ', from train set'

        outputs = model.predict_on_batch(X)
        preds = np.squeeze(outputs[1])
        preds = utils.imSoftmax(preds)
        preds = np.moveaxis(preds, -1, 0)
        preds = [normalizeMask(pred) for pred in preds]

        coords = utils.getCoordsFromPointMasks(preds, len(im[0]), len(im))
        utils.visualizeCoords(im, coords)
        print print_str
        """
        summed = 80 * np.sum(preds, axis=0)
        summed = cv2.resize(summed, (len(im), len(im[0])), interpolation=cv2.INTER_LINEAR)
        helenUtils.visualizeMask(im, summed)
        """
        """for i in range(3):
            pred = preds[i]
            label = labels[i]
            l = len(pred)
            c = np.zeros((l, l, 3))
            pred = np.maximum(pred - np.mean(pred), 0)
            c[:,:,0] = pred / np.max(pred)
            c[:,:,2] = label
            plt.imshow(c)
            plt.show()
            #plt.show()
            #plt.imshow(label)
            #plt.show()
        """
        """