| 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" |
|
|
| 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 |