File size: 3,154 Bytes
1eced3c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
from config import DatasetName, AffectnetConf, InputDataSize, LearningConfig, ExpressionCodesAffectnet
from config import LearningConfig, InputDataSize, DatasetName, AffectnetConf, DatasetType

import numpy as np
import os
import matplotlib.pyplot as plt
import math
from datetime import datetime
from sklearn.utils import shuffle
from sklearn.model_selection import train_test_split
from numpy import save, load, asarray
import csv
from skimage.io import imread
import pickle
import csv
from tqdm import tqdm
from PIL import Image
from skimage.transform import resize
from skimage import transform
from skimage.transform import resize
import tensorflow as tf
import random
import cv2
from skimage.feature import hog
from skimage import data, exposure
from matplotlib.path import Path
from scipy import ndimage, misc
from skimage.transform import SimilarityTransform, AffineTransform
from skimage.draw import rectangle
from skimage.draw import line, set_color


class DataHelper:

    def create_generator_full_path(self, img_path, annotation_path, label=None):
        img_filenames, exp_filenames = self._create_image_and_labels_name_full_path(img_path=img_path,
                                                                                    annotation_path=annotation_path,
                                                                                    label=label)
        '''shuffle'''
        img_filenames, exp_filenames = shuffle(img_filenames, exp_filenames)
        return img_filenames, exp_filenames

    def _create_image_and_labels_name_full_path(self, img_path, annotation_path, label):
        img_filenames = []
        exp_filenames = []

        print('reading list -->')
        file_names = tqdm(os.listdir(img_path))
        print('<-')

        for file in file_names:
            if file.endswith(".jpg") or file.endswith(".png"):
                exp_lbl_file = str(file)[:-4] + "_exp.npy"  # just name

                if os.path.exists(annotation_path + exp_lbl_file):
                    if label is not None:
                        exp = np.load(annotation_path + exp_lbl_file)
                        if label is not None and exp != label:
                            continue

                    img_filenames.append(img_path + str(file))
                    exp_filenames.append(annotation_path + exp_lbl_file)

        return np.array(img_filenames), np.array(exp_filenames)

    def relabel_ds(self, labels):
        new_labels = np.copy(labels)

        index_src = [0, 1, 2, 3, 4, 5, 6, 7, 17, 18, 19, 20, 21, 31, 32, 36, 37, 38, 39, 40, 41, 48, 49, 50,
                     60, 61, 67, 59, 58]
        index_dst = [16, 15, 14, 13, 12, 11, 10, 9, 26, 25, 24, 23, 22, 35, 34, 45, 44, 43, 42, 47, 46, 54, 53, 52,
                     64, 63, 65, 55, 56]

        for i in range(len(index_src)):
            new_labels[index_src[i] * 2] = labels[index_dst[i] * 2]
            new_labels[index_src[i] * 2 + 1] = labels[index_dst[i] * 2 + 1]

            new_labels[index_dst[i] * 2] = labels[index_src[i] * 2]
            new_labels[index_dst[i] * 2 + 1] = labels[index_src[i] * 2 + 1]
        return new_labels