def valid_generator(sample_per_batch, batch_number):
    """ Generating validation data """
    valid_image_file = []
    directory = '../EgoGesture Dataset/'
    folder_name = [
        'SingleOneValid', 'SingleTwoValid', 'SingleThreeValid',
        'SingleFourValid', 'SingleFiveValid', 'SingleSixValid',
        'SingleSevenValid', 'SingleEightValid'
    ]

    for folder in folder_name:
        valid_image_file = valid_image_file + os.listdir(directory + folder +
                                                         '/')

    # print(len(valid_image_file))

    while True:
        for i in range(0, batch_number - 1):
            start = i * sample_per_batch
            end = (i + 1) * sample_per_batch
            x_batch = []
            y_batch_prob = []
            y_batch_pos = []
            for n in range(start, end):
                image_name = valid_image_file[n]

                try:
                    image, probability, position = label_generator(
                        directory=directory,
                        image_name=image_name,
                        type='Valid')
                except cv2.error:
                    print(image_name)
                    continue

                # 1.0 Original image
                x_batch.append(image)
                y_batch_prob.append(probability)
                pos = np.array([
                    position,
                ] * 10)
                y_batch_pos.append(pos)

            x_batch = np.asarray(x_batch)
            x_batch = x_batch.astype('float32')
            x_batch = x_batch / 255.

            y_batch_prob = np.asarray(y_batch_prob)
            y_batch_pos = np.asarray(y_batch_pos)
            y_batch_pos = y_batch_pos.astype('float32')
            y_batch_pos = y_batch_pos / 128.
            y_batch = [y_batch_prob, y_batch_pos]
            yield (x_batch, y_batch)
Exemple #2
0
def valid_generator(sample_per_batch, batch_number):
    """ Generating validation data """

    valid_image_files = os.listdir(valid_directory)

    for i in range(0, 10):
        random.shuffle(valid_image_files)

    while True:
        for i in range(0, batch_number - 1):
            start = i * sample_per_batch
            end = (i + 1) * sample_per_batch
            x_batch = []
            y_batch_key = []
            for n in range(start, end):
                image_name = valid_image_files[n]

                # image: ndarray keypoints: ndarray but not normalized

                if 'TI1K' in image_name.split('_'):
                    image, keypoints = my_label_gen(
                        image_directory=valid_directory,
                        label_directory=label_directory,
                        image_name=image_name)
                else:
                    image, keypoints = label_generator(
                        image_directory=valid_directory,
                        label_directory=label_directory,
                        image_name=image_name)

                x_batch.append(image)
                y_batch_key.append(keypoints)

                im_flip, k_flip = flip_horizontal(image, keypoints)
                x_batch.append(im_flip)
                y_batch_key.append(k_flip)

            x_batch = np.asarray(x_batch)
            x_batch = x_batch.astype('float32')
            x_batch = x_batch / 255.

            y_batch_key = np.asarray(y_batch_key)
            y_batch_key = y_batch_key.astype('float32')
            y_batch_key = y_batch_key / 128.
            yield (x_batch, y_batch_key)
Exemple #3
0
    ]

    index = 0
    for i in range(0, len(prob)):
        output[index] = output[index] * prob[i]
        output[index + 1] = output[index + 1] * prob[i]
        index = index + 2
    output = np.array(output)
    return image_aug, output


if __name__ == '__main__':
    directory = '../../EgoGesture Dataset/'
    image_name = 'ChuangyeguBusstop_Single_Five_color_1.jpg'
    image, probability, position = label_generator(directory=directory,
                                                   image_name=image_name,
                                                   type='')
    """ augmentation """
    image, position = rotation(image, probability, position)
    # image, position = translate(image, probability, position)
    # image, position = crop(image, probability, position)
    # image, position = flip_horizontal(image, probability, position)
    # image, position = flip_vertical(image, probability, position)
    # image, position = noise(image, probability, position)
    # image, position = salt(image, probability, position)
    print(probability)
    print(position)

    # draw augmented keypoints
    index = 0
    color = [(120, 20, 240), (240, 55, 210), (240, 55, 140), (240, 75, 55),
    keys_aug = np.asarray(keys_aug)
    return image_aug, keys_aug


if __name__ == '__main__':
    folder_directory = '../../Dataset/Train/'
    label_directory = '../../Dataset/label/'
    image_name = 'EastLake_Single_Eight_color_4.jpg'

    if 'TI1K' in image_name.split('_'):
        image, keys = my_label_gen(image_directory=folder_directory,
                                   label_directory=label_directory,
                                   image_name=image_name)
    else:
        image, keys = label_generator(image_directory=folder_directory,
                                      label_directory=label_directory,
                                      image_name=image_name)

    image, k = rotation(image, keys)
    # image, k = translate(image, keys)
    # image, k = crop(image, keys)
    # image, k = flip_horizontal(image, keys)
    # image, k = flip_vertical(image, keys)
    # image, k = noise(image, keys)
    # image, k = salt(image, keys)

    image = cv2.circle(image, (int(k[0]), int(k[1])), 5, (0, 0, 255), -1)
    image = cv2.circle(image, (int(k[2]), int(k[3])), 5, (0, 255, 0), -1)

    cv2.imshow('', image)
    while True:
import cv2
from preprocess.datagen import label_generator, my_label_gen


def visualize(image, keys):
    """ visualizing the image and the output data """
    image = cv2.circle(image, (int(keys[0]), int(keys[1])), 5, (0, 0, 255), -1)
    image = cv2.circle(image, (int(keys[2]), int(keys[3])), 5, (0, 255, 0), -1)
    cv2.imshow('visual output', image)
    cv2.waitKey(0)


if __name__ == '__main__':
    image_directory = '../Dataset/Train/'
    label_directory = '../Dataset/label/'
    image_name = 'TI1K_IMAGE_0212.jpg'

    if 'TI1K' in image_name.split('_'):
        image, keypoints = my_label_gen(image_directory=image_directory,
                                        label_directory=label_directory,
                                        image_name=image_name)
    else:
        image, keypoints = label_generator(image_directory=image_directory,
                                           label_directory=label_directory,
                                           image_name=image_name)
    visualize(image, keypoints)
def train_generator(sample_per_batch, batch_number):
    """ Generating training data """
    train_image_file = []
    directory = '../EgoGesture Dataset/'
    folder_name = [
        'SingleOne', 'SingleTwo', 'SingleThree', 'SingleFour', 'SingleFive',
        'SingleSix', 'SingleSeven', 'SingleEight'
    ]

    for folder in folder_name:
        train_image_file = train_image_file + os.listdir(directory + folder +
                                                         '/')

    for i in range(0, 10):
        random.shuffle(train_image_file)

    print('Training Dataset Size: {0}'.format(len(train_image_file)))

    while True:
        for i in range(0, batch_number - 1):
            start = i * sample_per_batch
            end = (i + 1) * sample_per_batch
            x_batch = []
            y_batch_prob = []
            y_batch_pos = []
            for n in range(start, end):
                image_name = train_image_file[n]

                try:
                    image, probability, position = label_generator(
                        directory=directory, image_name=image_name, type='')
                except cv2.error:
                    print(image_name)
                    continue

                # 1.0 Original image
                x_batch.append(image)
                y_batch_prob.append(probability)
                pos = np.array([
                    position,
                ] * 10)
                y_batch_pos.append(pos)
                # visualize(image, probability, pos[0])
                """ Augmentation """

                # 2.0 Original + translate
                im, pos = translate(image, probability, position)
                x_batch.append(im)
                y_batch_prob.append(probability)
                pos = np.array([
                    pos,
                ] * 10)
                y_batch_pos.append(pos)
                # visualize(im, probability, pos[0])

                # 3.0 Original + rotation
                im, pos = rotation(image, probability, position)
                x_batch.append(im)
                y_batch_prob.append(probability)
                pos = np.array([
                    pos,
                ] * 10)
                y_batch_pos.append(pos)
                # visualize(im, probability, pos[0])

                # 4.0 Original + salt
                im, pos = salt(image, probability, position)
                x_batch.append(im)
                y_batch_prob.append(probability)
                pos = np.array([
                    pos,
                ] * 10)
                y_batch_pos.append(pos)
                # visualize(im, probability, pos[0])

                # 5.0 Original + crop
                im, pos = crop(image, probability, position)
                x_batch.append(im)
                y_batch_prob.append(probability)
                pos = np.array([
                    pos,
                ] * 10)
                y_batch_pos.append(pos)
                # visualize(im, probability, pos)

                # 6.0 Original + noise
                im, pos = noise(image, probability, position)
                x_batch.append(im)
                y_batch_prob.append(probability)
                pos = np.array([
                    pos,
                ] * 10)
                y_batch_pos.append(pos)
                # visualize(im, probability, pos[0])

                # 7.0 Original + rotate + translate
                im, pos = rotation(image, probability, position)
                im, pos = translate(im, probability, pos)
                x_batch.append(im)
                y_batch_prob.append(probability)
                pos = np.array([
                    pos,
                ] * 10)
                y_batch_pos.append(pos)
                # visualize(im, probability, pos)

                # 8.0 Original + rotate + crop
                im, pos = rotation(image, probability, position)
                im, pos = crop(im, probability, pos)
                x_batch.append(im)
                y_batch_prob.append(probability)
                pos = np.array([
                    pos,
                ] * 10)
                y_batch_pos.append(pos)
                # visualize(im, probability, pos[0])

            x_batch = np.asarray(x_batch)
            x_batch = x_batch.astype('float32')
            x_batch = x_batch / 255.

            y_batch_prob = np.asarray(y_batch_prob)
            y_batch_pos = np.asarray(y_batch_pos)
            y_batch_pos = y_batch_pos.astype('float32')
            y_batch_pos = y_batch_pos / 128.
            y_batch = [y_batch_prob, y_batch_pos]
            yield (x_batch, y_batch)
import cv2
from preprocess.datagen import label_generator


def visualize(image, prob, key):
    index = 0
    color = [(15, 15, 240), (15, 240, 155), (240, 155, 15), (240, 15, 155),
             (240, 15, 240)]
    for c, p in enumerate(prob):
        if p > 0.5:
            image = cv2.circle(image, (int(key[index]), int(key[index + 1])),
                               radius=5,
                               color=color[c],
                               thickness=-2)
        index = index + 2

    cv2.imshow('Visualize', image)
    cv2.waitKey(0)


if __name__ == '__main__':
    image_name = 'ChuangyeguFirstfloor_Single_Five_color_514.jpg'
    image, probability, position = label_generator(image_name=image_name,
                                                   type='Test')
    visualize(image, probability, position)
Exemple #8
0
def train_generator(sample_per_batch, batch_number):
    """ Generating training data """
    train_image_file = []

    image_files = os.listdir(train_directory)
    train_image_file = train_image_file + image_files
    print('Training Dataset Size: ' + str(len(train_image_file)))

    for i in range(0, 10):
        random.shuffle(train_image_file)

    while True:
        for i in range(0, batch_number - 1):
            start = i * sample_per_batch
            end = (i + 1) * sample_per_batch
            x_batch = []
            y_batch_key = []
            for n in range(start, end):
                image_name = train_image_file[n]

                # image: ndarray keypoints: ndarray but not normalized

                if 'TI1K' in image_name.split('_'):
                    image, keypoints = my_label_gen(
                        image_directory=train_directory,
                        label_directory=label_directory,
                        image_name=image_name)
                else:
                    image, keypoints = label_generator(
                        image_directory=train_directory,
                        label_directory=label_directory,
                        image_name=image_name)

                # 1.0 Original Image
                x_batch.append(image)
                y_batch_key.append(keypoints)
                # visualize(image, keypoints)
                """ Augmentation """
                # 2.0 Flip
                im_flip, k_flip = flip_horizontal(image, keypoints)
                x_batch.append(im_flip)
                y_batch_key.append(k_flip)
                # visualize(im_flip, k_flip)

                # 3.0 Original + rotation
                im, k = rotation(image, keypoints)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 4.0 Flip + rotation
                im, k = rotation(im_flip, k_flip)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 5.0 Original + translate
                im, k = translate(image, keypoints)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 6.0 Flip + translate
                im, k = translate(im_flip, k_flip)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 7.0 Original + crop
                im, k = crop(image, keypoints)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 8.0 Flip + crop
                im, k = crop(im_flip, k_flip)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 9.0 Original + noise
                im, k = noise(image, keypoints)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 10.0 Flip + noise
                im, k = noise(im_flip, k_flip)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 11.0 Original + salt
                im, k = salt(image, keypoints)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 12.0 Flip + salt
                im, k = salt(im_flip, k_flip)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 13.0 Original + flip vertical
                im, k = flip_vertical(image, keypoints)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 14.0 Flip + flip vertical
                im, k = flip_vertical(im_flip, k_flip)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 15.0 Original + rotate + translate
                im, k = rotation(image, keypoints)
                im, k = translate(im, k)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 16.0 Flip + rotate + translate
                im, k = rotation(im_flip, k_flip)
                im, k = translate(im, k)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 17.0 Original + noise + translate
                im, k = noise(image, keypoints)
                im, k = translate(im, k)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 18.0 Flip + noise + translate
                im, k = noise(im_flip, k_flip)
                im, k = translate(im, k)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 19.0 Original + crop + translate
                im, k = crop(image, keypoints)
                im, k = translate(im, k)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

                # 20.0 Flip + crop + translate
                im, k = crop(im_flip, k_flip)
                im, k = translate(im, k)
                x_batch.append(im)
                y_batch_key.append(k)
                # visualize(im, k)

            x_batch = np.asarray(x_batch)
            x_batch = x_batch.astype('float32')
            x_batch = x_batch / 255.

            y_batch_key = np.asarray(y_batch_key)
            y_batch_key = y_batch_key.astype('float32')
            y_batch_key = y_batch_key / 128.
            yield (x_batch, y_batch_key)
Exemple #9
0
import cv2
from preprocess.datagen import label_generator


def visualize(image, prob, key):
    index = 0
    color = [(15, 15, 240), (15, 240, 155), (240, 155, 15), (240, 15, 155),
             (240, 15, 240)]
    for c, p in enumerate(prob):
        if p > 0.5:
            image = cv2.circle(image, (int(key[index]), int(key[index + 1])),
                               radius=5,
                               color=color[c],
                               thickness=-2)
        index = index + 2

    cv2.imshow('Unified Gesture & Fingertips Detection', image)
    cv2.waitKey(0)


if __name__ == '__main__':
    img_name = 'ChuangyeguFirstfloor_Single_Four_color_335.jpg'
    dir = '../EgoGesture Dataset/'
    img, prob, keys = label_generator(directory=dir,
                                      image_name=img_name,
                                      type='Test')
    visualize(img, prob, keys)